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),
58 fNPtCuts(0), fNAsymCuts(0), fNCellNCuts(0), fNPIDBits(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), 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 fhRePIDBits(0x0), fhRePtMult(0x0), fhReSS(),
82 fhRePtAsym(0x0), fhRePtAsymPi0(0x0), fhRePtAsymEta(0x0),
83 fhEventBin(0), fhEventMixBin(0),
84 fhCentrality(0x0), fhCentralityNoPair(0x0),
85 fhEventPlaneResolution(0x0),
86 fhRealOpeningAngle(0x0), fhRealCosOpeningAngle(0x0), fhMixedOpeningAngle(0x0), fhMixedCosOpeningAngle(0x0),
89 fhPrimPi0E(0x0), fhPrimPi0Pt(0x0),
90 fhPrimPi0AccE(0x0), fhPrimPi0AccPt(0x0), fhPrimPi0AccPtPhotonCuts(0x0),
91 fhPrimPi0Y(0x0), fhPrimPi0AccY(0x0),
92 fhPrimPi0Yeta(0x0), fhPrimPi0YetaYcut(0x0), fhPrimPi0AccYeta(0x0),
93 fhPrimPi0Phi(0x0), fhPrimPi0AccPhi(0x0),
94 fhPrimPi0OpeningAngle(0x0), fhPrimPi0OpeningAnglePhotonCuts(0x0),
95 fhPrimPi0OpeningAngleAsym(0x0),fhPrimPi0CosOpeningAngle(0x0),
96 fhPrimPi0PtCentrality(0), fhPrimPi0PtEventPlane(0),
97 fhPrimPi0AccPtCentrality(0), fhPrimPi0AccPtEventPlane(0),
98 fhPrimEtaE(0x0), fhPrimEtaPt(0x0),
99 fhPrimEtaAccE(0x0), fhPrimEtaAccPt(0x0), fhPrimEtaAccPtPhotonCuts(0x0),
100 fhPrimEtaY(0x0), fhPrimEtaAccY(0x0),
101 fhPrimEtaYeta(0x0), fhPrimEtaYetaYcut(0x0), fhPrimEtaAccYeta(0x0),
102 fhPrimEtaPhi(0x0), fhPrimEtaAccPhi(0x0),
103 fhPrimEtaOpeningAngle(0x0), fhPrimEtaOpeningAnglePhotonCuts(0x0),
104 fhPrimEtaOpeningAngleAsym(0x0),fhPrimEtaCosOpeningAngle(0x0),
105 fhPrimEtaPtCentrality(0), fhPrimEtaPtEventPlane(0),
106 fhPrimEtaAccPtCentrality(0), fhPrimEtaAccPtEventPlane(0),
107 fhPrimPi0PtOrigin(0x0), fhPrimEtaPtOrigin(0x0),
108 fhPrimNotResonancePi0PtOrigin(0x0), fhPrimPi0PtStatus(0x0),
109 fhMCOrgMass(), fhMCOrgAsym(), fhMCOrgDeltaEta(), fhMCOrgDeltaPhi(),
110 fhMCPi0MassPtRec(), fhMCPi0MassPtTrue(), fhMCPi0PtTruePtRec(),
111 fhMCEtaMassPtRec(), fhMCEtaMassPtTrue(), fhMCEtaPtTruePtRec(),
112 fhMCPi0PtOrigin(0x0), fhMCEtaPtOrigin(0x0),
113 fhMCNotResonancePi0PtOrigin(0),fhMCPi0PtStatus(0x0),
114 fhMCPi0ProdVertex(0), fhMCEtaProdVertex(0),
115 fhPrimPi0ProdVertex(0), fhPrimEtaProdVertex(0),
116 fhReMCFromConversion(0), fhReMCFromNotConversion(0), fhReMCFromMixConversion(0),
117 fhCosThStarPrimPi0(0), fhCosThStarPrimEta(0),
119 fhReSecondaryCellInTimeWindow(0), fhMiSecondaryCellInTimeWindow(0),
120 fhReSecondaryCellOutTimeWindow(0), fhMiSecondaryCellOutTimeWindow(0)
125 for(Int_t i = 0; i < 4; i++)
198 const Int_t buffersize = 255;
199 char onePar[buffersize] ;
200 snprintf(onePar,buffersize,
"--- AliAnaPi0 ---:") ;
202 snprintf(onePar,buffersize,
"Number of bins in Centrality: %d;",
GetNCentrBin()) ;
204 snprintf(onePar,buffersize,
"Number of bins in Z vert. pos: %d;",
GetNZvertBin()) ;
206 snprintf(onePar,buffersize,
"Number of bins in Reac. Plain: %d;",
GetNRPBin()) ;
208 snprintf(onePar,buffersize,
"Depth of event buffer: %d;",
GetNMaxEvMix()) ;
212 snprintf(onePar,buffersize,
" Asymmetry cuts: n = %d, asymmetry < ",
fNAsymCuts) ;
213 for(Int_t i = 0; i <
fNAsymCuts; i++) snprintf(onePar,buffersize,
"%s %2.2f;",onePar,
fAsymCuts[i]);
215 snprintf(onePar,buffersize,
" PID selection bits: n = %d, PID bit =",
fNPIDBits) ;
216 for(Int_t i = 0; i <
fNPIDBits; i++) snprintf(onePar,buffersize,
"%s %d;",onePar,
fPIDBits[i]);
218 snprintf(onePar,buffersize,
"Cuts:") ;
224 snprintf(onePar,buffersize,
"Number of modules: %d:",
fNModules) ;
228 snprintf(onePar, buffersize,
" pT cuts: n = %d, pt > ",
fNPtCuts) ;
229 for(Int_t i = 0; i <
fNPtCuts; i++) snprintf(onePar,buffersize,
"%s %2.2f;",onePar,
fPtCuts[i]);
231 snprintf(onePar,buffersize,
" N cell in cluster cuts: n = %d, nCell > ",
fNCellNCuts) ;
236 return new TObjString(parList) ;
245 TList * outputContainer =
new TList() ;
246 outputContainer->SetName(GetName());
249 const Int_t buffersize = 255;
250 char key[buffersize] ;
251 char title[buffersize] ;
282 fhPrimPi0E =
new TH1F(
"hPrimPi0E",
"Primary #pi^{0} E, |#it{Y}|<1",nptbins,ptmin,ptmax) ;
283 fhPrimPi0AccE =
new TH1F(
"hPrimPi0AccE",
"Primary #pi^{0} #it{E} with both photons in acceptance",nptbins,ptmin,ptmax) ;
289 fhPrimPi0Pt =
new TH1F(
"hPrimPi0Pt",
"Primary #pi^{0} #it{p}_{T} , |#it{Y}|<1",nptbins,ptmin,ptmax) ;
290 fhPrimPi0AccPt =
new TH1F(
"hPrimPi0AccPt",
"Primary #pi^{0} #it{p}_{T} with both photons in acceptance",nptbins,ptmin,ptmax) ;
291 fhPrimPi0AccPtPhotonCuts =
new TH1F(
"hPrimPi0AccPtPhotonCuts",
"Primary #pi^{0} #it{p}_{T} with both photons in acceptance",nptbins,ptmin,ptmax) ;
292 fhPrimPi0Pt ->SetXTitle(
"#it{p}_{T} (GeV/#it{c})");
299 Int_t netabinsopen = TMath::Nint(netabins*4/(etamax-etamin));
300 fhPrimPi0Y =
new TH2F(
"hPrimPi0Rapidity",
"Rapidity of primary #pi^{0}",nptbins,ptmin,ptmax,netabinsopen,-2, 2) ;
302 fhPrimPi0Y ->SetXTitle(
"#it{p}_{T} (GeV/#it{c})");
305 fhPrimPi0Yeta =
new TH2F(
"hPrimPi0PseudoRapidity",
"PseudoRapidity of primary #pi^{0}",nptbins,ptmin,ptmax,netabinsopen,-2, 2) ;
310 fhPrimPi0YetaYcut =
new TH2F(
"hPrimPi0PseudoRapidityYcut",
"PseudoRapidity of primary #pi^{0}, |#it{Y}|<1",nptbins,ptmin,ptmax,netabinsopen,-2, 2) ;
315 fhPrimPi0AccY =
new TH2F(
"hPrimPi0AccRapidity",
"Rapidity of primary #pi^{0} with accepted daughters",nptbins,ptmin,ptmax,netabins,etamin,etamax) ;
320 fhPrimPi0AccYeta =
new TH2F(
"hPrimPi0AccPseudoRapidity",
"PseudoRapidity of primary #pi^{0} with accepted daughters",nptbins,ptmin,ptmax,netabins,etamin,etamax) ;
325 Int_t nphibinsopen = TMath::Nint(nphibins*TMath::TwoPi()/(phimax-phimin));
326 fhPrimPi0Phi =
new TH2F(
"hPrimPi0Phi",
"#phi of primary #pi^{0}, |#it{Y}|<1",nptbins,ptmin,ptmax,nphibinsopen,0,360) ;
331 fhPrimPi0AccPhi =
new TH2F(
"hPrimPi0AccPhi",
"#phi of primary #pi^{0} with accepted daughters",nptbins,ptmin,ptmax,
332 nphibins,phimin*TMath::RadToDeg(),phimax*TMath::RadToDeg()) ;
339 fhPrimEtaE =
new TH1F(
"hPrimEtaE",
"Primary eta E",nptbins,ptmin,ptmax) ;
340 fhPrimEtaAccE =
new TH1F(
"hPrimEtaAccE",
"Primary #eta #it{E} with both photons in acceptance",nptbins,ptmin,ptmax) ;
346 fhPrimEtaPt =
new TH1F(
"hPrimEtaPt",
"Primary #eta #it{p}_{T}",nptbins,ptmin,ptmax) ;
347 fhPrimEtaAccPt =
new TH1F(
"hPrimEtaAccPt",
"Primary eta #it{p}_{T} with both photons in acceptance",nptbins,ptmin,ptmax) ;
348 fhPrimEtaAccPtPhotonCuts =
new TH1F(
"hPrimEtaAccPtPhotonCuts",
"Primary eta #it{p}_{T} with both photons in acceptance",nptbins,ptmin,ptmax) ;
349 fhPrimEtaPt ->SetXTitle(
"#it{p}_{T} (GeV/#it{c})");
356 fhPrimEtaY =
new TH2F(
"hPrimEtaRapidity",
"Rapidity of primary #eta",nptbins,ptmin,ptmax,netabinsopen,-2, 2) ;
358 fhPrimEtaY->SetXTitle(
"#it{p}_{T} (GeV/#it{c})");
361 fhPrimEtaYeta =
new TH2F(
"hPrimEtaPseudoRapidityEta",
"PseudoRapidity of primary #eta",nptbins,ptmin,ptmax,netabinsopen,-2, 2) ;
366 fhPrimEtaYetaYcut =
new TH2F(
"hPrimEtaPseudoRapidityEtaYcut",
"PseudoRapidity of primary #eta, |#it{Y}|<1",nptbins,ptmin,ptmax,netabinsopen,-2, 2) ;
371 fhPrimEtaAccY =
new TH2F(
"hPrimEtaAccRapidity",
"Rapidity of primary #eta",nptbins,ptmin,ptmax, netabins,etamin,etamax) ;
376 fhPrimEtaAccYeta =
new TH2F(
"hPrimEtaAccPseudoRapidity",
"PseudoRapidity of primary #eta",nptbins,ptmin,ptmax, netabins,etamin,etamax) ;
381 fhPrimEtaPhi =
new TH2F(
"hPrimEtaPhi",
"Azimuthal of primary #eta",nptbins,ptmin,ptmax, nphibinsopen,0,360) ;
386 fhPrimEtaAccPhi =
new TH2F(
"hPrimEtaAccPhi",
"Azimuthal of primary #eta with accepted daughters",nptbins,ptmin,ptmax, nphibins,phimin*TMath::RadToDeg(),phimax*TMath::RadToDeg()) ;
394 fhPrimPi0PtCentrality =
new TH2F(
"hPrimPi0PtCentrality",
"Primary #pi^{0} #it{p}_{T} vs reco centrality, |#it{Y}|<1",
395 nptbins,ptmin,ptmax, 100, 0, 100) ;
396 fhPrimPi0AccPtCentrality =
new TH2F(
"hPrimPi0AccPtCentrality",
"Primary #pi^{0} with both photons in acceptance #it{p}_{T} vs reco centrality",
397 nptbins,ptmin,ptmax, 100, 0, 100) ;
405 fhPrimEtaPtCentrality =
new TH2F(
"hPrimEtaPtCentrality",
"Primary #eta #it{p}_{T} vs reco centrality, |#it{Y}|<1",nptbins,ptmin,ptmax, 100, 0, 100) ;
406 fhPrimEtaAccPtCentrality =
new TH2F(
"hPrimEtaAccPtCentrality",
"Primary #eta with both photons in acceptance #it{p}_{T} vs reco centrality",nptbins,ptmin,ptmax, 100, 0, 100) ;
414 fhPrimPi0PtEventPlane =
new TH2F(
"hPrimPi0PtEventPlane",
"Primary #pi^{0} #it{p}_{T} vs reco event plane angle, |#it{Y}|<1",
415 nptbins,ptmin,ptmax, 100, 0, TMath::Pi()) ;
416 fhPrimPi0AccPtEventPlane =
new TH2F(
"hPrimPi0AccPtEventPlane",
"Primary #pi^{0} with both photons in acceptance #it{p}_{T} vs reco event plane angle",
417 nptbins,ptmin,ptmax, 100, 0, TMath::Pi()) ;
425 fhPrimEtaPtEventPlane =
new TH2F(
"hPrimEtaPtEventPlane",
"Primary #eta #it{p}_{T} vs reco event plane angle, |#it{Y}|<1",nptbins,ptmin,ptmax, 100, 0, TMath::Pi()) ;
426 fhPrimEtaAccPtEventPlane =
new TH2F(
"hPrimEtaAccPtEventPlane",
"Primary #eta with both #gamma_{decay} in acceptance #it{p}_{T} vs reco event plane angle",nptbins,ptmin,ptmax, 100, 0, TMath::Pi()) ;
438 (
"hPrimPi0OpeningAngle",
"Angle between all primary #gamma pair vs E_{#pi^{0}}",nptbins,ptmin,ptmax,200,0,0.7);
444 (
"hPrimPi0OpeningAnglePhotonCuts",
"Angle between all primary #gamma pair vs E_{#pi^{0}}",nptbins,ptmin,ptmax,200,0,0.7);
450 (
"hPrimPi0OpeningAngleAsym",
"Angle between all primary #gamma pair vs #it{Asymmetry}, #it{p}_{T}>5 GeV/#it{c}",100,0,1,200,0,0.7);
456 (
"hPrimPi0CosOpeningAngle",
"Cosinus of angle between all primary #gamma pair vs E_{#pi^{0}}",nptbins,ptmin,ptmax,100,-1,1);
462 (
"hPrimEtaOpeningAngle",
"Angle between all primary #gamma pair vs E_{#eta}",nptbins,ptmin,ptmax,200,0,0.7);
468 (
"hPrimEtaOpeningAnglePhotonCuts",
"Angle between all primary #gamma pair vs E_{#eta}",nptbins,ptmin,ptmax,200,0,0.7);
474 (
"hPrimEtaOpeningAngleAsym",
"Angle between all primary #gamma pair vs #it{Asymmetry}, #it{p}_{T}>5 GeV/#it{c}",100,0,1,200,0,0.7);
481 (
"hPrimEtaCosOpeningAngle",
"Cosinus of angle between all primary #gamma pair vs E_{#eta}",nptbins,ptmin,ptmax,100,-1,1);
491 fhPrimPi0PtOrigin =
new TH2F(
"hPrimPi0PtOrigin",
"Primary #pi^{0} #it{p}_{T} vs origin",nptbins,ptmin,ptmax,11,0,11) ;
506 fhPrimNotResonancePi0PtOrigin =
new TH2F(
"hPrimNotResonancePi0PtOrigin",
"Primary #pi^{0} #it{p}_{T} vs origin",nptbins,ptmin,ptmax,11,0,11) ;
521 fhPrimPi0PtStatus =
new TH2F(
"hPrimPi0PtStatus",
"Primary #pi^{0} #it{p}_{T} vs status",nptbins,ptmin,ptmax,101,-50,50) ;
527 fhPrimEtaPtOrigin =
new TH2F(
"hPrimEtaPtOrigin",
"Primary #pi^{0} #it{p}_{T} vs origin",nptbins,ptmin,ptmax,7,0,7) ;
539 fhPrimPi0ProdVertex =
new TH2F(
"hPrimPi0ProdVertex",
"generated #pi^{0} #it{p}_{T} vs production vertex",
540 200,0.,20.,5000,0,500) ;
545 fhPrimEtaProdVertex =
new TH2F(
"hPrimEtaProdVertex",
"generated #eta #it{p}_{T} vs production vertex",
546 200,0.,20.,5000,0,500) ;
554 TString ebin[] = {
"8 < E < 12 GeV",
"12 < E < 16 GeV",
"16 < E < 20 GeV",
"E > 20 GeV" };
555 Int_t narmbins = 400;
557 Float_t armmax = 0.4;
559 for(Int_t i = 0; i < 4; i++)
561 fhArmPrimPi0[i] =
new TH2F(Form(
"hArmenterosPrimPi0EBin%d",i),
562 Form(
"Armenteros of primary #pi^{0}, %s",ebin[i].
Data()),
563 200, -1, 1, narmbins,armmin,armmax);
568 fhArmPrimEta[i] =
new TH2F(Form(
"hArmenterosPrimEtaEBin%d",i),
569 Form(
"Armenteros of primary #eta, %s",ebin[i].
Data()),
570 200, -1, 1, narmbins,armmin,armmax);
578 (
"hCosThStarPrimPi0",
"cos(#theta *) for primary #pi^{0}",nptbins,ptmin,ptmax,200,-1,1);
584 (
"hCosThStarPrimEta",
"cos(#theta *) for primary #eta",nptbins,ptmin,ptmax,200,-1,1);
665 nptbins,ptmin,ptmax,nmassbins,massmin,massmax) ;
671 nptbins,ptmin,ptmax,nmassbins,massmin,massmax) ;
679 nptbins,ptmin,ptmax,nmassbins,massmin,massmax) ;
685 nptbins,ptmin,ptmax,nmassbins,massmin,massmax) ;
695 fhReConv =
new TH2F(
"hReConv",
"Real Pair with one recombined conversion ",nptbins,ptmin,ptmax,nmassbins,massmin,massmax) ;
696 fhReConv->SetXTitle(
"#it{p}_{T} (GeV/#it{c})");
697 fhReConv->SetYTitle(
"#it{M}_{#gamma,#gamma} (GeV/#it{c}^{2})");
700 fhReConv2 =
new TH2F(
"hReConv2",
"Real Pair with 2 recombined conversion ",nptbins,ptmin,ptmax,nmassbins,massmin,massmax) ;
701 fhReConv2->SetXTitle(
"#it{p}_{T} (GeV/#it{c})");
702 fhReConv2->SetYTitle(
"#it{M}_{#gamma,#gamma} (GeV/#it{c}^{2})");
707 fhMiConv =
new TH2F(
"hMiConv",
"Mixed Pair with one recombined conversion ",nptbins,ptmin,ptmax,nmassbins,massmin,massmax) ;
708 fhMiConv->SetXTitle(
"#it{p}_{T} (GeV/#it{c})");
709 fhMiConv->SetYTitle(
"#it{M}_{#gamma,#gamma} (GeV/#it{c}^{2})");
712 fhMiConv2 =
new TH2F(
"hMiConv2",
"Mixed Pair with 2 recombined conversion ",nptbins,ptmin,ptmax,nmassbins,massmin,massmax) ;
713 fhMiConv2->SetXTitle(
"#it{p}_{T} (GeV/#it{c})");
714 fhMiConv2->SetYTitle(
"#it{M}_{#gamma,#gamma} (GeV/#it{c}^{2})");
721 for(Int_t ipid=0; ipid<
fNPIDBits; ipid++)
725 Int_t index = ((ic*
fNPIDBits)+ipid)*fNAsymCuts + iasym;
728 snprintf(key, buffersize,
"hRe_cen%d_pidbit%d_asy%d_dist1",ic,ipid,iasym) ;
729 snprintf(title, buffersize,
"Real #it{M}_{#gamma#gamma} distr. for centrality=%d, PID bit=%d and asymmetry %1.2f, dist bad 1",
731 fhRe1[index] =
new TH2F(key,title,nptbins,ptmin,ptmax,nmassbins,massmin,massmax) ;
732 fhRe1[index]->SetXTitle(
"#it{p}_{T} (GeV/#it{c})");
733 fhRe1[index]->SetYTitle(
"#it{M}_{#gamma,#gamma} (GeV/#it{c}^{2})");
735 outputContainer->Add(
fhRe1[index]) ;
740 snprintf(key, buffersize,
"hRe_cen%d_pidbit%d_asy%d_dist2",ic,ipid,iasym) ;
741 snprintf(title, buffersize,
"Real #it{M}_{#gamma#gamma} distr. for centrality=%d, PID bit=%d and asymmetry %1.2f, dist bad 2",
743 fhRe2[index] =
new TH2F(key,title,nptbins,ptmin,ptmax,nmassbins,massmin,massmax) ;
744 fhRe2[index]->SetXTitle(
"#it{p}_{T} (GeV/#it{c})");
745 fhRe2[index]->SetYTitle(
"#it{M}_{#gamma,#gamma} (GeV/#it{c}^{2})");
746 outputContainer->Add(
fhRe2[index]) ;
749 snprintf(key, buffersize,
"hRe_cen%d_pidbit%d_asy%d_dist3",ic,ipid,iasym) ;
750 snprintf(title, buffersize,
"Real #it{M}_{#gamma#gamma} distr. for centrality=%d, PID bit=%d and asymmetry %1.2f, dist bad 3",
752 fhRe3[index] =
new TH2F(key,title,nptbins,ptmin,ptmax,nmassbins,massmin,massmax) ;
753 fhRe3[index]->SetXTitle(
"#it{p}_{T} (GeV/#it{c})");
754 fhRe3[index]->SetYTitle(
"#it{M}_{#gamma,#gamma} (GeV/#it{c}^{2})");
755 outputContainer->Add(
fhRe3[index]) ;
762 snprintf(key, buffersize,
"hReInvPt_cen%d_pidbit%d_asy%d_dist1",ic,ipid,iasym) ;
763 snprintf(title, buffersize,
"Real #it{M}_{#gamma#gamma} distr. for centrality=%d, PID bit=%d and asymmetry %1.2f, dist bad 1",
765 fhReInvPt1[index] =
new TH2F(key,title,nptbins,ptmin,ptmax,nmassbins,massmin,massmax) ;
766 fhReInvPt1[index]->SetXTitle(
"#it{p}_{T} (GeV/#it{c})");
767 fhReInvPt1[index]->SetYTitle(
"#it{M}_{#gamma,#gamma} (GeV/#it{c}^{2})");
772 snprintf(key, buffersize,
"hReInvPt_cen%d_pidbit%d_asy%d_dist2",ic,ipid,iasym) ;
773 snprintf(title, buffersize,
"Real #it{M}_{#gamma#gamma} distr. for centrality=%d, PID bit=%d and asymmetry %1.2f, dist bad 2",
775 fhReInvPt2[index] =
new TH2F(key,title,nptbins,ptmin,ptmax,nmassbins,massmin,massmax) ;
776 fhReInvPt2[index]->SetXTitle(
"#it{p}_{T} (GeV/#it{c})");
777 fhReInvPt2[index]->SetYTitle(
"#it{M}_{#gamma,#gamma} (GeV/#it{c}^{2})");
781 snprintf(key, buffersize,
"hReInvPt_cen%d_pidbit%d_asy%d_dist3",ic,ipid,iasym) ;
782 snprintf(title, buffersize,
"Real #it{M}_{#gamma#gamma} distr. for centrality=%d, PID bit=%d and asymmetry %1.2f, dist bad 3",
784 fhReInvPt3[index] =
new TH2F(key,title,nptbins,ptmin,ptmax,nmassbins,massmin,massmax) ;
785 fhReInvPt3[index]->SetXTitle(
"#it{p}_{T} (GeV/#it{c})");
786 fhReInvPt3[index]->SetYTitle(
"#it{M}_{#gamma,#gamma} (GeV/#it{c}^{2})");
794 snprintf(key, buffersize,
"hMi_cen%d_pidbit%d_asy%d_dist1",ic,ipid,iasym) ;
795 snprintf(title, buffersize,
"Mixed #it{M}_{#gamma#gamma} distr. for centrality=%d, PID bit=%d and asymmetry %1.2f, dist bad 1",
797 fhMi1[index] =
new TH2F(key,title,nptbins,ptmin,ptmax,nmassbins,massmin,massmax) ;
798 fhMi1[index]->SetXTitle(
"#it{p}_{T} (GeV/#it{c})");
799 fhMi1[index]->SetYTitle(
"#it{M}_{#gamma,#gamma} (GeV/#it{c}^{2})");
800 outputContainer->Add(
fhMi1[index]) ;
803 snprintf(key, buffersize,
"hMi_cen%d_pidbit%d_asy%d_dist2",ic,ipid,iasym) ;
804 snprintf(title, buffersize,
"Mixed #it{M}_{#gamma#gamma} distr. for centrality=%d, PID bit=%d and asymmetry %1.2f, dist bad 2",
806 fhMi2[index] =
new TH2F(key,title,nptbins,ptmin,ptmax,nmassbins,massmin,massmax) ;
807 fhMi2[index]->SetXTitle(
"#it{p}_{T} (GeV/#it{c})");
808 fhMi2[index]->SetYTitle(
"#it{M}_{#gamma,#gamma} (GeV/#it{c}^{2})");
809 outputContainer->Add(
fhMi2[index]) ;
812 snprintf(key, buffersize,
"hMi_cen%d_pidbit%d_asy%d_dist3",ic,ipid,iasym) ;
813 snprintf(title, buffersize,
"Mixed #it{M}_{#gamma#gamma} distr. for centrality=%d, PID bit=%d and asymmetry %1.2f, dist bad 3",
815 fhMi3[index] =
new TH2F(key,title,nptbins,ptmin,ptmax,nmassbins,massmin,massmax) ;
816 fhMi3[index]->SetXTitle(
"#it{p}_{T} (GeV/#it{c})");
817 fhMi3[index]->SetYTitle(
"#it{M}_{#gamma,#gamma} (GeV/#it{c}^{2})");
818 outputContainer->Add(
fhMi3[index]) ;
825 snprintf(key, buffersize,
"hMiInvPt_cen%d_pidbit%d_asy%d_dist1",ic,ipid,iasym) ;
826 snprintf(title, buffersize,
"Mixed #it{M}_{#gamma#gamma} distr. for centrality=%d, PID bit=%d and asymmetry %1.2f, dist bad 1",
828 fhMiInvPt1[index] =
new TH2F(key,title,nptbins,ptmin,ptmax,nmassbins,massmin,massmax) ;
829 fhMiInvPt1[index]->SetXTitle(
"#it{p}_{T} (GeV/#it{c})");
830 fhMiInvPt1[index]->SetYTitle(
"#it{M}_{#gamma,#gamma} (GeV/#it{c}^{2})");
834 snprintf(key, buffersize,
"hMiInvPt_cen%d_pidbit%d_asy%d_dist2",ic,ipid,iasym) ;
835 snprintf(title, buffersize,
"Mixed #it{M}_{#gamma#gamma} distr. for centrality=%d, PID bit=%d and asymmetry %1.2f, dist bad 2",
837 fhMiInvPt2[index] =
new TH2F(key,title,nptbins,ptmin,ptmax,nmassbins,massmin,massmax) ;
838 fhMiInvPt2[index]->SetXTitle(
"#it{p}_{T} (GeV/#it{c})");
839 fhMiInvPt2[index]->SetYTitle(
"#it{M}_{#gamma,#gamma} (GeV/#it{c}^{2})");
843 snprintf(key, buffersize,
"hMiInvPt_cen%d_pidbit%d_asy%d_dist3",ic,ipid,iasym) ;
844 snprintf(title, buffersize,
"Mixed #it{M}_{#gamma#gamma} distr. for centrality=%d, PID bit=%d and asymmetry %1.2f,dist bad 3",
846 fhMiInvPt3[index] =
new TH2F(key,title,nptbins,ptmin,ptmax,nmassbins,massmin,massmax) ;
847 fhMiInvPt3[index]->SetXTitle(
"#it{p}_{T} (GeV/#it{c})");
848 fhMiInvPt3[index]->SetYTitle(
"#it{M}_{#gamma,#gamma} (GeV/#it{c}^{2})");
857 fhEPairDiffTime =
new TH2F(
"hEPairDiffTime",
"cluster pair time difference vs #it{p}_{T}",nptbins,ptmin,ptmax, tdbins,tdmin,tdmax);
864 fhRePtAsym =
new TH2F(
"hRePtAsym",
"#it{Asymmetry} vs #it{p}_{T} , for pairs",nptbins,ptmin,ptmax,nasymbins,asymmin,asymmax) ;
865 fhRePtAsym->SetXTitle(
"#it{p}_{T} (GeV/#it{c})");
869 fhRePtAsymPi0 =
new TH2F(
"hRePtAsymPi0",
"#it{Asymmetry} vs #it{p}_{T} , for pairs close to #pi^{0} mass",nptbins,ptmin,ptmax,nasymbins,asymmin,asymmax) ;
874 fhRePtAsymEta =
new TH2F(
"hRePtAsymEta",
"#it{Asymmetry} vs #it{p}_{T} , for pairs close to #eta mass",nptbins,ptmin,ptmax,nasymbins,asymmin,asymmax) ;
883 for(Int_t ipid=0; ipid<
fNPIDBits; ipid++){
884 snprintf(key, buffersize,
"hRe_pidbit%d",ipid) ;
885 snprintf(title, buffersize,
"Real #it{M}_{#gamma#gamma} distr. for PIDBit=%d",
fPIDBits[ipid]) ;
886 fhRePIDBits[ipid] =
new TH2F(key,title,nptbins,ptmin,ptmax,nmassbins,massmin,massmax) ;
887 fhRePIDBits[ipid]->SetXTitle(
"#it{p}_{T} (GeV/#it{c})");
888 fhRePIDBits[ipid]->SetYTitle(
"#it{M}_{#gamma,#gamma} (GeV/#it{c}^{2})");
899 for(Int_t ipt=0; ipt<
fNPtCuts; ipt++)
905 snprintf(key, buffersize,
"hRe_pt%d_cell%d_asym%d",ipt,icell,iasym) ;
906 snprintf(title, buffersize,
"Real #it{M}_{#gamma#gamma} distr. for pt >%2.2f, ncell>%d and asym >%1.2f ",
fPtCuts[ipt],
fCellNCuts[icell],
fAsymCuts[iasym]) ;
907 Int_t index = ((ipt*
fNCellNCuts)+icell)*fNAsymCuts + iasym;
909 fhRePtNCellAsymCuts[index] =
new TH2F(key,title,nptbins,ptmin,ptmax,nmassbins,massmin,massmax) ;
914 snprintf(key, buffersize,
"hMi_pt%d_cell%d_asym%d",ipt,icell,iasym) ;
915 snprintf(title, buffersize,
"Mixed #it{M}_{#gamma#gamma} distr. for pt >%2.2f, ncell>%d and asym >%1.2f",
fPtCuts[ipt],
fCellNCuts[icell],
fAsymCuts[iasym]) ;
916 fhMiPtNCellAsymCuts[index] =
new TH2F(key,title,nptbins,ptmin,ptmax,nmassbins,massmin,massmax) ;
923 for(Int_t iSM = 0; iSM <
fNModules; iSM++)
925 snprintf(key, buffersize,
"hRe_pt%d_cell%d_asym%d_SM%d",ipt,icell,iasym,iSM) ;
926 snprintf(title, buffersize,
"Real #it{M}_{#gamma#gamma} distr. for pt >%2.2f, ncell>%d and asym >%1.2f, SM %d ",
928 fhRePtNCellAsymCutsSM[iSM][index] =
new TH2F(key,title,nptbins,ptmin,ptmax,nmassbins,massmin,massmax) ;
941 for(Int_t iasym = 0; iasym<
fNAsymCuts; iasym++)
943 fhRePtMult[iasym] =
new TH3F(Form(
"hRePtMult_asym%d",iasym),Form(
"(#it{p}_{T},C,M)_{#gamma#gamma}, A<%1.2f",
fAsymCuts[iasym]),
944 nptbins,ptmin,ptmax,ntrmbins,ntrmmin,ntrmmax,nmassbins,massmin,massmax);
945 fhRePtMult[iasym]->SetXTitle(
"#it{p}_{T} (GeV/#it{c})");
946 fhRePtMult[iasym]->SetYTitle(
"Track multiplicity");
947 fhRePtMult[iasym]->SetZTitle(
"#it{M}_{#gamma,#gamma} (GeV/#it{c}^{2})");
955 fhReSS[0] =
new TH2F(
"hRe_SS_Tight",
" 0.01 < #lambda_{0}^{2} < 0.4",
956 nptbins,ptmin,ptmax,nmassbins,massmin,massmax);
957 fhReSS[0]->SetXTitle(
"#it{p}_{T} (GeV/#it{c})");
958 fhReSS[0]->SetYTitle(
"#it{M}_{#gamma,#gamma} (GeV/#it{c}^{2})");
959 outputContainer->Add(
fhReSS[0]) ;
962 fhReSS[1] =
new TH2F(
"hRe_SS_Loose",
" #lambda_{0}^{2} > 0.4",
963 nptbins,ptmin,ptmax,nmassbins,massmin,massmax);
964 fhReSS[1]->SetXTitle(
"#it{p}_{T} (GeV/#it{c})");
965 fhReSS[1]->SetYTitle(
"#it{M}_{#gamma,#gamma} (GeV/#it{c}^{2})");
966 outputContainer->Add(
fhReSS[1]) ;
969 fhReSS[2] =
new TH2F(
"hRe_SS_Both",
" cluster_{1} #lambda_{0}^{2} > 0.4; cluster_{2} 0.01 < #lambda_{0}^{2} < 0.4",
970 nptbins,ptmin,ptmax,nmassbins,massmin,massmax);
971 fhReSS[2]->SetXTitle(
"#it{p}_{T} (GeV/#it{c})");
972 fhReSS[2]->SetYTitle(
"#it{M}_{#gamma,#gamma} (GeV/#it{c}^{2})");
973 outputContainer->Add(
fhReSS[2]) ;
978 fhEventBin=
new TH1I(
"hEventBin",
"Number of real pairs per bin(cen,vz,rp)",
985 fhEventMixBin=
new TH1I(
"hEventMixBin",
"Number of mixed pairs per bin(cen,vz,rp)",
1011 (
"hRealOpeningAngle",
"Angle between all #gamma pair vs E_{#pi^{0}}",nptbins,ptmin,ptmax,300,0,TMath::Pi());
1017 (
"hRealCosOpeningAngle",
"Cosinus of angle between all #gamma pair vs E_{#pi^{0}}",nptbins,ptmin,ptmax,100,0,1);
1025 (
"hMixedOpeningAngle",
"Angle between all #gamma pair vs E_{#pi^{0}}, Mixed pairs",nptbins,ptmin,ptmax,300,0,TMath::Pi());
1031 (
"hMixedCosOpeningAngle",
"Cosinus of angle between all #gamma pair vs E_{#pi^{0}}, Mixed pairs",nptbins,ptmin,ptmax,100,0,1);
1041 fhReMCFromConversion =
new TH2F(
"hReMCFromConversion",
"Invariant mass of 2 clusters originated in conversions",
1042 nptbins,ptmin,ptmax,nmassbins,massmin,massmax);
1047 fhReMCFromNotConversion =
new TH2F(
"hReMCNotFromConversion",
"Invariant mass of 2 clusters not originated in conversions",
1048 nptbins,ptmin,ptmax,nmassbins,massmin,massmax);
1053 fhReMCFromMixConversion =
new TH2F(
"hReMCFromMixConversion",
"Invariant mass of 2 clusters one from conversion and the other not",
1054 nptbins,ptmin,ptmax,nmassbins,massmin,massmax);
1062 fhMCPi0PtOrigin =
new TH2F(
"hMCPi0PtOrigin",
"Reconstructed pair from generated #pi^{0} #it{p}_{T} vs origin",nptbins,ptmin,ptmax,11,0,11) ;
1077 fhMCNotResonancePi0PtOrigin =
new TH2F(
"hMCNotResonancePi0PtOrigin",
"Reconstructed pair from generated #pi^{0} #it{p}_{T} vs origin",nptbins,ptmin,ptmax,11,0,11) ;
1092 fhMCPi0PtStatus =
new TH2F(
"hMCPi0PtStatus",
"Reconstructed pair from generated #pi^{0} #it{p}_{T} vs status",nptbins,ptmin,ptmax,101,-50,50) ;
1099 fhMCEtaPtOrigin =
new TH2F(
"hMCEtaPtOrigin",
"Reconstructed pair from generated #pi^{0} #it{p}_{T} vs origin",nptbins,ptmin,ptmax,7,0,7) ;
1110 fhMCPi0ProdVertex =
new TH2F(
"hMCPi0ProdVertex",
"Selected reco pair from generated #pi^{0} #it{p}_{T} vs production vertex",
1111 200,0.,20.,5000,0,500) ;
1116 fhMCEtaProdVertex =
new TH2F(
"hMCEtaProdVertex",
"Selected reco pair from generated #eta #it{p}_{T} vs production vertex",
1117 200,0.,20.,5000,0,500) ;
1122 for(Int_t i = 0; i<13; i++)
1124 fhMCOrgMass[i] =
new TH2F(Form(
"hMCOrgMass_%d",i),Form(
"#it{M} vs #it{p}_{T}, origin %d",i),nptbins,ptmin,ptmax,nmassbins,massmin,massmax) ;
1125 fhMCOrgMass[i]->SetXTitle(
"#it{p}_{T} (GeV/#it{c})");
1126 fhMCOrgMass[i]->SetYTitle(
"#it{M}_{#gamma,#gamma} (GeV/#it{c}^{2})");
1129 fhMCOrgAsym[i]=
new TH2F(Form(
"hMCOrgAsym_%d",i),Form(
"#it{Asymmetry} vs #it{p}_{T}, origin %d",i),nptbins,ptmin,ptmax,nasymbins,asymmin,asymmax) ;
1130 fhMCOrgAsym[i]->SetXTitle(
"#it{p}_{T} (GeV/#it{c})");
1134 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) ;
1139 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) ;
1154 for(Int_t ipt=0; ipt<
fNPtCuts; ipt++)
1158 for(Int_t iasym=0; iasym<
fNAsymCuts; iasym++)
1160 Int_t index = ((ipt*
fNCellNCuts)+icell)*fNAsymCuts + iasym;
1162 fhMCPi0MassPtRec[index] =
new TH2F(Form(
"hMCPi0MassPtRec_pt%d_cell%d_asym%d",ipt,icell,iasym),
1163 Form(
"Reconstructed #it{M} vs reconstructed #it{p}_{T} of true #pi^{0} cluster pairs for #it{p}_{T} >%2.2f, #it{N}^{cluster}_{cell}>%d and |#it{A}|>%1.2f",
fPtCuts[ipt],
fCellNCuts[icell],
fAsymCuts[iasym]),
1164 nptbins,ptmin,ptmax,nmassbins,massmin,massmax) ;
1165 fhMCPi0MassPtRec[index]->SetXTitle(
"#it{p}_{T, reconstructed} (GeV/#it{c})");
1166 fhMCPi0MassPtRec[index]->SetYTitle(
"#it{M}_{#gamma,#gamma} (GeV/#it{c}^{2})");
1169 fhMCPi0MassPtTrue[index] =
new TH2F(Form(
"hMCPi0MassPtTrue_pt%d_cell%d_asym%d",ipt,icell,iasym),
1170 Form(
"Reconstructed #it{M} vs generated #it{p}_{T} of true #pi^{0} cluster pairs for #it{p}_{T} >%2.2f, #it{N}^{cluster}_{cell}>%d and |#it{A}|>%1.2f",
fPtCuts[ipt],
fCellNCuts[icell],
fAsymCuts[iasym]),
1171 nptbins,ptmin,ptmax,nmassbins,massmin,massmax) ;
1176 fhMCPi0PtTruePtRec[index] =
new TH2F(Form(
"hMCPi0PtTruePtRec_pt%d_cell%d_asym%d",ipt,icell,iasym),
1177 Form(
"Generated vs reconstructed #it{p}_{T} of true #pi^{0} cluster pairs, 0.01 < rec. mass < 0.17 MeV/#it{c}^{2} for #it{p}_{T} >%2.2f, #it{N}^{cluster}_{cell}>%d and |#it{A}|>%1.2f",
fPtCuts[ipt],
fCellNCuts[icell],
fAsymCuts[iasym]),
1178 nptbins,ptmin,ptmax,nptbins,ptmin,ptmax) ;
1183 fhMCEtaMassPtRec[index] =
new TH2F(Form(
"hMCEtaMassPtRec_pt%d_cell%d_asym%d",ipt,icell,iasym),
1184 Form(
"Reconstructed #it{M} vs reconstructed #it{p}_{T} of true #eta cluster pairs for #it{p}_{T} >%2.2f, #it{N}^{cluster}_{cell}>%d and |#it{A}|>%1.2f",
fPtCuts[ipt],
fCellNCuts[icell],
fAsymCuts[iasym]),
1185 nptbins,ptmin,ptmax,nmassbins,massmin,massmax) ;
1187 fhMCEtaMassPtRec[index]->SetYTitle(
"#it{M}_{#gamma,#gamma} (GeV/#it{c}^{2})");
1190 fhMCEtaMassPtTrue[index] =
new TH2F(Form(
"hMCEtaMassPtTrue_pt%d_cell%d_asym%d",ipt,icell,iasym),
1191 Form(
"Reconstructed #it{M} vs generated #it{p}_{T} of true #eta cluster pairs for #it{p}_{T} >%2.2f, #it{N}^{cluster}_{cell}>%d and |#it{A}|>%1.2f",
fPtCuts[ipt],
fCellNCuts[icell],
fAsymCuts[iasym]),
1192 nptbins,ptmin,ptmax,nmassbins,massmin,massmax) ;
1197 fhMCEtaPtTruePtRec[index] =
new TH2F(Form(
"hMCEtaPtTruePtRec_pt%d_cell%d_asym%d",ipt,icell,iasym),
1198 Form(
"Generated vs reconstructed #it{p}_{T} of true #eta cluster pairs, 0.01 < rec. mass < 0.17 MeV/#it{c}^{2} for #it{p}_{T} >%2.2f, ncell>%d and asym >%1.2f",
fPtCuts[ipt],
fCellNCuts[icell],
fAsymCuts[iasym]),
1199 nptbins,ptmin,ptmax,nptbins,ptmin,ptmax) ;
1214 fhMCPi0MassPtTrue[0] =
new TH2F(
"hMCPi0MassPtTrue",
"Reconstructed Mass vs generated p_T of true #pi^{0} cluster pairs",nptbins,ptmin,ptmax,nmassbins,massmin,massmax) ;
1219 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) ;
1224 fhMCEtaMassPtTrue[0] =
new TH2F(
"hMCEtaMassPtTrue",
"Reconstructed Mass vs generated p_T of true #eta cluster pairs",nptbins,ptmin,ptmax,nmassbins,massmin,massmax) ;
1229 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) ;
1241 TString pairnamePHOS[] = {
"(0-1)",
"(0-2)",
"(1-2)",
"(0-3)",
"(0-4)",
"(1-3)",
"(1-4)",
"(2-3)",
"(2-4)",
"(3-4)"};
1242 for(Int_t imod=0; imod<
fNModules; imod++)
1245 snprintf(key, buffersize,
"hReMod_%d",imod) ;
1246 snprintf(title, buffersize,
"Real #it{M}_{#gamma#gamma} distr. for Module %d",imod) ;
1247 fhReMod[imod] =
new TH2F(key,title,nptbins,ptmin,ptmax,nmassbins,massmin,massmax) ;
1248 fhReMod[imod]->SetXTitle(
"#it{p}_{T} (GeV/#it{c})");
1249 fhReMod[imod]->SetYTitle(
"#it{M}_{#gamma,#gamma} (GeV/#it{c}^{2})");
1250 outputContainer->Add(
fhReMod[imod]) ;
1253 snprintf(key, buffersize,
"hReDiffPHOSMod_%d",imod) ;
1254 snprintf(title, buffersize,
"Real pairs PHOS, clusters in different Modules: %s",(pairnamePHOS[imod]).
Data()) ;
1255 fhReDiffPHOSMod[imod] =
new TH2F(key,title,nptbins,ptmin,ptmax,nmassbins,massmin,massmax) ;
1257 fhReDiffPHOSMod[imod]->SetYTitle(
"#it{M}_{#gamma,#gamma} (GeV/#it{c}^{2})");
1262 if(imod<fNModules/2)
1264 snprintf(key, buffersize,
"hReSameSectorEMCAL_%d",imod) ;
1265 snprintf(title, buffersize,
"Real pairs EMCAL, clusters in same sector, SM(%d,%d)",imod*2,imod*2+1) ;
1271 if(imod<fNModules-2)
1273 snprintf(key, buffersize,
"hReSameSideEMCAL_%d",imod) ;
1274 snprintf(title, buffersize,
"Real pairs EMCAL, clusters in same side SM(%d,%d)",imod, imod+2) ;
1275 fhReSameSideEMCALMod[imod] =
new TH2F(key,title,nptbins,ptmin,ptmax,nmassbins,massmin,massmax) ;
1284 snprintf(key, buffersize,
"hMiMod_%d",imod) ;
1285 snprintf(title, buffersize,
"Mixed #it{M}_{#gamma#gamma} distr. for Module %d",imod) ;
1286 fhMiMod[imod] =
new TH2F(key,title,nptbins,ptmin,ptmax,nmassbins,massmin,massmax) ;
1287 fhMiMod[imod]->SetXTitle(
"#it{p}_{T} (GeV/#it{c})");
1288 fhMiMod[imod]->SetYTitle(
"#it{M}_{#gamma,#gamma} (GeV/#it{c}^{2})");
1289 outputContainer->Add(
fhMiMod[imod]) ;
1293 snprintf(key, buffersize,
"hMiDiffPHOSMod_%d",imod) ;
1294 snprintf(title, buffersize,
"Mixed pairs PHOS, clusters in different Modules: %s",(pairnamePHOS[imod]).
Data()) ;
1295 fhMiDiffPHOSMod[imod] =
new TH2F(key,title,nptbins,ptmin,ptmax,nmassbins,massmin,massmax) ;
1297 fhMiDiffPHOSMod[imod]->SetYTitle(
"#it{M}_{#gamma,#gamma} (GeV/#it{c}^{2})");
1302 if(imod<fNModules/2)
1304 snprintf(key, buffersize,
"hMiSameSectorEMCALMod_%d",imod) ;
1305 snprintf(title, buffersize,
"Mixed pairs EMCAL, clusters in same sector, SM(%d,%d)",imod*2,imod*2+1) ;
1311 if(imod<fNModules-2){
1313 snprintf(key, buffersize,
"hMiSameSideEMCALMod_%d",imod) ;
1314 snprintf(title, buffersize,
"Mixed pairs EMCAL, clusters in same side SM(%d,%d)",imod, imod+2) ;
1315 fhMiSameSideEMCALMod[imod] =
new TH2F(key,title,nptbins,ptmin,ptmax,nmassbins,massmin,massmax) ;
1326 Int_t dcSameSM[6] = {12,13,14,15,16,17};
1327 Int_t phSameSM[6] = {3, 3, 2, 2, 1, 1};
1329 Int_t dcDiffSM[8] = {12,13,14,15,16,17,0,0};
1330 Int_t phDiffSM[8] = {2, 2, 1, 1, 3, 3,0,0};
1332 for(Int_t icombi = 0; icombi < 8; icombi++)
1334 snprintf(key, buffersize,
"hReDiffSectorDCALPHOS_%d",icombi) ;
1335 snprintf(title, buffersize,
"Real pairs DCAL-PHOS, clusters in different sector, SM(%d,%d)",dcDiffSM[icombi],phDiffSM[icombi]) ;
1342 snprintf(key, buffersize,
"hMiDiffSectorDCALPHOS_%d",icombi) ;
1343 snprintf(title, buffersize,
"Mixed pairs DCAL-PHOS, clusters in different sector, SM(%d,%d)",dcDiffSM[icombi],phDiffSM[icombi]) ;
1350 if(icombi > 5) continue ;
1352 snprintf(key, buffersize,
"hReSameSectorDCALPHOS_%d",icombi) ;
1353 snprintf(title, buffersize,
"Real pairs DCAL-PHOS, clusters in same sector, SM(%d,%d)",dcSameSM[icombi],phSameSM[icombi]) ;
1360 snprintf(key, buffersize,
"hMiSameSectorDCALPHOS_%d",icombi) ;
1361 snprintf(title, buffersize,
"Mixed pairs DCAL-PHOS, clusters in same sector, SM(%d,%d)",dcSameSM[icombi],phSameSM[icombi]) ;
1378 return outputContainer;
1386 printf(
"**** Print %s %s ****\n", GetName(), GetTitle() ) ;
1389 printf(
"Number of bins in Centrality: %d \n",
GetNCentrBin()) ;
1390 printf(
"Number of bins in Z vert. pos: %d \n",
GetNZvertBin()) ;
1391 printf(
"Number of bins in Reac. Plain: %d \n",
GetNRPBin()) ;
1392 printf(
"Depth of event buffer: %d \n",
GetNMaxEvMix()) ;
1393 printf(
"Pair in same Module: %d \n",
fSameSM) ;
1394 printf(
"Cuts: \n") ;
1396 printf(
"Number of modules: %d \n",
fNModules) ;
1398 printf(
"Asymmetry cuts: n = %d, \n",
fNAsymCuts) ;
1399 printf(
"\tasymmetry < ");
1403 printf(
"PID selection bits: n = %d, \n",
fNPIDBits) ;
1404 printf(
"\tPID bit = ");
1410 printf(
"pT cuts: n = %d, \n",
fNPtCuts) ;
1415 printf(
"N cell in cluster cuts: n = %d, \n",
fNCellNCuts) ;
1416 printf(
"\tnCell > ");
1421 printf(
"------------------------------------------------------\n") ;
1429 Double_t mesonY = -100 ;
1430 Double_t mesonE = -1 ;
1431 Double_t mesonPt = -1 ;
1432 Double_t mesonPhi = 100 ;
1433 Double_t mesonYeta= -1 ;
1444 TParticle * primStack = 0;
1445 AliAODMCParticle * primAOD = 0;
1448 AliStack * stack = 0;
1453 nprim = stack->GetNtrack();
1457 TClonesArray * mcparticles = 0;
1461 if( !mcparticles )
return;
1462 nprim = mcparticles->GetEntriesFast();
1465 for(Int_t i=0 ; i < nprim; i++)
1467 if(
GetReader()->AcceptOnlyHIJINGLabels() && !
GetReader()->IsHIJINGLabel(i)) continue ;
1471 primStack = stack->Particle(i) ;
1474 AliWarning(
"ESD primaries pointer not available!!");
1479 if( primStack->Energy() < 0.4 )
continue;
1481 pdg = primStack->GetPdgCode();
1482 nDaught = primStack->GetNDaughters();
1483 iphot1 = primStack->GetDaughter(0) ;
1484 iphot2 = primStack->GetDaughter(1) ;
1487 if ( primStack->Energy() == TMath::Abs(primStack->Pz()) ||
1488 (primStack->Energy() - primStack->Pz()) < 1e-3 ||
1489 (primStack->Energy() + primStack->Pz()) < 0 ) continue ;
1497 mesonY = 0.5*TMath::Log((primStack->Energy()+primStack->Pz())/(primStack->Energy()-primStack->Pz())) ;
1501 primAOD = (AliAODMCParticle *) mcparticles->At(i);
1504 AliWarning(
"AOD primaries pointer not available!!");
1509 if( primAOD->E() < 0.4 )
continue;
1511 pdg = primAOD->GetPdgCode();
1512 nDaught = primAOD->GetNDaughters();
1513 iphot1 = primAOD->GetFirstDaughter() ;
1514 iphot2 = primAOD->GetLastDaughter() ;
1517 if ( primAOD->E() == TMath::Abs(primAOD->Pz()) ||
1518 (primAOD->E() - primAOD->Pz()) < 1e-3 ||
1519 (primAOD->E() + primAOD->Pz()) < 0 ) continue ;
1522 fPi0Mom.SetPxPyPzE(primAOD->Px(),primAOD->Py(),primAOD->Pz(),primAOD->E());
1524 mesonY = 0.5*TMath::Log((primAOD->E()+primAOD->Pz())/(primAOD->E()-primAOD->Pz())) ;
1528 if( pdg != 111 && pdg != 221) continue ;
1534 if( mesonPhi < 0 ) mesonPhi+=TMath::TwoPi();
1535 mesonPhi *= TMath::RadToDeg();
1539 if(TMath::Abs(mesonY) < 1.0)
1559 if(TMath::Abs(mesonY) < 1.0)
1581 Int_t momindex = -1;
1583 Int_t momstatus = -1;
1586 if(
GetReader()->ReadStack()) momindex = primStack->GetFirstMother();
1587 if(
GetReader()->ReadAODMCParticles()) momindex = primAOD ->GetMother();
1589 if(momindex >= 0 && momindex < nprim)
1593 status = primStack->GetStatusCode();
1594 TParticle* mother = stack->Particle(momindex);
1595 mompdg = TMath::Abs(mother->GetPdgCode());
1596 momstatus = mother->GetStatusCode();
1602 status = primAOD->GetStatus();
1603 AliAODMCParticle* mother = (AliAODMCParticle*) mcparticles->At(momindex);
1604 mompdg = TMath::Abs(mother->GetPdgCode());
1605 momstatus = mother->GetStatus();
1606 momR = TMath::Sqrt(mother->Xv()*mother->Xv()+mother->Yv()*mother->Yv());
1617 else if(mompdg > 2100 && mompdg < 2210)
1623 else if(mompdg >= 310 && mompdg <= 323)
1626 else if(momstatus == 11 || momstatus == 12 )
1637 else if(mompdg > 2100 && mompdg < 2210)
1643 else if(mompdg >= 310 && mompdg <= 323)
1646 else if(momstatus == 11 || momstatus == 12 )
1656 else if(mompdg > 2100 && mompdg < 2210)
1659 else if(momstatus == 11 || momstatus == 12 )
1670 if(nDaught != 2 )
continue;
1672 if(iphot1 < 0 || iphot1 >= nprim || iphot2 < 0 || iphot2 >= nprim) continue ;
1676 Bool_t inacceptance1 = kTRUE;
1677 Bool_t inacceptance2 = kTRUE;
1681 TParticle * phot1 = stack->Particle(iphot1) ;
1682 TParticle * phot2 = stack->Particle(iphot2) ;
1684 if(!phot1 || !phot2) continue ;
1686 pdg1 = phot1->GetPdgCode();
1687 pdg2 = phot2->GetPdgCode();
1702 AliAODMCParticle * phot1 = (AliAODMCParticle *) mcparticles->At(iphot1) ;
1703 AliAODMCParticle * phot2 = (AliAODMCParticle *) mcparticles->At(iphot2) ;
1705 if(!phot1 || !phot2) continue ;
1707 pdg1 = phot1->GetPdgCode();
1708 pdg2 = phot2->GetPdgCode();
1710 fPhotonMom1.SetPxPyPzE(phot1->Px(),phot1->Py(),phot1->Pz(),phot1->E());
1711 fPhotonMom2.SetPxPyPzE(phot2->Px(),phot2->Py(),phot2->Pz(),phot2->E());
1721 if( pdg1 != 22 || pdg2 !=22) continue ;
1740 if(photonPhi1 < 0) photonPhi1+=TMath::TwoPi();
1741 if(photonPhi2 < 0) photonPhi2+=TMath::TwoPi();
1750 Bool_t sameSector = kFALSE;
1751 for(Int_t isector = 0; isector <
fNModules/2; isector++)
1754 if((sm1==j && sm2==j+1) || (sm1==j+1 && sm2==j)) sameSector = kTRUE;
1757 if(sm1!=sm2 && !sameSector)
1759 inacceptance1 = kFALSE;
1760 inacceptance2 = kFALSE;
1767 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",
1769 mesonPt,mesonYeta,mesonPhi,
1772 inacceptance1, inacceptance2));
1774 if(inacceptance1 && inacceptance2)
1779 Bool_t cutAngle = kFALSE;
1782 AliDebug(2,Form(
"\t ACCEPTED pdg %d: pt %2.2f, phi %2.2f, eta %2.2f",pdg,mesonPt,mesonPhi,mesonYeta));
1854 Float_t momentumDaughter1AlongMother = 0.;
1855 Float_t momentumDaughter2AlongMother = 0.;
1857 if (momentumSquaredMother > 0.)
1864 Float_t ptArmSquared = momentumSquaredDaughter1 - momentumDaughter1AlongMother*momentumDaughter1AlongMother;
1867 if (ptArmSquared > 0.)
1868 pTArm = sqrt(ptArmSquared);
1870 Float_t alphaArm = 0.;
1871 if(momentumDaughter1AlongMother + momentumDaughter2AlongMother > 0)
1872 alphaArm = (momentumDaughter1AlongMother -momentumDaughter2AlongMother) / (momentumDaughter1AlongMother + momentumDaughter2AlongMother);
1878 Float_t en =
fPi0Mom.Energy();
1880 if(en > 8 && en <= 12) ebin = 0;
1881 if(en > 12 && en <= 16) ebin = 1;
1882 if(en > 16 && en <= 20) ebin = 2;
1883 if(en > 20) ebin = 3;
1884 if(ebin < 0 || ebin > 3) return ;
1914 Float_t pt1, Float_t pt2,
1915 Int_t ncell1, Int_t ncell2,
1916 Double_t
mass, Double_t pt, Double_t asym,
1917 Double_t deta, Double_t dphi)
1920 Int_t ancStatus = 0;
1924 Int_t momindex = -1;
1926 Int_t momstatus = -1;
1933 AliDebug(1,Form(
"Common ancestor label %d, pdg %d, name %s, status %d",
1934 ancLabel,ancPDG,TDatabasePDG::Instance()->GetParticle(ancPDG)->GetName(),ancStatus));
1940 else if(TMath::Abs(ancPDG)==11)
1944 else if(ancPDG==111)
1949 for(Int_t ipt=0; ipt<
fNPtCuts; ipt++)
1953 for(Int_t iasym=0; iasym<
fNAsymCuts; iasym++)
1955 Int_t index = ((ipt*
fNCellNCuts)+icell)*fNAsymCuts + iasym;
1962 if(mass < 0.17 && mass > 0.1)
1973 if(mass < 0.17 && mass > 0.1)
1980 TParticle* ancestor =
GetMCStack()->Particle(ancLabel);
1981 status = ancestor->GetStatusCode();
1982 momindex = ancestor->GetFirstMother();
1983 if(momindex < 0)
return;
1984 TParticle* mother =
GetMCStack()->Particle(momindex);
1985 mompdg = TMath::Abs(mother->GetPdgCode());
1986 momstatus = mother->GetStatusCode();
1987 prodR = mother->R();
1993 AliAODMCParticle* ancestor = (AliAODMCParticle *) mcparticles->At(ancLabel);
1994 status = ancestor->GetStatus();
1995 momindex = ancestor->GetMother();
1996 if(momindex < 0)
return;
1997 AliAODMCParticle* mother = (AliAODMCParticle *) mcparticles->At(momindex);
1998 mompdg = TMath::Abs(mother->GetPdgCode());
1999 momstatus = mother->GetStatus();
2000 prodR = TMath::Sqrt(mother->Xv()*mother->Xv()+mother->Yv()*mother->Yv());
2012 else if(mompdg > 2100 && mompdg < 2210)
2018 else if(mompdg >= 310 && mompdg <= 323)
2021 else if(momstatus == 11 || momstatus == 12 )
2029 else if(mompdg > 2100 && mompdg < 2210)
2035 else if(mompdg >= 310 && mompdg <= 323)
2038 else if(momstatus == 11 || momstatus == 12 )
2045 else if(ancPDG==221)
2050 for(Int_t ipt=0; ipt<
fNPtCuts; ipt++)
2054 for(Int_t iasym=0; iasym<
fNAsymCuts; iasym++)
2056 Int_t index = ((ipt*
fNCellNCuts)+icell)*fNAsymCuts + iasym;
2063 if(mass < 0.65 && mass > 0.45)
2077 TParticle* ancestor =
GetMCStack()->Particle(ancLabel);
2078 momindex = ancestor->GetFirstMother();
2079 if(momindex < 0)
return;
2080 TParticle* mother =
GetMCStack()->Particle(momindex);
2081 mompdg = TMath::Abs(mother->GetPdgCode());
2082 momstatus = mother->GetStatusCode();
2083 prodR = mother->R();
2088 AliAODMCParticle* ancestor = (AliAODMCParticle *) mcparticles->At(ancLabel);
2089 momindex = ancestor->GetMother();
2090 if(momindex < 0)
return;
2091 AliAODMCParticle* mother = (AliAODMCParticle *) mcparticles->At(momindex);
2092 mompdg = TMath::Abs(mother->GetPdgCode());
2093 momstatus = mother->GetStatus();
2094 prodR = TMath::Sqrt(mother->Xv()*mother->Xv()+mother->Yv()*mother->Yv());
2101 else if(mompdg > 2100 && mompdg < 2210)
2104 else if(momstatus == 11 || momstatus == 12 )
2111 else if(ancPDG==-2212)
2115 else if(ancPDG==-2112)
2119 else if(TMath::Abs(ancPDG)==13)
2123 else if (TMath::Abs(ancPDG) > 100 && ancLabel > 7)
2136 if(ancStatus==11 || ancStatus==12)
2140 else if (ancStatus==21){
2145 else if(ancLabel < 6)
2149 else if(ancLabel < 8)
2167 AliDebug(1,
"Common ancestor not found");
2172 if(mcIndex >= 0 && mcIndex < 13)
2201 AliFatal(Form(
"No input aod photons in AOD with name branch < %s >, STOP",
GetInputAODName().
Data()));
2213 Int_t nPhot2 = nPhot;
2214 Int_t minEntries = 2;
2227 if(!secondLoopInputData)
2233 nPhot2 = secondLoopInputData->GetEntriesFast() ;
2238 AliDebug(1,Form(
"Photon entries %d", nPhot));
2241 if ( nPhot < minEntries )
2266 Double_t vert[] = {0.0, 0.0, 0.0} ;
2267 Int_t evtIndex1 = 0 ;
2268 Int_t currentEvtIndex = -1;
2276 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",
2289 for(Int_t i1 = 0; i1 < nPhot-last; i1++)
2301 if ( evtIndex1 == -1 )
2303 if ( evtIndex1 == -2 )
2309 if (evtIndex1 != currentEvtIndex)
2322 currentEvtIndex = evtIndex1 ;
2328 fPhotonMom1.SetPxPyPzE(p1->Px(),p1->Py(),p1->Pz(),p1->E());
2331 module1 = p1->GetSModNumber();
2345 for(Int_t i2 = first; i2 < nPhot2; i2++)
2348 AliAODPWG4Particle * p2 = (AliAODPWG4Particle*) (secondLoopInputData->At(i2)) ;
2357 if ( evtIndex2 == -1 )
2359 if ( evtIndex2 == -2 )
2404 Float_t tof1 = p1->GetTime();
2405 Float_t l01 = p1->GetM02();
2406 Int_t ncell1 = p1->GetNCells();
2409 Float_t tof2 = p2->GetTime();
2410 Float_t l02 = p2->GetM02();
2411 Int_t ncell2 = p2->GetNCells();
2414 Double_t t12diff = tof1-tof2;
2423 fPhotonMom2.SetPxPyPzE(p2->Px(),p2->Py(),p2->Pz(),p2->E());
2426 module2 = p2->GetSModNumber();
2435 Double_t a = TMath::Abs(p1->E()-p2->E())/(p1->E()+p2->E()) ;
2437 AliDebug(2,Form(
"E: fPhotonMom1 %f, fPhotonMom2 %f; Pair: pT %f, mass %f, a %f", p1->E(), p2->E(), (
fPhotonMom1 +
fPhotonMom2).E(),m,a));
2463 if(module1==module2 && module1 >=0 && module1<
fNModules)
2516 if(module1!=module2) ok=kFALSE;
2545 if ( l01 > 0.01 && l01 < 0.4 &&
2553 for(Int_t ipid=0; ipid<
fNPIDBits; ipid++)
2557 for(Int_t iasym=0; iasym <
fNAsymCuts; iasym++)
2561 Int_t index = ((curCentrBin*
fNPIDBits)+ipid)*fNAsymCuts + iasym;
2564 if(index < 0 || index >= ncentr*fNPIDBits*fNAsymCuts) continue ;
2571 if(p1->DistToBad()>0 && p2->DistToBad()>0)
2576 if(p1->DistToBad()>1 && p2->DistToBad()>1)
2606 if ( p1->GetFiducialArea() == 0 && p2->GetFiducialArea() == 0 )
2609 else if ( p1->GetFiducialArea() != 0 && p2->GetFiducialArea() != 0 )
2635 FillMCVersusRecDataHistograms(p1->GetLabel(), p2->GetLabel(),p1->Pt(), p2->Pt(),ncell1, ncell2, m, pt, a,deta, dphi);
2644 for(Int_t ipid=0; ipid<
fNPIDBits; ipid++)
2653 for(Int_t ipt = 0; ipt <
fNPtCuts; ipt++)
2655 for(Int_t icell = 0; icell <
fNCellNCuts; icell++)
2657 for(Int_t iasym = 0; iasym <
fNAsymCuts; iasym++)
2659 Int_t index = ((ipt*
fNCellNCuts)+icell)*fNAsymCuts + iasym;
2677 for(Int_t iasym = 0; iasym <
fNAsymCuts; iasym++)
2694 if(eventbin < 0) return ;
2700 AliWarning(Form(
"Mix event list not available, bin %d",eventbin));
2704 Int_t nMixed = evMixList->GetSize() ;
2705 for(Int_t ii=0; ii<nMixed; ii++)
2707 TClonesArray* ev2= (TClonesArray*) (evMixList->At(ii));
2708 Int_t nPhot2=ev2->GetEntriesFast() ;
2710 AliDebug(1,Form(
"Mixed event %d photon entries %d, centrality bin %d",ii, nPhot2,
GetEventCentralityBin()));
2717 for(Int_t i1 = 0; i1 < nPhot; i1++)
2728 fPhotonMom1.SetPxPyPzE(p1->Px(),p1->Py(),p1->Pz(),p1->E());
2734 for(Int_t i2 = 0; i2 < nPhot2; i2++)
2736 AliAODPWG4Particle * p2 = (AliAODPWG4Particle*) (ev2->At(i2)) ;
2742 fPhotonMom2.SetPxPyPzE(p2->Px(),p2->Py(),p2->Pz(),p2->E());
2745 Double_t a = TMath::Abs(p1->E()-p2->E())/(p1->E()+p2->E()) ;
2761 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));
2773 if(module1==module2 && module1 >=0 && module1<
fNModules)
2825 if(module1!=module2) ok=kFALSE;
2852 for(Int_t ipid=0; ipid<
fNPIDBits; ipid++)
2856 for(Int_t iasym=0; iasym <
fNAsymCuts; iasym++)
2860 Int_t index = ((curCentrBin*
fNPIDBits)+ipid)*fNAsymCuts + iasym;
2862 if(index < 0 || index >= ncentr*fNPIDBits*fNAsymCuts) continue ;
2870 if(p1->DistToBad()>0 && p2->DistToBad()>0)
2875 if(p1->DistToBad()>1 && p2->DistToBad()>1)
2894 for(Int_t ipt=0; ipt<
fNPtCuts; ipt++)
2898 for(Int_t iasym=0; iasym<
fNAsymCuts; iasym++)
2900 Int_t index = ((ipt*
fNCellNCuts)+icell)*fNAsymCuts + iasym;
2924 if ( p1->GetFiducialArea() == 0 && p2->GetFiducialArea() == 0 )
2927 else if ( p1->GetFiducialArea() != 0 && p2->GetFiducialArea() != 0 )
2940 TClonesArray *currentEvent =
new TClonesArray(*secondLoopInputData);
2943 if( currentEvent->GetEntriesFast() > 0 )
2945 evMixList->AddFirst(currentEvent) ;
2949 TClonesArray * tmp = (TClonesArray*) (evMixList->Last()) ;
2950 evMixList->RemoveLast() ;
2956 delete currentEvent ;
2961 AliDebug(1,
"End fill histograms");
2971 Int_t evtIndex = -1 ;
2977 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 * fhPrimPi0Y
! Rapidity distribution of primary particles vs pT
TLorentzVector fPhotonMom1Boost
! Photon cluster momentum, temporary array
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
virtual Int_t GetTrackMultiplicity() const
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
virtual void AddToHistogramsName(TString add)
Bool_t fFillArmenterosThetaStar
Fill armenteros histograms.
Int_t fNPIDBits
Number of possible PID bit combinations.
TLorentzVector fPhotonMom2
! Photon cluster momentum, temporary array
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]
[fNAsymCuts]
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 Float_t GetPairTimeCut() const
Time cut in ns.
virtual AliStack * GetMCStack() const
virtual void GetVertex(Double_t vertex[3]) const
Int_t GetHistoTrackMultiplicityMax() 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]
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 * fhReMCFromConversion
! Invariant mass of 2 clusters originated in conversions
TH2F ** fhReSameSideEMCALMod
[fNModules]
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
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 ...
Int_t GetHistoTrackMultiplicityMin() const
Float_t fAsymCuts[10]
Array with different assymetry cuts.
Float_t fPtCuts[10]
Array with different pt 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
Bool_t IsMCParticleInCalorimeterAcceptance(Int_t calo, TParticle *particle)
TH2F ** fhMCPi0MassPtRec
Real pi0 pairs, reconstructed mass vs reconstructed pt of original pair.
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]
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
Bool_t IsAngleInWindow(Float_t angle, Float_t e) const
TH2F ** fhReSameSectorDCALPHOSMod
[fNModules]
Float_t GetHistoAsymmetryMax() const
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.
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.
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
virtual TList * GetAODBranchList() const
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.
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]
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 ** 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.
Int_t GetHistoTrackMultiplicityBins() const
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 ...
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 * fhPrimPi0YetaYcut
! PseudoRapidity distribution of primary particles vs pT, Y<1
virtual Int_t GetNMaxEvMix() const
Number of bins in track multiplicity.
TH2F * fhPrimPi0Yeta
! PseudoRapidity distribution of primary particles vs pT
TH3F ** fhRePtMult
[fNPIDBits]
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
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...
virtual ~AliAnaPi0()
Destructor.
TH2F * fhPrimEtaProdVertex
! Spectrum of primary eta vs production vertex
Bool_t fSameSM
Select only pairs in same SM;.
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 * 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
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)
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.
TH2F ** fhRePIDBits
[fNPtCuts*fNAsymCuts*fNCellNCutsfNModules]
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 ...
TH2F ** fhRePtNCellAsymCutsSM[12]
[fNPtCuts*fNAsymCuts*fNCellNCuts]
TList ** fEventsList
Containers for photons in stored events.
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 ...
virtual AliCaloTrackReader * GetReader() const
virtual Int_t GetEventMixBin() const
Bool_t fFillSecondaryCellTiming
Fill histograms depending of 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]
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 ** 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
TH2F * fhMCOrgDeltaPhi[13]
! Delta Phi vs pt of real pairs, check common origin of pair
virtual AliMixedEvent * GetMixedEvent() const
TH2F * fhReConv2
! REAL two-photon invariant mass distribution both pair photons recombined from 2 clusters with small...
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]