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
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
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};
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);
0099 pad_invMass[i][j][k] -> cd();
0100
0101 pad_invMassSub[i][j][k] = getPad(i,j,k,cw,ch,nEBins , nCutBins);
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
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
0378
0379
0380
0381
0382
0383 TLine *massWindow[2];
0384
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
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
0407
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
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
0478
0479
0480
0481
0482
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
0491
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 }