1 #if !defined(__CINT__) || defined(__MAKECINT__) 16 #include <TDirectoryFile.h> 33 #include <TGraphErrors.h> 41 Int_t color [] = {1,4,2,kYellow-2,8,kCyan,kYellow-6,kCyan,kOrange+2,kViolet,
42 kOrange-2,4,2,6,8,9,kYellow-6,kCyan,kOrange+2,kViolet,kOrange-2};
43 Int_t lineStyle[] = {1,1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,
44 2,2,2,2,2,2,2,2,2,2,2,2};
45 Int_t marker [] = {20,20,20,21,24,24,24,24,24,24,24};
63 "data/module/TCardChannel3/LHC11cd_EMC7" 64 ,
"simu/module/pp_7TeV_JJ_Dec_GJ/TCardChannel_Mimic0_Scaled2_v3/ScaledMerged" 65 ,
"simu/module/pp_7TeV_JJ_Dec_GJ/TCardChannel_Mimic10c_EcellCut_Scaled2_v3/ScaledMerged" 70 "Data, pp@ 7 TeV, LHC11c+d" 71 ,
"MC default, GJ+JJ_{p^{EMCal}_{T,#gamma} > 3.5 GeV/#it{c}}" 72 ,
"MC xTalk, GJ+JJ_{p^{EMCal}_{T,#gamma} > 3.5 GeV/#it{c}}" 124 printf(
"Execute ana %d, cut %d, allSM %d, first SM %d, last SM %d, total SM+1 %d\n",
125 iana,cut,bAllSM,firstSM,
lastSM, nSM);
140 TString isoName [] = {
"NoIso",
"Iso",
"Photon"};
141 TString isoTitle[] = {
"NOT Isolated" ,
"Isolated",
"Inclusive"};
143 TString cutName [] = {
"",
"_NCellCut"};
144 TString cutTitle[] = {
"no #it{n}^{w} cut" ,
"#it{n}^{w} > 4"};
156 if ( !
file[iprod] )
continue;
158 for(
Int_t ism = 0; ism < nSM-1; ism++)
162 if ( iana == 2 && cut == 1 )
168 (
TH2F*)
file[iprod]->Get(Form(
"AnaIsolPhoton_hPtLambda0%s_SM%d_%s",
169 cutName[cut].
Data(),ism+firstSM,isoName[iana].
Data()));
174 (
TH2F*)
file[iprod]->Get(Form(
"AnaPhoton_hLam0_SM%d",ism+firstSM));
177 if ( !h2[iprod][ism] )
179 printf(
"Histogram for ana %d, cut %d, sm %d not found\n",iana,cut,ism);
193 h2[iprod][nSM-1] = (
TH2F*) h2[iprod][ism]->Clone(Form(
"AllSM_Prod%d_Ana%d_Cut%d",iprod,iana,cut));
198 h2[iprod][nSM-1] -> Add (h2[iprod][ism]);
205 if ( bAllSM && cut == 0 )
208 printf(
"Recover histograms for ALL SM!!!!\n");
212 (
TH2F*)
file[iprod]->Get(Form(
"AnaIsolPhoton_hPtLambda0%s",
213 isoName[iana].
Data()));
215 h2[iprod][nSM-1] = (
TH2F*)
file[iprod]->Get(
"AnaPhoton_hLam0Pt");
217 if ( !h2[iprod][nSM-1] )
219 printf(
"Histogram for ana %d, cut %d, All SM not found\n",iana,cut);
230 for(
Int_t ism = 0; ism < nSM; ism++)
232 if ( !h2[iprod][ism] )
234 printf(
"Sumw2: Histogram for ana %d, cut %d, sm %d not found\n",iana,cut,ism);
238 if ( filePath[iprod].Contains(
"data") ||
239 (filePath[iprod].Contains(
"simu") && filePath[iprod].Contains(
"MB")))
240 h2[iprod][ism]->Sumw2();
249 for(
Int_t ism = 0; ism < nSM; ism++)
255 if ( !h2[iprod][ism] )
257 printf(
"Projection Histogram for iprod %d, ana %d, cut %d, sm %d not found\n",
258 iprod, iana, cut, ism);
262 Int_t ebinMin = h2[iprod][ism]->GetXaxis()->FindBin(
binE[iebin ]);
263 Int_t ebinMax = h2[iprod][ism]->GetXaxis()->FindBin(
binE[iebin+1])-1;
265 lowE[iebin] = h2[iprod][ism]->GetXaxis()->GetBinLowEdge(ebinMin);
266 width = h2[iprod][ism]->GetXaxis()->GetBinWidth (ebinMax);
267 higE[iebin] = h2[iprod][ism]->GetXaxis()->GetBinLowEdge(ebinMax)+width;
269 h[iprod][iebin][ism] =
270 (
TH1D*) h2[iprod][ism]->ProjectionY(Form(
"Histo%d_BinE%d_SM%d",iprod,iebin,ism),ebinMin,ebinMax);
279 if ( !h[iprod][iebin][ism] )
continue;
281 h[iprod][iebin][ism]->SetLineColor(
color[iprod]);
283 h[iprod][iebin][ism]->SetLineWidth(2);
285 h[iprod][iebin][ism]->SetLineStyle(
lineStyle[iprod]);
287 h[iprod][iebin][ism]->SetMarkerStyle(
marker[iprod]);
289 h[iprod][iebin][ism]->SetMarkerColor(
color[iprod]);
291 h[iprod][iebin][ism]->SetMarkerSize(0.5);
293 h[iprod][iebin][ism]->SetXTitle(
"#sigma_{long}^{2}");
296 h[iprod][iebin][ism]->Rebin(rebin);
298 h[iprod][iebin][ism]->SetAxisRange(xmin,xmax,
"X");
303 Double_t integral = h[iprod][iebin][ism]->Integral(h[iprod][iebin][ism]->FindBin(0.6),
304 h[iprod][iebin][ism]->FindBin(2));
307 h[iprod][iebin][ism]->Scale(1./integral);
308 h[iprod][iebin][ism]->SetYTitle(
"Norm. integral 0.6<#lambda^{2}_{0}<2 ");
311 h[iprod][iebin][ism] = 0;
316 Double_t scale = h[iprod][iebin][ism]->GetBinContent(h[iprod][iebin][ism]->FindBin(0.245));
319 h[iprod][iebin][ism]->Scale(1./scale);
320 h[iprod][iebin][ism]->SetYTitle(
"Norm. to max at 0.25");
322 else h[iprod][iebin][ism] = 0;
336 if ( h[iprod][iebin][0] )
338 hGroup[iprod][iebin][0] = (
TH1D*) h[iprod][iebin][0]->Clone(Form(
"SMGroup0_Prod%d_Ana%d_Cut%d",
341 hGroup[iprod][iebin][0]->Add( h[iprod][iebin][4] );
342 hGroup[iprod][iebin][0]->Add( h[iprod][iebin][5] );
343 hGroup[iprod][iebin][0]->Add( h[iprod][iebin][6] );
344 hGroup[iprod][iebin][0]->Add( h[iprod][iebin][8] );
345 hGroup[iprod][iebin][0]->Add( h[iprod][iebin][9] );
347 hGroup[iprod][iebin][0]->Scale(1./6.);
351 hGroup[iprod][iebin][0] = 0;
354 if(h[iprod][iebin][1])
356 hGroup[iprod][iebin][1] = (
TH1D*) h[iprod][iebin][1]->Clone(Form(
"SMGroup1_Prod%d_Ana%d_Cut%d",
359 hGroup[iprod][iebin][1]->Add( h[iprod][iebin][1] );
361 hGroup[iprod][iebin][1]->Scale(1./2.);
365 hGroup[iprod][iebin][1] = 0;
368 if(h[iprod][iebin][3])
370 hGroup[iprod][iebin][2] = (
TH1D*) h[iprod][iebin][3]->Clone(Form(
"SMGroup2_Prod%d_Ana%d_Cut%d",
373 hGroup[iprod][iebin][2]->Add( h[iprod][iebin][7] );
375 hGroup[iprod][iebin][2]->Scale(1./2.);
379 hGroup[iprod][iebin][2] = 0;
394 gStyle->SetPadRightMargin(0.01);
395 gStyle->SetPadLeftMargin(0.12);
396 gStyle->SetTitleFontSize(0.06);
398 gStyle->SetOptStat(0);
406 TCanvas * cA =
new TCanvas(Form(
"cAllSM_iana%d_cut%d",iana,cut),
407 Form(
"All SM, iana %d, cut %d",iana,cut),
408 ncolE*2000,nrowE*2000);
410 cA->Divide(ncolE,nrowE);
415 l=
new TLegend(-0.04,0.,1,1);
416 l->SetTextSize(0.06);
420 l=
new TLegend(0.5,0.6,0.9,0.9);
421 l->SetTextSize(0.035);
427 l->AddEntry(
"",Form(isoTitle[iana].
Data(), cutTitle[cut].
Data()),
"");
434 if(!h[0][iebin][nSM-1])
continue;
438 gStyle->SetOptTitle(1);
439 gStyle->SetPadTopMargin(0.08);
441 h[0][iebin][nSM-1]->Draw(
"H");
446 if(!h[iprod][iebin][nSM-1])
continue;
448 h[iprod][iebin][nSM-1]->SetTitleOffset(1.8,
"Y");
451 h[iprod][iebin][nSM-1]->SetTitle(Form(
"%2.1f < #it{E}_{T}^{clus} < %2.1f GeV",lowE[iebin],higE[iebin]));
453 h[iprod][iebin][nSM-1]->Draw(
"H same");
455 if(h[iprod][iebin][nSM-1]->GetMaximum() > h[0][iebin][nSM-1]->GetMaximum())
456 h[0][iebin][nSM-1]->SetMaximum(h[iprod][iebin][nSM-1]->GetMaximum()*1.2);
459 l->AddEntry(h[iprod][iebin][nSM-1],Form(
"%s",dataType[iprod].
Data()),
"PL");
466 fileName = Form(
"figures/Comparison_M02_AllSM_%s%s_%s",
467 isoName[iana].
Data(),cutName[cut].
Data(),titleName.Data());
473 TCanvas * cAR =
new TCanvas(Form(
"cR_AllSM_iana%d_cut%d",iana, cut),
474 Form(
"All SM, iana %d, cut %d",iana, cut),
475 ncolE*2000,nrowE*2000);
477 cAR->Divide(ncolE,nrowE);
483 if(!h[0][iebin][nSM-1])
continue;
487 gStyle->SetOptTitle(1);
488 gStyle->SetPadTopMargin(0.08);
490 h[0][iebin][nSM-1]->Draw(
"H");
494 if(!h[iprod][iebin][nSM-1])
continue;
496 TH1F* hRat = (TH1F*) h[iprod][iebin][nSM-1]->Clone(Form(
"%s_Ratio",h[iprod][iebin][nSM-1]->GetName()));
497 hRat->Divide(h[0][iebin][nSM-1]);
499 if(iprod==1) hRat->Draw(
"H");
500 else hRat->Draw(
"H same");
502 hRat->SetYTitle(
"Ratio MC to Data");
503 hRat->SetMaximum(1.2);
508 cAR->cd(ncolE*nrowE);
511 fileName = Form(
"figures/Comparison_Ratio_M02_AllSM_%s%s_%s",
512 isoName[iana].
Data(),cutName[cut].
Data(),titleName.Data());
514 cAR->Print(fileName);
517 if ( bAllSM )
return;
529 gStyle->SetOptTitle(1);
530 gStyle->SetPadTopMargin(0.07);
532 TCanvas *
c =
new TCanvas(Form(
"c_ebin%d_iso%d_cut%d",
534 Form(
"iana %d, cut %d, %2.1f < E < %2.1f",
535 iana, cut,lowE[iebin],higE[iebin]),
536 ncolSM*2000,nrowSM*2000);
537 c->Divide(ncolSM,nrowSM);
540 if(ncolSM*ncolSM!=nSM)
542 lSM=
new TLegend(-0.04,0,1,1);
543 lSM->SetTextSize(0.06);
547 lSM=
new TLegend(0.5,0.6,0.9,0.9);
548 lSM->SetTextSize(0.035);
551 lSM->SetFillColor(0);
552 lSM->SetFillStyle(0);
553 lSM->SetLineColor(0);
554 lSM->SetBorderSize(0);
555 lSM->SetHeader(Form(
" %2.1f < #it{E} < %2.1f GeV", lowE[iebin],higE[iebin]));
556 lSM->AddEntry(
"",Form(isoTitle[iana].
Data(), cutTitle[cut].
Data()),
"");
557 for(
Int_t ism = 0; ism < nSM; ism++)
564 if(!h[0][iebin][ism])
continue;
569 if(!h[iprod][iebin][ism])
continue;
571 h[iprod][iebin][ism]->SetTitle(Form(
"SM %d",ism));
573 h[iprod][iebin][ism]->SetTitleOffset(1.8,
"Y");
577 if ( iprod == 0 ) h[iprod][iebin][ism]->Draw(
"H");
578 else h[iprod][iebin][ism]->Draw(
"H same");
580 if(h[iprod][iebin][ism]->GetMaximum() > h[0][iebin][ism]->GetMaximum())
581 h[0][iebin][ism]->SetMaximum(h[iprod][iebin][ism]->GetMaximum()*1.2);
584 lSM->AddEntry(h[iprod][iebin][ism],Form(
"%s",dataType[iprod].
Data()),
"PL");
590 c->cd(ncolSM*nrowSM);
593 fileName = Form(
"figures/Comparison_M02_Ebin%d_%s%s_%s",
594 iebin,isoName[iana].
Data(),cutName[cut].
Data(),titleName.Data());
598 if ( !plotRat )
continue;
600 TCanvas * cR =
new TCanvas(Form(
"cR_ebin%d_iana%d_cut%d",
602 Form(
"Ratio iana %d, %2.1f < E < %2.1f",
603 iana, lowE[iebin],higE[iebin]),
604 ncolSM*2000,nrowSM*2000);
605 cR->Divide(ncolSM,nrowSM);
607 for(
Int_t ism = 0; ism < nSM; ism++)
614 if(!h[1][iebin][ism])
continue;
619 if(!h[iprod][iebin][ism])
continue;
621 TH1F* hRat = (TH1F*) h[iprod][iebin][ism]->Clone(Form(
"%s_Ratio",h[iprod][iebin][ism]->GetName()));
622 hRat->Divide(h[0][iebin][ism]);
624 if(iprod==0) hRat->Draw(
"H");
625 else hRat->Draw(
"H same");
627 hRat->SetYTitle(
"Ratio MC to Data");
628 hRat->SetMaximum(1.2);
635 cR->cd(ncolSM*nrowSM);
638 fileName = Form(
"figures/Comparison_Ratio_M02_Ebin%d_%s%s_%s",
639 iebin,isoName[iana].
Data(),cutName[cut].
Data(),titleName.Data());
650 for(
Int_t ism = 0; ism < nSM-1; ism++)
652 gStyle->SetOptTitle(1);
653 gStyle->SetPadTopMargin(0.07);
655 TCanvas *
c =
new TCanvas(Form(
"c_sm%d_iana%d_cut%d",
657 Form(
"iana %d, cut %d, SM %d",
659 ncolE*2000,ncolE*2000);
660 c->Divide(ncolE,nrowE);
678 if(!h[0][iebin][ism])
continue;
683 if(!h[iprod][iebin][ism])
continue;
685 h[iprod][iebin][ism]->SetTitle(Form(
"%2.1f < #it{E}^{clus} < %2.1f GeV",lowE[iebin],higE[iebin]));
687 h[iprod][iebin][ism]->SetTitleOffset(1.8,
"Y");
691 if ( iprod == 0 ) h[iprod][iebin][ism]->Draw(
"H");
692 else h[iprod][iebin][ism]->Draw(
"H same");
694 if(h[iprod][iebin][ism]->GetMaximum() > h[0][iebin][ism]->GetMaximum())
695 h[0][iebin][ism]->SetMaximum(h[iprod][iebin][ism]->GetMaximum()*1.2);
704 fileName = Form(
"figures/Comparison_M02_SM%d_%s%s_%s",
705 ism,isoName[iana].
Data(),cutName[cut].
Data(),titleName.Data());
730 file[iprod] = TFile::Open(Form(
"%s.root",filePath[iprod].
Data()));
732 printf(
"Read: %s.root, %p\n",filePath[iprod].
Data(),
file);
737 DoIt(0, 0, firstSM,
lastSM, plotRat, bAllSM, debug);
void CompareShowerShapeLongPerAnaPerSM(Int_t firstSM=0, Int_t lastSM=9, Bool_t plotRat=kFALSE, Bool_t bAllSM=kFALSE, Bool_t debug=kFALSE)
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)
void GetCanvasColRowNumber(Int_t npad, Int_t &ncol, Int_t &nrow, Bool_t square=kFALSE)
void DoIt(Int_t iana=0, Bool_t cut=kFALSE, Int_t firstSM=0, Int_t lastSM=9, Bool_t plotRat=kFALSE, Bool_t bAllSM=kFALSE, Bool_t debug=kFALSE)