14 #if !defined(__CINT__) || defined(__MAKECINT__) 17 #include <TDirectoryFile.h> 34 #include <TGraphErrors.h> 55 TString titleMC =
"simu_pp_7TeV_MB",
56 TString titleData =
"LHC11cd_INT7" 65 if (titleData .Contains(
"LHC11cd_EMC7"))
66 daLeg =
"pp@7 TeV, LHC11c+d EMC7";
67 else if(titleData .Contains(
"LHC11cd_INT7"))
68 daLeg =
"pp@7 TeV, LHC11c+d INT7";
69 else if(titleData ==
"LHC12_EMC7")
70 daLeg =
"pp@8 TeV, LHC12 EMC7";
71 else if(titleData ==
"LHC12_EMG1")
72 daLeg =
"pp@8 TeV, LHC12 EGA";
73 else if(titleData ==
"LHC12_INT7")
74 daLeg =
"pp@8 TeV, LHC12 INT7";
75 else if(titleData ==
"LHC17pq_EMC7")
76 daLeg =
"pp@5 TeV, LHC11p+q EMC7";
77 else if(titleData ==
"LHC17pq_EMG1")
78 daLeg =
"pp@5 TeV, LHC11p+q EGA";
79 else if(titleData ==
"LHC17pq_INT7")
80 daLeg =
"pp@5 TeV, LHC17p+q INT7";
81 else if(titleData ==
"LHC17pq_DCAL_DMC7")
82 daLeg =
"pp@5 TeV, LHC11p+q DMC7";
83 else if(titleData ==
"LHC17pq_DCAL_DMG1")
84 daLeg =
"pp@5 TeV, LHC11p+q DGA";
85 else if(titleData ==
"LHC17pq_DCAL_INT7")
86 daLeg =
"pp@5 TeV, LHC17p+q INT7";
97 Form(
"data_%s" ,titleData.Data())
98 , Form(
"%s_Mimic0_Scaled" ,titleMC .
Data())
99 , Form(
"%s_Mimic10c_EcellCut_Scaled",titleMC .
Data())
106 ,
"MC xTalk + #it{E}_{inc+cell}>100 MeV" 110 TString processline = Form(
".! mkdir -p ComparisonGraphs/%s/%s/%s",
calorimeter.Data(),trigger.Data(),particle.Data()) ;
111 gROOT->ProcessLine(processline.Data());
133 Float_t colorProd[] = { 1,kBlue,kRed,kViolet,kRed,kOrange-2,kCyan};
134 Float_t styleProd[] = {20, 24, 24, 24, 25, 25, 25};
137 titleData.ReplaceAll(
"/",
"_");
141 file[iprod] =
new TFile(Form(
"%s/%s/%s/%s/MassWidthPtHistograms.root",
142 prod[iprod].
Data(),
calorimeter.Data(),trigger.Data(),particle.Data()),
"read");
144 printf(
"iprod %d, %s/%s/%s/%s/MassWidthPtHistograms.root %p\n",
145 iprod,prod[iprod].
Data(),
calorimeter.Data(),trigger.Data(),particle.Data(),file[iprod]);
147 if(!file[iprod])
continue;
149 gMassAllSM[iprod] = (
TGraphErrors*) file[iprod]->Get(
"gMass_SameSM");
152 gMassAllSM[iprod]->SetMarkerColor(colorProd[iprod]);
153 gMassAllSM[iprod]->SetLineColor (colorProd[iprod]);
154 gMassAllSM[iprod]->SetMarkerStyle(styleProd[iprod]);
155 gMassAllSM[iprod]->SetMarkerSize (markerSize);
157 if ( iprod > 0 && gMassAllSM[0] )
159 gMassRatAllSM[iprod] =
DivideGraphs(gMassAllSM[iprod],gMassAllSM[0]);
160 gMassRatAllSM[iprod]->SetMarkerColor(colorProd[iprod]);
161 gMassRatAllSM[iprod]->SetLineColor (colorProd[iprod]);
162 gMassRatAllSM[iprod]->SetMarkerStyle(styleProd[iprod]);
163 gMassRatAllSM[iprod]->SetMarkerSize (markerSize);
166 gMassTRDNo[iprod] = (
TGraphErrors*) file[iprod]->Get(
"gMass_SameSMTRDNot");
169 if ( gMassTRDNo[iprod] )
171 gMassTRDNo[iprod]->SetMarkerColor(colorProd[iprod]);
172 gMassTRDNo[iprod]->SetLineColor (colorProd[iprod]);
173 gMassTRDNo[iprod]->SetMarkerStyle(styleProd[iprod]);
174 gMassTRDNo[iprod]->SetMarkerSize (markerSize);
176 if ( iprod > 0 && gMassTRDNo[0] )
178 gMassRatTRDNo[iprod] =
DivideGraphs(gMassTRDNo[iprod],gMassTRDNo[0]);
179 gMassRatTRDNo[iprod]->SetMarkerColor(colorProd[iprod]);
180 gMassRatTRDNo[iprod]->SetLineColor (colorProd[iprod]);
181 gMassRatTRDNo[iprod]->SetMarkerStyle(styleProd[iprod]);
182 gMassRatTRDNo[iprod]->SetMarkerSize (markerSize);
186 gMassTRDYe[iprod] = (
TGraphErrors*) file[iprod]->Get(
"gMass_SameSMTRDYes");
189 if ( gMassTRDYe[iprod] )
191 gMassTRDYe[iprod]->SetMarkerColor(colorProd[iprod]);
192 gMassTRDYe[iprod]->SetLineColor (colorProd[iprod]);
193 gMassTRDYe[iprod]->SetMarkerStyle(styleProd[iprod]);
194 gMassTRDYe[iprod]->SetMarkerSize (markerSize);
196 if ( iprod > 0 && gMassTRDYe[0] )
198 gMassRatTRDYe[iprod] =
DivideGraphs(gMassTRDYe[iprod],gMassTRDYe[0]);
199 gMassRatTRDYe[iprod]->SetMarkerColor(colorProd[iprod]);
200 gMassRatTRDYe[iprod]->SetLineColor (colorProd[iprod]);
201 gMassRatTRDYe[iprod]->SetMarkerStyle(styleProd[iprod]);
202 gMassRatTRDYe[iprod]->SetMarkerSize (markerSize);
206 for(
Int_t ism = 0; ism < nSM; ism++)
208 gMass[ism][iprod] = (
TGraphErrors*) file[iprod]->Get(Form(
"gMass_SM%d",ism));
211 gMass[ism][iprod]->SetMarkerColor(colorProd[iprod]);
212 gMass[ism][iprod]->SetLineColor (colorProd[iprod]);
213 gMass[ism][iprod]->SetMarkerStyle(styleProd[iprod]);
214 gMass[ism][iprod]->SetMarkerSize (markerSize);
216 if ( iprod > 0 && gMass[ism][0] )
218 gMassRat[ism][iprod] =
DivideGraphs(gMass[ism][iprod],gMass[ism][0]);
219 gMassRat[ism][iprod]->SetMarkerColor(colorProd[iprod]);
220 gMassRat[ism][iprod]->SetLineColor (colorProd[iprod]);
221 gMassRat[ism][iprod]->SetMarkerStyle(styleProd[iprod]);
222 gMassRat[ism][iprod]->SetMarkerSize (markerSize);
232 gStyle->SetPadRightMargin(0.01);
233 gStyle->SetPadLeftMargin(0.12);
234 gStyle->SetTitleFontSize(0.06);
236 gStyle->SetOptStat(0);
237 gStyle->SetOptTitle(1);
238 gStyle->SetPadTopMargin(0.07);
245 TLegend *lE =
new TLegend(-0.04,0.1,1,1);
249 lE->SetBorderSize(0);
250 lE->SetTextSize(0.05);
253 TCanvas * cGraphSM =
new TCanvas(
"cGraphSM",
"Per SM",
254 ncol*2000,nrow*2000);
256 cGraphSM->Divide(ncol,nrow);
258 for(
Int_t ism = 0; ism < nSM; ism++)
265 hAxis[ism] =
new TH1F(Form(
"hAxisBisRat_SM%d",ism),Form(
"SM %d",ism),1000,1,12);
267 hAxis[ism]->GetYaxis()->SetTitle(
"Mass (MeV/#it{c}^{2})");
268 hAxis[ism]->GetXaxis()->SetTitle(
"#it{p}_{T} (GeV/#it{c})");
269 hAxis[ism]->SetMaximum(140);
270 hAxis[ism]->SetMinimum(115);
277 hAxis[ism]->Draw(
"");
281 if(!file[iprod])
continue;
284 lE->AddEntry(gMass[ism][iprod],prodLeg[iprod],
"PL");
286 gMass[ism][iprod]->Draw(
"P");
293 fileName = Form(
"ComparisonGraphs/%s/%s/%s/Mass_%s_%s_PerSM",
294 calorimeter.Data(),trigger.Data(),particle.Data(),titleData.Data(),titleMC.Data());
297 cGraphSM->Print(fileName);
301 TCanvas * cGraphSMRat =
new TCanvas(
"cGraphSMRat",
"Ratio Per SM",
302 ncol*2000,nrow*2000);
304 cGraphSMRat->Divide(ncol,nrow);
306 for(
Int_t ism = 0; ism < nSM; ism++)
308 cGraphSMRat->cd(ism+1);
313 hAxis[ism] =
new TH1F(Form(
"hAxisBis_SM%d",ism),Form(
"SM %d",ism),1000,1,12);
315 hAxis[ism]->GetYaxis()->SetTitle(
"Mass MC / Data");
316 hAxis[ism]->GetXaxis()->SetTitle(
"#it{p}_{T} (GeV/#it{c})");
321 hAxis[ism]->SetMaximum(0.98);
322 hAxis[ism]->SetMinimum(0.85);
323 hAxis[ism]->Draw(
"");
327 if ( !gMassRat[ism][iprod] )
continue;
330 gMassRat[ism][iprod]->Draw(
"P");
335 cGraphSMRat->cd(nSM+1);
339 fileName = Form(
"ComparisonGraphs/%s/%s/%s/MassRatio_%s_%s_PerSM",
340 calorimeter.Data(),trigger.Data(),particle.Data(),titleData.Data(),titleMC.Data());
343 cGraphSMRat->Print(fileName);
360 TH1F* hAxisAll =
new TH1F(
"hAxisAll",
"All SM",1000,1,12);
362 hAxisAll->GetYaxis()->SetTitle(
"Mass (MeV/#it{c}^{2})");
363 hAxisAll->GetXaxis()->SetTitle(
"#it{p}_{T} (GeV/#it{c})");
364 hAxisAll->SetMaximum(140);
365 hAxisAll->SetMinimum(125);
370 TH1F* hAxisAllRat =
new TH1F(
"hAxisAllRat",
"MC/Data ratio, All SM",1000,1,12);
371 hAxisAllRat->GetYaxis()->SetTitle(
"Mass Data/MC");
372 hAxisAllRat->GetXaxis()->SetTitle(
"#it{p}_{T} (GeV/#it{c})");
378 hAxisAllRat->SetMaximum(1.05);
379 hAxisAllRat->SetMinimum(0.98);
382 TCanvas * cGraph =
new TCanvas(
"cGraphAllSM",
"All SM",
383 ncol*2000,nrow*2000);
385 cGraph->Divide(ncol,nrow);
396 if(!file[iprod])
continue;
397 gMassAllSM[iprod]->Draw(
"P");
400 gMassAllSM[1]->Draw(
"P");
402 if ( gMassTRDYe[0] ) cGraph->cd(5);
409 TLegend *lA =
new TLegend(0.2,0.8,0.9,0.9);
413 lA->SetBorderSize(0);
414 lA->SetTextSize(0.05);
416 hAxisAllRat->Draw(
"");
420 if(!file[iprod])
continue;
422 gMassRatAllSM[iprod]->Draw(
"P");
423 gMassRatAllSM[iprod]->Fit(
"pol0",
"R",
"",2,8);
424 TF1* func = gMassRatAllSM[iprod]->GetFunction(
"pol0");
425 lA->AddEntry(func,Form(
"Fit %2.3f #pm %2.3f",func->GetParameter(0),func->GetParError(0)),
"L");
427 gMassRatAllSM[1]->Draw(
"P");
438 TH1F* hAxisNot = (TH1F*) hAxisAll->Clone(
"hAxisNot");
439 hAxisNot->SetTitle(
"SM without TRD");
444 if(!file[iprod])
continue;
445 gMassTRDNo[iprod]->Draw(
"P");
447 gMassTRDNo[1]->Draw(
"P");
451 TLegend *lN =
new TLegend(0.2,0.8,0.9,0.9);
455 lN->SetBorderSize(0);
456 lN->SetTextSize(0.05);
461 TH1F* hAxisNotRat = (TH1F*) hAxisAllRat->Clone(
"hAxisNotRat");
462 hAxisNotRat->SetTitle(
"MC/Data ratio, SM without TRD");
463 hAxisNotRat->Draw(
"");
467 if(!file[iprod])
continue;
469 gMassRatTRDNo[iprod]->Draw(
"P");
470 gMassRatTRDNo[iprod]->Fit(
"pol0",
"R",
"",2,8);
471 TF1* func = gMassRatTRDNo[iprod]->GetFunction(
"pol0");
472 lN->AddEntry(func,Form(
"Fit %2.3f #pm %2.3f",func->GetParameter(0),func->GetParError(0)),
"L");
475 gMassRatTRDNo[1]->Draw(
"P");
487 TLegend *lY =
new TLegend(0.2,0.8,0.9,0.9);
491 lY->SetBorderSize(0);
492 lY->SetTextSize(0.05);
494 TH1F* hAxisYes = (TH1F*) hAxisAll->Clone(
"hAxisYes");
495 hAxisYes->SetTitle(
"SM with TRD");
500 if(!file[iprod])
continue;
501 gMassTRDYe[iprod]->Draw(
"P");
504 gMassTRDYe[1]->Draw(
"P");
511 TH1F* hAxisYesRat = (TH1F*) hAxisAllRat->Clone(
"hAxisYesRat");
512 hAxisYesRat->SetTitle(
"MC/Data ratio, SM with TRD");
513 hAxisYesRat->Draw(
"");
517 if(!file[iprod])
continue;
519 gMassRatTRDYe[iprod]->Draw(
"P");
520 gMassRatTRDYe[iprod]->Fit(
"pol0",
"R",
"",2,8);
521 TF1* func = gMassRatTRDYe[iprod]->GetFunction(
"pol0");
522 lY->AddEntry(func,Form(
"Fit %2.3f #pm %2.3f",func->GetParameter(0),func->GetParError(0)),
"L");
524 gMassRatTRDYe[1]->Draw(
"P");
528 if ( gMassTRDYe[0] ) cGraph->cd(4);
536 fileName = Form(
"ComparisonGraphs/%s/%s/%s/Mass_%s_%s",
537 calorimeter.Data(),trigger.Data(),particle.Data(),titleData.Data(),titleMC.Data());
540 cGraph->Print(fileName);
void CompareInvMassGraphsMCvsData(TString particle="Pi0", TString calorimeter="EMCAL", TString trigger="default", TString titleMC="simu_pp_7TeV_MB", TString titleData="LHC11cd_INT7")
File format: ".eps" ".pdf" ...
const TString calorimeter
static TGraphErrors * DivideGraphs(TGraphErrors *gNum, TGraphErrors *gDen)
Bool_t Data(TH1F *h, Double_t *rangefit, Bool_t writefit, Double_t &sgn, Double_t &errsgn, Double_t &bkg, Double_t &errbkg, Double_t &sgnf, Double_t &errsgnf, Double_t &sigmafit, Int_t &status)
TFile * file
TList with histograms for a given trigger.
TString prod[]
productions to be compared, directory name