23 #include "TClonesArray.h"
24 #include "TObjString.h"
25 #include "TDatabasePDG.h"
33 #include "TParticle.h"
34 #include "AliVEvent.h"
35 #include "AliESDCaloCluster.h"
36 #include "AliESDEvent.h"
37 #include "AliAODEvent.h"
39 #include "AliMixedEvent.h"
40 #include "AliAODMCParticle.h"
43 #include "AliPHOSGeoUtils.h"
44 #include "AliEMCALGeometry.h"
56 fUseAngleCut(kFALSE), fUseAngleEDepCut(kFALSE), fAngleCut(0), fAngleMaxCut(0.),
57 fMultiCutAna(kFALSE), fMultiCutAnaSim(kFALSE), fMultiCutAnaAcc(kFALSE),
58 fNPtCuts(0), fNAsymCuts(0), fNCellNCuts(0), fNPIDBits(0), fNAngleCutBins(0),
59 fMakeInvPtPlots(kFALSE), fSameSM(kFALSE),
60 fFillSMCombinations(kFALSE), fCheckConversion(kFALSE),
61 fFillBadDistHisto(kFALSE), fFillSSCombinations(kFALSE),
62 fFillAngleHisto(kFALSE), fFillAsymmetryHisto(kFALSE), fFillOriginHisto(0),
63 fFillArmenterosThetaStar(0), fFillOnlyMCAcceptanceHisto(0),
64 fFillSecondaryCellTiming(0), fFillOpAngleCutHisto(0), fCheckAccInSector(0),
65 fPairWithOtherDetector(0), fOtherDetectorInputName(
""),
66 fPhotonMom1(), fPhotonMom1Boost(), fPhotonMom2(), fPi0Mom(),
70 fhAverTotECluster(0), fhAverTotECell(0), fhAverTotECellvsCluster(0),
71 fhEDensityCluster(0), fhEDensityCell(0), fhEDensityCellvsCluster(0),
72 fhReMod(0x0), fhReSameSideEMCALMod(0x0), fhReSameSectorEMCALMod(0x0), fhReDiffPHOSMod(0x0),
73 fhReSameSectorDCALPHOSMod(0),fhReDiffSectorDCALPHOSMod(0),
74 fhMiMod(0x0), fhMiSameSideEMCALMod(0x0), fhMiSameSectorEMCALMod(0x0), fhMiDiffPHOSMod(0x0),
75 fhMiSameSectorDCALPHOSMod(0),fhMiDiffSectorDCALPHOSMod(0),
76 fhReConv(0x0), fhMiConv(0x0), fhReConv2(0x0), fhMiConv2(0x0),
77 fhRe1(0x0), fhMi1(0x0), fhRe2(0x0), fhMi2(0x0),
78 fhRe3(0x0), fhMi3(0x0), fhReInvPt1(0x0), fhMiInvPt1(0x0),
79 fhReInvPt2(0x0), fhMiInvPt2(0x0), fhReInvPt3(0x0), fhMiInvPt3(0x0),
80 fhRePtNCellAsymCuts(0x0), fhMiPtNCellAsymCuts(0x0), fhRePtNCellAsymCutsSM(),
81 fhRePtNCellAsymCutsOpAngle(0x0), fhMiPtNCellAsymCutsOpAngle(0x0), fhRePtNCellAsymCutsSMOpAngle(),
83 fhRePtAsym(0x0), fhRePtAsymPi0(0x0), fhRePtAsymEta(0x0),
84 fhMiPtAsym(0x0), fhMiPtAsymPi0(0x0), fhMiPtAsymEta(0x0),
85 fhEventBin(0), fhEventMixBin(0),
86 fhCentrality(0x0), fhCentralityNoPair(0x0),
87 fhEventPlaneResolution(0x0),
88 fhRealOpeningAngle(0x0), fhRealCosOpeningAngle(0x0), fhMixedOpeningAngle(0x0), fhMixedCosOpeningAngle(0x0),
89 fhRealOpeningAnglePerSM(),fhMixedOpeningAnglePerSM(),
91 fhPrimPi0E(0x0), fhPrimPi0Pt(0x0),
92 fhPrimPi0AccE(0x0), fhPrimPi0AccPt(0x0), fhPrimPi0AccPtPhotonCuts(0x0),
93 fhPrimPi0Y(0x0), fhPrimPi0AccY(0x0),
94 fhPrimPi0Yeta(0x0), fhPrimPi0YetaYcut(0x0), fhPrimPi0AccYeta(0x0),
95 fhPrimPi0Phi(0x0), fhPrimPi0AccPhi(0x0),
96 fhPrimPi0OpeningAngle(0x0), fhPrimPi0OpeningAnglePhotonCuts(0x0),
97 fhPrimPi0OpeningAngleAsym(0x0),fhPrimPi0CosOpeningAngle(0x0),
98 fhPrimPi0PtCentrality(0), fhPrimPi0PtEventPlane(0),
99 fhPrimPi0AccPtCentrality(0), fhPrimPi0AccPtEventPlane(0),
100 fhPrimEtaE(0x0), fhPrimEtaPt(0x0),
101 fhPrimEtaAccE(0x0), fhPrimEtaAccPt(0x0), fhPrimEtaAccPtPhotonCuts(0x0),
102 fhPrimEtaY(0x0), fhPrimEtaAccY(0x0),
103 fhPrimEtaYeta(0x0), fhPrimEtaYetaYcut(0x0), fhPrimEtaAccYeta(0x0),
104 fhPrimEtaPhi(0x0), fhPrimEtaAccPhi(0x0),
105 fhPrimEtaOpeningAngle(0x0), fhPrimEtaOpeningAnglePhotonCuts(0x0),
106 fhPrimEtaOpeningAngleAsym(0x0),fhPrimEtaCosOpeningAngle(0x0),
107 fhPrimEtaPtCentrality(0), fhPrimEtaPtEventPlane(0),
108 fhPrimEtaAccPtCentrality(0), fhPrimEtaAccPtEventPlane(0),
109 fhPrimPi0PtOrigin(0x0), fhPrimEtaPtOrigin(0x0),
110 fhPrimNotResonancePi0PtOrigin(0x0), fhPrimPi0PtStatus(0x0),
111 fhMCOrgMass(), fhMCOrgAsym(), fhMCOrgDeltaEta(), fhMCOrgDeltaPhi(),
112 fhMCPi0MassPtRec(), fhMCPi0MassPtTrue(), fhMCPi0PtTruePtRec(),
113 fhMCEtaMassPtRec(), fhMCEtaMassPtTrue(), fhMCEtaPtTruePtRec(),
114 fhMCPi0PtOrigin(0x0), fhMCEtaPtOrigin(0x0),
115 fhMCNotResonancePi0PtOrigin(0),fhMCPi0PtStatus(0x0),
116 fhMCPi0ProdVertex(0), fhMCEtaProdVertex(0),
117 fhPrimPi0ProdVertex(0), fhPrimEtaProdVertex(0),
118 fhReMCFromConversion(0), fhReMCFromNotConversion(0), fhReMCFromMixConversion(0),
119 fhCosThStarPrimPi0(0), fhCosThStarPrimEta(0),
121 fhReSecondaryCellInTimeWindow(0), fhMiSecondaryCellInTimeWindow(0),
122 fhReSecondaryCellOutTimeWindow(0), fhMiSecondaryCellOutTimeWindow(0)
127 for(
Int_t i = 0; i < 4; i++)
133 for(
Int_t ism = 0; ism < 20; ism++)
139 for(
Int_t icut = 0; icut < 10; icut++)
261 const Int_t buffersize = 255;
262 char onePar[buffersize] ;
263 snprintf(onePar,buffersize,
"--- AliAnaPi0 ---:") ;
265 snprintf(onePar,buffersize,
"Number of bins in Centrality: %d;",
GetNCentrBin()) ;
267 snprintf(onePar,buffersize,
"Number of bins in Z vert. pos: %d;",
GetNZvertBin()) ;
269 snprintf(onePar,buffersize,
"Number of bins in Reac. Plain: %d;",
GetNRPBin()) ;
271 snprintf(onePar,buffersize,
"Depth of event buffer: %d;",
GetNMaxEvMix()) ;
275 snprintf(onePar,buffersize,
" Asymmetry cuts: n = %d, asymmetry < ",
fNAsymCuts) ;
278 snprintf(onePar,buffersize,
" PID selection bits: n = %d, PID bit =",
fNPIDBits) ;
281 snprintf(onePar,buffersize,
"Cuts:") ;
287 snprintf(onePar,buffersize,
"Number of modules: %d:",
fNModules) ;
291 snprintf(onePar, buffersize,
" pT cuts: n = %d, pt > ",
fNPtCuts) ;
294 snprintf(onePar,buffersize,
" N cell in cluster cuts: n = %d, nCell > ",
fNCellNCuts) ;
299 return new TObjString(parList) ;
309 outputContainer->SetName(GetName());
312 const Int_t buffersize = 255;
313 char key[buffersize] ;
314 char title[buffersize] ;
352 fhPrimPi0E =
new TH1F(
"hPrimPi0E",
"Primary #pi^{0} E, |#it{Y}|<1",
353 nptbins,ptmin,ptmax) ;
357 fhPrimPi0Pt =
new TH1F(
"hPrimPi0Pt",
"Primary #pi^{0} #it{p}_{T} , |#it{Y}|<1",
358 nptbins,ptmin,ptmax) ;
359 fhPrimPi0Pt ->SetXTitle(
"#it{p}_{T} (GeV/#it{c})");
362 Int_t netabinsopen = TMath::Nint(netabins*4/(etamax-etamin));
363 fhPrimPi0Y =
new TH2F(
"hPrimPi0Rapidity",
"Rapidity of primary #pi^{0}",
364 nptbins,ptmin,ptmax,netabinsopen,-2, 2) ;
366 fhPrimPi0Y ->SetXTitle(
"#it{p}_{T} (GeV/#it{c})");
369 fhPrimPi0Yeta =
new TH2F(
"hPrimPi0PseudoRapidity",
"PseudoRapidity of primary #pi^{0}",
370 nptbins,ptmin,ptmax,netabinsopen,-2, 2) ;
375 fhPrimPi0YetaYcut =
new TH2F(
"hPrimPi0PseudoRapidityYcut",
"PseudoRapidity of primary #pi^{0}, |#it{Y}|<1",
376 nptbins,ptmin,ptmax,netabinsopen,-2, 2) ;
381 Int_t nphibinsopen = TMath::Nint(nphibins*TMath::TwoPi()/(phimax-phimin));
382 fhPrimPi0Phi =
new TH2F(
"hPrimPi0Phi",
"#phi of primary #pi^{0}, |#it{Y}|<1",
383 nptbins,ptmin,ptmax,nphibinsopen,0,360) ;
390 fhPrimPi0AccE =
new TH1F(
"hPrimPi0AccE",
"Primary #pi^{0} #it{E} with both photons in acceptance",
391 nptbins,ptmin,ptmax) ;
395 fhPrimPi0AccPt =
new TH1F(
"hPrimPi0AccPt",
"Primary #pi^{0} #it{p}_{T} with both photons in acceptance",
396 nptbins,ptmin,ptmax) ;
400 fhPrimPi0AccPtPhotonCuts =
new TH1F(
"hPrimPi0AccPtPhotonCuts",
"Primary #pi^{0} #it{p}_{T} with both photons in acceptance",
401 nptbins,ptmin,ptmax) ;
405 fhPrimPi0AccY =
new TH2F(
"hPrimPi0AccRapidity",
"Rapidity of primary #pi^{0} with accepted daughters",
406 nptbins,ptmin,ptmax,netabins,etamin,etamax) ;
411 fhPrimPi0AccYeta =
new TH2F(
"hPrimPi0AccPseudoRapidity",
"PseudoRapidity of primary #pi^{0} with accepted daughters",
412 nptbins,ptmin,ptmax,netabins,etamin,etamax) ;
417 fhPrimPi0AccPhi =
new TH2F(
"hPrimPi0AccPhi",
"#phi of primary #pi^{0} with accepted daughters",
419 nphibins,phimin*TMath::RadToDeg(),phimax*TMath::RadToDeg()) ;
427 fhPrimEtaE =
new TH1F(
"hPrimEtaE",
"Primary eta E",
428 nptbins,ptmin,ptmax) ;
432 fhPrimEtaPt =
new TH1F(
"hPrimEtaPt",
"Primary #eta #it{p}_{T}",
433 nptbins,ptmin,ptmax) ;
434 fhPrimEtaPt ->SetXTitle(
"#it{p}_{T} (GeV/#it{c})");
437 fhPrimEtaY =
new TH2F(
"hPrimEtaRapidity",
"Rapidity of primary #eta",
438 nptbins,ptmin,ptmax,netabinsopen,-2, 2) ;
440 fhPrimEtaY->SetXTitle(
"#it{p}_{T} (GeV/#it{c})");
443 fhPrimEtaYeta =
new TH2F(
"hPrimEtaPseudoRapidityEta",
"PseudoRapidity of primary #eta",
444 nptbins,ptmin,ptmax,netabinsopen,-2, 2) ;
449 fhPrimEtaYetaYcut =
new TH2F(
"hPrimEtaPseudoRapidityEtaYcut",
"PseudoRapidity of primary #eta, |#it{Y}|<1",
450 nptbins,ptmin,ptmax,netabinsopen,-2, 2) ;
456 nptbins,ptmin,ptmax, nphibinsopen,0,360) ;
463 fhPrimEtaAccE =
new TH1F(
"hPrimEtaAccE",
"Primary #eta #it{E} with both photons in acceptance",
464 nptbins,ptmin,ptmax) ;
468 fhPrimEtaAccPt =
new TH1F(
"hPrimEtaAccPt",
"Primary eta #it{p}_{T} with both photons in acceptance",
469 nptbins,ptmin,ptmax) ;
473 fhPrimEtaAccPtPhotonCuts =
new TH1F(
"hPrimEtaAccPtPhotonCuts",
"Primary eta #it{p}_{T} with both photons in acceptance",
474 nptbins,ptmin,ptmax) ;
478 fhPrimEtaAccPhi =
new TH2F(
"hPrimEtaAccPhi",
"Azimuthal of primary #eta with accepted daughters",
479 nptbins,ptmin,ptmax, nphibins,phimin*TMath::RadToDeg(),phimax*TMath::RadToDeg()) ;
485 nptbins,ptmin,ptmax, netabins,etamin,etamax) ;
491 nptbins,ptmin,ptmax, netabins,etamin,etamax) ;
501 nptbins,ptmin,ptmax, 100, 0, 100) ;
507 nptbins,ptmin,ptmax, 100, 0, 100) ;
513 fhPrimPi0PtEventPlane =
new TH2F(
"hPrimPi0PtEventPlane",
"Primary #pi^{0} #it{p}_{T} vs reco event plane angle, |#it{Y}|<1",
514 nptbins,ptmin,ptmax, 100, 0, TMath::Pi()) ;
521 nptbins,ptmin,ptmax, 100, 0, TMath::Pi()) ;
528 fhPrimPi0AccPtCentrality =
new TH2F(
"hPrimPi0AccPtCentrality",
"Primary #pi^{0} with both photons in acceptance #it{p}_{T} vs reco centrality",
529 nptbins,ptmin,ptmax, 100, 0, 100) ;
534 fhPrimEtaAccPtCentrality =
new TH2F(
"hPrimEtaAccPtCentrality",
"Primary #eta with both photons in acceptance #it{p}_{T} vs reco centrality",
535 nptbins,ptmin,ptmax, 100, 0, 100) ;
540 fhPrimPi0AccPtEventPlane =
new TH2F(
"hPrimPi0AccPtEventPlane",
"Primary #pi^{0} with both photons in acceptance #it{p}_{T} vs reco event plane angle",
541 nptbins,ptmin,ptmax, 100, 0, TMath::Pi()) ;
546 fhPrimEtaAccPtEventPlane =
new TH2F(
"hPrimEtaAccPtEventPlane",
"Primary #eta with both #gamma_{decay} in acceptance #it{p}_{T} vs reco event plane angle",
547 nptbins,ptmin,ptmax, 100, 0, TMath::Pi()) ;
557 (
"hPrimPi0OpeningAngle",
"Angle between all primary #gamma pair vs E_{#pi^{0}}, in acceptance",
558 nptbins,ptmin,ptmax,nopanbins,opanmin,opanmax);
564 (
"hPrimPi0OpeningAnglePhotonCuts",
"Angle between all primary #gamma pair vs E_{#pi^{0}} in acceptance",
565 nptbins,ptmin,ptmax,nopanbins,opanmin,opanmax);
571 (
"hPrimPi0OpeningAngleAsym",
"Angle between all primary #gamma pair vs #it{Asymmetry}, in acceptance, #it{p}_{T}>5 GeV/#it{c}",
572 100,0,1,nopanbins,opanmin,opanmax);
578 (
"hPrimPi0CosOpeningAngle",
"Cosinus of angle between all primary #gamma pair vs E_{#pi^{0}}, in acceptance",
579 nptbins,ptmin,ptmax,100,-1,1);
585 (
"hPrimEtaOpeningAngle",
"Angle between all primary #gamma pair vs E_{#eta}, in acceptance",
586 nptbins,ptmin,ptmax,nopanbins,opanmin,opanmax);
592 (
"hPrimEtaOpeningAnglePhotonCuts",
"Angle between all primary #gamma pair vs E_{#eta}, in acceptance",
593 nptbins,ptmin,ptmax,nopanbins,opanmin,opanmax);
599 (
"hPrimEtaOpeningAngleAsym",
"Angle between all primary #gamma pair vs #it{Asymmetry}, #it{p}_{T}>5 GeV/#it{c}, in acceptance",
600 100,0,1,nopanbins,opanmin,opanmax);
606 (
"hPrimEtaCosOpeningAngle",
"Cosinus of angle between all primary #gamma pair vs E_{#eta}, in acceptance",
607 nptbins,ptmin,ptmax,100,-1,1);
617 fhPrimPi0PtOrigin =
new TH2F(
"hPrimPi0PtOrigin",
"Primary #pi^{0} #it{p}_{T} vs origin",nptbins,ptmin,ptmax,11,0,11) ;
647 fhPrimPi0PtStatus =
new TH2F(
"hPrimPi0PtStatus",
"Primary #pi^{0} #it{p}_{T} vs status",nptbins,ptmin,ptmax,101,-50,50) ;
653 fhPrimEtaPtOrigin =
new TH2F(
"hPrimEtaPtOrigin",
"Primary #pi^{0} #it{p}_{T} vs origin",nptbins,ptmin,ptmax,7,0,7) ;
666 200,0.,20.,5000,0,500) ;
672 200,0.,20.,5000,0,500) ;
680 TString ebin[] = {
"8 < E < 12 GeV",
"12 < E < 16 GeV",
"16 < E < 20 GeV",
"E > 20 GeV" };
681 Int_t narmbins = 400;
685 for(
Int_t i = 0; i < 4; i++)
688 Form(
"Armenteros of primary #pi^{0}, %s",ebin[i].
Data()),
689 200, -1, 1, narmbins,armmin,armmax);
695 Form(
"Armenteros of primary #eta, %s",ebin[i].
Data()),
696 200, -1, 1, narmbins,armmin,armmax);
704 (
"hCosThStarPrimPi0",
"cos(#theta *) for primary #pi^{0}",nptbins,ptmin,ptmax,200,-1,1);
710 (
"hCosThStarPrimEta",
"cos(#theta *) for primary #eta",nptbins,ptmin,ptmax,200,-1,1);
791 nptbins,ptmin,ptmax,nmassbins,massmin,massmax) ;
797 nptbins,ptmin,ptmax,nmassbins,massmin,massmax) ;
805 nptbins,ptmin,ptmax,nmassbins,massmin,massmax) ;
811 nptbins,ptmin,ptmax,nmassbins,massmin,massmax) ;
821 fhReConv =
new TH2F(
"hReConv",
"Real Pair with one recombined conversion ",nptbins,ptmin,ptmax,nmassbins,massmin,massmax) ;
822 fhReConv->SetXTitle(
"#it{p}_{T} (GeV/#it{c})");
823 fhReConv->SetYTitle(
"#it{M}_{#gamma,#gamma} (GeV/#it{c}^{2})");
826 fhReConv2 =
new TH2F(
"hReConv2",
"Real Pair with 2 recombined conversion ",nptbins,ptmin,ptmax,nmassbins,massmin,massmax) ;
827 fhReConv2->SetXTitle(
"#it{p}_{T} (GeV/#it{c})");
828 fhReConv2->SetYTitle(
"#it{M}_{#gamma,#gamma} (GeV/#it{c}^{2})");
833 fhMiConv =
new TH2F(
"hMiConv",
"Mixed Pair with one recombined conversion ",nptbins,ptmin,ptmax,nmassbins,massmin,massmax) ;
834 fhMiConv->SetXTitle(
"#it{p}_{T} (GeV/#it{c})");
835 fhMiConv->SetYTitle(
"#it{M}_{#gamma,#gamma} (GeV/#it{c}^{2})");
838 fhMiConv2 =
new TH2F(
"hMiConv2",
"Mixed Pair with 2 recombined conversion ",nptbins,ptmin,ptmax,nmassbins,massmin,massmax) ;
839 fhMiConv2->SetXTitle(
"#it{p}_{T} (GeV/#it{c})");
840 fhMiConv2->SetYTitle(
"#it{M}_{#gamma,#gamma} (GeV/#it{c}^{2})");
854 snprintf(key, buffersize,
"hRe_cen%d_pidbit%d_asy%d_dist1",ic,ipid,iasym) ;
855 snprintf(title, buffersize,
"Real #it{M}_{#gamma#gamma} distr. for centrality=%d, PID bit=%d and asymmetry %1.2f, dist bad 1",
857 fhRe1[index] =
new TH2F(key,title,nptbins,ptmin,ptmax,nmassbins,massmin,massmax) ;
858 fhRe1[index]->SetXTitle(
"#it{p}_{T} (GeV/#it{c})");
859 fhRe1[index]->SetYTitle(
"#it{M}_{#gamma,#gamma} (GeV/#it{c}^{2})");
861 outputContainer->Add(
fhRe1[index]) ;
866 snprintf(key, buffersize,
"hRe_cen%d_pidbit%d_asy%d_dist2",ic,ipid,iasym) ;
867 snprintf(title, buffersize,
"Real #it{M}_{#gamma#gamma} distr. for centrality=%d, PID bit=%d and asymmetry %1.2f, dist bad 2",
869 fhRe2[index] =
new TH2F(key,title,nptbins,ptmin,ptmax,nmassbins,massmin,massmax) ;
870 fhRe2[index]->SetXTitle(
"#it{p}_{T} (GeV/#it{c})");
871 fhRe2[index]->SetYTitle(
"#it{M}_{#gamma,#gamma} (GeV/#it{c}^{2})");
872 outputContainer->Add(
fhRe2[index]) ;
875 snprintf(key, buffersize,
"hRe_cen%d_pidbit%d_asy%d_dist3",ic,ipid,iasym) ;
876 snprintf(title, buffersize,
"Real #it{M}_{#gamma#gamma} distr. for centrality=%d, PID bit=%d and asymmetry %1.2f, dist bad 3",
878 fhRe3[index] =
new TH2F(key,title,nptbins,ptmin,ptmax,nmassbins,massmin,massmax) ;
879 fhRe3[index]->SetXTitle(
"#it{p}_{T} (GeV/#it{c})");
880 fhRe3[index]->SetYTitle(
"#it{M}_{#gamma,#gamma} (GeV/#it{c}^{2})");
881 outputContainer->Add(
fhRe3[index]) ;
888 snprintf(key, buffersize,
"hReInvPt_cen%d_pidbit%d_asy%d_dist1",ic,ipid,iasym) ;
889 snprintf(title, buffersize,
"Real #it{M}_{#gamma#gamma} distr. for centrality=%d, PID bit=%d and asymmetry %1.2f, dist bad 1",
891 fhReInvPt1[index] =
new TH2F(key,title,nptbins,ptmin,ptmax,nmassbins,massmin,massmax) ;
892 fhReInvPt1[index]->SetXTitle(
"#it{p}_{T} (GeV/#it{c})");
893 fhReInvPt1[index]->SetYTitle(
"#it{M}_{#gamma,#gamma} (GeV/#it{c}^{2})");
898 snprintf(key, buffersize,
"hReInvPt_cen%d_pidbit%d_asy%d_dist2",ic,ipid,iasym) ;
899 snprintf(title, buffersize,
"Real #it{M}_{#gamma#gamma} distr. for centrality=%d, PID bit=%d and asymmetry %1.2f, dist bad 2",
901 fhReInvPt2[index] =
new TH2F(key,title,nptbins,ptmin,ptmax,nmassbins,massmin,massmax) ;
902 fhReInvPt2[index]->SetXTitle(
"#it{p}_{T} (GeV/#it{c})");
903 fhReInvPt2[index]->SetYTitle(
"#it{M}_{#gamma,#gamma} (GeV/#it{c}^{2})");
907 snprintf(key, buffersize,
"hReInvPt_cen%d_pidbit%d_asy%d_dist3",ic,ipid,iasym) ;
908 snprintf(title, buffersize,
"Real #it{M}_{#gamma#gamma} distr. for centrality=%d, PID bit=%d and asymmetry %1.2f, dist bad 3",
910 fhReInvPt3[index] =
new TH2F(key,title,nptbins,ptmin,ptmax,nmassbins,massmin,massmax) ;
911 fhReInvPt3[index]->SetXTitle(
"#it{p}_{T} (GeV/#it{c})");
912 fhReInvPt3[index]->SetYTitle(
"#it{M}_{#gamma,#gamma} (GeV/#it{c}^{2})");
920 snprintf(key, buffersize,
"hMi_cen%d_pidbit%d_asy%d_dist1",ic,ipid,iasym) ;
921 snprintf(title, buffersize,
"Mixed #it{M}_{#gamma#gamma} distr. for centrality=%d, PID bit=%d and asymmetry %1.2f, dist bad 1",
923 fhMi1[index] =
new TH2F(key,title,nptbins,ptmin,ptmax,nmassbins,massmin,massmax) ;
924 fhMi1[index]->SetXTitle(
"#it{p}_{T} (GeV/#it{c})");
925 fhMi1[index]->SetYTitle(
"#it{M}_{#gamma,#gamma} (GeV/#it{c}^{2})");
926 outputContainer->Add(
fhMi1[index]) ;
929 snprintf(key, buffersize,
"hMi_cen%d_pidbit%d_asy%d_dist2",ic,ipid,iasym) ;
930 snprintf(title, buffersize,
"Mixed #it{M}_{#gamma#gamma} distr. for centrality=%d, PID bit=%d and asymmetry %1.2f, dist bad 2",
932 fhMi2[index] =
new TH2F(key,title,nptbins,ptmin,ptmax,nmassbins,massmin,massmax) ;
933 fhMi2[index]->SetXTitle(
"#it{p}_{T} (GeV/#it{c})");
934 fhMi2[index]->SetYTitle(
"#it{M}_{#gamma,#gamma} (GeV/#it{c}^{2})");
935 outputContainer->Add(
fhMi2[index]) ;
938 snprintf(key, buffersize,
"hMi_cen%d_pidbit%d_asy%d_dist3",ic,ipid,iasym) ;
939 snprintf(title, buffersize,
"Mixed #it{M}_{#gamma#gamma} distr. for centrality=%d, PID bit=%d and asymmetry %1.2f, dist bad 3",
941 fhMi3[index] =
new TH2F(key,title,nptbins,ptmin,ptmax,nmassbins,massmin,massmax) ;
942 fhMi3[index]->SetXTitle(
"#it{p}_{T} (GeV/#it{c})");
943 fhMi3[index]->SetYTitle(
"#it{M}_{#gamma,#gamma} (GeV/#it{c}^{2})");
944 outputContainer->Add(
fhMi3[index]) ;
951 snprintf(key, buffersize,
"hMiInvPt_cen%d_pidbit%d_asy%d_dist1",ic,ipid,iasym) ;
952 snprintf(title, buffersize,
"Mixed #it{M}_{#gamma#gamma} distr. for centrality=%d, PID bit=%d and asymmetry %1.2f, dist bad 1",
954 fhMiInvPt1[index] =
new TH2F(key,title,nptbins,ptmin,ptmax,nmassbins,massmin,massmax) ;
955 fhMiInvPt1[index]->SetXTitle(
"#it{p}_{T} (GeV/#it{c})");
956 fhMiInvPt1[index]->SetYTitle(
"#it{M}_{#gamma,#gamma} (GeV/#it{c}^{2})");
960 snprintf(key, buffersize,
"hMiInvPt_cen%d_pidbit%d_asy%d_dist2",ic,ipid,iasym) ;
961 snprintf(title, buffersize,
"Mixed #it{M}_{#gamma#gamma} distr. for centrality=%d, PID bit=%d and asymmetry %1.2f, dist bad 2",
963 fhMiInvPt2[index] =
new TH2F(key,title,nptbins,ptmin,ptmax,nmassbins,massmin,massmax) ;
964 fhMiInvPt2[index]->SetXTitle(
"#it{p}_{T} (GeV/#it{c})");
965 fhMiInvPt2[index]->SetYTitle(
"#it{M}_{#gamma,#gamma} (GeV/#it{c}^{2})");
969 snprintf(key, buffersize,
"hMiInvPt_cen%d_pidbit%d_asy%d_dist3",ic,ipid,iasym) ;
970 snprintf(title, buffersize,
"Mixed #it{M}_{#gamma#gamma} distr. for centrality=%d, PID bit=%d and asymmetry %1.2f,dist bad 3",
972 fhMiInvPt3[index] =
new TH2F(key,title,nptbins,ptmin,ptmax,nmassbins,massmin,massmax) ;
973 fhMiInvPt3[index]->SetXTitle(
"#it{p}_{T} (GeV/#it{c})");
974 fhMiInvPt3[index]->SetYTitle(
"#it{M}_{#gamma,#gamma} (GeV/#it{c}^{2})");
983 fhEPairDiffTime =
new TH2F(
"hEPairDiffTime",
"cluster pair time difference vs #it{p}_{T}",nptbins,ptmin,ptmax, tdbins,tdmin,tdmax);
990 fhRePtAsym =
new TH2F(
"hRePtAsym",
"#it{Asymmetry} vs #it{p}_{T} , for pairs",nptbins,ptmin,ptmax,nasymbins,asymmin,asymmax) ;
991 fhRePtAsym->SetXTitle(
"#it{p}_{T} (GeV/#it{c})");
995 fhRePtAsymPi0 =
new TH2F(
"hRePtAsymPi0",
"#it{Asymmetry} vs #it{p}_{T} , for pairs close to #pi^{0} mass",nptbins,ptmin,ptmax,nasymbins,asymmin,asymmax) ;
1000 fhRePtAsymEta =
new TH2F(
"hRePtAsymEta",
"#it{Asymmetry} vs #it{p}_{T} , for pairs close to #eta mass",nptbins,ptmin,ptmax,nasymbins,asymmin,asymmax) ;
1007 fhMiPtAsym =
new TH2F(
"hMiPtAsym",
"#it{Asymmetry} vs #it{p}_{T} , for mixed pairs",nptbins,ptmin,ptmax,nasymbins,asymmin,asymmax) ;
1008 fhMiPtAsym->SetXTitle(
"#it{p}_{T} (GeV/#it{c})");
1012 fhMiPtAsymPi0 =
new TH2F(
"hMiPtAsymPi0",
"#it{Asymmetry} vs #it{p}_{T} , for mixed pairs close to #pi^{0} mass",nptbins,ptmin,ptmax,nasymbins,asymmin,asymmax) ;
1017 fhMiPtAsymEta =
new TH2F(
"hMiPtAsymEta",
"#it{Asymmetry} vs #it{p}_{T} , for mixed pairs close to #eta mass",nptbins,ptmin,ptmax,nasymbins,asymmin,asymmax) ;
1029 (Form(
"hPtBin%d_Cluster_EtaPhi",ipt),
1030 Form(
"#eta vs #phi, %2.2f<#it{p}_{T}<%2.2f GeV/#it{c}",
fPtCuts[ipt],
fPtCuts[ipt+1]),
1031 netabins,etamin,etamax,nphibins,phimin,phimax);
1037 (Form(
"hPtBin%d_Cluster_ColRow",ipt),
1038 Form(
"column vs row, %2.2f<#it{p}_{T}<%2.2f GeV/#it{c}",
fPtCuts[ipt],
fPtCuts[ipt+1]),
1039 96+2,-1.5,96+0.5,(8*24+2*8)+2,-1.5,(8*24+2*8)+0.5);
1083 snprintf(key, buffersize,
"hRe_pt%d_cell%d_asym%d",ipt,icell,iasym) ;
1084 snprintf(title, buffersize,
"Real #it{M}_{#gamma#gamma} distr. for %1.1f< #it{p}_{T} < %1.1f, ncell>%d and asym<%1.2f ",
1097 snprintf(key, buffersize,
"hMi_pt%d_cell%d_asym%d",ipt,icell,iasym) ;
1098 snprintf(title, buffersize,
"Mixed #it{M}_{#gamma#gamma} distr. for %1.1f< #it{p}_{T} < %1.1f, ncell>%d and asym<%1.2f",
1112 snprintf(key, buffersize,
"hRe_pt%d_cell%d_asym%d_SM%d",ipt,icell,iasym,iSM) ;
1113 snprintf(title, buffersize,
"Real #it{M}_{#gamma#gamma} distr. for %1.1f< #it{p}_{T} < %1.1f, ncell>%d and asym<%1.2f, SM %d ",
1123 snprintf(key, buffersize,
"hReOpAngle_pt%d_cell%d_asym%d",ipt,icell,iasym) ;
1124 snprintf(title, buffersize,
"Real #theta_{#gamma#gamma} distr. for %1.1f< #it{p}_{T} < %1.1f, ncell>%d and asym<%1.2f ",
1137 snprintf(key, buffersize,
"hMiOpAngle_pt%d_cell%d_asym%d",ipt,icell,iasym) ;
1138 snprintf(title, buffersize,
"Mixed #theta_{#gamma#gamma} distr. for %1.1f< #it{p}_{T} < %1.1f, ncell>%d and asym<%1.2f",
1151 snprintf(key, buffersize,
"hReOpAngle_pt%d_cell%d_asym%d_SM%d",ipt,icell,iasym,iSM) ;
1152 snprintf(title, buffersize,
"Real #it{M}_{#gamma#gamma} distr. for %1.1f< #it{p}_{T} < %1.1f, ncell>%d and asym<%1.2f, SM %d ",
1183 fhReSS[0] =
new TH2F(
"hRe_SS_Tight",
" 0.01 < #lambda_{0}^{2} < 0.4",
1184 nptbins,ptmin,ptmax,nmassbins,massmin,massmax);
1185 fhReSS[0]->SetXTitle(
"#it{p}_{T} (GeV/#it{c})");
1186 fhReSS[0]->SetYTitle(
"#it{M}_{#gamma,#gamma} (GeV/#it{c}^{2})");
1187 outputContainer->Add(
fhReSS[0]) ;
1190 fhReSS[1] =
new TH2F(
"hRe_SS_Loose",
" #lambda_{0}^{2} > 0.4",
1191 nptbins,ptmin,ptmax,nmassbins,massmin,massmax);
1192 fhReSS[1]->SetXTitle(
"#it{p}_{T} (GeV/#it{c})");
1193 fhReSS[1]->SetYTitle(
"#it{M}_{#gamma,#gamma} (GeV/#it{c}^{2})");
1194 outputContainer->Add(
fhReSS[1]) ;
1197 fhReSS[2] =
new TH2F(
"hRe_SS_Both",
" cluster_{1} #lambda_{0}^{2} > 0.4; cluster_{2} 0.01 < #lambda_{0}^{2} < 0.4",
1198 nptbins,ptmin,ptmax,nmassbins,massmin,massmax);
1199 fhReSS[2]->SetXTitle(
"#it{p}_{T} (GeV/#it{c})");
1200 fhReSS[2]->SetYTitle(
"#it{M}_{#gamma,#gamma} (GeV/#it{c}^{2})");
1201 outputContainer->Add(
fhReSS[2]) ;
1206 fhEventBin=
new TH1I(
"hEventBin",
"Number of real pairs per bin(cen,vz,rp)",
1213 fhEventMixBin=
new TH1I(
"hEventMixBin",
"Number of mixed pairs per bin(cen,vz,rp)",
1239 (
"hRealOpeningAngle",
"Angle between all #gamma pair vs E_{#pi^{0}}",nptbins,ptmin,ptmax,nopanbins,opanmin,opanmax);
1245 (
"hRealCosOpeningAngle",
"Cosinus of angle between all #gamma pair vs E_{#pi^{0}}",nptbins,ptmin,ptmax,100,0,1);
1253 (
"hMixedOpeningAngle",
"Angle between all #gamma pair vs E_{#pi^{0}}, Mixed pairs",nptbins,ptmin,ptmax,nopanbins,opanmin,opanmax);
1259 (
"hMixedCosOpeningAngle",
"Cosinus of angle between all #gamma pair vs E_{#pi^{0}}, Mixed pairs",nptbins,ptmin,ptmax,100,0,1);
1267 for(
Int_t ism = 0; ism < 20; ism++)
1270 (Form(
"hRealOpeningAngleMod_%d",ism),
1271 Form(
"Angle between all #gamma pair vs E_{#pi^{0}}, SM %d",ism),
1272 nptbins,ptmin,ptmax,nopanbins,opanmin,opanmax);
1280 (Form(
"hMixedOpeningAngleMod_%d",ism),
1281 Form(
"Angle between all #gamma pair vs E_{#pi^{0}}, Mixed pairs, SM %d",ism),
1282 nptbins,ptmin,ptmax,nopanbins,opanmin,opanmax);
1295 nptbins,ptmin,ptmax,nmassbins,massmin,massmax);
1301 nptbins,ptmin,ptmax,nmassbins,massmin,massmax);
1307 nptbins,ptmin,ptmax,nmassbins,massmin,massmax);
1314 fhMCPi0PtOrigin =
new TH2F(
"hMCPi0PtOrigin",
"Reconstructed pair from generated #pi^{0} #it{p}_{T} vs origin",nptbins,ptmin,ptmax,11,0,11) ;
1329 fhMCNotResonancePi0PtOrigin =
new TH2F(
"hMCNotResonancePi0PtOrigin",
"Reconstructed pair from generated #pi^{0} #it{p}_{T} vs origin",nptbins,ptmin,ptmax,11,0,11) ;
1344 fhMCPi0PtStatus =
new TH2F(
"hMCPi0PtStatus",
"Reconstructed pair from generated #pi^{0} #it{p}_{T} vs status",nptbins,ptmin,ptmax,101,-50,50) ;
1351 fhMCEtaPtOrigin =
new TH2F(
"hMCEtaPtOrigin",
"Reconstructed pair from generated #pi^{0} #it{p}_{T} vs origin",nptbins,ptmin,ptmax,7,0,7) ;
1362 fhMCPi0ProdVertex =
new TH2F(
"hMCPi0ProdVertex",
"Selected reco pair from generated #pi^{0} #it{p}_{T} vs production vertex",
1363 200,0.,20.,5000,0,500) ;
1368 fhMCEtaProdVertex =
new TH2F(
"hMCEtaProdVertex",
"Selected reco pair from generated #eta #it{p}_{T} vs production vertex",
1369 200,0.,20.,5000,0,500) ;
1374 for(
Int_t i = 0; i<13; i++)
1376 fhMCOrgMass[i] =
new TH2F(Form(
"hMCOrgMass_%d",i),Form(
"#it{M} vs #it{p}_{T}, origin %d",i),nptbins,ptmin,ptmax,nmassbins,massmin,massmax) ;
1377 fhMCOrgMass[i]->SetXTitle(
"#it{p}_{T} (GeV/#it{c})");
1378 fhMCOrgMass[i]->SetYTitle(
"#it{M}_{#gamma,#gamma} (GeV/#it{c}^{2})");
1381 fhMCOrgAsym[i]=
new TH2F(Form(
"hMCOrgAsym_%d",i),Form(
"#it{Asymmetry} vs #it{p}_{T}, origin %d",i),nptbins,ptmin,ptmax,nasymbins,asymmin,asymmax) ;
1382 fhMCOrgAsym[i]->SetXTitle(
"#it{p}_{T} (GeV/#it{c})");
1386 fhMCOrgDeltaEta[i] =
new TH2F(Form(
"hMCOrgDeltaEta_%d",i),Form(
"#Delta #eta of pair vs #it{p}_{T}, origin %d",i),nptbins,ptmin,ptmax,netabins,-1.4,1.4) ;
1391 fhMCOrgDeltaPhi[i]=
new TH2F(Form(
"hMCOrgDeltaPhi_%d",i),Form(
"#Delta #phi of pair vs #it{p}_{T}, origin %d",i),nptbins,ptmin,ptmax,nphibins,-0.7,0.7) ;
1415 Form(
"Reconstructed #it{M} vs reconstructed #it{p}_{T} of true #pi^{0} cluster pairs for %1.1f<#it{p}_{T}<%1.1f, #it{N}^{cluster}_{cell}>%d and |#it{A}|<%1.2f",
1417 nptbins,ptmin,ptmax,nmassbins,massmin,massmax) ;
1418 fhMCPi0MassPtRec[index]->SetXTitle(
"#it{p}_{T, reconstructed} (GeV/#it{c})");
1419 fhMCPi0MassPtRec[index]->SetYTitle(
"#it{M}_{#gamma,#gamma} (GeV/#it{c}^{2})");
1423 Form(
"Reconstructed #it{M} vs generated #it{p}_{T} of true #pi^{0} cluster pairs for %1.1f<#it{p}_{T}<%1.1f, #it{N}^{cluster}_{cell}>%d and |#it{A}|<%1.2f",
1425 nptbins,ptmin,ptmax,nmassbins,massmin,massmax) ;
1431 Form(
"Generated vs reconstructed #it{p}_{T} of true #pi^{0} cluster pairs, 0.01 < rec. mass < 0.17 MeV/#it{c}^{2} for %1.1f<#it{p}_{T}<%1.1f, #it{N}^{cluster}_{cell}>%d and |#it{A}|>%1.2f",
1433 nptbins,ptmin,ptmax,nptbins,ptmin,ptmax) ;
1439 Form(
"Reconstructed #it{M} vs reconstructed #it{p}_{T} of true #eta cluster pairs for %1.1f<#it{p}_{T}<%1.1f, #it{N}^{cluster}_{cell}>%d and |#it{A}|<%1.2f",
1441 nptbins,ptmin,ptmax,nmassbins,massmin,massmax) ;
1443 fhMCEtaMassPtRec[index]->SetYTitle(
"#it{M}_{#gamma,#gamma} (GeV/#it{c}^{2})");
1447 Form(
"Reconstructed #it{M} vs generated #it{p}_{T} of true #eta cluster pairs for %1.1f<#it{p}_{T}<%1.1f, #it{N}^{cluster}_{cell}>%d and |#it{A}|<%1.2f",
1449 nptbins,ptmin,ptmax,nmassbins,massmin,massmax) ;
1455 Form(
"Generated vs reconstructed #it{p}_{T} of true #eta cluster pairs, 0.01 < rec. mass < 0.17 MeV/#it{c}^{2} for %1.1f<#it{p}_{T}<%1.1f, ncell>%d and asym<%1.2f",
1457 nptbins,ptmin,ptmax,nptbins,ptmin,ptmax) ;
1472 fhMCPi0MassPtTrue[0] =
new TH2F(
"hMCPi0MassPtTrue",
"Reconstructed Mass vs generated p_T of true #pi^{0} cluster pairs",nptbins,ptmin,ptmax,nmassbins,massmin,massmax) ;
1477 fhMCPi0PtTruePtRec[0]=
new TH2F(
"hMCPi0PtTruePtRec",
"Generated vs reconstructed p_T of true #pi^{0} cluster pairs, 0.01 < rec. mass < 0.17 MeV/#it{c}^{2}",nptbins,ptmin,ptmax,nptbins,ptmin,ptmax) ;
1482 fhMCEtaMassPtTrue[0] =
new TH2F(
"hMCEtaMassPtTrue",
"Reconstructed Mass vs generated p_T of true #eta cluster pairs",nptbins,ptmin,ptmax,nmassbins,massmin,massmax) ;
1487 fhMCEtaPtTruePtRec[0]=
new TH2F(
"hMCEtaPtTruePtRec",
"Generated vs reconstructed p_T of true #eta cluster pairs, 0.01 < rec. mass < 0.17 MeV/#it{c}^{2}",nptbins,ptmin,ptmax,nptbins,ptmin,ptmax) ;
1499 TString pairnamePHOS[] = {
"(0-1)",
"(0-2)",
"(1-2)",
"(0-3)",
"(0-4)",
"(1-3)",
"(1-4)",
"(2-3)",
"(2-4)",
"(3-4)"};
1503 snprintf(key, buffersize,
"hReMod_%d",imod) ;
1504 snprintf(title, buffersize,
"Real #it{M}_{#gamma#gamma} distr. for Module %d",imod) ;
1505 fhReMod[imod] =
new TH2F(key,title,nptbins,ptmin,ptmax,nmassbins,massmin,massmax) ;
1506 fhReMod[imod]->SetXTitle(
"#it{p}_{T} (GeV/#it{c})");
1507 fhReMod[imod]->SetYTitle(
"#it{M}_{#gamma,#gamma} (GeV/#it{c}^{2})");
1508 outputContainer->Add(
fhReMod[imod]) ;
1511 snprintf(key, buffersize,
"hReDiffPHOSMod_%d",imod) ;
1512 snprintf(title, buffersize,
"Real pairs PHOS, clusters in different Modules: %s",(pairnamePHOS[imod]).
Data()) ;
1513 fhReDiffPHOSMod[imod] =
new TH2F(key,title,nptbins,ptmin,ptmax,nmassbins,massmin,massmax) ;
1515 fhReDiffPHOSMod[imod]->SetYTitle(
"#it{M}_{#gamma,#gamma} (GeV/#it{c}^{2})");
1520 if(imod<fNModules/2)
1522 snprintf(key, buffersize,
"hReSameSectorEMCAL_%d",imod) ;
1523 snprintf(title, buffersize,
"Real pairs EMCAL, clusters in same sector, SM(%d,%d)",imod*2,imod*2+1) ;
1529 if(imod<fNModules-2)
1531 snprintf(key, buffersize,
"hReSameSideEMCAL_%d",imod) ;
1532 snprintf(title, buffersize,
"Real pairs EMCAL, clusters in same side SM(%d,%d)",imod, imod+2) ;
1542 snprintf(key, buffersize,
"hMiMod_%d",imod) ;
1543 snprintf(title, buffersize,
"Mixed #it{M}_{#gamma#gamma} distr. for Module %d",imod) ;
1544 fhMiMod[imod] =
new TH2F(key,title,nptbins,ptmin,ptmax,nmassbins,massmin,massmax) ;
1545 fhMiMod[imod]->SetXTitle(
"#it{p}_{T} (GeV/#it{c})");
1546 fhMiMod[imod]->SetYTitle(
"#it{M}_{#gamma,#gamma} (GeV/#it{c}^{2})");
1547 outputContainer->Add(
fhMiMod[imod]) ;
1551 snprintf(key, buffersize,
"hMiDiffPHOSMod_%d",imod) ;
1552 snprintf(title, buffersize,
"Mixed pairs PHOS, clusters in different Modules: %s",(pairnamePHOS[imod]).
Data()) ;
1553 fhMiDiffPHOSMod[imod] =
new TH2F(key,title,nptbins,ptmin,ptmax,nmassbins,massmin,massmax) ;
1555 fhMiDiffPHOSMod[imod]->SetYTitle(
"#it{M}_{#gamma,#gamma} (GeV/#it{c}^{2})");
1560 if(imod<fNModules/2)
1562 snprintf(key, buffersize,
"hMiSameSectorEMCALMod_%d",imod) ;
1563 snprintf(title, buffersize,
"Mixed pairs EMCAL, clusters in same sector, SM(%d,%d)",imod*2,imod*2+1) ;
1569 if(imod<fNModules-2){
1571 snprintf(key, buffersize,
"hMiSameSideEMCALMod_%d",imod) ;
1572 snprintf(title, buffersize,
"Mixed pairs EMCAL, clusters in same side SM(%d,%d)",imod, imod+2) ;
1584 Int_t dcSameSM[6] = {12,13,14,15,16,17};
1585 Int_t phSameSM[6] = {3, 3, 2, 2, 1, 1};
1587 Int_t dcDiffSM[8] = {12,13,14,15,16,17,0,0};
1588 Int_t phDiffSM[8] = {2, 2, 1, 1, 3, 3,0,0};
1590 for(
Int_t icombi = 0; icombi < 8; icombi++)
1592 snprintf(key, buffersize,
"hReDiffSectorDCALPHOS_%d",icombi) ;
1593 snprintf(title, buffersize,
"Real pairs DCAL-PHOS, clusters in different sector, SM(%d,%d)",dcDiffSM[icombi],phDiffSM[icombi]) ;
1600 snprintf(key, buffersize,
"hMiDiffSectorDCALPHOS_%d",icombi) ;
1601 snprintf(title, buffersize,
"Mixed pairs DCAL-PHOS, clusters in different sector, SM(%d,%d)",dcDiffSM[icombi],phDiffSM[icombi]) ;
1608 if(icombi > 5) continue ;
1610 snprintf(key, buffersize,
"hReSameSectorDCALPHOS_%d",icombi) ;
1611 snprintf(title, buffersize,
"Real pairs DCAL-PHOS, clusters in same sector, SM(%d,%d)",dcSameSM[icombi],phSameSM[icombi]) ;
1618 snprintf(key, buffersize,
"hMiSameSectorDCALPHOS_%d",icombi) ;
1619 snprintf(title, buffersize,
"Mixed pairs DCAL-PHOS, clusters in same sector, SM(%d,%d)",dcSameSM[icombi],phSameSM[icombi]) ;
1636 (Form(
"hReOpAngleBin%d_ClusterMin_EtaPhi",icut),
1638 netabins,etamin,etamax,nphibins,phimin,phimax);
1644 (Form(
"hReOpAngleBin%d_ClusterMax_EtaPhi",icut),
1646 netabins,etamin,etamax,nphibins,phimin,phimax);
1652 (Form(
"hReOpAngleBin%d_ClusterMin_ColRow",icut),
1654 96+2,-1.5,96+0.5,(8*24+2*8)+2,-1.5,(8*24+2*8)+0.5);
1660 (Form(
"hReOpAngleBin%d_ClusterMax_ColRow",icut),
1662 96+2,-1.5,96+0.5,(8*24+2*8)+2,-1.5,(8*24+2*8)+0.5);
1668 (Form(
"hReOpAngleBin%d_ClusterMin_EPerSM",icut),
1670 nptbins,ptmin,ptmax,20,0,20);
1676 (Form(
"hReOpAngleBin%d_ClusterMax_EPerSM",icut),
1678 nptbins,ptmin,ptmax,20,0,20);
1684 (Form(
"hReOpAngleBin%d_ClusterMin_TimePerSM",icut),
1686 ntimebins,timemin,timemax,20,0,20);
1692 (Form(
"hReOpAngleBin%d_ClusterMax_TimePerSM",icut),
1694 ntimebins,timemin,timemax,20,0,20);
1700 (Form(
"hReOpAngleBin%d_ClusterMin_NCellPerSM",icut),
1708 (Form(
"hReOpAngleBin%d_ClusterMax_NCellPerSM",icut),
1716 (Form(
"hReOpAngleBin%d_PairCluster_RatioPerSM",icut),
1724 (Form(
"hReOpAngleBin%d_PairCluster_MassPerSM",icut),
1726 nmassbins,massmin,massmax,20,0,20);
1732 (Form(
"hReOpAngleBin%d_PairCluster_Mass",icut),
1734 nptbins,ptmin,ptmax,nmassbins,massmin,massmax);
1744 (Form(
"hReOpAngleBin%d_PairCluster_MassMCTruePi0",icut),
1746 nptbins,ptmin,ptmax,nmassbins,massmin,massmax);
1752 (Form(
"hReOpAngleBin%d_PairCluster_MassMCTrueEta",icut),
1754 nptbins,ptmin,ptmax,nmassbins,massmin,massmax);
1761 (Form(
"hPrimPi0AccPt_OpAngleBin%d",icut),
1763 nptbins,ptmin,ptmax) ;
1768 (Form(
"hPrimEtaAccPt_OpAngleBin%d",icut),
1770 nptbins,ptmin,ptmax) ;
1787 (Form(
"hMiOpAngleBin%d_ClusterMin_EtaPhi",icut),
1789 netabins,etamin,etamax,nphibins,phimin,phimax);
1795 (Form(
"hMiOpAngleBin%d_ClusterMax_EtaPhi",icut),
1797 netabins,etamin,etamax,nphibins,phimin,phimax);
1819 (Form(
"hMiOpAngleBin%d_ClusterMin_EPerSM",icut),
1821 nptbins,ptmin,ptmax,20,0,20);
1827 (Form(
"hMiOpAngleBin%d_ClusterMax_EPerSM",icut),
1829 nptbins,ptmin,ptmax,20,0,20);
1835 (Form(
"hMiOpAngleBin%d_ClusterMin_TimePerSM",icut),
1837 ntimebins,timemin,timemax,20,0,20);
1843 (Form(
"hMiOpAngleBin%d_ClusterMax_TimePerSM",icut),
1845 ntimebins,timemin,timemax,20,0,20);
1851 (Form(
"hMiOpAngleBin%d_ClusterMin_NCellPerSM",icut),
1859 (Form(
"hMiOpAngleBin%d_ClusterMax_NCellPerSM",icut),
1867 (Form(
"hMiOpAngleBin%d_PairCluster_RatioPerSM",icut),
1875 (Form(
"hMiOpAngleBin%d_PairCluster_MassPerSM",icut),
1877 nmassbins,massmin,massmax,20,0,20);
1883 (Form(
"hMiOpAngleBin%d_PairCluster_Mass",icut),
1885 nptbins,ptmin,ptmax,nmassbins,massmin,massmax);
1908 return outputContainer;
1916 printf(
"**** Print %s %s ****\n", GetName(), GetTitle() ) ;
1919 printf(
"Number of bins in Centrality: %d \n",
GetNCentrBin()) ;
1920 printf(
"Number of bins in Z vert. pos: %d \n",
GetNZvertBin()) ;
1921 printf(
"Number of bins in Reac. Plain: %d \n",
GetNRPBin()) ;
1922 printf(
"Depth of event buffer: %d \n",
GetNMaxEvMix()) ;
1923 printf(
"Pair in same Module: %d \n",
fSameSM) ;
1924 printf(
"Cuts: \n") ;
1926 printf(
"Number of modules: %d \n",
fNModules) ;
1928 printf(
"Asymmetry cuts: n = %d, \n",
fNAsymCuts) ;
1929 printf(
"\tasymmetry < ");
1933 printf(
"PID selection bits: n = %d, \n",
fNPIDBits) ;
1934 printf(
"\tPID bit = ");
1940 printf(
"pT cuts: n = %d, \n",
fNPtCuts) ;
1948 printf(
"N cell in cluster cuts: n = %d, \n",
fNCellNCuts) ;
1949 printf(
"\tnCell > ");
1954 printf(
"------------------------------------------------------\n") ;
1977 TParticle * primStack = 0;
1978 AliAODMCParticle * primAOD = 0;
1981 AliStack * stack = 0;
1986 nprim = stack->GetNtrack();
1990 TClonesArray * mcparticles = 0;
1994 if( !mcparticles )
return;
1995 nprim = mcparticles->GetEntriesFast();
1998 for(
Int_t i=0 ; i < nprim; i++)
2000 if ( !
GetReader()->AcceptParticleMCLabel( i ) ) continue ;
2004 primStack = stack->Particle(i) ;
2007 AliWarning(
"ESD primaries pointer not available!!");
2012 if( primStack->Energy() < 0.4 )
continue;
2014 pdg = primStack->GetPdgCode();
2015 nDaught = primStack->GetNDaughters();
2016 iphot1 = primStack->GetDaughter(0) ;
2017 iphot2 = primStack->GetDaughter(1) ;
2020 if ( primStack->Energy() == TMath::Abs(primStack->Pz()) ||
2021 (primStack->Energy() - primStack->Pz()) < 1e-3 ||
2022 (primStack->Energy() + primStack->Pz()) < 0 ) continue ;
2030 mesonY = 0.5*TMath::Log((primStack->Energy()+primStack->Pz())/(primStack->Energy()-primStack->Pz())) ;
2034 primAOD = (AliAODMCParticle *) mcparticles->At(i);
2037 AliWarning(
"AOD primaries pointer not available!!");
2042 if( primAOD->E() < 0.4 )
continue;
2044 pdg = primAOD->GetPdgCode();
2045 nDaught = primAOD->GetNDaughters();
2046 iphot1 = primAOD->GetFirstDaughter() ;
2047 iphot2 = primAOD->GetLastDaughter() ;
2050 if ( primAOD->E() == TMath::Abs(primAOD->Pz()) ||
2051 (primAOD->E() - primAOD->Pz()) < 1e-3 ||
2052 (primAOD->E() + primAOD->Pz()) < 0 ) continue ;
2055 fPi0Mom.SetPxPyPzE(primAOD->Px(),primAOD->Py(),primAOD->Pz(),primAOD->E());
2057 mesonY = 0.5*TMath::Log((primAOD->E()+primAOD->Pz())/(primAOD->E()-primAOD->Pz())) ;
2061 if( pdg != 111 && pdg != 221) continue ;
2067 if( mesonPhi < 0 ) mesonPhi+=TMath::TwoPi();
2068 mesonPhi *= TMath::RadToDeg();
2072 if(TMath::Abs(mesonY) < 1.0)
2092 if(TMath::Abs(mesonY) < 1.0)
2114 Int_t momindex = -1;
2116 Int_t momstatus = -1;
2119 if(
GetReader()->ReadStack()) momindex = primStack->GetFirstMother();
2120 if(
GetReader()->ReadAODMCParticles()) momindex = primAOD ->GetMother();
2122 if(momindex >= 0 && momindex < nprim)
2126 status = primStack->GetStatusCode();
2127 TParticle* mother = stack->Particle(momindex);
2128 mompdg = TMath::Abs(mother->GetPdgCode());
2129 momstatus = mother->GetStatusCode();
2135 status = primAOD->GetStatus();
2136 AliAODMCParticle* mother = (AliAODMCParticle*) mcparticles->At(momindex);
2137 mompdg = TMath::Abs(mother->GetPdgCode());
2138 momstatus = mother->GetStatus();
2139 momR = TMath::Sqrt(mother->Xv()*mother->Xv()+mother->Yv()*mother->Yv());
2150 else if(mompdg > 2100 && mompdg < 2210)
2156 else if(mompdg >= 310 && mompdg <= 323)
2159 else if(momstatus == 11 || momstatus == 12 )
2170 else if(mompdg > 2100 && mompdg < 2210)
2176 else if(mompdg >= 310 && mompdg <= 323)
2179 else if(momstatus == 11 || momstatus == 12 )
2189 else if(mompdg > 2100 && mompdg < 2210)
2192 else if(momstatus == 11 || momstatus == 12 )
2206 if ( nDaught != 2 )
continue;
2208 if ( iphot1 < 0 || iphot1 >= nprim || iphot2 < 0 || iphot2 >= nprim ) continue ;
2212 Bool_t inacceptance1 = kTRUE;
2213 Bool_t inacceptance2 = kTRUE;
2217 TParticle * phot1 = stack->Particle(iphot1) ;
2218 TParticle * phot2 = stack->Particle(iphot2) ;
2220 if(!phot1 || !phot2) continue ;
2222 pdg1 = phot1->GetPdgCode();
2223 pdg2 = phot2->GetPdgCode();
2238 AliAODMCParticle * phot1 = (AliAODMCParticle *) mcparticles->At(iphot1) ;
2239 AliAODMCParticle * phot2 = (AliAODMCParticle *) mcparticles->At(iphot2) ;
2241 if(!phot1 || !phot2) continue ;
2243 pdg1 = phot1->GetPdgCode();
2244 pdg2 = phot2->GetPdgCode();
2246 fPhotonMom1.SetPxPyPzE(phot1->Px(),phot1->Py(),phot1->Pz(),phot1->E());
2247 fPhotonMom2.SetPxPyPzE(phot2->Px(),phot2->Py(),phot2->Pz(),phot2->E());
2257 if( pdg1 != 22 || pdg2 !=22) continue ;
2276 if(photonPhi1 < 0) photonPhi1+=TMath::TwoPi();
2277 if(photonPhi2 < 0) photonPhi2+=TMath::TwoPi();
2286 Bool_t sameSector = kFALSE;
2290 if((sm1==j && sm2==j+1) || (sm1==j+1 && sm2==j)) sameSector = kTRUE;
2293 if(sm1!=sm2 && !sameSector)
2295 inacceptance1 = kFALSE;
2296 inacceptance2 = kFALSE;
2303 AliDebug(2,Form(
"Accepted in %s?: m (%2.2f,%2.2f,%2.2f), p1 (%2.2f,%2.2f,%2.2f), p2 (%2.2f,%2.2f,%2.2f) : in1 %d, in2 %d",
2305 mesonPt,mesonYeta,mesonPhi,
2308 inacceptance1, inacceptance2));
2310 if(inacceptance1 && inacceptance2)
2315 Bool_t cutAngle = kFALSE;
2318 AliDebug(2,Form(
"\t ACCEPTED pdg %d: pt %2.2f, phi %2.2f, eta %2.2f",pdg,mesonPt,mesonPhi,mesonYeta));
2350 Int_t angleBin = -1;
2357 if( angleBin >= 0 && angleBin < fNAngleCutBins)
2392 Int_t angleBin = -1;
2399 if( angleBin >= 0 && angleBin < fNAngleCutBins)
2416 Float_t momentumDaughter1AlongMother = 0.;
2417 Float_t momentumDaughter2AlongMother = 0.;
2419 if (momentumSquaredMother > 0.)
2426 Float_t ptArmSquared = momentumSquaredDaughter1 - momentumDaughter1AlongMother*momentumDaughter1AlongMother;
2429 if (ptArmSquared > 0.)
2430 pTArm = sqrt(ptArmSquared);
2433 if(momentumDaughter1AlongMother + momentumDaughter2AlongMother > 0)
2434 alphaArm = (momentumDaughter1AlongMother -momentumDaughter2AlongMother) / (momentumDaughter1AlongMother + momentumDaughter2AlongMother);
2442 if(en > 8 && en <= 12) ebin = 0;
2443 if(en > 12 && en <= 16) ebin = 1;
2444 if(en > 16 && en <= 20) ebin = 2;
2445 if(en > 20) ebin = 3;
2446 if(ebin < 0 || ebin > 3) return ;
2482 Int_t ancStatus = 0;
2486 Int_t momindex = -1;
2488 Int_t momstatus = -1;
2495 AliDebug(1,Form(
"Common ancestor label %d, pdg %d, name %s, status %d",
2496 ancLabel,ancPDG,TDatabasePDG::Instance()->GetParticle(ancPDG)->GetName(),ancStatus));
2502 else if(TMath::Abs(ancPDG)==11)
2506 else if(ancPDG==111)
2525 if(mass < 0.17 && mass > 0.1)
2536 if(mass < 0.17 && mass > 0.1)
2543 TParticle* ancestor =
GetMCStack()->Particle(ancLabel);
2544 status = ancestor->GetStatusCode();
2545 momindex = ancestor->GetFirstMother();
2546 if(momindex < 0)
return;
2547 TParticle* mother =
GetMCStack()->Particle(momindex);
2548 mompdg = TMath::Abs(mother->GetPdgCode());
2549 momstatus = mother->GetStatusCode();
2550 prodR = mother->R();
2556 AliAODMCParticle* ancestor = (AliAODMCParticle *) mcparticles->At(ancLabel);
2557 status = ancestor->GetStatus();
2558 momindex = ancestor->GetMother();
2559 if(momindex < 0)
return;
2560 AliAODMCParticle* mother = (AliAODMCParticle *) mcparticles->At(momindex);
2561 mompdg = TMath::Abs(mother->GetPdgCode());
2562 momstatus = mother->GetStatus();
2563 prodR = TMath::Sqrt(mother->Xv()*mother->Xv()+mother->Yv()*mother->Yv());
2575 else if(mompdg > 2100 && mompdg < 2210)
2581 else if(mompdg >= 310 && mompdg <= 323)
2584 else if(momstatus == 11 || momstatus == 12 )
2592 else if(mompdg > 2100 && mompdg < 2210)
2598 else if(mompdg >= 310 && mompdg <= 323)
2601 else if(momstatus == 11 || momstatus == 12 )
2610 Int_t angleBin = -1;
2617 if( angleBin >= 0 && angleBin < fNAngleCutBins)
2622 else if(ancPDG==221)
2641 if(mass < 0.65 && mass > 0.45)
2655 TParticle* ancestor =
GetMCStack()->Particle(ancLabel);
2656 momindex = ancestor->GetFirstMother();
2657 if(momindex < 0)
return;
2658 TParticle* mother =
GetMCStack()->Particle(momindex);
2659 mompdg = TMath::Abs(mother->GetPdgCode());
2660 momstatus = mother->GetStatusCode();
2661 prodR = mother->R();
2666 AliAODMCParticle* ancestor = (AliAODMCParticle *) mcparticles->At(ancLabel);
2667 momindex = ancestor->GetMother();
2668 if(momindex < 0)
return;
2669 AliAODMCParticle* mother = (AliAODMCParticle *) mcparticles->At(momindex);
2670 mompdg = TMath::Abs(mother->GetPdgCode());
2671 momstatus = mother->GetStatus();
2672 prodR = TMath::Sqrt(mother->Xv()*mother->Xv()+mother->Yv()*mother->Yv());
2679 else if(mompdg > 2100 && mompdg < 2210)
2682 else if(momstatus == 11 || momstatus == 12 )
2691 Int_t angleBin = -1;
2698 if( angleBin >= 0 && angleBin < fNAngleCutBins)
2702 else if(ancPDG==-2212)
2706 else if(ancPDG==-2112)
2710 else if(TMath::Abs(ancPDG)==13)
2714 else if (TMath::Abs(ancPDG) > 100 && ancLabel > 7)
2727 if(ancStatus==11 || ancStatus==12)
2731 else if (ancStatus==21){
2736 else if(ancLabel < 6)
2740 else if(ancLabel < 8)
2758 AliDebug(1,
"Common ancestor not found");
2763 if(mcIndex >= 0 && mcIndex < 13)
2792 AliFatal(Form(
"No input aod photons in AOD with name branch < %s >, STOP",
GetInputAODName().
Data()));
2804 Int_t nPhot2 = nPhot;
2805 Int_t minEntries = 2;
2818 if(!secondLoopInputData)
2824 nPhot2 = secondLoopInputData->GetEntriesFast() ;
2829 AliDebug(1,Form(
"Photon entries %d", nPhot));
2832 if ( nPhot < minEntries )
2857 Double_t vert[] = {0.0, 0.0, 0.0} ;
2858 Int_t evtIndex1 = 0 ;
2859 Int_t currentEvtIndex = -1;
2867 AliWarning(Form(
"Mix Bin not expected: cen bin %d, z bin %d, rp bin %d, total bin %d, Event Centrality %d, z vertex %2.3f, Reaction Plane %2.3f",
2880 for(
Int_t i1 = 0; i1 < nPhot-last; i1++)
2892 if ( evtIndex1 == -1 )
2894 if ( evtIndex1 == -2 )
2900 if (evtIndex1 != currentEvtIndex)
2913 currentEvtIndex = evtIndex1 ;
2919 fPhotonMom1.SetPxPyPzE(p1->Px(),p1->Py(),p1->Pz(),p1->E());
2922 module1 = p1->GetSModNumber();
2929 Int_t iclus1 = -1, iclus2 = -1 ;
2930 Float_t maxCellFraction1 = 0, maxCellFraction2 = 0;
2931 Int_t absIdMax1 = -1, absIdMax2 = -1;
2932 Int_t icol1 = -1, icol2 = -1, icolAbs1 = -1, icolAbs2 = -1;
2933 Int_t irow1 = -1, irow2 = -1, irowAbs1 = -1, irowAbs2 = -1;
2934 Int_t iRCU1 = -1, iRCU2 = -1;
2939 if(!cluster1) AliWarning(
"Cluster1 not found!");
2965 for(
Int_t i2 = first; i2 < nPhot2; i2++)
2968 AliAODPWG4Particle * p2 = (AliAODPWG4Particle*) (secondLoopInputData->At(i2)) ;
2977 if ( evtIndex2 == -1 )
2979 if ( evtIndex2 == -2 )
3026 Int_t ncell1 = p1->GetNCells();
3031 Int_t ncell2 = p2->GetNCells();
3043 fPhotonMom2.SetPxPyPzE(p2->Px(),p2->Py(),p2->Pz(),p2->E());
3046 module2 = p2->GetSModNumber();
3055 Double_t a = TMath::Abs(p1->E()-p2->E())/(p1->E()+p2->E()) ;
3057 AliDebug(2,Form(
"E: fPhotonMom1 %f, fPhotonMom2 %f; Pair: pT %f, mass %f, a %f", p1->E(), p2->E(), (
fPhotonMom1 +
fPhotonMom2).E(),m,a));
3083 if(module1==module2 && module1 >=0 && module1<
fNModules)
3139 if(module1!=module2) ok=kFALSE;
3168 if ( l01 > 0.01 && l01 < 0.4 &&
3187 if(index < 0 || index >= ncentr*fNPIDBits*fNAsymCuts) continue ;
3194 if(p1->DistToBad()>0 && p2->DistToBad()>0)
3199 if(p1->DistToBad()>1 && p2->DistToBad()>1)
3223 Int_t angleBin = -1;
3230 if( angleBin >= 0 && angleBin < fNAngleCutBins)
3247 Int_t mod1 = module1;
3248 Int_t mod2 = module2;
3252 if(!cluster2) AliWarning(
"Cluster2 not found!");
3276 Int_t tmp = absIdMax2;
3277 absIdMax2 = absIdMax1;
3319 if ( p1->GetFiducialArea() == 0 && p2->GetFiducialArea() == 0 )
3322 else if ( p1->GetFiducialArea() != 0 && p2->GetFiducialArea() != 0 )
3349 ncell1, ncell2, m, pt, a,deta, dphi, angle);
3412 if(eventbin < 0) return ;
3418 AliWarning(Form(
"Mix event list not available, bin %d",eventbin));
3422 Int_t nMixed = evMixList->GetSize() ;
3423 for(
Int_t ii=0; ii<nMixed; ii++)
3425 TClonesArray* ev2= (TClonesArray*) (evMixList->At(ii));
3426 Int_t nPhot2=ev2->GetEntriesFast() ;
3428 AliDebug(1,Form(
"Mixed event %d photon entries %d, centrality bin %d",ii, nPhot2,
GetEventCentralityBin()));
3435 for(
Int_t i1 = 0; i1 < nPhot; i1++)
3446 fPhotonMom1.SetPxPyPzE(p1->Px(),p1->Py(),p1->Pz(),p1->E());
3452 for(
Int_t i2 = 0; i2 < nPhot2; i2++)
3454 AliAODPWG4Particle * p2 = (AliAODPWG4Particle*) (ev2->At(i2)) ;
3460 fPhotonMom2.SetPxPyPzE(p2->Px(),p2->Py(),p2->Pz(),p2->E());
3463 Double_t a = TMath::Abs(p1->E()-p2->E())/(p1->E()+p2->E()) ;
3479 AliDebug(2,Form(
"Mixed Event: pT: fPhotonMom1 %2.2f, fPhotonMom2 %2.2f; Pair: pT %2.2f, mass %2.3f, a %2.3f",p1->Pt(), p2->Pt(), pt,m,a));
3491 if(module1==module2 && module1 >=0 && module1<
fNModules)
3546 if(module1!=module2) ok=kFALSE;
3583 if(index < 0 || index >= ncentr*fNPIDBits*fNAsymCuts) continue ;
3591 if(p1->DistToBad()>0 && p2->DistToBad()>0)
3596 if(p1->DistToBad()>1 && p2->DistToBad()>1)
3611 Int_t ncell1 = p1->GetNCells();
3612 Int_t ncell2 = p1->GetNCells();
3656 Int_t angleBin = -1;
3663 if( angleBin >= 0 && angleBin < fNAngleCutBins)
3681 Int_t mod1 = module1;
3682 Int_t mod2 = module2;
3759 if ( p1->GetFiducialArea() == 0 && p2->GetFiducialArea() == 0 )
3762 else if ( p1->GetFiducialArea() != 0 && p2->GetFiducialArea() != 0 )
3775 TClonesArray *currentEvent =
new TClonesArray(*secondLoopInputData);
3778 if( currentEvent->GetEntriesFast() > 0 )
3780 evMixList->AddFirst(currentEvent) ;
3784 TClonesArray * tmp = (TClonesArray*) (evMixList->Last()) ;
3785 evMixList->RemoveLast() ;
3791 delete currentEvent ;
3796 AliDebug(1,
"End fill histograms");
3806 Int_t evtIndex = -1 ;
3812 evtIndex =
GetMixedEvent()->EventIndexForCaloCluster(part->GetCaloLabel(0)) ;
virtual Bool_t IsFiducialCutOn() const
TH2F * fhPrimEtaY
! Rapidity distribution of primary particles vs pT
Float_t GetHistoPtMax() const
TH2F ** fhRe3
[GetNCentrBin()*fNPIDBits*fNAsymCuts]
TH2F * fhPrimEtaAccPtCentrality
! primary eta with accepted daughters reconstructed centrality vs pT
TH2F * fhMiOpAngleBinMinClusterEPerSM[10]
! energy of lowest energy cluster in pair, depending on opening angle cut, y axis is SM number...
TH2F * fhReOpAngleBinMaxClusterEPerSM[10]
! energy of highest energy cluster in pair, depending on opening angle cut, y axis is SM number ...
TH2F * fhPrimPi0Y
! Rapidity distribution of primary particles vs pT
TLorentzVector fPhotonMom1Boost
! Photon cluster momentum, temporary array
TH2F * fhMiOpAngleBinPairClusterRatioPerSM[10]
! lowest/highest energy cluster in pair, depending on opening angle cut, y axis is SM number...
Int_t fNModules
[GetNCentrBin()*GetNZvertBin()*GetNRPBin()]
TH2F * fhPrimEtaYetaYcut
! PseudoRapidity distribution of primary particles vs pT, Y<1
virtual Bool_t DoOwnMix() const
TH1F * fhPrimPi0AccPt
! Spectrum of primary with accepted daughters
Float_t GetHistoPtMin() const
virtual Float_t GetMaxPt() const
TH2F * fhPrimEtaAccPhi
! Azimutal distribution of primary with accepted daughters vs pT
TLorentzVector fPi0Mom
! Pi0 cluster momentum, temporary array
TH2F * fhReMCFromMixConversion
! Invariant mass of 2 clusters one from conversion and the other not
Int_t fPIDBits[10]
Array with different PID bits.
virtual Int_t GetCalorimeter() const
TH2F * fhMiPtAsymPi0
! Mix two-photon pt vs asymmetry, close to pi0 mass
virtual void AddToHistogramsName(TString add)
virtual AliVCaloCells * GetEMCALCells() const
TH2F * fhReOpAngleBinPairClusterMassMCTrueEta[10]
! cluster pair mass vs pT, depending on opening angle cut, true eta decay pairs from MC ...
Bool_t fFillArmenterosThetaStar
Fill armenteros histograms.
Int_t fNPIDBits
Number of possible PID bit combinations.
TLorentzVector fPhotonMom2
! Photon cluster momentum, temporary array
TH2F * fhReOpAngleBinMaxClusterColRow[10]
! Column and row location of main cell of highest energy cluster in pair, depending on opening angle ...
TH2F ** fhMiDiffSectorDCALPHOSMod
[6]
virtual Bool_t IsDataMC() const
Int_t fCellNCuts[10]
Array with different cell number cluster cuts.
TH2F * fhMCOrgDeltaEta[13]
! Delta Eta vs pt of real pairs, check common origin of pair
TH2F * fhReSS[3]
[fNPtCuts*fNAsymCuts*fNCellNCuts]
TH2F * fhReOpAngleBinMaxClusterNCellPerSM[10]
! N cells of highest energy cluster in pair, depending on opening angle cut, y axis is SM number ...
TH2F * fhPrimEtaCosOpeningAngle
! Cosinus of opening angle of pair version pair energy, eta primaries
TH2F * fhPrimPi0PtStatus
! Spectrum of generated pi0 vs pi0 status
Bool_t fCheckConversion
Fill histograms with tagged photons as conversion.
virtual Int_t GetModuleNumberCellIndexesAbsCaloMap(Int_t absId, Int_t calo, Int_t &icol, Int_t &irow, Int_t &iRCU, Int_t &icolAbs, Int_t &irowAbs) const
TH2F * fhPtBinClusterEtaPhi[10]
! Eta-Phi location of cluster in different energy bins.
virtual Float_t GetPairTimeCut() const
Time cut in ns.
virtual AliStack * GetMCStack() const
virtual void GetVertex(Double_t vertex[3]) const
TH1F * fhPrimPi0E
! Spectrum of Primary
virtual TString GetInputAODName() const
Float_t GetPhi(Float_t phi) const
Shift phi angle in case of negative value 360 degrees. Example TLorenzVector::Phi defined in -pi to p...
Bool_t fUseAngleEDepCut
Select pairs depending on their opening angle.
TH2F ** fhMiSameSectorEMCALMod
[fNModules-2]
TH2F * fhMixedOpeningAnglePerSM[20]
! Opening angle of pair versus pair energy, per SM
Selected photon clusters invariant mass analysis.
virtual AliVEvent * GetInputEvent() const
TH1F * fhCentrality
! Histogram with centrality bins with at least one pare
TH2F * fhMiSecondaryCellOutTimeWindow
! Combine clusters when at least one significant cells in cluster has t > 50 ns, different events ...
virtual void SetInputAODName(TString name)
Bool_t fPairWithOtherDetector
Pair (DCal and PHOS) or (PCM and (PHOS or DCAL or EMCAL))
Float_t DegToRad(Float_t deg) const
TH2F * fhPrimPi0PtCentrality
! primary pi0 reconstructed centrality vs pT
TH2F * fhPrimEtaPtCentrality
! primary eta reconstructed centrality vs pT
virtual Float_t GetZvertexCut() const
Maximal number of events for mixin.
virtual Double_t GetEventPlaneAngle() const
TH2F * fhReOpAngleBinPairClusterMassPerSM[10]
! cluster pair mass, depending on opening angle cut, y axis is SM number
TH2F * fhReMCFromConversion
! Invariant mass of 2 clusters originated in conversions
TH2F ** fhReSameSideEMCALMod
[fNModules]
TH1F * fhPrimPi0AccPtOpAngCuts[10]
! Spectrum of primary with accepted daughters, different opening angles
TH1F * fhPrimPi0AccPtPhotonCuts
! Spectrum of primary with accepted daughters, photon pt or angle cuts
TH2F * fhPrimPi0OpeningAngle
! Opening angle of pair versus pair energy, primaries
virtual AliNeutralMesonSelection * GetNeutralMesonSelection()
TH2F * fhRealOpeningAngle
! Opening angle of pair versus pair energy
TH2F * fhMCOrgMass[13]
! Mass vs pt of real pairs, check common origin of pair
TH2F * fhMiOpAngleBinMinClusterEtaPhi[10]
! Eta-Phi location of lowest energy cluster in pair, depending on opening angle cut, mixed event
TH2F * fhMiOpAngleBinPairClusterMass[10]
! cluster pair mass vs pT, depending on opening angle cut, mixed event
Int_t GetHistoMassBins() const
Int_t GetHistoPhiBins() const
TH2F * fhRePtAsymPi0
! REAL two-photon pt vs asymmetry, close to pi0 mass
TLorentzVector fPhotonMom1
! Photon cluster momentum, temporary array
TH2F * fhRealCosOpeningAngle
! Cosinus of opening angle of pair version pair energy
TH2F ** fhRe1
REAL two-photon invariant mass distribution for different centralities and Asymmetry.
Float_t GetHistoMassMin() const
TH2F * fhPrimPi0ProdVertex
! Spectrum of primary pi0 vs production vertex
TH2F ** fhReDiffPHOSMod
[fNModules/2]
Float_t RadToDeg(Float_t rad) const
TH2F * fhMiConv
! MIXED two-photon invariant mass distribution one of the pair was 2 clusters with small mass ...
TH2F * fhReOpAngleBinPairClusterMass[10]
! cluster pair mass vs pT, depending on opening angle cut
Float_t fAsymCuts[10]
Array with different assymetry cuts.
TH2F * fhMCOrgAsym[13]
! Asymmetry vs pt of real pairs, check common origin of pair
virtual Int_t GetEventCentrality() const
TH2F ** fhRePtNCellAsymCuts
[GetNCentrBin()*fNPIDBits*fNAsymCuts]
TH2F * fhPrimPi0PtOrigin
! Spectrum of generated pi0 vs mother
Float_t GetHistoDiffTimeMin() const
virtual Int_t GetEventVzBin() const
Float_t fPtCuts[11]
Array with different pt cuts, minimum.
TH2F * fhRealOpeningAnglePerSM[20]
! Opening angle of pair versus pair energy, per SM
TH2F * fhMiOpAngleBinMaxClusterNCellPerSM[10]
! N cells of highest energy cluster in pair, depending on opening angle cut, y axis is SM number...
Bool_t IsMCParticleInCalorimeterAcceptance(Int_t calo, TParticle *particle)
TH2F ** fhMCPi0MassPtRec
Real pi0 pairs, reconstructed mass vs reconstructed pt of original pair.
Bool_t fFillOpAngleCutHisto
Fill histograms depending on opening angle of pair.
TH2F * fhMiPtAsym
! Mix two-photon pt vs asymmetry
TH2F * fhPrimPi0AccPtCentrality
! primary pi0 with accepted daughters reconstructed centrality vs pT
Float_t GetHistoPhiMin() const
Int_t fNAsymCuts
Number of assymmetry cuts.
Float_t GetHistoDiffTimeMax() const
TH2F * fhMixedCosOpeningAngle
! Cosinus of opening angle of pair version pair energy
TVector3 fProdVertex
! Production vertex, temporary array
TH2F ** fhReInvPt2
[GetNCentrBin()*fNPIDBits*fNAsymCuts]
TH2F ** fhMiDiffPHOSMod
[fNModules/2]
TH2F ** fhMi2
[GetNCentrBin()*fNPIDBits*fNAsymCuts]
Float_t GetHistoOpeningAngleMax() const
TList * GetCreateOutputObjects()
TH2F ** fhReInvPt3
[GetNCentrBin()*fNPIDBits*fNAsymCuts]
Bool_t fFillOriginHisto
Fill histograms depending on their origin.
TH2F * fhPrimPi0Phi
! Azimutal distribution of primary particles vs pT
TH2F * fhPrimEtaOpeningAnglePhotonCuts
! Opening angle of pair versus pair energy, eta primaries, photon pT cuts
void FillMCVersusRecDataHistograms(Int_t index1, Int_t index2, Float_t pt1, Float_t pt2, Int_t ncells1, Int_t ncells2, Double_t mass, Double_t pt, Double_t asym, Double_t deta, Double_t dphi, Double_t angle)
Bool_t IsAngleInWindow(Float_t angle, Float_t e) const
TH2F ** fhReSameSectorDCALPHOSMod
[fNModules]
TH2F ** fhMiPtNCellAsymCutsOpAngle
[fNPtCuts*fNAsymCuts*fNCellNCuts]
Float_t GetHistoAsymmetryMax() const
TH2F * fhMiOpAngleBinMaxClusterEPerSM[10]
! energy of highest energy cluster in pair, depending on opening angle cut, y axis is SM number...
Float_t GetHistoMassMax() const
Base class for CaloTrackCorr analysis algorithms.
Bool_t fFillAngleHisto
Fill histograms with pair opening angle.
virtual TString GetCalorimeterString() const
Bool_t fFillBadDistHisto
Do plots for different distances to bad channels.
Float_t fAngleCutBinsArray[11]
Array with angle cut bins.
virtual Bool_t IsRealCaloAcceptanceOn() const
virtual AliFiducialCut * GetFiducialCut()
virtual TClonesArray * GetInputAODBranch() const
TH2F ** fhMCEtaPtTruePtRec
[fNPtCuts*fNAsymCuts*fNCellNCuts]
Bool_t fMultiCutAna
Do analysis with several or fixed cut.
Int_t GetHistoNOpeningAngleBins() const
virtual TClonesArray * GetAODMCParticles() const
virtual AliHistogramRanges * GetHistogramRanges()
TH2F ** fhReMod
REAL two-photon invariant mass distribution for different calorimeter modules.
TH1F * fhCentralityNoPair
! Histogram with centrality bins with no pair
Bool_t fFillAsymmetryHisto
Fill histograms with asymmetry vs pt.
Int_t GetHistoDiffTimeBins() const
TH2F * fhReOpAngleBinMinClusterTimePerSM[10]
! time of lowest energy cluster in pair, depending on opening angle cut, y axis is SM number ...
virtual TList * GetAODBranchList() const
TH2F * fhReOpAngleBinMinClusterNCellPerSM[10]
! N cells of lowest energy cluster in pair, depending on opening angle cut, y axis is SM number ...
virtual Int_t GetEventCentralityBin() const
Int_t GetEventIndex(AliAODPWG4Particle *part, Double_t *vert)
void FillAcceptanceHistograms()
Fill acceptance histograms if MC data is available.
virtual Int_t GetEventRPBin() const
TH2F ** fhReSameSectorEMCALMod
[fNModules-2]
TH2F ** fhMCEtaMassPtTrue
[fNPtCuts*fNAsymCuts*fNCellNCuts]
TH2F ** fhReInvPt1
[GetNCentrBin()*fNPIDBits*fNAsymCuts]
Int_t fNCellNCuts
Number of cuts with number of cells in cluster.
TH2F ** fhMiInvPt1
[GetNCentrBin()*fNPIDBits*fNAsymCuts]
Int_t GetHistoAsymmetryBins() const
TH2F * fhPrimEtaAccYeta
! PseudoRapidity distribution of primary with accepted daughters vs pT
Float_t fAngleMaxCut
Select pairs with opening angle smaller than a threshold.
TH2F * fhReOpAngleBinPairClusterMassMCTruePi0[10]
! cluster pair mass vs pT, depending on opening angle cut, true pi0 decay pairs from MC ...
TH1I * fhEventMixBin
! Number of mixed pairs in a particular bin (cen,vz,rp)
void FillArmenterosThetaStar(Int_t pdg)
Fill armenteros plots.
virtual AliEMCALGeometry * GetEMCALGeometry() const
TH2F * fhPrimPi0CosOpeningAngle
! Cosinus of opening angle of pair version pair energy, pi0 primaries
TH2F * fhMCPi0PtOrigin
[fNPtCuts*fNAsymCuts*fNCellNCuts]
TH2F ** fhMiSameSideEMCALMod
[fNModules]
TH1F * fhPrimEtaAccPtOpAngCuts[10]
! Spectrum of primary with accepted daughters, different opening angles
Bool_t fFillOnlyMCAcceptanceHisto
Do analysis only of MC kinematics input.
Bool_t IsInFiducialCut(Float_t eta, Float_t phi, Int_t det) const
Bool_t fMakeInvPtPlots
Do plots with inverse pt weight.
virtual AliAODEvent * GetOutputEvent() const
TH2F * fhPrimEtaPtEventPlane
! primary eta reconstructed event plane vs pT
TH1F * fhPrimPi0AccE
! Spectrum of primary with accepted daughters
Int_t fNPtCuts
Number of pt cuts.
TH1F * fhPrimEtaE
! Spectrum of Primary
TH2F * fhPrimEtaAccPtEventPlane
! primary eta with accepted daughters reconstructed event plane vs pT
virtual AliCalorimeterUtils * GetCaloUtils() const
TH2F * fhPrimNotResonancePi0PtOrigin
! Spectrum of generated pi0 vs mother
TH2F * fhPrimEtaAccY
! Rapidity distribution of primary with accepted daughters vs pT
TH1F * fhPrimEtaPt
! Spectrum of Primary
Bool_t fMultiCutAnaSim
Do analysis with several or fixed cut, in the simulation related part.
TH1F * fhPrimEtaAccPt
! Spectrum of primary with accepted daughters
TH2F * fhArmPrimPi0[4]
! Armenteros plots for primary pi0 in 6 energy bins
void Print(const Option_t *opt) const
Print some relevant parameters set for the analysis.
TH2F * fhPrimPi0AccPtEventPlane
! primary pi0 with accepted daughters reconstructed event plane vs pT
virtual AliEventplane * GetEventPlane() const
Int_t GetNumberOfSuperModulesUsed() const
virtual Bool_t IsHighMultiplicityAnalysisOn() const
TH2F * fhPrimEtaOpeningAngle
! Opening angle of pair versus pair energy, eta primaries
TH2F * fhReOpAngleBinMinClusterEtaPhi[10]
! Eta-Phi location of lowest energy cluster in pair, depending on opening angle cut ...
TH2F ** fhMiPtNCellAsymCuts
[fNPtCuts*fNAsymCuts*fNCellNCuts]
TH2F * fhPrimPi0OpeningAngleAsym
! Opening angle of pair versus pair E asymmetry, pi0 primaries
TH2F * fhPrimPi0AccY
! Rapidity distribution of primary with accepted daughters vs pT
TH2F * fhPrimPi0AccPhi
! Azimutal distribution of primary with accepted daughters vs pT
Float_t fAngleCut
Select pairs with opening angle larger than a threshold.
virtual Double_t GetEventWeight() const
TString fOtherDetectorInputName
String with name of extra detector data.
TH2F * fhPrimPi0AccYeta
! PseudoRapidity distribution of primary with accepted daughters vs pT
virtual Int_t GetNCentrBin() const
Number of bins in reaction plain.
TH2F ** fhRePtNCellAsymCutsSM[20]
[fNPtCuts*fNAsymCuts*fNCellNCuts]
TH2F ** fhMi1
[GetNCentrBin()*fNPIDBits*fNAsymCuts]
TH1F * fhPrimEtaAccPtPhotonCuts
! Spectrum of primary with accepted daughters, photon pt or angle cuts
TH2F * fhCosThStarPrimEta
! cos(theta*) plots vs E for primary eta, same as asymmetry ...
TH2F * fhReOpAngleBinMaxClusterEtaPhi[10]
! Eta-Phi location of highest energy cluster in pair, depending on opening angle cut ...
TObjString * GetAnalysisCuts()
Save parameters used for analysis.
void MakeAnalysisFillHistograms()
Float_t GetHistoEtaMin() const
Bool_t fFillSMCombinations
Fill histograms with different cluster pairs in SM combinations.
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)
TH2F * fhReMCFromNotConversion
! Invariant mass of 2 clusters not originated in conversions
TH2F * fhReOpAngleBinPairClusterRatioPerSM[10]
! lowest/highest energy cluster in pair, depending on opening angle cut, y axis is SM number ...
TH2F * fhPrimPi0YetaYcut
! PseudoRapidity distribution of primary particles vs pT, Y<1
TH2F ** fhRePtNCellAsymCutsSMOpAngle[20]
[fNPtCuts*fNAsymCuts*fNCellNCuts]
TH2F * fhReOpAngleBinMaxClusterTimePerSM[10]
! time of highest energy cluster in pair, depending on opening angle cut, y axis is SM number ...
virtual Int_t GetNMaxEvMix() const
Number of bins in track multiplicity.
TH2F * fhPrimPi0Yeta
! PseudoRapidity distribution of primary particles vs pT
TH2F * fhReOpAngleBinMinClusterEPerSM[10]
! energy of lowest energy cluster in pair, depending on opening angle cut, y axis is SM number ...
virtual Int_t GetModuleNumber(AliAODPWG4Particle *part) const
TH2F * fhMCNotResonancePi0PtOrigin
! Mass of reconstructed pi0 pairs in calorimeter vs mother origin ID, pi0 status 1.
TH2F * fhRePtAsym
! REAL two-photon pt vs asymmetry
TH2F * fhMiOpAngleBinMaxClusterTimePerSM[10]
! time of highest energy cluster in pair, depending on opening angle cut, y axis is SM number...
Float_t GetHistoEtaMax() const
TH2F * fhEPairDiffTime
! E pair vs Pair of clusters time difference vs E
TH2F * fhMCEtaPtOrigin
! Mass of reconstructed eta pairs in calorimeter vs mother origin ID.
TH2F * fhMCPi0PtStatus
! Mass of reconstructed pi0 pairs in calorimeter vs mother status.
Int_t GetHistoPtBins() const
TH2F * fhMiConv2
! MIXED two-photon invariant mass distribution both pair photons recombined from 2 clusters with smal...
TH2F ** fhRePtNCellAsymCutsOpAngle
[fNPtCuts*fNAsymCuts*fNCellNCuts]
virtual ~AliAnaPi0()
Destructor.
TH2F * fhPrimEtaProdVertex
! Spectrum of primary eta vs production vertex
Bool_t fSameSM
Select only pairs in same SM;.
TH2F * fhMiOpAngleBinMinClusterTimePerSM[10]
! time of lowest energy cluster in pair, depending on opening angle cut, y axis is SM number...
Bool_t fCheckAccInSector
Check that the decay pi0 falls in the same SM or sector.
TH2F * fhReSecondaryCellOutTimeWindow
! Combine clusters when at least one significant cells in cluster has t > 50 ns, same event ...
TH1I * fhEventBin
! Number of real pairs in a particular bin (cen,vz,rp)
TH1F * fhPrimPi0Pt
! Spectrum of Primary
TH2F ** fhRe2
[GetNCentrBin()*fNPIDBits*fNAsymCuts]
TH1F * fhPrimEtaAccE
! Spectrum of primary with accepted daughters
TH2F ** fhMCEtaMassPtRec
[fNPtCuts*fNAsymCuts*fNCellNCuts]
Bool_t fUseAngleCut
Select pairs depending on their opening angle.
ClassImp(AliAnalysisTaskCRC) AliAnalysisTaskCRC
TH2F * fhMiOpAngleBinPairClusterMassPerSM[10]
! cluster pair mass, depending on opening angle cut, y axis is SM number, mixed event ...
TH2F * fhRePtAsymEta
! REAL two-photon pt vs asymmetry, close to eta mass
virtual Int_t GetNRPBin() const
Number of bins in vertex.
TH2F * fhEventPlaneResolution
! Histogram with Event plane resolution vs centrality
TH2F * fhMixedOpeningAngle
! Opening angle of pair versus pair energy
TH2F ** fhMCPi0PtTruePtRec
[fNPtCuts*fNAsymCuts*fNCellNCuts]
TH2F * fhPrimEtaYeta
! PseudoRapidity distribution of primary particles vs pT
virtual AliMCAnalysisUtils * GetMCAnalysisUtils()
Float_t GetHistoAsymmetryMin() const
virtual Float_t GetMinPt() const
TH2F * fhCosThStarPrimPi0
! cos(theta*) plots vs E for primary pi0, same as asymmetry ...
virtual void Print(const Option_t *) const
Print some relevant parameters set for the analysis.
Int_t GetHistoTimeBins() const
TH2F ** fhReDiffSectorDCALPHOSMod
[6]
TH2F * fhMCPi0ProdVertex
! Spectrum of selected pi0 vs production vertex
TH2F * fhPrimPi0PtEventPlane
! primary pi0 reconstructed event plane vs pT
TH2F * fhMiSecondaryCellInTimeWindow
! Combine clusters when all significant cells in cluster have t < 50 ns, different events ...
Float_t GetHistoTimeMax() const
Float_t GetHistoTimeMin() const
TList ** fEventsList
Containers for photons in stored events.
virtual AliVCluster * FindCluster(TObjArray *clusters, Int_t clId, Int_t &iclus, Int_t first=0)
Float_t GetHistoOpeningAngleMin() const
TH2F * fhMCEtaProdVertex
! Spectrum of selected eta vs production vertex
TH2F * fhPrimEtaOpeningAngleAsym
! Opening angle of pair versus pair E asymmetry, eta primaries
TH2F ** fhMiSameSectorDCALPHOSMod
[fNModules-1]
Float_t GetHistoPhiMax() const
TH2F * fhReSecondaryCellInTimeWindow
! Combine clusters when all significant cells in cluster have t < 50 ns, same event ...
TH2F * fhReOpAngleBinMinClusterColRow[10]
! Column and row location of main cell of lowest energy cluster in pair, depending on opening angle c...
virtual AliCaloTrackReader * GetReader() const
virtual Int_t GetEventMixBin() const
Bool_t fFillSecondaryCellTiming
Fill histograms depending on timing of secondary cells in clusters.
TH2F ** fhMiInvPt3
[GetNCentrBin()*fNPIDBits*fNAsymCuts]
AliAnaPi0()
Default Constructor. Initialized parameters with default values.
Int_t GetHistoEtaBins() const
TH2F ** fhMi3
[GetNCentrBin()*fNPIDBits*fNAsymCuts]
virtual TObjArray * GetEMCALClusters() const
Bool_t fMultiCutAnaAcc
Do analysis with several or fixed cut, acceptance plots (eta-phi, col-row)
TH2F * fhPtBinClusterColRow[10]
! Column and row location of cluster in different energy bins.
TH2F * fhArmPrimEta[4]
! Armenteros plots for primary eta in 6 energy bins
Bool_t fFillSSCombinations
Do invariant mass for different combination of shower shape clusters.
virtual Int_t GetNZvertBin() const
TH2F * fhPrimEtaPtOrigin
! Spectrum of generated eta vs mother
TH2F * fhMiOpAngleBinMaxClusterEtaPhi[10]
! Eta-Phi location of highest energy cluster in pair, depending on opening angle cut, mixed event
TH2F ** fhMiInvPt2
[GetNCentrBin()*fNPIDBits*fNAsymCuts]
Int_t CheckCommonAncestor(Int_t index1, Int_t index2, const AliCaloTrackReader *reader, Int_t &ancPDG, Int_t &ancStatus, TLorentzVector &momentum, TVector3 &prodVertex)
Bool_t CheckTagBit(Int_t tag, UInt_t test) const
Int_t GetMaxEnergyCell(AliVCaloCells *cells, AliVCluster *clu, Float_t &fraction) const
For a given CaloCluster, it gets the absId of the cell with maximum energy deposit.
TH2F * fhMCOrgDeltaPhi[13]
! Delta Phi vs pt of real pairs, check common origin of pair
Float_t fPtCutsMax[11]
Array with different pt cuts, maximum.
TH2F * fhMiOpAngleBinMinClusterNCellPerSM[10]
! N cells of lowest energy cluster in pair, depending on opening angle cut, y axis is SM number...
virtual AliMixedEvent * GetMixedEvent() const
TH2F * fhReConv2
! REAL two-photon invariant mass distribution both pair photons recombined from 2 clusters with small...
TH2F * fhMiPtAsymEta
! Mix two-photon pt vs asymmetry, close to eta mass
Int_t fNAngleCutBins
Number of angle cuts bins.
TH2F * fhPrimEtaPhi
! Azimutal distribution of primary particles vs pT
TH2F * fhPrimPi0OpeningAnglePhotonCuts
! Opening angle of pair versus pair energy, primaries, photon pt cuts
TH2F ** fhMCPi0MassPtTrue
[fNPtCuts*fNAsymCuts*fNCellNCuts]