Back to home page

sPhenix code displayed by LXR

 
 

    


File indexing completed on 2025-08-05 08:14:32

0001 #include "sPhenixStyle.C"
0002 #include "sPhenixStyle.h"
0003 
0004 TPad* getPad(int j, int k, int l, float cw, float ch, const int  nEBins, const int nCutBins);
0005 
0006 //void drawCanvas_invMass(TCanvas *c, TH1F *hInvMass, int pad_x, int pad_y, TPad *pad, int isEta);
0007 void drawCanvas_invMass(TCanvas *c, TH1F *hCorr, int pad_x, int pad_y, TPad *pad, int isEta, float peakPos, float peakW);
0008 
0009 void SetHistoStyle(TH1F *histo, int cutBin, int eBin, float low, float hi, int isEta);
0010 
0011 void DrawCutLabel(int x, int y, int isEta);
0012 
0013 void GetSubtractedDist(TH1F *histOrig, TH1F *histSub, TF1 *invMassFit, TF1 *invMassBG);
0014 
0015 //float eBins[] = {1,3,5,7,9,11,13,15,17,20};
0016 float eBins[] = {1,2,3,4,5,6,7,8,9,10,11,12,13};
0017 float eBinsEta[] = {12,14,16,18,20};
0018 float eCuts[] = {0.5,0.6,0.7,0.8,0.9,1.,1.1/*,1.2,1.3,1.4,1.5*/};
0019 float eCutsEta[] = {3,3.5,4,4.5,5,5.5,6};
0020 const int nEtaBins = 5;
0021 void draw_hists_3D(const char *input)
0022 {
0023 
0024   SetsPhenixStyle();
0025   TFile *fin = new TFile(input);
0026 
0027   const int nEBins = (int)sizeof(eBins)/sizeof(eBins[0]);
0028   const int nCutBins = (int)sizeof(eCuts)/sizeof(eCuts[0]);
0029   const int nCutBinsEta = (int)sizeof(eCutsEta)/sizeof(eCutsEta[0]);
0030   const int nEBinsEta = (int)sizeof(eBinsEta)/sizeof(eBinsEta[0]);
0031   
0032   TH3F *hist[nEtaBins]; 
0033   TH3F *histMatched[nEtaBins];
0034   float cw = 2*966, ch = 1.3*637;
0035   
0036   TCanvas *cPi0Cut[nEtaBins];
0037   TPad *pad_invMass[nEBins-1][nCutBins][nEtaBins];
0038 
0039   TCanvas *cSubMass[nEtaBins];
0040   TPad *pad_invMassSub[nEBins-1][nCutBins][nEtaBins];
0041   
0042   TCanvas *cMatchMass[nEtaBins];
0043   TPad *pad_matchMass[nEBins-1][nCutBins][nEtaBins];
0044   
0045 
0046   TGraphErrors *mass[nCutBins][nEtaBins];
0047   TGraphErrors *width[nCutBins][nEtaBins];
0048   TGraphErrors *yields[nCutBins][nEtaBins];
0049   TGraphErrors *yieldsMatched[nCutBins][nEtaBins];
0050   TGraphErrors *matchZeroFrac[nCutBins][nEtaBins];
0051   TF1 *invMassFit, *invMassFitBG;
0052   int colors[] = {1,2,4,kGreen+2, kViolet,kCyan,kOrange+2,kMagenta+2,kAzure-2};
0053   TLegend *leggy = new TLegend(.161, .729, .722, .939 );
0054   leggy -> SetNColumns(3);
0055   leggy -> SetFillStyle(0);
0056   leggy -> SetBorderSize(0);
0057   
0058   float xEndFit = 0.25;
0059   float xStartFit = 0.07;
0060   float xEndHist = 0.25;
0061   float xStartHist = 0.07;
0062   float invMassWindow[2] = {0.112, 0.162};
0063   float peakPos[nEBins - 1][nCutBins][nEtaBins];
0064   float peakW[nEBins - 1][nCutBins][nEtaBins];
0065   float sigma = 3.;
0066   TLatex marks;
0067   
0068   for(int k = 0; k < nEtaBins; k++)
0069     {
0070       
0071 
0072       cSubMass[k]= new TCanvas(Form("cMassSubPi0_Eta%d",k),"Subtracted Mass Dist",cw,ch);
0073       cSubMass[k] -> Range(0,0,1,1);
0074 
0075       cPi0Cut[k] = new TCanvas(Form("cMassPi0_Eta%d",k),"Invariant Mass",cw,ch);
0076       cPi0Cut[k] -> Range(0,0,1,1);
0077         
0078       hist[k] = (TH3F*)fin -> Get(Form("ePi0InvMassEcut_Eta%d",k));
0079       
0080       for(int i = 0; i < nEBins - 1; i++)
0081     {
0082       for(int j = 0; j < nCutBins; j++)
0083         {
0084           if(i == 0)
0085         {
0086           mass[j][k] = new TGraphErrors();
0087           mass[j][k] -> SetMarkerColor(colors[j]);
0088 
0089           width[j][k] = new TGraphErrors();
0090           width[j][k] -> SetMarkerColor(colors[j]);
0091 
0092           yields[j][k] = new TGraphErrors();
0093           yields[j][k] -> SetMarkerColor(colors[j]);
0094 
0095          
0096         }
0097      
0098           pad_invMass[i][j][k] = getPad(i,j,k,cw,ch,nEBins , nCutBins);//for unsubtracted invariant mass distributions
0099           pad_invMass[i][j][k] -> cd();
0100 
0101           pad_invMassSub[i][j][k] = getPad(i,j,k,cw,ch,nEBins , nCutBins);//for subtracted mass distributions
0102 
0103 
0104           TH1F *hist1D = (TH1F*)hist[k] -> ProjectionY(Form("invMass_E%d_Cut%d_Eta%d",i,j,k), hist[k] -> GetXaxis() -> FindBin(eBins[i] + 0.001), hist[k] -> GetXaxis() -> FindBin(eBins[i+1] - 0.0001), hist[k] -> GetZaxis() -> FindBin(eCuts[j] + 0.0001), hist[k] -> GetNbinsZ());
0105       
0106       
0107       
0108           TH1F *invMassSub = (TH1F*)hist1D -> Clone();
0109           if(eBins[i+1] <= 13) 
0110         {
0111           invMassFit = new TF1(Form("invMassFit_E%d_Cut%d_Eta%d",i,j,k),"[5]*exp(-(([7]-x)^2)/(2*[6]^2))");
0112           
0113           
0114           invMassFit -> SetLineWidth(1);
0115           invMassFit -> SetParameter(6,0.015);
0116           invMassFit -> SetParLimits(6,0.005,0.1);
0117           invMassFit -> SetLineColor(2);
0118           invMassFit -> SetParameter(7,0.135);
0119           invMassFit -> SetParLimits(7, 0.135 - 0.07, 0.135 + 0.07);
0120           if((eCuts[j] >= 0.9) && (eBins[i] == 3 || eBins[i] == 4)) 
0121             {
0122               invMassFit -> SetParameter(5, hist1D -> GetMaximum()*2);
0123           
0124             }
0125           else invMassFit -> SetParameter(5,hist1D -> GetMaximum());
0126           hist1D -> Fit(invMassFit,"Q","",xStartFit, xEndFit);
0127           // GetSubtractedDist(hist1D, invMassSub, invMassFit, invMassFitBG);
0128          
0129           float peakPosition = invMassFit -> GetParameter(7);
0130           peakPos[i][j][k] = peakPosition;
0131           
0132           float peakWidth = invMassFit -> GetParameter(6);
0133           peakW[i][j][k] = peakWidth;
0134           Double_t yieldErr;
0135       
0136           float yield;
0137           if(hist1D -> Integral() == 0) yield = 0;
0138           else yield = invMassSub -> IntegralAndError(invMassSub -> GetXaxis() -> FindBin((peakPosition - sigma*peakWidth)+0.0001), invMassSub -> GetXaxis() -> FindBin((peakPosition + sigma*peakWidth)+0.0001), yieldErr, "");
0139 
0140           if(yield != 0)
0141             {
0142               mass[j][k] -> SetPoint(i, (eBins[i]+eBins[i+1])/2, invMassFit -> GetParameter(7));
0143               mass[j][k] -> SetPointError(i,  0, invMassFit -> GetParError(7));
0144     
0145               width[j][k] -> SetPoint(i, (eBins[i]+eBins[i+1])/2, invMassFit -> GetParameter(6));
0146               width[j][k] -> SetPointError(i, 0, invMassFit -> GetParError(6));
0147     
0148               yields[j][k] -> SetPoint(i, (eBins[i]+eBins[i+1])/2, yield);
0149               yields[j][k] -> SetPointError(i, 0, yieldErr);
0150               
0151              
0152             }
0153           
0154         }
0155           hist1D -> GetXaxis() -> SetRangeUser(xStartHist,xEndHist);
0156       
0157           TCanvas *cMassFitCheck = new TCanvas();
0158           hist1D -> SetTitle(";M_{#gamma#gamma} [GeV/c^{2}];");
0159           hist1D -> Draw("epx0");
0160 
0161 
0162           marks.DrawLatexNDC(0.7,0.8,Form("#splitline{E_{Min} > %g GeV}{%g > E_{#pi^{0}} > %g}",eCuts[j], eBins[i], eBins[i+1]));
0163           cMassFitCheck -> SaveAs(Form("plots/invMassFitCheck_%dE_%dCut_Sigma%g_Eta%d.pdf",i,j,sigma,k));
0164 
0165           drawCanvas_invMass(cPi0Cut[k], hist1D, j, i, pad_invMass[i][j][k], 0, peakPos[i][j][k], sigma*peakW[i][j][k]);
0166           pad_invMassSub[i][j][k] -> cd();
0167 
0168           invMassSub -> GetXaxis() -> SetRangeUser(xStartHist, xEndHist);
0169           drawCanvas_invMass(cSubMass[k], invMassSub, j, i, pad_invMassSub[i][j][k], 0, peakPos[i][j][k], sigma*peakW[i][j][k]);
0170 
0171           
0172         }
0173     }
0174     
0175       cPi0Cut[k] -> SaveAs(Form("plots/invMassCuts_Sigma%g_Eta%d.pdf",sigma, k));
0176       cSubMass[k] -> SaveAs(Form("plots/invMassCutsSubtracted_Sigma%g_Eta%d.pdf",sigma, k));
0177     }
0178   
0179   
0180   TCanvas *cMass[nEtaBins];
0181   for(int k = 0; k < nEtaBins; k++)
0182     {
0183       cMass[k] = new TCanvas();
0184       for(int i = 0; i < nCutBins; i++)
0185     {
0186       if(i == 0)
0187         {
0188           mass[i][k] -> Draw("ap");
0189           mass[i][k] -> GetYaxis() -> SetRangeUser(0.130,0.180);
0190           mass[i][k] -> GetXaxis() -> SetLimits(0,13);
0191           mass[i][k] -> GetXaxis() -> SetTitle("E_{#pi^{0}}^{Reco} [GeV]");
0192           mass[i][k] -> GetYaxis() -> SetTitle("Mass Peak Location [GeV/c^{2}]");
0193         }
0194       else mass[i][k] -> Draw("samep");
0195       if(k==0)leggy -> AddEntry(mass[i][k], Form("E_{min} > %g",eCuts[i]),"p");
0196     }
0197  
0198       leggy -> Draw("same");
0199       cMass[k] -> SaveAs(Form("plots/invMassGraphPeakPos_Sigma%g_Eta%d.pdf",sigma,k));
0200     }
0201 
0202   TCanvas *cWidth[nEtaBins];
0203   for(int k = 0; k < nEtaBins; k++)
0204     {
0205       cWidth[k] = new TCanvas();
0206 
0207       for(int i = 0; i < nCutBins; i++)
0208     {
0209       if(i == 0)
0210         {
0211           width[i][k] -> Draw("ap");
0212           width[i][k] -> GetYaxis() -> SetRangeUser(0.013, 0.028);
0213           width[i][k] -> GetXaxis() -> SetLimits(0,13);
0214           width[i][k] -> GetXaxis() -> SetTitle("E_{#pi^{0}}^{Reco} [GeV]");
0215           width[i][k] -> GetYaxis() -> SetTitle("Mass Peak Width [GeV/c^{2}]");
0216         }
0217       else width[i][k] -> Draw("samep");
0218     }
0219  
0220       leggy -> Draw("same");
0221       cWidth[k] -> SaveAs(Form("plots/invMassGraphPeakWidth_Sigma%g_Eta%d.pdf",sigma,k));
0222     }
0223 
0224   TCanvas *cYields[nEtaBins];
0225   for(int k = 0; k < nEtaBins; k++)
0226     {
0227       cYields[k] = new TCanvas();
0228       for(int i = 0; i < nCutBins; i++)
0229     {
0230       if(i == 0)
0231         {
0232           yields[i][k] -> Draw("ap");
0233           yields[i][k] -> GetYaxis() -> SetRangeUser(1e3,1e7); 
0234           yields[i][k] -> GetXaxis() -> SetTitle("E_{#pi^{0}}^{Reco} [GeV]");
0235           yields[i][k] -> GetYaxis() -> SetTitle("N_{#pi^{0}}");
0236         }
0237       else yields[i][k] -> Draw("samep");
0238       gPad -> SetLogy();
0239     }
0240   
0241       leggy -> Draw("same");
0242       cYields[k] -> SaveAs(Form("plots/invMassYield_Sigma%g_Eta%d.pdf",sigma,k));
0243     }
0244 
0245   
0246   TH1F *pi0TruSpec[nEtaBins];
0247   for(int i = 0; i < nEtaBins; i++) pi0TruSpec[i] = (TH1F*)fin -> Get(Form("primPi0E_Eta%d",i));
0248   TGraphErrors *pi0Eff[nCutBins][nEtaBins];
0249   TCanvas *cEff[nEtaBins];
0250   float scaleMax;
0251   float scaleMin;
0252   
0253   for(int k = 0; k < nEtaBins; k++)
0254     {
0255       cEff[k] = new TCanvas();
0256       scaleMax = -9999;
0257       scaleMin = 9999;
0258       cEff[k] -> cd();
0259       for(int i = 0; i < nCutBins ; i++)
0260     {
0261       pi0Eff[i][k] = new TGraphErrors();
0262       for(int j = 0; j < nEBins -1; j++)
0263         {
0264           Double_t pi0TruthYieldErr;
0265           float pi0TruthYield = pi0TruSpec[k] -> IntegralAndError(pi0TruSpec[k] -> GetXaxis() -> FindBin(eBins[j]+0.001), pi0TruSpec[k] -> GetXaxis() -> FindBin(eBins[j+1]-0.001), pi0TruthYieldErr, "");
0266       
0267       
0268           Double_t x, pi0YieldMeas, pi0YieldErr;
0269           yields[i][k] -> GetPoint(j, x, pi0YieldMeas);
0270           pi0YieldErr = yields[i][k] -> GetErrorY(j);
0271           float eff = pi0YieldMeas/pi0TruthYield;
0272           float err = eff*sqrt(pow(pi0YieldErr/pi0YieldMeas,2) + pow(pi0TruthYieldErr/pi0TruthYield,2));
0273 
0274           if(eff <  scaleMin) scaleMin = eff;
0275           if(eff > scaleMax) scaleMax = eff;
0276           pi0Eff[i][k] -> SetPoint(j, (eBins[j]+eBins[j+1])/2, eff);
0277           pi0Eff[i][k] -> SetPointError(j, 0, err);
0278         }
0279       pi0Eff[i][k] -> SetMarkerColor(colors[i]);
0280       pi0Eff[i][k] -> SetName(Form("pi0Eff_Eta%d_ECut%d",k,i));
0281 
0282       if(i == 0)
0283         {
0284           pi0Eff[i][k] -> Draw("ap");
0285           pi0Eff[i][k] -> GetYaxis() -> SetRangeUser(-0.05,scaleMax*1.4);
0286           pi0Eff[i][k] -> GetXaxis() -> SetTitle("E_{#pi^{0}}^{Reco} [GeV]");
0287           pi0Eff[i][k] -> GetYaxis() -> SetTitle("#epsilon");
0288         }
0289       else pi0Eff[i][k] -> Draw("samep");
0290 
0291     }
0292       leggy -> Draw("same");
0293       cEff[k] -> SaveAs(Form("plots/pi0Eff_Sigma%g_Eta%d.pdf",sigma,k));
0294     }
0295 
0296  
0297   TCanvas *cAngle2D = new TCanvas();
0298   TH2F *deltaR2D = (TH2F*)fin -> Get("truthPi0EDeltaR");
0299   
0300   deltaR2D -> SetTitle(";E_{#pi^{0}}^{Truth} [GeV];#Delta R");
0301   deltaR2D -> GetYaxis() -> SetRangeUser(0,0.5);
0302   deltaR2D -> Draw("colz");
0303   cAngle2D -> SaveAs("plots/deltaR.pdf");
0304   
0305   TH1F *deltaRproj[nEBins-1];
0306   TCanvas *cAngleProj = new TCanvas();
0307     
0308   for(int i = 0; i < nEBins - 1; i++)
0309     {
0310       deltaRproj[i] = (TH1F*)deltaR2D -> ProjectionY(Form("deltaRProj_%d",i),deltaR2D -> GetXaxis() -> FindBin(eBins[i]+0.001), deltaR2D -> GetXaxis() -> FindBin(eBins[i+1]-0.001));
0311       deltaRproj[i] -> Draw();
0312       cAngleProj -> SaveAs(Form("plots/deltaR_proj%d.pdf",i));
0313     }
0314   
0315   TCanvas *cAsym = new TCanvas();
0316   TH2F *asym = (TH2F*)fin -> Get("truthPi0EAsym");
0317   
0318   asym -> SetTitle(";E_{#pi^{0}}^{Truth [GeV];#frac{|E^{#gamma_{1}} - E^{#gamma_{2}}|}{#lower[0.2]{E^{#gamma_{1}} + E^{#gamma_{2}}}}");
0319   asym -> GetYaxis() -> SetTitleOffset(1.3);
0320   asym -> Draw("colz");
0321   cAsym -> SaveAs("plots/asymE.pdf");
0322            
0323 } 
0324   
0325 TPad* getPad(int j, int k, int l, float cw, float ch, const int nEBins, const int nCutBins)
0326 {
0327   float xpos[nCutBins+1], ypos[nEBins];
0328   int nCutOffset = 1;
0329   float marginLeft = 0.07;
0330   float marginRight = 0.035;
0331 
0332   float marginTop = 0.03;
0333   float marginBottom = 0.06;
0334   
0335   float marginColumn = 0.04;
0336   
0337   float w = (1 - marginLeft - marginRight - marginColumn*(nCutBins-2 + nCutOffset))/(nCutBins - 1+ nCutOffset);
0338   float h = (1 - marginTop - marginBottom)/(nEBins - 1);
0339 
0340   for(int m = 0; m < nCutBins + nCutOffset; m++)
0341     {
0342       if(m == 0) xpos[m] = 0;
0343       else if(m == nCutBins - 1+ nCutOffset) xpos[m] = 1.;
0344       else xpos[m] = marginLeft + m*w + (m-1)*marginColumn;
0345     }
0346   
0347   for(int m = 0; m < nEBins; m++)
0348     {
0349       if(m==0) ypos[nEBins -1 -m] = 0;
0350       else if (m == nEBins - 1) ypos[nEBins-1-m] = 1.;
0351       else ypos[nEBins - 1 -m] = marginBottom +m*h;
0352     }
0353   
0354   TPad *myPad = new TPad(Form("pad%d%d%d",j,k,l),Form("pad%d%d%d",j,k,l),xpos[k],ypos[j+1],xpos[k+1],ypos[j]);
0355   
0356   if(k==0) myPad->SetLeftMargin(marginLeft/(xpos[k+1] - xpos[k]));
0357   else myPad -> SetLeftMargin(marginColumn/(xpos[k+1] - xpos[k]));
0358   
0359   if(k == nCutBins - 2+ nCutOffset) myPad -> SetRightMargin(marginRight/(xpos[k+1]-xpos[k]));
0360   else myPad -> SetRightMargin(0.012);
0361   
0362   if(j == 0) myPad -> SetTopMargin(marginTop/(ypos[j] - ypos[j+1]));
0363   else myPad -> SetTopMargin(0);
0364   
0365   if(j == nEBins - 2) myPad -> SetBottomMargin(marginBottom/(ypos[j] - ypos[j+1]));
0366   else myPad -> SetBottomMargin(0);
0367   
0368   return myPad;
0369 }
0370   
0371 void drawCanvas_invMass(TCanvas *c, TH1F *hCorr, int pad_x, int pad_y, TPad *pad, int mode, float peakPos, float peakW)
0372 {
0373   
0374   float range = hCorr -> GetMaximum() - hCorr -> GetMinimum();
0375   SetHistoStyle(hCorr, pad_x, pad_y, hCorr -> GetMinimum(), hCorr->GetMaximum() + 0.2*range, mode);
0376   c -> cd(0);
0377   /*TLine *pi0Mass = new TLine(0.135,0,0.135,hCorr->GetMaximum());
0378   pi0Mass -> SetLineStyle(7);
0379   pi0Mass -> SetLineColor(2);
0380   TLine *etaMass = new TLine(0.548,0,0.548,hCorr->GetMaximum());
0381   etaMass -> SetLineStyle(7);
0382   etaMass -> SetLineColor(2);*/
0383   TLine *massWindow[2];
0384   //massWindow[0] = new TLine(0.112,0,0.112,hCorr->GetMaximum());
0385   pad -> Draw();
0386   pad -> cd();
0387   
0388   hCorr -> Draw("epX0");
0389   DrawCutLabel(pad_x,pad_y,mode);
0390   if(mode == 1) gPad -> SetLogy();
0391   if(peakPos)
0392     {
0393       massWindow[0] = new TLine(peakPos - peakW,0,peakPos - peakW,hCorr->GetMaximum());
0394       massWindow[0] -> SetLineStyle(7);
0395       massWindow[0] -> SetLineColor(2);
0396   
0397       //massWindow[1] = new TLine(0.162,0,0.162,hCorr->GetMaximum());
0398       massWindow[1] = new TLine(peakPos + peakW,0,peakPos + peakW,hCorr->GetMaximum());
0399       massWindow[1] -> SetLineStyle(7);
0400       massWindow[1] -> SetLineColor(2);
0401       massWindow[0] -> Draw("same");
0402       massWindow[1] -> Draw("same");
0403     }
0404   
0405   
0406   //etaMass -> Draw("same");
0407   //pi0Mass -> Draw("same");
0408   
0409 }
0410 
0411 void SetHistoStyle(TH1F *histo, int cutBin, int eBin, float low, float hi, int mode)
0412 {
0413   if(hi > low) histo -> GetYaxis() -> SetRangeUser(low,hi);
0414   if(mode == 1)
0415     {
0416       histo -> GetYaxis() -> SetRangeUser(0.1,10*hi);
0417     }
0418   
0419   histo -> SetTitle(";;");
0420   int xTitleBin[3][2] = {{11,3},{11,3},{3,3}};
0421   int yTitleBin[3][2] = {{5,0},{5,0},{2,0}};
0422 
0423   float yTitleOffset[3] = {0.3, 0.4, 1};
0424   float xTitleOffset[3] = {0.7, 0.7, 0.7};
0425 
0426   float yTitleSize[3] = {0.5, 0.5, 0.15};
0427   float xTitleSize[3] = {0.28, 0.28, 0.13}; 
0428 
0429   if(eBin == xTitleBin[mode][0] && cutBin == xTitleBin[mode][1]) histo -> GetXaxis() -> SetTitle("M_{#gamma#gamma}");
0430   if(eBin == yTitleBin[mode][0] && cutBin == yTitleBin[mode][1]) histo -> GetYaxis() -> SetTitle("N_{#gamma#gamma}");
0431   
0432   histo -> GetXaxis() -> SetTitleSize(xTitleSize[mode]);
0433   histo -> GetXaxis() -> SetTitleOffset(xTitleOffset[mode]);
0434   histo -> GetXaxis() -> CenterTitle();
0435   
0436   histo -> GetXaxis() -> SetLabelFont(43);
0437   histo -> GetXaxis() -> SetLabelSize(18);
0438   histo -> GetXaxis() -> SetLabelOffset(0.0);
0439   histo -> SetTickLength(0.05,"X");
0440   histo -> SetNdivisions(505,"x");
0441 
0442   
0443   histo -> GetYaxis() -> SetNdivisions(505);
0444   histo -> GetYaxis() -> SetTitleSize(yTitleSize[mode]);
0445   histo -> GetYaxis() -> SetTitleOffset(yTitleOffset[mode]);
0446   histo -> GetYaxis() -> CenterTitle();
0447   
0448   histo -> GetYaxis() -> SetLabelFont(43);
0449   histo -> GetYaxis() -> SetLabelSize(19);
0450   histo -> GetYaxis() -> SetLabelOffset(0.003);
0451   histo -> GetYaxis() -> SetNoExponent();
0452   histo -> SetTickLength(0.04,"Y");
0453   
0454   histo -> SetStats(0);
0455   //histo -> SetLineWidth(1.4);
0456   histo -> SetLineColor(1);
0457   histo -> SetMarkerColor(1);
0458   histo -> SetMarkerStyle(20);
0459   histo -> SetMarkerSize(0.4);
0460 }
0461 
0462 void DrawCutLabel(int x, int y, int mode)
0463 {
0464   gPad -> cd();
0465   gPad -> Update();
0466   float Y2 = gPad -> GetUymax();
0467   float Y1 = gPad -> GetUymin();
0468   float rangeY = Y2 - Y1;
0469   float xtop[3] = {0.8, -0.1, 0};
0470   float xbottom[3] = {0.273152, 1.01, 1.1};
0471   double ytop[3] = {Y2+0.01*rangeY, Y2+1*rangeY, Y2+0.01*rangeY};
0472   double ybottom[3] = {  0.98*Y2,  0.98*Y2,  0.9*Y2};
0473   
0474   TText *textCut;
0475   if(y == 0)
0476     {
0477       // if(mode < 2)
0478       //    {
0479       //      if(x <= 4)textCut = new TText(0.08, Y2+0.01*rangeY, Form("Min E > %g GeV", eCuts[x]));
0480       //      else textCut = new TText(0.08, Y2+0.01*rangeY, Form("Min E > %g GeV", eCuts[x]));
0481       //    }
0482       //else textCut = new TText(0, Y2+0.01*rangeY, Form("Min E > %g GeV", eCutsEta[x]));
0483       textCut = new TText(xtop[mode], ytop[mode], Form("Min E > %g GeV", eCuts[x]));
0484       textCut -> SetTextFont(43);
0485       textCut -> SetTextSize(18);
0486       textCut -> Draw();
0487     }
0488   if(x == sizeof(eCuts)/sizeof(eCuts[0]) - 1)
0489     {
0490       //if(mode < 2)textCut = new TText(0.273152, 0.98*Y2, Form("%g-%gGeV",eBins[y], eBins[y+1]));
0491       //else textCut = new TText(1.1, 0.9*Y2, Form("%g-%gGeV",eBinsEta[y], eBinsEta[y+1]));
0492       if(mode < 2)textCut = new TText(xbottom[mode], ybottom[mode], Form("%g-%gGeV",eBins[y], eBins[y+1]));
0493       else textCut = new TText(xbottom[mode], ybottom[mode], Form("%g-%gGeV",eBinsEta[y], eBinsEta[y+1]));
0494       textCut -> SetTextAngle(270);
0495       textCut -> SetTextFont(43);
0496       textCut -> SetTextSize(18);
0497       textCut -> Draw();
0498     }
0499   
0500 }
0501 
0502 void GetSubtractedDist(TH1F *histOrig, TH1F *histSub, TF1 *invMassFit, TF1 *invMassBG)
0503 {
0504   
0505  
0506   for(int i = 0; i < invMassFit -> GetNpar(); i++)
0507     {
0508       invMassBG -> SetParameter(i, invMassFit -> GetParameter(i));
0509     }
0510   
0511   for(int i = 1; i < histSub -> GetNbinsX() + 1; i++)
0512     {
0513       histSub -> SetBinContent(i, histOrig -> GetBinContent(i) - invMassBG -> Eval(histOrig -> GetBinCenter(i)));
0514     }
0515   
0516   
0517 }