12 #if !defined(__CINT__) || defined(__MAKECINT__) 15 #include <TDirectoryFile.h> 31 #include <TGraphErrors.h> 35 Int_t color [] = {1,4,2,6,8,9,kYellow-6,kCyan,kOrange+2,kViolet,kOrange-2,4,2,6,8,9,kYellow-6,kCyan,kOrange+2,kViolet,kOrange-2};
36 Int_t lineStyle[] = {1,1,1,1,1,1, 1, 1, 1, 1, 1,2,2,2,2,2, 2, 2, 2, 2, 2,2,2,2,2,2,2,2,2,2,2,2};
37 Int_t marker [] = {24,21,20,25,24,24,24,24,24,24,24};
79 ,
Int_t debug = kFALSE
85 if ( addGJ && titleProd.Contains(
"LHC") )
89 printf(
"++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++\n");
90 printf(
"In case of data, not possible to add GJ simulation, do nothing, deactivate this option\n");
91 printf(
"++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++\n");
98 const Int_t nMCCases = nCases;
100 TFile * fileJJ[nMCCases];
101 TFile * fileGJ[nMCCases];
104 TH2D* h2M02Iso [nMCCases];
105 TH2D* h2M02Not [nMCCases];
106 TH2D* h2M02IsoGJ[nMCCases];
108 TH1D* hM02LowIs [nMCCases];
109 TH1D* hM02LowNo [nMCCases];
110 TH1D* hM02HigIs [nMCCases];
111 TH1D* hM02HigNo [nMCCases];
113 TH1D* hM02LowIsRat[nMCCases];
114 TH1D* hM02LowNoRat[nMCCases];
115 TH1D* hM02HigIsRat[nMCCases];
116 TH1D* hM02HigNoRat[nMCCases];
118 TH1D* hDoubleRatioCases[nMCCases];
119 TH1D* hDoubleRatio[nMCCases];
122 for(
Int_t icase = 0; icase < nMCCases; icase++)
132 hM02LowIsRat[icase]=0;
133 hM02LowNoRat[icase]=0;
134 hM02HigIsRat[icase]=0;
135 hM02HigNoRat[icase]=0;
137 hDoubleRatio[icase]=0;
138 hDoubleRatioCases[icase]=0;
144 const Int_t nBins = 14;
145 Double_t binE[]={8,9,10,11,12,13,14,16,18,20,25,30,40,50,60};
149 if(titleProd ==
"Low")
154 if(titleProd ==
"High")
164 cuts = Form(
"Low_%2.2f-%2.2f" ,m02LowCutMin, m02LowCutMax);
166 cuts = Form(
"Low_%2.2f-%2.2f_High_%2.2f-%2.2f",m02LowCutMin, m02LowCutMax, m02HigCutMin, m02HigCutMax);
168 TString prodTitleOutput = titleProd;
169 if ( addGJ ) prodTitleOutput+=Form(
"_GJx%2.2f",gjFactor);
170 if ( usePi0 ) prodTitleOutput+=
"_MergedPi0";
177 printf(
"Get files and histograms \n");
179 for(
Int_t icase = firstMC; icase < nMCCases; icase++)
182 printf(
"\t Case %d - %s\n",icase, mcCases[icase].
Data());
183 if ( titleProd.Contains(
"LHC") )
185 fileJJ[icase] = TFile::Open(Form(
"%s/%s/%s.root",opt.Data(),dataFileDir.Data(),titleProd.Data()));
188 fileJJ[icase] = TFile::Open(Form(
"%s/%s/%s/ScaledMerged_%s.root",opt.Data(),mcCasesPath[icase].Data(),titleProd.Data(), mcCases[icase].Data()));
191 fileGJ[icase] = TFile::Open(Form(
"%s/%s/%s/ScaledMerged_%s.root",opt.Data(),mcCasesPath[icase].Data(),gjProd.Data(), mcCases[icase].Data()));
195 printf(
"Data/MC file %s %p\n",titleProd.Data(),fileJJ[icase]);
196 printf(
"GJ file %s %p\n",gjProd.Data(),fileGJ[icase]);
199 if ( !fileJJ[icase] )
211 h2M02Not[icase] = (
TH2D*) fileJJ[icase]->Get(
"AnaIsolPhoton_hPtLambda0NoIso");
213 h2M02Not[icase]->Add((
TH2D*) fileGJ[icase]->Get(
"AnaIsolPhoton_hPtLambda0NoIso"),gjFactor);
215 h2M02Iso[icase] = (
TH2D*) fileJJ[icase]->Get(
"AnaIsolPhoton_hPtLambda0Iso");
221 h2M02IsoGJ[icase] = (
TH2D*) fileGJ[icase]->Get(
"AnaIsolPhoton_hPtLambda0Iso");
238 Int_t binm02LowCutMin = h2M02Iso[icase]->GetYaxis()->FindBin(m02LowCutMin);
239 Int_t binm02LowCutMax = h2M02Iso[icase]->GetYaxis()->FindBin(m02LowCutMax)-1;
243 printf(
"Signal region: M02 [%2.2f,%2.2f] - Bins [%d,%d] \n",
244 m02LowCutMin,m02LowCutMax,binm02LowCutMin,binm02LowCutMax);
248 (
TH1D*) h2M02Not[icase]->ProjectionX(Form(
"LowM02_NoIso_%s_%s",titleProd.Data(),cuts.Data()),
249 binm02LowCutMin,binm02LowCutMax);
254 (
TH1D*) h2M02Iso[icase]->ProjectionX(Form(
"LowM02_Iso_%s_%s",titleProd.Data(),cuts.Data()),
255 binm02LowCutMin,binm02LowCutMax);
267 hM02HigNo[icase] = (
TH1D*) fileJJ[icase]->Get(
"AnaIsolPi0SS_hPtNoIso");
268 if(addGJ)hM02HigNo[icase]->Add((
TH2D*) fileGJ[icase]->Get(
"AnaIsolPi0SS_hPtNoIso"),gjFactor);
273 hM02HigIs[icase] = (
TH1D*) fileJJ[icase]->Get(
"AnaIsolPi0SS_hE");
274 if(addGJ)hM02HigIs[icase]->Add((
TH2D*) fileGJ[icase]->Get(
"AnaIsolPi0SS_hE"),gjFactor);
288 Int_t binm02HigCutMin = h2M02Iso[icase]->GetYaxis()->FindBin(m02HigCutMin);
289 Int_t binm02HigCutMax = h2M02Iso[icase]->GetYaxis()->FindBin(m02HigCutMax)-1;
293 printf(
"Bkg region: M02 [%2.2f,%2.2f] - Bins [%d,%d] \n",
294 m02HigCutMin,m02HigCutMax,binm02HigCutMin,binm02HigCutMax);
298 (
TH1D*) h2M02Not[icase]->ProjectionX(Form(
"HigM02_NoIso_%s_%s",titleProd.Data(),cuts.Data()),
299 binm02HigCutMin,binm02HigCutMax);
304 (
TH1D*) h2M02Iso[icase]->ProjectionX(Form(
"HigM02_Iso_%s_%s",titleProd.Data(),cuts.Data()),
305 binm02HigCutMin,binm02HigCutMax);
310 hM02HigIs[icase] ->Add
311 ( (
TH1D*) h2M02IsoGJ[icase]->ProjectionX(Form(
"HigM02_GJ_Iso_%s_%s",titleProd.Data(),cuts.Data()),
312 binm02HigCutMin,binm02HigCutMax)
321 hM02HigIs[icase]->SetMarkerStyle(
marker[1]);
322 hM02HigIs[icase]->SetMarkerColor(
color[icase]);
323 hM02HigIs[icase]->SetLineColor (
color[icase]);
324 hM02HigIs[icase]->SetAxisRange(emin,emax,
"X");
325 hM02HigIs[icase]->SetYTitle(
"d #sigma / d #it{p}_{T} (mb)");
327 hM02HigNo[icase]->SetMarkerStyle(
marker[3]);
328 hM02HigNo[icase]->SetMarkerColor(
color[icase]);
329 hM02HigNo[icase]->SetLineColor (
color[icase]);
330 hM02HigNo[icase]->SetAxisRange(emin,emax,
"X");
331 hM02HigNo[icase]->SetYTitle(
"d #sigma / d #it{p}_{T} (mb)");
333 hM02LowIs[icase]->SetMarkerStyle(
marker[0]);
334 hM02LowIs[icase]->SetMarkerColor(
color[icase]);
335 hM02LowIs[icase]->SetLineColor (
color[icase]);
336 hM02LowIs[icase]->SetAxisRange(emin,emax,
"X");
337 hM02LowIs[icase]->SetYTitle(
"d #sigma / d #it{p}_{T} (mb)");
339 hM02LowNo[icase]->SetMarkerStyle(
marker[2]);
340 hM02LowNo[icase]->SetMarkerColor(
color[icase]);
341 hM02LowNo[icase]->SetLineColor (
color[icase]);
342 hM02LowNo[icase]->SetAxisRange(emin,emax,
"X");
343 hM02LowNo[icase]->SetYTitle(
"d #sigma / d #it{p}_{T} (mb)");
345 hM02LowNo[icase]->SetTitle(Form(
"C: %2.2f < #sigma_{long} < %2.2f - #Sigma #it{p}_{T} > 1 GeV/c",
346 m02LowCutMin,m02LowCutMax));
347 hM02LowNo[icase]->SetTitleOffset(1.6,
"Y");
349 hM02LowIs[icase]->SetTitle(Form(
"A: %2.2f < #sigma_{long} < %2.2f - #Sigma #it{p}_{T} < 1 GeV/c",
350 m02LowCutMin,m02LowCutMax));
351 hM02LowIs[icase]->SetTitleOffset(1.6,
"Y");
355 hM02HigIs[icase]->SetTitle(
"B: Merged #pi^{0} - #Sigma #it{p}_{T} < 1 GeV/c");
356 hM02HigIs[icase]->SetTitleOffset(1.6,
"Y");
358 hM02HigNo[icase]->SetTitle(
"D: Merged #pi^{0} - #Sigma #it{p}_{T} > 1 GeV/c");
359 hM02HigNo[icase]->SetTitleOffset(1.6,
"Y");
363 hM02HigNo[icase]->SetTitle(Form(
"D: %2.2f < #sigma_{long} < %2.2f - #Sigma #it{p}_{T} > 1 GeV/c",
364 m02HigCutMin,m02HigCutMax));
365 hM02HigNo[icase]->SetTitleOffset(1.6,
"Y");
367 hM02HigIs[icase]->SetTitle(Form(
"B: %2.2f < #sigma_{long} < %2.2f - #Sigma #it{p}_{T} < 1 GeV/c",
368 m02HigCutMin,m02HigCutMax));
369 hM02HigIs[icase]->SetTitleOffset(1.6,
"Y");
372 if ( titleProd.Contains(
"LHC") )
374 hM02LowIs[icase]->Sumw2();
375 hM02HigIs[icase]->Sumw2();
376 hM02LowNo[icase]->Sumw2();
377 hM02HigNo[icase]->Sumw2();
383 hM02LowIs[icase]->Rebin(
rebin);
384 hM02HigIs[icase]->Rebin(
rebin);
385 hM02LowNo[icase]->Rebin(
rebin);
386 hM02HigNo[icase]->Rebin(
rebin);
391 hM02LowIs[icase] = (
TH1D*) hM02LowIs[icase]->
Rebin(nBins,Form(
"%s_Rebin",hM02LowIs[icase]->GetName()),
binE);
392 hM02HigIs[icase] = (
TH1D*) hM02HigIs[icase]->
Rebin(nBins,Form(
"%s_Rebin",hM02HigIs[icase]->GetName()),binE);
393 hM02LowNo[icase] = (
TH1D*) hM02LowNo[icase]->
Rebin(nBins,Form(
"%s_Rebin",hM02LowNo[icase]->GetName()),binE);
394 hM02HigNo[icase] = (
TH1D*) hM02HigNo[icase]->
Rebin(nBins,Form(
"%s_Rebin",hM02HigNo[icase]->GetName()),binE);
398 printf(
"Rebinned ABCD names: %s, %s,\n %s, %s\n",
399 hM02LowIs[icase]->GetName(),hM02HigIs[icase]->GetName(),
400 hM02LowNo[icase]->GetName(),hM02HigNo[icase]->GetName());
416 printf(
"PLOT Double Ratios \n");
420 gStyle->SetPadRightMargin(0.01);
421 gStyle->SetPadLeftMargin(0.12);
422 gStyle->SetPadTopMargin(0.08);
424 gStyle->SetTitleFontSize(0.06);
426 gStyle->SetOptStat(0);
427 gStyle->SetOptTitle(1);
430 TCanvas * cABCD =
new TCanvas(Form(
"cABCD_%s_%s" ,cuts.Data(),prodTitleOutput.Data()),
431 Form(
"ABCD, %s, %s",cuts.Data(),prodTitleOutput.Data()),1000,1000);
435 TLegend *lABCD =
new TLegend(0.3,0.6,0.89,0.89);
436 lABCD->SetFillColor(0);
437 lABCD->SetFillStyle(0);
438 lABCD->SetLineColor(0);
439 lABCD->SetBorderSize(0);
440 lABCD->SetTextSize(0.05);
447 for(
Int_t icase = 0; icase < nMCCases; icase++)
450 if(!hM02LowIs[icase])
continue;
452 if ( icase==0 ) hM02LowIs[icase]->Draw(
"H");
453 else hM02LowIs[icase]->Draw(
"H same");
458 lABCD->AddEntry(hM02LowIs[icase],Form(
"%s",mcLeg[icase].
Data()),
"L");
470 for(
Int_t icase = 0; icase < nMCCases; icase++)
472 if(!hM02HigIs[icase])
continue;
474 if ( icase==0 ) hM02HigIs[icase]->Draw(
"H");
475 else hM02HigIs[icase]->Draw(
"H same");
487 for(
Int_t icase = 0; icase < nMCCases; icase++)
489 if(!hM02LowNo[icase])
continue;
491 if ( icase==0 ) hM02LowNo[icase]->Draw(
"H");
492 else hM02LowNo[icase]->Draw(
"H same");
507 for(
Int_t icase = 0; icase < nMCCases; icase++)
509 if(!hM02HigNo[icase])
continue;
511 if ( icase==0 ) hM02HigNo[icase]->Draw(
"H");
512 else hM02HigNo[icase]->Draw(
"H same");
521 fileName = Form(
"%s/figures/ABCD_%s_pT_%s",opt.Data(),cuts.Data(),prodTitleOutput.Data());
523 cABCD->Print(fileName);
528 TCanvas * cABCDRatio =
new TCanvas(Form(
"cABCDRatio_%s_%s" ,cuts.Data(),prodTitleOutput.Data()),
529 Form(
"ABCD cases Ratio, %s, %s",cuts.Data(),prodTitleOutput.Data()),
532 cABCDRatio->Divide(2,2);
534 TLegend *lABCDRat =
new TLegend(0.3,0.6,0.89,0.89);
535 lABCDRat->SetFillColor(0);
536 lABCDRat->SetFillStyle(0);
537 lABCDRat->SetLineColor(0);
538 lABCDRat->SetBorderSize(0);
539 lABCDRat->SetTextSize(0.05);
541 lABCDRat->SetHeader(Form(
"Den.: %s",mcLeg[0].
Data()));
548 for(
Int_t icase = 1; icase < nMCCases; icase++)
550 if(!hM02LowIs[icase])
continue;
552 TString cloneName = Form(
"M02LowIsCasesRat%s_%s_%s",mcCases[icase].
Data(),mcCasesPath[icase].
Data(),cuts.Data());
554 if ( titleProd.Contains(
"LHC") ) cloneName = Form(
"M02LowIsCasesRat%s_%s_%s",titleProd.Data(),
"",cuts.Data());
558 hM02LowIsRat[icase] = (
TH1D*) hM02LowIs[icase]->Clone(cloneName);
560 hM02LowIsRat[icase]->Divide(hM02LowIs[0]);
562 hM02LowIsRat[icase]->SetYTitle(
"Ratio");
563 hM02LowIsRat[icase]->SetMaximum(2.5);
564 hM02LowIsRat[icase]->SetMinimum(0.5);
566 if(icase == 0) hM02LowIsRat[icase]->Draw(
"H");
567 else hM02LowIsRat[icase]->Draw(
"H same");
569 lABCDRat->AddEntry(hM02LowIsRat[icase],Form(
"Num.:%s",mcLeg[icase].
Data()),
"L");
578 for(
Int_t icase = 1; icase < nMCCases; icase++)
581 if(!hM02HigIs[icase])
continue;
583 TString cloneName = Form(
"M02HighIsCasesRat%s_%s_%s",mcCases[icase].
Data(),mcCasesPath[icase].
Data(),cuts.Data());
585 if ( titleProd.Contains(
"LHC") ) cloneName = Form(
"M02HighIsCasesRat%s_%s_%s",titleProd.Data(),
"",cuts.Data());
587 hM02HigIsRat[icase] = (
TH1D*) hM02HigIs[icase]->Clone(cloneName);
589 hM02HigIsRat[icase]->Divide(hM02HigIs[0]);
591 hM02HigIsRat[icase]->SetYTitle(
"Ratio");
592 hM02HigIsRat[icase]->SetMaximum(2.5);
593 hM02HigIsRat[icase]->SetMinimum(0.5);
595 if(icase == 0) hM02HigIsRat[icase]->Draw(
"H");
596 else hM02HigIsRat[icase]->Draw(
"H same");
605 for(
Int_t icase = 1; icase < nMCCases; icase++)
608 if(!hM02LowNo[icase])
continue;
610 TString cloneName = Form(
"M02LowNoCasesRat%s_%s_%s",mcCases[icase].
Data(),mcCasesPath[icase].
Data(),cuts.Data());
612 if ( titleProd.Contains(
"LHC") ) cloneName = Form(
"M02LowNoCasesRat%s_%s_%s",titleProd.Data(),
"",cuts.Data());
614 hM02LowNoRat[icase] = (
TH1D*) hM02LowNo[icase]->Clone(cloneName);
615 hM02LowNoRat[icase]->Divide(hM02LowNo[0]);
618 hM02LowNoRat[icase]->SetYTitle(
"Ratio");
619 hM02LowNoRat[icase]->SetMaximum(2.5);
620 hM02LowNoRat[icase]->SetMinimum(0.5);
622 if(icase == 0) hM02LowNoRat[icase]->Draw(
"H");
623 else hM02LowNoRat[icase]->Draw(
"H same");
632 for(
Int_t icase = 1; icase < nMCCases; icase++)
635 if(!hM02HigNo[icase])
continue;
637 TString cloneName = Form(
"M02HighNoCasesRat%s_%s_%s",mcCases[icase].
Data(),mcCasesPath[icase].
Data(),cuts.Data());
639 if ( titleProd.Contains(
"LHC") ) cloneName = Form(
"M02HighNoCasesRat%s_%s_%s",titleProd.Data(),
"",cuts.Data());
641 hM02HigNoRat[icase] = (
TH1D*) hM02HigNo[icase]->Clone(cloneName);
643 hM02HigNoRat[icase]->Divide(hM02HigNo[0]);
645 hM02HigNoRat[icase]->SetYTitle(
"Ratio");
646 hM02HigNoRat[icase]->SetMaximum(2.5);
647 hM02HigNoRat[icase]->SetMinimum(0.5);
649 if(icase == 0) hM02HigNoRat[icase]->Draw(
"H");
650 else hM02HigNoRat[icase]->Draw(
"H same");
656 fileName = Form(
"%s/figures/ABCD_%s_pT_CasesRatio_%s",opt.Data(),cuts.Data(),prodTitleOutput.Data());
658 cABCDRatio->Print(fileName);
662 TCanvas * cABCD2Ratio =
new TCanvas(Form(
"cABCD2Ratio_%s_%s" ,cuts.Data(),prodTitleOutput.Data()),
663 Form(
"ABCD Double Ratio, %s, %s",cuts.Data(),prodTitleOutput.Data()),
666 TLegend *lABCD2Rat =
new TLegend(0.15,0.6,0.5,0.89);
667 lABCD2Rat->SetFillColor(0);
668 lABCD2Rat->SetFillStyle(0);
669 lABCD2Rat->SetLineColor(0);
670 lABCD2Rat->SetBorderSize(0);
671 lABCD2Rat->SetTextSize(0.05);
675 for(
Int_t icase = 0; icase < nMCCases; icase++)
677 if(!hM02LowIs[icase])
continue;
679 TString cloneName = Form(
"DoubleRat%s_%s_%s",mcCases[icase].
Data(),mcCasesPath[icase].
Data(),cuts.Data());
681 if ( titleProd.Contains(
"LHC") ) cloneName = Form(
"DoubleRat%s_%s",titleProd.Data(),cuts.Data());
685 hDoubleRatio[icase] = (
TH1D*) hM02LowIs[icase]->Clone(cloneName);
686 hDoubleRatio[icase]->Divide (hM02LowNo[icase]);
687 hDoubleRatio[icase]->Divide (hM02HigIs[icase]);
688 hDoubleRatio[icase]->Multiply(hM02HigNo[icase]);
690 hDoubleRatio[icase]->SetYTitle(
"(A*D)/(C*B)");
691 hDoubleRatio[icase]->SetTitle(Form(
"#Sigma #it{p}_{T} > 1 GeV/c - AC: %2.2f < #sigma_{long} < %2.2f - BD: %2.2f < #sigma_{long} < %2.2f",
692 m02LowCutMin,m02LowCutMax,m02HigCutMin,m02HigCutMax));
694 if(usePi0) hDoubleRatio[icase]->SetTitle(Form(
"#Sigma #it{p}_{T} > 1 GeV/c - AC: %2.2f < #sigma_{long} < %2.2f - BD:Merged #pi^{0} band",
695 m02LowCutMin,m02LowCutMax));
697 hDoubleRatio[icase]->SetMaximum(1.4);
698 hDoubleRatio[icase]->SetMinimum(0.7);
700 if(titleProd.Contains(
"LHC"))
702 hDoubleRatio[icase]->SetMaximum(8);
703 hDoubleRatio[icase]->SetMinimum(0.8);
706 if(icase == 0) hDoubleRatio[icase]->Draw(
"H");
707 else hDoubleRatio[icase]->Draw(
"H same");
709 lABCD2Rat->AddEntry(hDoubleRatio[icase],Form(
"%s",mcLeg[icase].
Data()),
"L");
715 fileName = Form(
"%s/figures/ABCD_%s_DoubleRatio_%s",opt.Data(),cuts.Data(),prodTitleOutput.Data());
717 cABCD2Ratio->Print(fileName);
722 TCanvas * cABCD2RatioCases =
new TCanvas(Form(
"cABCD2RatioCases_%s_%s" ,cuts.Data(),prodTitleOutput.Data()),
723 Form(
"ABCD Double Ratio Cases, %s, %s",cuts.Data(),prodTitleOutput.Data()),
726 TLegend *lABCD2RatCa =
new TLegend(0.15,0.6,0.5,0.89);
727 lABCD2RatCa->SetFillColor(0);
728 lABCD2RatCa->SetFillStyle(0);
729 lABCD2RatCa->SetLineColor(0);
730 lABCD2RatCa->SetBorderSize(0);
731 lABCD2RatCa->SetTextSize(0.05);
733 lABCD2RatCa->SetHeader(Form(
"Den.: %s",mcLeg[0].
Data()));
738 for(
Int_t icase = 1; icase < nMCCases; icase++)
740 if(!hM02LowIs[icase])
continue;
742 TString cloneName = Form(
"DoubleRatCases%s_%s_%s",mcCases[icase].
Data(),mcCasesPath[icase].
Data(),cuts.Data());
744 if ( titleProd.Contains(
"LHC") ) cloneName = Form(
"DoubleRatCases%s_%s_%s",titleProd.Data(),
"",cuts.Data());
746 hDoubleRatioCases[icase] = (
TH1D*) hDoubleRatio[icase]->Clone(cloneName);
748 hDoubleRatioCases[icase]->Divide(hDoubleRatio[0]);
750 hDoubleRatioCases[icase]->SetTitle(Form(
"#Sigma #it{p}_{T} > 1 GeV/c - AC: %2.2f < #sigma_{long} < %2.2f - BD: %2.2f < #sigma_{long} < %2.2f",
751 m02LowCutMin,m02LowCutMax,m02HigCutMin,m02HigCutMax));
753 if(usePi0) hDoubleRatioCases[icase]->SetTitle(Form(
"#Sigma #it{p}_{T} > 1 GeV/c - AC: %2.2f < #sigma_{long} < %2.2f - BD: Merged #pi^{0} band",
754 m02LowCutMin,m02LowCutMax));
755 hDoubleRatioCases[icase]->SetYTitle(
"Ratio");
756 hDoubleRatioCases[icase]->SetMaximum(1.4);
757 hDoubleRatioCases[icase]->SetMinimum(0.7);
759 if(icase == 0) hDoubleRatioCases[icase]->Draw(
"");
760 else hDoubleRatioCases[icase]->Draw(
"same");
762 lABCD2RatCa->AddEntry(hDoubleRatioCases[icase],Form(
"Num.: %s",mcLeg[icase].
Data()),
"L");
768 fileName = Form(
"%s/figures/ABCD_%s_DoubleRatio_CaseRatio_%s",opt.Data(),cuts.Data(),prodTitleOutput.Data());
770 cABCD2RatioCases->Print(fileName);
776 fileName = Form(
"%s/figures/ABCD_%s_DoubleRatios_%s.root",opt.Data(),cuts.Data(),prodTitleOutput.Data());
778 TFile *
fout =
new TFile(fileName,
"recreate");
780 for(
Int_t icase = 0; icase < nMCCases; icase++)
783 if(hM02LowIs[icase])hM02LowIs [icase]->Write();
784 if(hM02LowNo[icase])hM02LowNo [icase]->Write();
785 if(hM02HigIs[icase])hM02HigIs [icase]->Write();
786 if(hM02HigNo[icase])hM02HigNo [icase]->Write();
788 if(hM02LowIsRat[icase])hM02LowIsRat[icase]->Write();
789 if(hM02LowNoRat[icase])hM02LowNoRat[icase]->Write();
790 if(hM02HigIsRat[icase])hM02HigIsRat[icase]->Write();
791 if(hM02HigNoRat[icase])hM02HigNoRat[icase]->Write();
793 if(hDoubleRatio [icase])hDoubleRatio [icase]->Write();
794 if(hDoubleRatioCases[icase])hDoubleRatioCases[icase]->Write();
835 const Int_t nMCCases = nCases;
837 TH1D* hDoubleRatioData = 0;
838 TH1D* hDoubleRatioSimu [nMCCases];
839 TH1D* hPurityCases [nMCCases];
840 TH1D* hPurityCasesRatio[nMCCases];
842 for(
Int_t icase = 0; icase < nMCCases; icase++)
844 hDoubleRatioSimu [icase]=0;
845 hPurityCases [icase]=0;
846 hPurityCasesRatio[icase]=0;
853 merged =
"_MergedPi0";
854 cuts = Form(
"Low_%2.2f-%2.2f" ,m02LowCutMin,m02LowCutMax);
857 cuts = Form(
"Low_%2.2f-%2.2f_High_%2.2f-%2.2f",m02LowCutMin,m02LowCutMax,m02HigCutMin,m02HigCutMax);
862 if ( simuName.Contains(
"High") )
871 TFile* fileData = TFile::Open(Form(
"%s/figures/ABCD_%s_DoubleRatios_%s%s.root" ,opt.Data(),cuts.Data(),dataName.Data(),merged.Data()));
872 TFile* fileSimu = TFile::Open(Form(
"%s/figures/ABCD_%s_DoubleRatios_%s%s%s.root",opt.Data(),cuts.Data(),simuName.Data(),gj.Data(),merged.Data()));
876 printf(
"Get files (%p, %p) and histograms \n",fileData,fileSimu);
877 printf(
"\t %s/figures/ABCD_%s_DoubleRatios_%s%s.root\n" ,opt.Data(),cuts.Data(),dataName.Data(),merged.Data());
878 printf(
"\t %s/figures/ABCD_%s_DoubleRatios_%s%s%s.root\n",opt.Data(),cuts.Data(),simuName.Data(),gj.Data(),merged.Data());
881 if ( !fileData || !fileSimu )
return;
884 hDoubleRatioData = (
TH1D*) fileData->Get(Form(
"DoubleRat%s_%s",dataName.Data(),cuts.Data()));
888 printf(
"\t data histo %p\n",hDoubleRatioData);
889 printf(
"\t \t DoubleRat%s_\n",dataName.Data());
892 if ( !hDoubleRatioData )
return;
895 for(
Int_t icase = 0; icase < nMCCases; icase++)
897 hDoubleRatioSimu[icase] = (
TH1D*) fileSimu->Get(Form(
"DoubleRat%s_%s_%s",mcCases[icase].
Data(),mcCasesPath[icase].
Data(),cuts.Data()));
900 printf(
"\t simu case %d histo %p\n",icase, hDoubleRatioSimu[icase]);
901 printf(
"\t \t DoubleRat%s_%s\n",mcCases[icase].
Data(),mcCasesPath[icase].
Data());
904 if ( !hDoubleRatioSimu[icase] )
return;
906 hPurityCases[icase] = (
TH1D*) hDoubleRatioSimu[icase]->Clone(Form(
"Purity_Data_%s_MC_%s_%s_%s%s",
907 dataName.Data(),mcCases[icase].Data(),mcCasesPath[icase].Data(),cuts.Data(),gj.Data()));
908 hPurityCases[icase]->Divide(hPurityCases[icase],hDoubleRatioData,1,1,
"");
910 for(
Int_t ibin = 1; ibin < hPurityCases[icase]->GetNbinsX(); ibin++)
918 Double_t content2 = 1.-hPurityCases[icase]->GetBinContent(ibin);
919 Double_t error2 = hPurityCases[icase]->GetBinError(ibin);
925 hPurityCases[icase]->SetBinContent(ibin,content2);
926 hPurityCases[icase]->SetBinError (ibin,error2 );
929 hPurityCases[icase]->SetMarkerStyle(
marker[1]);
930 hPurityCases[icase]->SetMarkerColor(
color[icase]);
931 hPurityCases[icase]->SetLineColor (
color[icase]);
932 hPurityCases[icase]->SetAxisRange(emin,emax,
"X");
933 hPurityCases[icase]->SetYTitle(
"Purity");
937 printf(
"** Make purity plots ** \n");
940 for(
Int_t icase = 1; icase < nMCCases; icase++)
943 hPurityCasesRatio[icase] = (
TH1D*) hPurityCases[icase]->Clone(Form(
"Purity_%s_%s_%s%s_Ratio",
944 mcCases[icase].
Data(),mcCasesPath[icase].
Data(),cuts.Data(),gj.Data()));
945 hPurityCasesRatio[icase]->Divide(hPurityCases[0] );
948 hPurityCases[icase]->SetYTitle(Form(
"Purity X / Purity %s",mcLeg[0].
Data()));
951 gStyle->SetPadRightMargin(0.01);
952 gStyle->SetPadLeftMargin(0.12);
953 gStyle->SetPadTopMargin(0.08);
955 gStyle->SetTitleFontSize(0.06);
957 gStyle->SetOptStat(0);
958 gStyle->SetOptTitle(1);
961 TCanvas * cPurity =
new TCanvas(Form(
"cPurity_%s_Data_%s_MC_%s%s%s",cuts.Data(),dataName.Data(),simuName.Data(),gj.Data(),merged.Data()),
962 Form(
"Purity: %s_Data_%s_MC_%s%s%s",cuts.Data(),dataName.Data(),simuName.Data(),gj.Data(),merged.Data())
965 TLegend *lPu =
new TLegend(0.3,0.15,0.98,0.4);
966 lPu->SetFillColor(0);
967 lPu->SetFillStyle(0);
968 lPu->SetLineColor(0);
969 lPu->SetBorderSize(0);
970 lPu->SetTextSize(0.05);
974 for(
Int_t icase = 0; icase < nMCCases; icase++)
976 hPurityCases[icase]->SetTitle(Form(
"#Sigma #it{p}_{T} > 1 GeV/c - AC: %2.2f < #sigma_{long} < %2.2f - BD: %2.2f < #sigma_{long} < %2.2f ",
977 m02LowCutMin,m02LowCutMax,m02HigCutMin,m02HigCutMax));
979 if(usePi0) hPurityCases[icase]->SetTitle(Form(
"#Sigma #it{p}_{T} > 1 GeV/c - AC: %2.2f < #sigma_{long} < %2.2f - BD: Merged #pi^{0} band",
980 m02LowCutMin,m02LowCutMax));
982 hPurityCases[icase]->SetMaximum(0.85);
983 hPurityCases[icase]->SetMinimum(0.0);
985 if(icase == 0) hPurityCases[icase]->Draw(
"H");
986 else hPurityCases[icase]->Draw(
"H same");
988 lPu->AddEntry(hPurityCases[icase],Form(
"%s",mcLeg[icase].
Data()),
"L");
994 TString fileName = Form(
"%s/figures/Purity_%s_Data_%s_MC_%s%s%s",opt.Data(),cuts.Data(),dataName.Data(),simuName.Data(),gj.Data(),merged.Data());
997 cPurity->Print(fileName);
1002 TCanvas * cPurityRat =
new TCanvas(Form(
"cPurityRat_%s_Data_%s_MC_%s%s%s",cuts.Data(),dataName.Data(),simuName.Data(),gj.Data(),merged.Data()),
1003 Form(
"Purity Ratio Cases: %s_Data_%s_MC_%s%s%s",cuts.Data(),dataName.Data(),simuName.Data(),gj.Data(),merged.Data()),
1006 TLegend *lPuCa =
new TLegend(0.3,0.7,0.98,0.89);
1007 lPuCa->SetFillColor(0);
1008 lPuCa->SetFillStyle(0);
1009 lPuCa->SetLineColor(0);
1010 lPuCa->SetBorderSize(0);
1011 lPuCa->SetTextSize(0.04);
1013 lPuCa->SetHeader(Form(
"Den.: %s",mcLeg[0].
Data()));
1017 for(
Int_t icase = 1; icase < nMCCases; icase++)
1020 hPurityCasesRatio[icase]->SetTitle(Form(
"#Sigma #it{p}_{T} > 1 GeV/c - AC: %2.2f < #sigma_{long} < %2.2f - BD: %2.2f < #sigma_{long} < %2.2f",
1021 m02LowCutMin,m02LowCutMax,m02HigCutMin,m02HigCutMax));
1022 if(usePi0) hPurityCasesRatio[icase]->SetTitle(Form(
"#Sigma #it{p}_{T} > 1 GeV/c - AC: %2.2f < #sigma_{long} < %2.2f - BD: Merged #pi^{0} band",
1023 m02LowCutMin,m02LowCutMax));
1025 hPurityCasesRatio[icase]->SetYTitle(
"Ratio");
1027 hPurityCasesRatio[icase]->SetMaximum(1.5);
1028 hPurityCasesRatio[icase]->SetMinimum(0.7);
1030 if(icase == 0) hPurityCasesRatio[icase]->Draw(
"");
1031 else hPurityCasesRatio[icase]->Draw(
"same");
1033 lPuCa->AddEntry(hPurityCasesRatio[icase],Form(
"Num.: %s",mcLeg[icase].
Data()),
"L");
1039 fileName = Form(
"%s/figures/Purity_%s_CaseRatio_Data_%s_MC_%s%s%s",opt.Data(),cuts.Data(),dataName.Data(),simuName.Data(),gj.Data(),merged.Data());
1041 cPurityRat->Print(fileName);
1066 TString titleDataMC[] = {
"LHC11cd_EMC7",
"pp_7TeV_Dec_Low",
"pp_7TeV_Dec_High"};
1067 TString gjProd =
"pp_7TeV_GJ";
1072 Float_t gjFactor [] = { 1, 2, 0.5 };
1073 TString gjFactorString [] = {
"",
"_GJx1.00",
"_GJx2.00",
"_GJx0.50"};
1083 ,
"mimic10c_EcellCut_Scaled2_v3" 1100 Int_t nShShCutsMaxLow = 3;
1101 Int_t nShShCutsMinHigh = 3;
1103 Float_t m02LowCutMax [] = {0.27, 0.30, 0.40};
1104 Float_t m02HigCutMin [] = {0.30, 0.40, 0.50};
1108 printf(
"N data %d, cases %d nShShCuts MaxLow %d MinHigh %d\n",
1109 nData, nCases, nShShCutsMaxLow, nShShCutsMinHigh);
1125 printf(
"=== Make double ratios === \n");
1127 for(
Int_t igj = 0; igj < ngj; igj++)
1129 for(
Int_t ifactor = 0; ifactor < nfactors; ifactor++)
1131 if ( igj == 0 && ifactor > 0 )
continue;
1133 for(
Int_t idata = 0; idata < nData; idata++)
1135 if( idata == 0 && igj > 0 )
continue;
1137 for(
Int_t ish = 0; ish < nShShCutsMaxLow; ish++)
1139 for(
Int_t jsh = 0; jsh < nShShCutsMinHigh; jsh++)
1141 if ( m02LowCutMax[ish] > m02HigCutMin[jsh] )
continue;
1143 for(
Int_t ipi0 = 0; ipi0 < npi0; ipi0++)
1145 if ( ipi0 && (ish > 1 || jsh > 0) )
1149 printf(
"\t idata %d %s, gj %s, usepi0 %d, addGJ %d, GJ factor %d-%2.1f, ish %d %2.2f, jsh %d %2.2f\n",
1150 idata, titleDataMC[idata].
Data(), gjProd.Data(),
1151 ipi0,igj,ifactor, gjFactor[ifactor],
1152 ish, m02LowCutMax[ish],
1153 jsh, m02HigCutMin[jsh]);
1155 Int_t nCases2 = nCases;
1158 if ( titleDataMC[idata].Contains(
"LHC") )
1162 (titleDataMC[idata], gjProd,
1163 nCases2, mcCasesPath, mcCases, mcLeg,
1164 igj, gjFactor[ifactor], ipi0, rebin,
1165 m02LowCutMin , m02LowCutMax[ish],
1166 m02HigCutMin[jsh], m02HigCutMax,
1183 printf(
"=== Make purity === \n");
1186 for(
Int_t ifactor = 0; ifactor < nfactors+1; ifactor++)
1188 for(
Int_t ish = 0; ish < nShShCutsMaxLow; ish++)
1190 for(
Int_t jsh = 0; jsh < nShShCutsMinHigh; jsh++)
1192 if ( m02LowCutMax[ish] > m02HigCutMin[jsh] )
continue;
1194 for(
Int_t ipi0 = 0; ipi0 < npi0; ipi0++)
1196 if ( ipi0 && (ish > 1 || jsh > 0) )
1200 printf(
"\t usepi0 %d, GJ factor %d-%2.1f, ish %d %2.2f, jsh %d %2.2f\n",
1201 ipi0,ifactor, gjFactor[ifactor],
1202 ish, m02LowCutMax[ish],
1203 jsh, m02HigCutMin[jsh]);
1207 nCases, mcCasesPath, mcCases, mcLeg,
1208 gjFactorString[ifactor], ipi0,
1209 m02LowCutMin , m02LowCutMax[ish],
1210 m02HigCutMin[jsh], m02HigCutMax, debug);
1214 nCases, mcCasesPath, mcCases, mcLeg,
1215 gjFactorString[ifactor], ipi0,
1216 m02LowCutMin , m02LowCutMax[ish],
1217 m02HigCutMin[jsh], m02HigCutMax, debug);
static void ScaleBinBySize(TH1D *h)
Scale histogram bins by its size.
void MakePurityCalculationAndComparisons(Bool_t doDoRat=kTRUE, Bool_t doPurity=kTRUE, Bool_t debug=kFALSE)
void MakePurity(TString dataName, TString simuName, Int_t nCases, TString *mcCasesPath, TString *mcCases, TString *mcLeg, TString gj="", Bool_t usePi0=kTRUE, Float_t m02LowCutMin=0.10, Float_t m02LowCutMax=0.27, Float_t m02HigCutMin=0.40, Float_t m02HigCutMax=3.00, 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 MakeDoubleRatios(TString titleProd, TString gjProd, Int_t nCases, TString *mcCasesPath, TString *mcCases, TString *mcLeg, Bool_t addGJ=1, Float_t gjFactor=1, Bool_t usePi0=0, Int_t rebin=0, Float_t m02LowCutMin=0.10, Float_t m02LowCutMax=0.27, Float_t m02HigCutMin=0.4, Float_t m02HigCutMax=3.00, Int_t debug=kFALSE)
TFile * fout
input train file