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) ;
1485 if(primStack->Energy() == TMath::Abs(primStack->Pz())) continue ;
1493 mesonY = 0.5*TMath::Log((primStack->Energy()+primStack->Pz())/(primStack->Energy()-primStack->Pz())) ;
1497 primAOD = (AliAODMCParticle *) mcparticles->At(i);
1500 AliWarning(
"AOD primaries pointer not available!!");
1505 if( primAOD->E() < 0.4 )
continue;
1507 pdg = primAOD->GetPdgCode();
1508 nDaught = primAOD->GetNDaughters();
1509 iphot1 = primAOD->GetFirstDaughter() ;
1510 iphot2 = primAOD->GetLastDaughter() ;
1512 if(primAOD->E() == TMath::Abs(primAOD->Pz())) continue ;
1515 fPi0Mom.SetPxPyPzE(primAOD->Px(),primAOD->Py(),primAOD->Pz(),primAOD->E());
1517 mesonY = 0.5*TMath::Log((primAOD->E()+primAOD->Pz())/(primAOD->E()-primAOD->Pz())) ;
1521 if( pdg != 111 && pdg != 221) continue ;
1527 if( mesonPhi < 0 ) mesonPhi+=TMath::TwoPi();
1528 mesonPhi *= TMath::RadToDeg();
1532 if(TMath::Abs(mesonY) < 1.0)
1552 if(TMath::Abs(mesonY) < 1.0)
1574 Int_t momindex = -1;
1576 Int_t momstatus = -1;
1579 if(
GetReader()->ReadStack()) momindex = primStack->GetFirstMother();
1580 if(
GetReader()->ReadAODMCParticles()) momindex = primAOD ->GetMother();
1582 if(momindex >= 0 && momindex < nprim)
1586 status = primStack->GetStatusCode();
1587 TParticle* mother = stack->Particle(momindex);
1588 mompdg = TMath::Abs(mother->GetPdgCode());
1589 momstatus = mother->GetStatusCode();
1595 status = primAOD->GetStatus();
1596 AliAODMCParticle* mother = (AliAODMCParticle*) mcparticles->At(momindex);
1597 mompdg = TMath::Abs(mother->GetPdgCode());
1598 momstatus = mother->GetStatus();
1599 momR = TMath::Sqrt(mother->Xv()*mother->Xv()+mother->Yv()*mother->Yv());
1610 else if(mompdg > 2100 && mompdg < 2210)
1616 else if(mompdg >= 310 && mompdg <= 323)
1619 else if(momstatus == 11 || momstatus == 12 )
1630 else if(mompdg > 2100 && mompdg < 2210)
1636 else if(mompdg >= 310 && mompdg <= 323)
1639 else if(momstatus == 11 || momstatus == 12 )
1649 else if(mompdg > 2100 && mompdg < 2210)
1652 else if(momstatus == 11 || momstatus == 12 )
1663 if(nDaught != 2 )
continue;
1665 if(iphot1 < 0 || iphot1 >= nprim || iphot2 < 0 || iphot2 >= nprim) continue ;
1669 Bool_t inacceptance1 = kTRUE;
1670 Bool_t inacceptance2 = kTRUE;
1674 TParticle * phot1 = stack->Particle(iphot1) ;
1675 TParticle * phot2 = stack->Particle(iphot2) ;
1677 if(!phot1 || !phot2) continue ;
1679 pdg1 = phot1->GetPdgCode();
1680 pdg2 = phot2->GetPdgCode();
1695 AliAODMCParticle * phot1 = (AliAODMCParticle *) mcparticles->At(iphot1) ;
1696 AliAODMCParticle * phot2 = (AliAODMCParticle *) mcparticles->At(iphot2) ;
1698 if(!phot1 || !phot2) continue ;
1700 pdg1 = phot1->GetPdgCode();
1701 pdg2 = phot2->GetPdgCode();
1703 fPhotonMom1.SetPxPyPzE(phot1->Px(),phot1->Py(),phot1->Pz(),phot1->E());
1704 fPhotonMom2.SetPxPyPzE(phot2->Px(),phot2->Py(),phot2->Pz(),phot2->E());
1714 if( pdg1 != 22 || pdg2 !=22) continue ;
1733 if(photonPhi1 < 0) photonPhi1+=TMath::TwoPi();
1734 if(photonPhi2 < 0) photonPhi2+=TMath::TwoPi();
1743 Bool_t sameSector = kFALSE;
1744 for(Int_t isector = 0; isector <
fNModules/2; isector++)
1747 if((sm1==j && sm2==j+1) || (sm1==j+1 && sm2==j)) sameSector = kTRUE;
1750 if(sm1!=sm2 && !sameSector)
1752 inacceptance1 = kFALSE;
1753 inacceptance2 = kFALSE;
1760 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",
1762 mesonPt,mesonYeta,mesonPhi,
1765 inacceptance1, inacceptance2));
1767 if(inacceptance1 && inacceptance2)
1772 Bool_t cutAngle = kFALSE;
1775 AliDebug(2,Form(
"\t ACCEPTED pdg %d: pt %2.2f, phi %2.2f, eta %2.2f",pdg,mesonPt,mesonPhi,mesonYeta));
1847 Float_t momentumDaughter1AlongMother = 0.;
1848 Float_t momentumDaughter2AlongMother = 0.;
1850 if (momentumSquaredMother > 0.)
1857 Float_t ptArmSquared = momentumSquaredDaughter1 - momentumDaughter1AlongMother*momentumDaughter1AlongMother;
1860 if (ptArmSquared > 0.)
1861 pTArm = sqrt(ptArmSquared);
1863 Float_t alphaArm = 0.;
1864 if(momentumDaughter1AlongMother + momentumDaughter2AlongMother > 0)
1865 alphaArm = (momentumDaughter1AlongMother -momentumDaughter2AlongMother) / (momentumDaughter1AlongMother + momentumDaughter2AlongMother);
1871 Float_t en =
fPi0Mom.Energy();
1873 if(en > 8 && en <= 12) ebin = 0;
1874 if(en > 12 && en <= 16) ebin = 1;
1875 if(en > 16 && en <= 20) ebin = 2;
1876 if(en > 20) ebin = 3;
1877 if(ebin < 0 || ebin > 3) return ;
1907 Float_t pt1, Float_t pt2,
1908 Int_t ncell1, Int_t ncell2,
1909 Double_t
mass, Double_t pt, Double_t asym,
1910 Double_t deta, Double_t dphi)
1913 Int_t ancStatus = 0;
1917 Int_t momindex = -1;
1919 Int_t momstatus = -1;
1926 AliDebug(1,Form(
"Common ancestor label %d, pdg %d, name %s, status %d",
1927 ancLabel,ancPDG,TDatabasePDG::Instance()->GetParticle(ancPDG)->GetName(),ancStatus));
1933 else if(TMath::Abs(ancPDG)==11)
1937 else if(ancPDG==111)
1942 for(Int_t ipt=0; ipt<
fNPtCuts; ipt++)
1946 for(Int_t iasym=0; iasym<
fNAsymCuts; iasym++)
1948 Int_t index = ((ipt*
fNCellNCuts)+icell)*fNAsymCuts + iasym;
1955 if(mass < 0.17 && mass > 0.1)
1966 if(mass < 0.17 && mass > 0.1)
1973 TParticle* ancestor =
GetMCStack()->Particle(ancLabel);
1974 status = ancestor->GetStatusCode();
1975 momindex = ancestor->GetFirstMother();
1976 if(momindex < 0)
return;
1977 TParticle* mother =
GetMCStack()->Particle(momindex);
1978 mompdg = TMath::Abs(mother->GetPdgCode());
1979 momstatus = mother->GetStatusCode();
1980 prodR = mother->R();
1986 AliAODMCParticle* ancestor = (AliAODMCParticle *) mcparticles->At(ancLabel);
1987 status = ancestor->GetStatus();
1988 momindex = ancestor->GetMother();
1989 if(momindex < 0)
return;
1990 AliAODMCParticle* mother = (AliAODMCParticle *) mcparticles->At(momindex);
1991 mompdg = TMath::Abs(mother->GetPdgCode());
1992 momstatus = mother->GetStatus();
1993 prodR = TMath::Sqrt(mother->Xv()*mother->Xv()+mother->Yv()*mother->Yv());
2005 else if(mompdg > 2100 && mompdg < 2210)
2011 else if(mompdg >= 310 && mompdg <= 323)
2014 else if(momstatus == 11 || momstatus == 12 )
2022 else if(mompdg > 2100 && mompdg < 2210)
2028 else if(mompdg >= 310 && mompdg <= 323)
2031 else if(momstatus == 11 || momstatus == 12 )
2038 else if(ancPDG==221)
2043 for(Int_t ipt=0; ipt<
fNPtCuts; ipt++)
2047 for(Int_t iasym=0; iasym<
fNAsymCuts; iasym++)
2049 Int_t index = ((ipt*
fNCellNCuts)+icell)*fNAsymCuts + iasym;
2056 if(mass < 0.65 && mass > 0.45)
2070 TParticle* ancestor =
GetMCStack()->Particle(ancLabel);
2071 momindex = ancestor->GetFirstMother();
2072 if(momindex < 0)
return;
2073 TParticle* mother =
GetMCStack()->Particle(momindex);
2074 mompdg = TMath::Abs(mother->GetPdgCode());
2075 momstatus = mother->GetStatusCode();
2076 prodR = mother->R();
2081 AliAODMCParticle* ancestor = (AliAODMCParticle *) mcparticles->At(ancLabel);
2082 momindex = ancestor->GetMother();
2083 if(momindex < 0)
return;
2084 AliAODMCParticle* mother = (AliAODMCParticle *) mcparticles->At(momindex);
2085 mompdg = TMath::Abs(mother->GetPdgCode());
2086 momstatus = mother->GetStatus();
2087 prodR = TMath::Sqrt(mother->Xv()*mother->Xv()+mother->Yv()*mother->Yv());
2094 else if(mompdg > 2100 && mompdg < 2210)
2097 else if(momstatus == 11 || momstatus == 12 )
2104 else if(ancPDG==-2212)
2108 else if(ancPDG==-2112)
2112 else if(TMath::Abs(ancPDG)==13)
2116 else if (TMath::Abs(ancPDG) > 100 && ancLabel > 7)
2129 if(ancStatus==11 || ancStatus==12)
2133 else if (ancStatus==21){
2138 else if(ancLabel < 6)
2142 else if(ancLabel < 8)
2160 AliDebug(1,
"Common ancestor not found");
2165 if(mcIndex >= 0 && mcIndex < 13)
2194 AliFatal(Form(
"No input aod photons in AOD with name branch < %s >, STOP",
GetInputAODName().
Data()));
2206 Int_t nPhot2 = nPhot;
2207 Int_t minEntries = 2;
2220 if(!secondLoopInputData)
2226 nPhot2 = secondLoopInputData->GetEntriesFast() ;
2231 AliDebug(1,Form(
"Photon entries %d", nPhot));
2234 if ( nPhot < minEntries )
2259 Double_t vert[] = {0.0, 0.0, 0.0} ;
2260 Int_t evtIndex1 = 0 ;
2261 Int_t currentEvtIndex = -1;
2269 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",
2282 for(Int_t i1 = 0; i1 < nPhot-last; i1++)
2294 if ( evtIndex1 == -1 )
2296 if ( evtIndex1 == -2 )
2302 if (evtIndex1 != currentEvtIndex)
2315 currentEvtIndex = evtIndex1 ;
2321 fPhotonMom1.SetPxPyPzE(p1->Px(),p1->Py(),p1->Pz(),p1->E());
2324 module1 = p1->GetSModNumber();
2338 for(Int_t i2 = first; i2 < nPhot2; i2++)
2341 AliAODPWG4Particle * p2 = (AliAODPWG4Particle*) (secondLoopInputData->At(i2)) ;
2350 if ( evtIndex2 == -1 )
2352 if ( evtIndex2 == -2 )
2397 Float_t tof1 = p1->GetTime();
2398 Float_t l01 = p1->GetM02();
2399 Int_t ncell1 = p1->GetNCells();
2402 Float_t tof2 = p2->GetTime();
2403 Float_t l02 = p2->GetM02();
2404 Int_t ncell2 = p2->GetNCells();
2407 Double_t t12diff = tof1-tof2;
2416 fPhotonMom2.SetPxPyPzE(p2->Px(),p2->Py(),p2->Pz(),p2->E());
2419 module2 = p2->GetSModNumber();
2428 Double_t a = TMath::Abs(p1->E()-p2->E())/(p1->E()+p2->E()) ;
2430 AliDebug(2,Form(
"E: fPhotonMom1 %f, fPhotonMom2 %f; Pair: pT %f, mass %f, a %f", p1->E(), p2->E(), (
fPhotonMom1 +
fPhotonMom2).E(),m,a));
2456 if(module1==module2 && module1 >=0 && module1<
fNModules)
2509 if(module1!=module2) ok=kFALSE;
2538 if ( l01 > 0.01 && l01 < 0.4 &&
2546 for(Int_t ipid=0; ipid<
fNPIDBits; ipid++)
2550 for(Int_t iasym=0; iasym <
fNAsymCuts; iasym++)
2554 Int_t index = ((curCentrBin*
fNPIDBits)+ipid)*fNAsymCuts + iasym;
2557 if(index < 0 || index >= ncentr*fNPIDBits*fNAsymCuts) continue ;
2564 if(p1->DistToBad()>0 && p2->DistToBad()>0)
2569 if(p1->DistToBad()>1 && p2->DistToBad()>1)
2599 if ( p1->GetFiducialArea() == 0 && p2->GetFiducialArea() == 0 )
2602 else if ( p1->GetFiducialArea() != 0 && p2->GetFiducialArea() != 0 )
2628 FillMCVersusRecDataHistograms(p1->GetLabel(), p2->GetLabel(),p1->Pt(), p2->Pt(),ncell1, ncell2, m, pt, a,deta, dphi);
2637 for(Int_t ipid=0; ipid<
fNPIDBits; ipid++)
2646 for(Int_t ipt = 0; ipt <
fNPtCuts; ipt++)
2648 for(Int_t icell = 0; icell <
fNCellNCuts; icell++)
2650 for(Int_t iasym = 0; iasym <
fNAsymCuts; iasym++)
2652 Int_t index = ((ipt*
fNCellNCuts)+icell)*fNAsymCuts + iasym;
2670 for(Int_t iasym = 0; iasym <
fNAsymCuts; iasym++)
2687 if(eventbin < 0) return ;
2693 AliWarning(Form(
"Mix event list not available, bin %d",eventbin));
2697 Int_t nMixed = evMixList->GetSize() ;
2698 for(Int_t ii=0; ii<nMixed; ii++)
2700 TClonesArray* ev2= (TClonesArray*) (evMixList->At(ii));
2701 Int_t nPhot2=ev2->GetEntriesFast() ;
2703 AliDebug(1,Form(
"Mixed event %d photon entries %d, centrality bin %d",ii, nPhot2,
GetEventCentralityBin()));
2710 for(Int_t i1 = 0; i1 < nPhot; i1++)
2721 fPhotonMom1.SetPxPyPzE(p1->Px(),p1->Py(),p1->Pz(),p1->E());
2727 for(Int_t i2 = 0; i2 < nPhot2; i2++)
2729 AliAODPWG4Particle * p2 = (AliAODPWG4Particle*) (ev2->At(i2)) ;
2735 fPhotonMom2.SetPxPyPzE(p2->Px(),p2->Py(),p2->Pz(),p2->E());
2738 Double_t a = TMath::Abs(p1->E()-p2->E())/(p1->E()+p2->E()) ;
2754 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));
2766 if(module1==module2 && module1 >=0 && module1<
fNModules)
2818 if(module1!=module2) ok=kFALSE;
2845 for(Int_t ipid=0; ipid<
fNPIDBits; ipid++)
2849 for(Int_t iasym=0; iasym <
fNAsymCuts; iasym++)
2853 Int_t index = ((curCentrBin*
fNPIDBits)+ipid)*fNAsymCuts + iasym;
2855 if(index < 0 || index >= ncentr*fNPIDBits*fNAsymCuts) continue ;
2863 if(p1->DistToBad()>0 && p2->DistToBad()>0)
2868 if(p1->DistToBad()>1 && p2->DistToBad()>1)
2887 for(Int_t ipt=0; ipt<
fNPtCuts; ipt++)
2891 for(Int_t iasym=0; iasym<
fNAsymCuts; iasym++)
2893 Int_t index = ((ipt*
fNCellNCuts)+icell)*fNAsymCuts + iasym;
2917 if ( p1->GetFiducialArea() == 0 && p2->GetFiducialArea() == 0 )
2920 else if ( p1->GetFiducialArea() != 0 && p2->GetFiducialArea() != 0 )
2933 TClonesArray *currentEvent =
new TClonesArray(*secondLoopInputData);
2936 if( currentEvent->GetEntriesFast() > 0 )
2938 evMixList->AddFirst(currentEvent) ;
2942 TClonesArray * tmp = (TClonesArray*) (evMixList->Last()) ;
2943 evMixList->RemoveLast() ;
2949 delete currentEvent ;
2954 AliDebug(1,
"End fill histograms");
2964 Int_t evtIndex = -1 ;
2970 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
ClassImp(AliAnalysisTaskTriggerRates) AliAnalysisTaskTriggerRates
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.
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]