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"
41 #include "AliMCEvent.h"
44 #include "AliPHOSGeoUtils.h"
45 #include "AliEMCALGeometry.h"
57 fUseAngleCut(kFALSE), fUseAngleEDepCut(kFALSE), fAngleCut(0), fAngleMaxCut(0.),
58 fMultiCutAna(kFALSE), fMultiCutAnaSim(kFALSE), fMultiCutAnaAcc(kFALSE),
59 fNPtCuts(0), fNAsymCuts(0), fNCellNCuts(0), fNPIDBits(0), fNAngleCutBins(0),
60 fMakeInvPtPlots(kFALSE), fSameSM(kFALSE),
61 fFillSMCombinations(kFALSE), fCheckConversion(kFALSE),
62 fFillBadDistHisto(kFALSE), fFillSSCombinations(kFALSE),
63 fFillAngleHisto(kFALSE), fFillAsymmetryHisto(kFALSE), fFillOriginHisto(0),
64 fFillArmenterosThetaStar(0), fFillOnlyMCAcceptanceHisto(0),
65 fFillSecondaryCellTiming(0), fFillOpAngleCutHisto(0), fCheckAccInSector(0),
66 fPairWithOtherDetector(0), fOtherDetectorInputName(
""),
67 fPhotonMom1(), fPhotonMom1Boost(), fPhotonMom2(), fMCPrimMesonMom(),
71 fhReMod(0x0), fhReSameSideEMCALMod(0x0), fhReSameSectorEMCALMod(0x0), fhReDiffPHOSMod(0x0),
72 fhReSameSectorDCALPHOSMod(0),fhReDiffSectorDCALPHOSMod(0),
73 fhMiMod(0x0), fhMiSameSideEMCALMod(0x0), fhMiSameSectorEMCALMod(0x0), fhMiDiffPHOSMod(0x0),
74 fhMiSameSectorDCALPHOSMod(0),fhMiDiffSectorDCALPHOSMod(0),
75 fhReConv(0x0), fhMiConv(0x0), fhReConv2(0x0), fhMiConv2(0x0),
76 fhRe1(0x0), fhMi1(0x0), fhRe2(0x0), fhMi2(0x0),
77 fhRe3(0x0), fhMi3(0x0), fhReInvPt1(0x0), fhMiInvPt1(0x0),
78 fhReInvPt2(0x0), fhMiInvPt2(0x0), fhReInvPt3(0x0), fhMiInvPt3(0x0),
79 fhRePtNCellAsymCuts(0x0), fhMiPtNCellAsymCuts(0x0), fhRePtNCellAsymCutsSM(),
80 fhRePtNCellAsymCutsOpAngle(0x0), fhMiPtNCellAsymCutsOpAngle(0x0),
81 fhRePtAsym(0x0), fhRePtAsymPi0(0x0), fhRePtAsymEta(0x0),
82 fhMiPtAsym(0x0), fhMiPtAsymPi0(0x0), fhMiPtAsymEta(0x0),
83 fhEventBin(0), fhEventMixBin(0),
84 fhCentrality(0x0), fhCentralityNoPair(0x0),
85 fhEventPlaneResolution(0x0),
86 fhRealOpeningAngle(0x0), fhRealCosOpeningAngle(0x0), fhMixedOpeningAngle(0x0), fhMixedCosOpeningAngle(0x0),
88 fhPrimPi0E(0x0), fhPrimPi0Pt(0x0), fhPrimPi0PtInCalo(0x0),
89 fhPrimPi0AccE(0x0), fhPrimPi0AccPt(0x0), fhPrimPi0AccPtPhotonCuts(0x0),
90 fhPrimPi0Y(0x0), fhPrimPi0AccY(0x0),
91 fhPrimPi0Yeta(0x0), fhPrimPi0YetaYcut(0x0), fhPrimPi0AccYeta(0x0),
92 fhPrimPi0Phi(0x0), fhPrimPi0AccPhi(0x0),
93 fhPrimPi0OpeningAngle(0x0), fhPrimPi0OpeningAnglePhotonCuts(0x0),
94 fhPrimPi0OpeningAngleAsym(0x0),fhPrimPi0CosOpeningAngle(0x0),
95 fhPrimPi0PtCentrality(0), fhPrimPi0PtEventPlane(0),
96 fhPrimPi0AccPtCentrality(0), fhPrimPi0AccPtEventPlane(0),
97 fhPrimEtaE(0x0), fhPrimEtaPt(0x0), fhPrimEtaPtInCalo(0x0),
98 fhPrimEtaAccE(0x0), fhPrimEtaAccPt(0x0), fhPrimEtaAccPtPhotonCuts(0x0),
99 fhPrimEtaY(0x0), fhPrimEtaAccY(0x0),
100 fhPrimEtaYeta(0x0), fhPrimEtaYetaYcut(0x0), fhPrimEtaAccYeta(0x0),
101 fhPrimEtaPhi(0x0), fhPrimEtaAccPhi(0x0),
102 fhPrimEtaOpeningAngle(0x0), fhPrimEtaOpeningAnglePhotonCuts(0x0),
103 fhPrimEtaOpeningAngleAsym(0x0),fhPrimEtaCosOpeningAngle(0x0),
104 fhPrimEtaPtCentrality(0), fhPrimEtaPtEventPlane(0),
105 fhPrimEtaAccPtCentrality(0), fhPrimEtaAccPtEventPlane(0),
106 fhPrimPi0PtOrigin(0x0), fhPrimEtaPtOrigin(0x0),
107 fhPrimNotResonancePi0PtOrigin(0x0), fhPrimPi0PtStatus(0x0),
108 fhMCPi0MassPtRec(0x0), fhMCPi0MassPtTrue(0x0),
109 fhMCPi0PtTruePtRec(0x0), fhMCPi0PtTruePtRecMassCut(0x0),
110 fhMCEtaMassPtRec(0x0), fhMCEtaMassPtTrue(0x0),
111 fhMCEtaPtTruePtRec(0x0), fhMCEtaPtTruePtRecMassCut(0x0),
112 fhMCPi0PerCentrality(0), fhMCPi0PerCentralityMassCut(0),
113 fhMCEtaPerCentrality(0), fhMCEtaPerCentralityMassCut(0),
114 fhMCPi0PtTruePtRecRat(0), fhMCPi0PtTruePtRecDif(0), fhMCPi0PtRecOpenAngle(0),
115 fhMCEtaPtTruePtRecRat(0), fhMCEtaPtTruePtRecDif(0), fhMCEtaPtRecOpenAngle(0),
116 fhMCPi0PtTruePtRecRatMassCut(0), fhMCPi0PtTruePtRecDifMassCut(0), fhMCPi0PtRecOpenAngleMassCut(0),
117 fhMCEtaPtTruePtRecRatMassCut(0), fhMCEtaPtTruePtRecDifMassCut(0), fhMCEtaPtRecOpenAngleMassCut(0),
118 fhMCPi0PtOrigin(0), fhMCEtaPtOrigin(0),
119 fhMCNotResonancePi0PtOrigin(0),fhMCPi0PtStatus(0x0),
120 fhMCPi0ProdVertex(0), fhMCEtaProdVertex(0),
121 fhPrimPi0ProdVertex(0), fhPrimEtaProdVertex(0),
122 fhReMCFromConversion(0), fhReMCFromNotConversion(0), fhReMCFromMixConversion(0),
123 fhCosThStarPrimPi0(0), fhCosThStarPrimEta(0),
125 fhReSecondaryCellInTimeWindow(0), fhMiSecondaryCellInTimeWindow(0),
126 fhReSecondaryCellOutTimeWindow(0), fhMiSecondaryCellOutTimeWindow(0)
131 for(
Int_t i = 0; i < 4; i++)
137 for(
Int_t ism = 0; ism < 20; ism++)
143 for(
Int_t icut = 0; icut < 10; icut++)
186 for(
Int_t igen = 0; igen < 10; igen++)
188 for(
Int_t itag = 0; itag < 10; itag++)
308 const Int_t buffersize = 255;
309 char onePar[buffersize] ;
310 snprintf(onePar,buffersize,
"--- AliAnaPi0 ---:") ;
312 snprintf(onePar,buffersize,
"Number of bins in Centrality: %d;",
GetNCentrBin()) ;
314 snprintf(onePar,buffersize,
"Number of bins in Z vert. pos: %d;",
GetNZvertBin()) ;
316 snprintf(onePar,buffersize,
"Number of bins in Reac. Plain: %d;",
GetNRPBin()) ;
318 snprintf(onePar,buffersize,
"Depth of event buffer: %d;",
GetNMaxEvMix()) ;
322 snprintf(onePar,buffersize,
" Asymmetry cuts: n = %d, asymmetry < ",
fNAsymCuts) ;
325 snprintf(onePar,buffersize,
" PID selection bits: n = %d, PID bit =",
fNPIDBits) ;
328 snprintf(onePar,buffersize,
"Cuts:") ;
334 snprintf(onePar,buffersize,
"Number of modules: %d:",
fNModules) ;
338 snprintf(onePar, buffersize,
" pT cuts: n = %d, pt > ",
fNPtCuts) ;
341 snprintf(onePar,buffersize,
" N cell in cluster cuts: n = %d, nCell > ",
fNCellNCuts) ;
346 return new TObjString(parList) ;
356 outputContainer->SetName(GetName());
359 const Int_t buffersize = 255;
360 char key[buffersize] ;
361 char title[buffersize] ;
401 Int_t netabinsopen = TMath::Nint(netabins*4/(etamax-etamin));
402 Int_t nphibinsopen = TMath::Nint(nphibins*TMath::TwoPi()/(phimax-phimin));
410 fhPrimPi0E =
new TH1F(
"hPrimPi0E",
"Primary #pi^{0} E, |#it{Y}|<1",
411 nptbins,ptmin,ptmax) ;
415 fhPrimPi0Pt =
new TH1F(
"hPrimPi0Pt",
"Primary #pi^{0} #it{p}_{T} , |#it{Y}|<1",
416 nptbins,ptmin,ptmax) ;
417 fhPrimPi0Pt ->SetXTitle(
"#it{p}_{T} (GeV/#it{c})");
420 fhPrimPi0Y =
new TH2F(
"hPrimPi0Rapidity",
"Rapidity of primary #pi^{0}",
421 nptbins,ptmin,ptmax,netabinsopen,-2, 2) ;
423 fhPrimPi0Y ->SetXTitle(
"#it{p}_{T} (GeV/#it{c})");
426 fhPrimPi0Yeta =
new TH2F(
"hPrimPi0PseudoRapidity",
"PseudoRapidity of primary #pi^{0}",
427 nptbins,ptmin,ptmax,netabinsopen,-2, 2) ;
432 fhPrimPi0YetaYcut =
new TH2F(
"hPrimPi0PseudoRapidityYcut",
"PseudoRapidity of primary #pi^{0}, |#it{Y}|<1",
433 nptbins,ptmin,ptmax,netabinsopen,-2, 2) ;
438 fhPrimPi0Phi =
new TH2F(
"hPrimPi0Phi",
"#phi of primary #pi^{0}, |#it{Y}|<1",
439 nptbins,ptmin,ptmax,nphibinsopen,0,360) ;
446 fhPrimPi0PtInCalo =
new TH1F(
"hPrimPi0PtInCalo",
"Primary #pi^{0} #it{p}_{T} , in calorimeter acceptance",
447 nptbins,ptmin,ptmax) ;
451 fhPrimPi0AccE =
new TH1F(
"hPrimPi0AccE",
"Primary #pi^{0} #it{E} with both photons in acceptance",
452 nptbins,ptmin,ptmax) ;
456 fhPrimPi0AccPt =
new TH1F(
"hPrimPi0AccPt",
"Primary #pi^{0} #it{p}_{T} with both photons in acceptance",
457 nptbins,ptmin,ptmax) ;
461 fhPrimPi0AccPtPhotonCuts =
new TH1F(
"hPrimPi0AccPtPhotonCuts",
"Primary #pi^{0} #it{p}_{T} with both photons in acceptance",
462 nptbins,ptmin,ptmax) ;
466 fhPrimPi0AccY =
new TH2F(
"hPrimPi0AccRapidity",
"Rapidity of primary #pi^{0} with accepted daughters",
467 nptbins,ptmin,ptmax,netabins,etamin,etamax) ;
472 fhPrimPi0AccYeta =
new TH2F(
"hPrimPi0AccPseudoRapidity",
"PseudoRapidity of primary #pi^{0} with accepted daughters",
473 nptbins,ptmin,ptmax,netabins,etamin,etamax) ;
478 fhPrimPi0AccPhi =
new TH2F(
"hPrimPi0AccPhi",
"#phi of primary #pi^{0} with accepted daughters",
480 nphibins,phimin*TMath::RadToDeg(),phimax*TMath::RadToDeg()) ;
488 fhPrimEtaE =
new TH1F(
"hPrimEtaE",
"Primary eta E",
489 nptbins,ptmin,ptmax) ;
493 fhPrimEtaPt =
new TH1F(
"hPrimEtaPt",
"Primary #eta #it{p}_{T}",
494 nptbins,ptmin,ptmax) ;
495 fhPrimEtaPt ->SetXTitle(
"#it{p}_{T} (GeV/#it{c})");
498 fhPrimEtaY =
new TH2F(
"hPrimEtaRapidity",
"Rapidity of primary #eta",
499 nptbins,ptmin,ptmax,netabinsopen,-2, 2) ;
501 fhPrimEtaY->SetXTitle(
"#it{p}_{T} (GeV/#it{c})");
504 fhPrimEtaYeta =
new TH2F(
"hPrimEtaPseudoRapidityEta",
"PseudoRapidity of primary #eta",
505 nptbins,ptmin,ptmax,netabinsopen,-2, 2) ;
510 fhPrimEtaYetaYcut =
new TH2F(
"hPrimEtaPseudoRapidityEtaYcut",
"PseudoRapidity of primary #eta, |#it{Y}|<1",
511 nptbins,ptmin,ptmax,netabinsopen,-2, 2) ;
517 nptbins,ptmin,ptmax, nphibinsopen,0,360) ;
524 fhPrimEtaPtInCalo =
new TH1F(
"hPrimEtaPtInCalo",
"Primary #eta #it{p}_{T}, in calorimeter acceptance",
525 nptbins,ptmin,ptmax) ;
529 fhPrimEtaAccE =
new TH1F(
"hPrimEtaAccE",
"Primary #eta #it{E} with both photons in acceptance",
530 nptbins,ptmin,ptmax) ;
534 fhPrimEtaAccPt =
new TH1F(
"hPrimEtaAccPt",
"Primary eta #it{p}_{T} with both photons in acceptance",
535 nptbins,ptmin,ptmax) ;
539 fhPrimEtaAccPtPhotonCuts =
new TH1F(
"hPrimEtaAccPtPhotonCuts",
"Primary eta #it{p}_{T} with both photons in acceptance",
540 nptbins,ptmin,ptmax) ;
544 fhPrimEtaAccPhi =
new TH2F(
"hPrimEtaAccPhi",
"Azimuthal of primary #eta with accepted daughters",
545 nptbins,ptmin,ptmax, nphibins,phimin*TMath::RadToDeg(),phimax*TMath::RadToDeg()) ;
551 nptbins,ptmin,ptmax, netabins,etamin,etamax) ;
557 nptbins,ptmin,ptmax, netabins,etamin,etamax) ;
567 nptbins,ptmin,ptmax, 100, 0, 100) ;
573 nptbins,ptmin,ptmax, 100, 0, 100) ;
579 fhPrimPi0PtEventPlane =
new TH2F(
"hPrimPi0PtEventPlane",
"Primary #pi^{0} #it{p}_{T} vs reco event plane angle, |#it{Y}|<1",
580 nptbins,ptmin,ptmax, 100, 0, TMath::Pi()) ;
587 nptbins,ptmin,ptmax, 100, 0, TMath::Pi()) ;
594 fhPrimPi0AccPtCentrality =
new TH2F(
"hPrimPi0AccPtCentrality",
"Primary #pi^{0} with both photons in acceptance #it{p}_{T} vs reco centrality",
595 nptbins,ptmin,ptmax, 100, 0, 100) ;
600 fhPrimEtaAccPtCentrality =
new TH2F(
"hPrimEtaAccPtCentrality",
"Primary #eta with both photons in acceptance #it{p}_{T} vs reco centrality",
601 nptbins,ptmin,ptmax, 100, 0, 100) ;
606 fhPrimPi0AccPtEventPlane =
new TH2F(
"hPrimPi0AccPtEventPlane",
"Primary #pi^{0} with both photons in acceptance #it{p}_{T} vs reco event plane angle",
607 nptbins,ptmin,ptmax, 100, 0, TMath::Pi()) ;
612 fhPrimEtaAccPtEventPlane =
new TH2F(
"hPrimEtaAccPtEventPlane",
"Primary #eta with both #gamma_{decay} in acceptance #it{p}_{T} vs reco event plane angle",
613 nptbins,ptmin,ptmax, 100, 0, TMath::Pi()) ;
623 (
"hPrimPi0OpeningAngle",
"Angle between all primary #gamma pair vs E_{#pi^{0}}, in acceptance",
624 nptbins,ptmin,ptmax,nopanbins,opanmin,opanmax);
630 (
"hPrimPi0OpeningAnglePhotonCuts",
"Angle between all primary #gamma pair vs E_{#pi^{0}} in acceptance",
631 nptbins,ptmin,ptmax,nopanbins,opanmin,opanmax);
637 (
"hPrimPi0OpeningAngleAsym",
"Angle between all primary #gamma pair vs #it{Asymmetry}, in acceptance, #it{p}_{T}>5 GeV/#it{c}",
638 100,0,1,nopanbins,opanmin,opanmax);
644 (
"hPrimPi0CosOpeningAngle",
"Cosinus of angle between all primary #gamma pair vs E_{#pi^{0}}, in acceptance",
645 nptbins,ptmin,ptmax,100,-1,1);
651 (
"hPrimEtaOpeningAngle",
"Angle between all primary #gamma pair vs E_{#eta}, in acceptance",
652 nptbins,ptmin,ptmax,nopanbins,opanmin,opanmax);
658 (
"hPrimEtaOpeningAnglePhotonCuts",
"Angle between all primary #gamma pair vs E_{#eta}, in acceptance",
659 nptbins,ptmin,ptmax,nopanbins,opanmin,opanmax);
665 (
"hPrimEtaOpeningAngleAsym",
"Angle between all primary #gamma pair vs #it{Asymmetry}, #it{p}_{T}>5 GeV/#it{c}, in acceptance",
666 100,0,1,nopanbins,opanmin,opanmax);
672 (
"hPrimEtaCosOpeningAngle",
"Cosinus of angle between all primary #gamma pair vs E_{#eta}, in acceptance",
673 nptbins,ptmin,ptmax,100,-1,1);
683 fhPrimPi0PtOrigin =
new TH2F(
"hPrimPi0PtOrigin",
"Primary #pi^{0} #it{p}_{T} vs origin",nptbins,ptmin,ptmax,11,0,11) ;
713 fhPrimPi0PtStatus =
new TH2F(
"hPrimPi0PtStatus",
"Primary #pi^{0} #it{p}_{T} vs status",nptbins,ptmin,ptmax,101,-50,50) ;
719 fhPrimEtaPtOrigin =
new TH2F(
"hPrimEtaPtOrigin",
"Primary #pi^{0} #it{p}_{T} vs origin",nptbins,ptmin,ptmax,7,0,7) ;
732 200,0.,20.,5000,0,500) ;
738 200,0.,20.,5000,0,500) ;
746 TString ebin[] = {
"8 < E < 12 GeV",
"12 < E < 16 GeV",
"16 < E < 20 GeV",
"E > 20 GeV" };
747 Int_t narmbins = 400;
751 for(
Int_t i = 0; i < 4; i++)
754 Form(
"Armenteros of primary #pi^{0}, %s",ebin[i].
Data()),
755 200, -1, 1, narmbins,armmin,armmax);
761 Form(
"Armenteros of primary #eta, %s",ebin[i].
Data()),
762 200, -1, 1, narmbins,armmin,armmax);
770 (
"hCosThStarPrimPi0",
"cos(#theta *) for primary #pi^{0}",nptbins,ptmin,ptmax,200,-1,1);
776 (
"hCosThStarPrimEta",
"cos(#theta *) for primary #eta",nptbins,ptmin,ptmax,200,-1,1);
857 nptbins,ptmin,ptmax,nmassbins,massmin,massmax) ;
863 nptbins,ptmin,ptmax,nmassbins,massmin,massmax) ;
871 nptbins,ptmin,ptmax,nmassbins,massmin,massmax) ;
877 nptbins,ptmin,ptmax,nmassbins,massmin,massmax) ;
887 fhReConv =
new TH2F(
"hReConv",
"Real Pair with one recombined conversion ",nptbins,ptmin,ptmax,nmassbins,massmin,massmax) ;
888 fhReConv->SetXTitle(
"#it{p}_{T} (GeV/#it{c})");
889 fhReConv->SetYTitle(
"#it{M}_{#gamma,#gamma} (GeV/#it{c}^{2})");
892 fhReConv2 =
new TH2F(
"hReConv2",
"Real Pair with 2 recombined conversion ",nptbins,ptmin,ptmax,nmassbins,massmin,massmax) ;
893 fhReConv2->SetXTitle(
"#it{p}_{T} (GeV/#it{c})");
894 fhReConv2->SetYTitle(
"#it{M}_{#gamma,#gamma} (GeV/#it{c}^{2})");
899 fhMiConv =
new TH2F(
"hMiConv",
"Mixed Pair with one recombined conversion ",nptbins,ptmin,ptmax,nmassbins,massmin,massmax) ;
900 fhMiConv->SetXTitle(
"#it{p}_{T} (GeV/#it{c})");
901 fhMiConv->SetYTitle(
"#it{M}_{#gamma,#gamma} (GeV/#it{c}^{2})");
904 fhMiConv2 =
new TH2F(
"hMiConv2",
"Mixed Pair with 2 recombined conversion ",nptbins,ptmin,ptmax,nmassbins,massmin,massmax) ;
905 fhMiConv2->SetXTitle(
"#it{p}_{T} (GeV/#it{c})");
906 fhMiConv2->SetYTitle(
"#it{M}_{#gamma,#gamma} (GeV/#it{c}^{2})");
920 snprintf(key, buffersize,
"hRe_cen%d_pidbit%d_asy%d_dist1",ic,ipid,iasym) ;
921 snprintf(title, buffersize,
"Real #it{M}_{#gamma#gamma} distr. for centrality=%d, PID bit=%d and asymmetry %1.2f, dist bad 1",
923 fhRe1[index] =
new TH2F(key,title,nptbins,ptmin,ptmax,nmassbins,massmin,massmax) ;
924 fhRe1[index]->SetXTitle(
"#it{p}_{T} (GeV/#it{c})");
925 fhRe1[index]->SetYTitle(
"#it{M}_{#gamma,#gamma} (GeV/#it{c}^{2})");
927 outputContainer->Add(
fhRe1[index]) ;
932 snprintf(key, buffersize,
"hRe_cen%d_pidbit%d_asy%d_dist2",ic,ipid,iasym) ;
933 snprintf(title, buffersize,
"Real #it{M}_{#gamma#gamma} distr. for centrality=%d, PID bit=%d and asymmetry %1.2f, dist bad 2",
935 fhRe2[index] =
new TH2F(key,title,nptbins,ptmin,ptmax,nmassbins,massmin,massmax) ;
936 fhRe2[index]->SetXTitle(
"#it{p}_{T} (GeV/#it{c})");
937 fhRe2[index]->SetYTitle(
"#it{M}_{#gamma,#gamma} (GeV/#it{c}^{2})");
938 outputContainer->Add(
fhRe2[index]) ;
941 snprintf(key, buffersize,
"hRe_cen%d_pidbit%d_asy%d_dist3",ic,ipid,iasym) ;
942 snprintf(title, buffersize,
"Real #it{M}_{#gamma#gamma} distr. for centrality=%d, PID bit=%d and asymmetry %1.2f, dist bad 3",
944 fhRe3[index] =
new TH2F(key,title,nptbins,ptmin,ptmax,nmassbins,massmin,massmax) ;
945 fhRe3[index]->SetXTitle(
"#it{p}_{T} (GeV/#it{c})");
946 fhRe3[index]->SetYTitle(
"#it{M}_{#gamma,#gamma} (GeV/#it{c}^{2})");
947 outputContainer->Add(
fhRe3[index]) ;
954 snprintf(key, buffersize,
"hReInvPt_cen%d_pidbit%d_asy%d_dist1",ic,ipid,iasym) ;
955 snprintf(title, buffersize,
"Real #it{M}_{#gamma#gamma} distr. for centrality=%d, PID bit=%d and asymmetry %1.2f, dist bad 1",
957 fhReInvPt1[index] =
new TH2F(key,title,nptbins,ptmin,ptmax,nmassbins,massmin,massmax) ;
958 fhReInvPt1[index]->SetXTitle(
"#it{p}_{T} (GeV/#it{c})");
959 fhReInvPt1[index]->SetYTitle(
"#it{M}_{#gamma,#gamma} (GeV/#it{c}^{2})");
964 snprintf(key, buffersize,
"hReInvPt_cen%d_pidbit%d_asy%d_dist2",ic,ipid,iasym) ;
965 snprintf(title, buffersize,
"Real #it{M}_{#gamma#gamma} distr. for centrality=%d, PID bit=%d and asymmetry %1.2f, dist bad 2",
967 fhReInvPt2[index] =
new TH2F(key,title,nptbins,ptmin,ptmax,nmassbins,massmin,massmax) ;
968 fhReInvPt2[index]->SetXTitle(
"#it{p}_{T} (GeV/#it{c})");
969 fhReInvPt2[index]->SetYTitle(
"#it{M}_{#gamma,#gamma} (GeV/#it{c}^{2})");
973 snprintf(key, buffersize,
"hReInvPt_cen%d_pidbit%d_asy%d_dist3",ic,ipid,iasym) ;
974 snprintf(title, buffersize,
"Real #it{M}_{#gamma#gamma} distr. for centrality=%d, PID bit=%d and asymmetry %1.2f, dist bad 3",
976 fhReInvPt3[index] =
new TH2F(key,title,nptbins,ptmin,ptmax,nmassbins,massmin,massmax) ;
977 fhReInvPt3[index]->SetXTitle(
"#it{p}_{T} (GeV/#it{c})");
978 fhReInvPt3[index]->SetYTitle(
"#it{M}_{#gamma,#gamma} (GeV/#it{c}^{2})");
986 snprintf(key, buffersize,
"hMi_cen%d_pidbit%d_asy%d_dist1",ic,ipid,iasym) ;
987 snprintf(title, buffersize,
"Mixed #it{M}_{#gamma#gamma} distr. for centrality=%d, PID bit=%d and asymmetry %1.2f, dist bad 1",
989 fhMi1[index] =
new TH2F(key,title,nptbins,ptmin,ptmax,nmassbins,massmin,massmax) ;
990 fhMi1[index]->SetXTitle(
"#it{p}_{T} (GeV/#it{c})");
991 fhMi1[index]->SetYTitle(
"#it{M}_{#gamma,#gamma} (GeV/#it{c}^{2})");
992 outputContainer->Add(
fhMi1[index]) ;
995 snprintf(key, buffersize,
"hMi_cen%d_pidbit%d_asy%d_dist2",ic,ipid,iasym) ;
996 snprintf(title, buffersize,
"Mixed #it{M}_{#gamma#gamma} distr. for centrality=%d, PID bit=%d and asymmetry %1.2f, dist bad 2",
998 fhMi2[index] =
new TH2F(key,title,nptbins,ptmin,ptmax,nmassbins,massmin,massmax) ;
999 fhMi2[index]->SetXTitle(
"#it{p}_{T} (GeV/#it{c})");
1000 fhMi2[index]->SetYTitle(
"#it{M}_{#gamma,#gamma} (GeV/#it{c}^{2})");
1001 outputContainer->Add(
fhMi2[index]) ;
1004 snprintf(key, buffersize,
"hMi_cen%d_pidbit%d_asy%d_dist3",ic,ipid,iasym) ;
1005 snprintf(title, buffersize,
"Mixed #it{M}_{#gamma#gamma} distr. for centrality=%d, PID bit=%d and asymmetry %1.2f, dist bad 3",
1007 fhMi3[index] =
new TH2F(key,title,nptbins,ptmin,ptmax,nmassbins,massmin,massmax) ;
1008 fhMi3[index]->SetXTitle(
"#it{p}_{T} (GeV/#it{c})");
1009 fhMi3[index]->SetYTitle(
"#it{M}_{#gamma,#gamma} (GeV/#it{c}^{2})");
1010 outputContainer->Add(
fhMi3[index]) ;
1017 snprintf(key, buffersize,
"hMiInvPt_cen%d_pidbit%d_asy%d_dist1",ic,ipid,iasym) ;
1018 snprintf(title, buffersize,
"Mixed #it{M}_{#gamma#gamma} distr. for centrality=%d, PID bit=%d and asymmetry %1.2f, dist bad 1",
1020 fhMiInvPt1[index] =
new TH2F(key,title,nptbins,ptmin,ptmax,nmassbins,massmin,massmax) ;
1021 fhMiInvPt1[index]->SetXTitle(
"#it{p}_{T} (GeV/#it{c})");
1022 fhMiInvPt1[index]->SetYTitle(
"#it{M}_{#gamma,#gamma} (GeV/#it{c}^{2})");
1026 snprintf(key, buffersize,
"hMiInvPt_cen%d_pidbit%d_asy%d_dist2",ic,ipid,iasym) ;
1027 snprintf(title, buffersize,
"Mixed #it{M}_{#gamma#gamma} distr. for centrality=%d, PID bit=%d and asymmetry %1.2f, dist bad 2",
1029 fhMiInvPt2[index] =
new TH2F(key,title,nptbins,ptmin,ptmax,nmassbins,massmin,massmax) ;
1030 fhMiInvPt2[index]->SetXTitle(
"#it{p}_{T} (GeV/#it{c})");
1031 fhMiInvPt2[index]->SetYTitle(
"#it{M}_{#gamma,#gamma} (GeV/#it{c}^{2})");
1035 snprintf(key, buffersize,
"hMiInvPt_cen%d_pidbit%d_asy%d_dist3",ic,ipid,iasym) ;
1036 snprintf(title, buffersize,
"Mixed #it{M}_{#gamma#gamma} distr. for centrality=%d, PID bit=%d and asymmetry %1.2f,dist bad 3",
1038 fhMiInvPt3[index] =
new TH2F(key,title,nptbins,ptmin,ptmax,nmassbins,massmin,massmax) ;
1039 fhMiInvPt3[index]->SetXTitle(
"#it{p}_{T} (GeV/#it{c})");
1040 fhMiInvPt3[index]->SetYTitle(
"#it{M}_{#gamma,#gamma} (GeV/#it{c}^{2})");
1049 fhEPairDiffTime =
new TH2F(
"hEPairDiffTime",
"cluster pair time difference vs #it{p}_{T}",nptbins,ptmin,ptmax, tdbins,tdmin,tdmax);
1056 fhRePtAsym =
new TH2F(
"hRePtAsym",
"#it{Asymmetry} vs #it{p}_{T}, for pairs",
1057 nptbins,ptmin,ptmax,nasymbins,asymmin,asymmax) ;
1058 fhRePtAsym->SetXTitle(
"#it{p}_{T} (GeV/#it{c})");
1062 fhRePtAsymPi0 =
new TH2F(
"hRePtAsymPi0",Form(
"#it{Asymmetry} vs #it{p}_{T}, for pairs %2.2f<M<%2.2f MeV/#it{c}^{2}",
1064 nptbins,ptmin,ptmax,nasymbins,asymmin,asymmax) ;
1069 fhRePtAsymEta =
new TH2F(
"hRePtAsymEta",Form(
"#it{Asymmetry} vs #it{p}_{T}, for pairs %2.2f<M<%2.2f MeV/#it{c}^{2}",
1071 nptbins,ptmin,ptmax,nasymbins,asymmin,asymmax) ;
1078 fhMiPtAsym =
new TH2F(
"hMiPtAsym",
"#it{Asymmetry} vs #it{p}_{T}, for mixed pairs",nptbins,ptmin,ptmax,nasymbins,asymmin,asymmax) ;
1079 fhMiPtAsym->SetXTitle(
"#it{p}_{T} (GeV/#it{c})");
1083 fhMiPtAsymPi0 =
new TH2F(
"hMiPtAsymPi0",Form(
"#it{Asymmetry} vs #it{p}_{T}, for mixed pairs %2.2f<M<%2.2f MeV/#it{c}^{2}",
1085 nptbins,ptmin,ptmax,nasymbins,asymmin,asymmax) ;
1091 Form(
"#it{Asymmetry} vs #it{p}_{T}, for mixed pairs %2.2f<M<%2.2f MeV/#it{c}^{2}",
1093 nptbins,ptmin,ptmax,nasymbins,asymmin,asymmax) ;
1105 (Form(
"hPtBin%d_Cluster_EtaPhi",ipt),
1106 Form(
"#eta vs #phi, %2.2f<#it{p}_{T}<%2.2f GeV/#it{c}",
fPtCuts[ipt],
fPtCuts[ipt+1]),
1107 netabins,etamin,etamax,nphibins,phimin,phimax);
1113 (Form(
"hPtBin%d_Cluster_ColRow",ipt),
1114 Form(
"column vs row, %2.2f<#it{p}_{T}<%2.2f GeV/#it{c}",
fPtCuts[ipt],
fPtCuts[ipt+1]),
1115 96+2,-1.5,96+0.5,(8*24+2*8)+2,-1.5,(8*24+2*8)+0.5);
1148 snprintf(key, buffersize,
"hRe_pt%d_cell%d_asym%d",ipt,icell,iasym) ;
1149 snprintf(title, buffersize,
"Real #it{M}_{#gamma#gamma} distr. for %1.1f< #it{p}_{T} < %1.1f, ncell>%d and asym<%1.2f ",
1162 snprintf(key, buffersize,
"hMi_pt%d_cell%d_asym%d",ipt,icell,iasym) ;
1163 snprintf(title, buffersize,
"Mixed #it{M}_{#gamma#gamma} distr. for %1.1f< #it{p}_{T} < %1.1f, ncell>%d and asym<%1.2f",
1177 snprintf(key, buffersize,
"hRe_pt%d_cell%d_asym%d_SM%d",ipt,icell,iasym,iSM) ;
1178 snprintf(title, buffersize,
"Real #it{M}_{#gamma#gamma} distr. for %1.1f< #it{p}_{T} < %1.1f, ncell>%d and asym<%1.2f, SM %d ",
1188 snprintf(key, buffersize,
"hReOpAngle_pt%d_cell%d_asym%d",ipt,icell,iasym) ;
1189 snprintf(title, buffersize,
"Real #theta_{#gamma#gamma} distr. for %1.1f< #it{p}_{T} < %1.1f, ncell>%d and asym<%1.2f ",
1202 snprintf(key, buffersize,
"hMiOpAngle_pt%d_cell%d_asym%d",ipt,icell,iasym) ;
1203 snprintf(title, buffersize,
"Mixed #theta_{#gamma#gamma} distr. for %1.1f< #it{p}_{T} < %1.1f, ncell>%d and asym<%1.2f",
1216 snprintf(key, buffersize,
"hReOpAngle_pt%d_cell%d_asym%d_SM%d",ipt,icell,iasym,iSM) ;
1217 snprintf(title, buffersize,
"Real #it{M}_{#gamma#gamma} distr. for %1.1f< #it{p}_{T} < %1.1f, ncell>%d and asym<%1.2f, SM %d ",
1235 fhReSS[0] =
new TH2F(
"hRe_SS_Tight",
" 0.01 < #lambda_{0}^{2} < 0.4",
1236 nptbins,ptmin,ptmax,nmassbins,massmin,massmax);
1237 fhReSS[0]->SetXTitle(
"#it{p}_{T} (GeV/#it{c})");
1238 fhReSS[0]->SetYTitle(
"#it{M}_{#gamma,#gamma} (GeV/#it{c}^{2})");
1239 outputContainer->Add(
fhReSS[0]) ;
1242 fhReSS[1] =
new TH2F(
"hRe_SS_Loose",
" #lambda_{0}^{2} > 0.4",
1243 nptbins,ptmin,ptmax,nmassbins,massmin,massmax);
1244 fhReSS[1]->SetXTitle(
"#it{p}_{T} (GeV/#it{c})");
1245 fhReSS[1]->SetYTitle(
"#it{M}_{#gamma,#gamma} (GeV/#it{c}^{2})");
1246 outputContainer->Add(
fhReSS[1]) ;
1249 fhReSS[2] =
new TH2F(
"hRe_SS_Both",
" cluster_{1} #lambda_{0}^{2} > 0.4; cluster_{2} 0.01 < #lambda_{0}^{2} < 0.4",
1250 nptbins,ptmin,ptmax,nmassbins,massmin,massmax);
1251 fhReSS[2]->SetXTitle(
"#it{p}_{T} (GeV/#it{c})");
1252 fhReSS[2]->SetYTitle(
"#it{M}_{#gamma,#gamma} (GeV/#it{c}^{2})");
1253 outputContainer->Add(
fhReSS[2]) ;
1258 fhEventBin=
new TH1I(
"hEventBin",
"Number of real pairs per bin(cen,vz,rp)",
1265 fhEventMixBin=
new TH1I(
"hEventMixBin",
"Number of mixed pairs per bin(cen,vz,rp)",
1291 (
"hRealOpeningAngle",
"Angle between all #gamma pair vs E_{#pi^{0}}",nptbins,ptmin,ptmax,nopanbins,opanmin,opanmax);
1297 (
"hRealCosOpeningAngle",
"Cosinus of angle between all #gamma pair vs E_{#pi^{0}}",nptbins,ptmin,ptmax,100,0,1);
1305 (
"hMixedOpeningAngle",
"Angle between all #gamma pair vs E_{#pi^{0}}, Mixed pairs",nptbins,ptmin,ptmax,nopanbins,opanmin,opanmax);
1311 (
"hMixedCosOpeningAngle",
"Cosinus of angle between all #gamma pair vs E_{#pi^{0}}, Mixed pairs",nptbins,ptmin,ptmax,100,0,1);
1319 for(
Int_t ism = 0; ism < 20; ism++)
1322 (Form(
"hRealOpeningAngleMod_%d",ism),
1323 Form(
"Angle between all #gamma pair vs E_{#pi^{0}}, SM %d",ism),
1324 nptbins,ptmin,ptmax,nopanbins,opanmin,opanmax);
1332 (Form(
"hMixedOpeningAngleMod_%d",ism),
1333 Form(
"Angle between all #gamma pair vs E_{#pi^{0}}, Mixed pairs, SM %d",ism),
1334 nptbins,ptmin,ptmax,nopanbins,opanmin,opanmax);
1347 nptbins,ptmin,ptmax,nmassbins,massmin,massmax);
1353 nptbins,ptmin,ptmax,nmassbins,massmin,massmax);
1359 nptbins,ptmin,ptmax,nmassbins,massmin,massmax);
1366 fhMCPi0PtOrigin =
new TH2F(
"hMCPi0PtOrigin",
"Reconstructed pair from generated #pi^{0} #it{p}_{T} vs origin",nptbins,ptmin,ptmax,11,0,11) ;
1381 fhMCNotResonancePi0PtOrigin =
new TH2F(
"hMCNotResonancePi0PtOrigin",
"Reconstructed pair from generated #pi^{0} #it{p}_{T} vs origin",nptbins,ptmin,ptmax,11,0,11) ;
1396 fhMCPi0PtStatus =
new TH2F(
"hMCPi0PtStatus",
"Reconstructed pair from generated #pi^{0} #it{p}_{T} vs status",nptbins,ptmin,ptmax,101,-50,50) ;
1403 fhMCEtaPtOrigin =
new TH2F(
"hMCEtaPtOrigin",
"Reconstructed pair from generated #pi^{0} #it{p}_{T} vs origin",nptbins,ptmin,ptmax,7,0,7) ;
1414 fhMCPi0ProdVertex =
new TH2F(
"hMCPi0ProdVertex",
"Selected reco pair from generated #pi^{0} #it{p}_{T} vs production vertex",
1415 200,0.,20.,5000,0,500) ;
1420 fhMCEtaProdVertex =
new TH2F(
"hMCEtaProdVertex",
"Selected reco pair from generated #eta #it{p}_{T} vs production vertex",
1421 200,0.,20.,5000,0,500) ;
1427 TString ancestorTitle[] = {
"Photon",
"Electron",
"Pi0",
"Eta",
"AntiProton",
"AntiNeutron",
"Muon & converted stable particles",
1428 "Resonances",
"Strings",
"Initial state interaction",
"Final state radiations",
"Colliding protons",
"not found"};
1430 for(
Int_t i = 0; i<13; i++)
1432 fhMCOrgMass[i] =
new TH2F(Form(
"hMCOrgMass_%d",i),Form(
"#it{M} vs #it{p}_{T}, ancestor %s",ancestorTitle[i].
Data()),
1433 nptbins,ptmin,ptmax,nmassbins,massmin,massmax) ;
1434 fhMCOrgMass[i]->SetXTitle(
"#it{p}_{T} (GeV/#it{c})");
1435 fhMCOrgMass[i]->SetYTitle(
"#it{M}_{#gamma,#gamma} (GeV/#it{c}^{2})");
1438 fhMCOrgAsym[i]=
new TH2F(Form(
"hMCOrgAsym_%d",i),Form(
"#it{Asymmetry} vs #it{p}_{T}, ancestor %s",ancestorTitle[i].
Data()),
1439 nptbins,ptmin,ptmax,nasymbins,asymmin,asymmax) ;
1440 fhMCOrgAsym[i]->SetXTitle(
"#it{p}_{T} (GeV/#it{c})");
1444 fhMCOrgDeltaEta[i] =
new TH2F(Form(
"hMCOrgDeltaEta_%d",i),Form(
"#Delta #eta of pair vs #it{p}_{T}, ancestor %s",ancestorTitle[i].
Data()),
1445 nptbins,ptmin,ptmax,netabins,-1.4,1.4) ;
1450 fhMCOrgDeltaPhi[i]=
new TH2F(Form(
"hMCOrgDeltaPhi_%d",i),Form(
"#Delta #phi of pair vs #it{p}_{T}, ancestor %s",ancestorTitle[i].
Data()),
1451 nptbins,ptmin,ptmax,nphibins,-0.7,0.7) ;
1478 Form(
"Reconstructed #it{M} vs reconstructed #it{p}_{T} of true #pi^{0} cluster pairs for %1.1f<#it{p}_{T}<%1.1f, #it{N}^{cluster}_{cell}>%d and |#it{A}|<%1.2f",
1480 nptbins,ptmin,ptmax,nmassbins,massmin,massmax) ;
1481 fhMCPi0MassPtRec[index]->SetXTitle(
"#it{p}_{T, reconstructed} (GeV/#it{c})");
1482 fhMCPi0MassPtRec[index]->SetYTitle(
"#it{M}_{#gamma,#gamma} (GeV/#it{c}^{2})");
1486 Form(
"Reconstructed #it{M} vs generated #it{p}_{T} of true #pi^{0} cluster pairs for %1.1f<#it{p}_{T}<%1.1f, #it{N}^{cluster}_{cell}>%d and |#it{A}|<%1.2f",
1488 nptbins,ptmin,ptmax,nmassbins,massmin,massmax) ;
1494 Form(
"Generated vs reconstructed #it{p}_{T} of true #pi^{0} cluster pairs for %1.1f<#it{p}_{T}<%1.1f, #it{N}^{cluster}_{cell}>%d and |#it{A}|>%1.2f",
1496 nptbins,ptmin,ptmax,nptbins,ptmin,ptmax) ;
1502 Form(
"Generated vs reconstructed #it{p}_{T} of true #pi^{0} cluster pairs, %2.2f < rec. mass < %2.2f MeV/#it{c}^{2} for %1.1f<#it{p}_{T}<%1.1f, #it{N}^{cluster}_{cell}>%d and |#it{A}|>%1.2f",
1504 nptbins,ptmin,ptmax,nptbins,ptmin,ptmax) ;
1510 Form(
"Reconstructed #it{M} vs reconstructed #it{p}_{T} of true #eta cluster pairs for %1.1f<#it{p}_{T}<%1.1f, #it{N}^{cluster}_{cell}>%d and |#it{A}|<%1.2f",
1512 nptbins,ptmin,ptmax,nmassbins,massmin,massmax) ;
1514 fhMCEtaMassPtRec[index]->SetYTitle(
"#it{M}_{#gamma,#gamma} (GeV/#it{c}^{2})");
1518 Form(
"Reconstructed #it{M} vs generated #it{p}_{T} of true #eta cluster pairs for %1.1f<#it{p}_{T}<%1.1f, #it{N}^{cluster}_{cell}>%d and |#it{A}|<%1.2f",
1520 nptbins,ptmin,ptmax,nmassbins,massmin,massmax) ;
1526 Form(
"Generated vs reconstructed #it{p}_{T} of true #eta cluster pairs for %1.1f<#it{p}_{T}<%1.1f, ncell>%d and asym<%1.2f",
1528 nptbins,ptmin,ptmax,nptbins,ptmin,ptmax) ;
1535 Form(
"Generated vs reconstructed #it{p}_{T} of true #eta cluster pairs, %2.2f < rec. mass < %2.2f MeV/#it{c}^{2} for %1.1f<#it{p}_{T}<%1.1f, ncell>%d and asym<%1.2f",
1537 nptbins,ptmin,ptmax,nptbins,ptmin,ptmax) ;
1557 fhMCPi0MassPtTrue[0] =
new TH2F(
"hMCPi0MassPtTrue",
"Reconstructed Mass vs generated #it{p}_{T} of true #pi^{0} cluster pairs",
1558 nptbins,ptmin,ptmax,nmassbins,massmin,massmax) ;
1563 fhMCPi0MassPtRec[0] =
new TH2F(
"hMCPi0MassPtRec",
"Reconstructed Mass vs reconstructed #it{p}_{T} of true #pi^{0} cluster pairs",
1564 nptbins,ptmin,ptmax,nmassbins,massmin,massmax) ;
1569 fhMCPi0PtTruePtRec[0]=
new TH2F(
"hMCPi0PtTruePtRec",
"Generated vs reconstructed #it{p}_{T} of true #pi^{0} cluster pairs",
1570 nptbins,ptmin,ptmax,nptbins,ptmin,ptmax) ;
1576 Form(
"Generated vs reconstructed #it{p}_{T} of true #pi^{0} cluster pairs, %2.2f < rec. mass < %2.2f MeV/#it{c}^{2}",
fPi0MassWindow[0],
fPi0MassWindow[1]),
1577 nptbins,ptmin,ptmax,nptbins,ptmin,ptmax) ;
1582 fhMCEtaMassPtTrue[0] =
new TH2F(
"hMCEtaMassPtTrue",
"Reconstructed Mass vs generated #it{p}_{T} of true #eta cluster pairs",
1583 nptbins,ptmin,ptmax,nmassbins,massmin,massmax) ;
1588 fhMCEtaMassPtRec[0] =
new TH2F(
"hMCEtaMassPtRec",
"Reconstructed Mass vs reconstructed #it{p}_{T} of true #eta cluster pairs",
1589 nptbins,ptmin,ptmax,nmassbins,massmin,massmax) ;
1594 fhMCEtaPtTruePtRec[0]=
new TH2F(
"hMCEtaPtTruePtRec",
"Generated vs reconstructed #it{p}_{T} of true #eta cluster pairs",
1595 nptbins,ptmin,ptmax,nptbins,ptmin,ptmax) ;
1601 Form(
"Generated vs reconstructed #it{p}_{T} of true #eta cluster pairs, %2.2f < rec. mass < %2.2f MeV/#it{c}^{2}",
1603 nptbins,ptmin,ptmax,nptbins,ptmin,ptmax) ;
1609 fhMCPi0PtTruePtRecRat =
new TH2F(
"hMCPi0PtTruePtRecRat",
"Reconstructed / generated #it{p}_{T} of true #pi^{0} cluster pairs",
1610 nptbins,ptmin,ptmax,nratbins,ratmin,ratmax) ;
1616 Form(
"Reconstructed / generated #it{p}_{T} of true #pi^{0} cluster pairs, %2.2f < rec. mass < %2.2f MeV/#it{c}^{2}",
1618 nptbins,ptmin,ptmax,nratbins,ratmin,ratmax) ;
1623 fhMCEtaPtTruePtRecRat =
new TH2F(
"hMCEtaPtTruePtRecRat",
"Reconstructed / generated #it{p}_{T} of true #eta cluster pairs",
1624 nptbins,ptmin,ptmax,nratbins,ratmin,ratmax) ;
1630 Form(
"Reconstructed / generated #it{p}_{T} of true #eta cluster pairs, %2.2f < rec. mass < %2.2f MeV/#it{c}^{2}",
1632 nptbins,ptmin,ptmax,nratbins,ratmin,ratmax) ;
1637 fhMCPi0PtTruePtRecDif =
new TH2F(
"hMCPi0PtTruePtRecDif",
"Generated - reconstructed #it{p}_{T} of true #pi^{0} cluster pairs",
1638 nptbins,ptmin,ptmax,ndifbins,difmin,difmax) ;
1644 Form(
"Generated - reconstructed #it{p}_{T} of true #pi^{0} cluster pairs, %2.2f < rec. mass < %2.2f MeV/#it{c}^{2}",
1646 nptbins,ptmin,ptmax,ndifbins,difmin,difmax) ;
1651 fhMCEtaPtTruePtRecDif =
new TH2F(
"hMCEtaPtTruePtRecDif",
"Generated - reconstructed #it{p}_{T} of true #eta cluster pairs",
1652 nptbins,ptmin,ptmax,ndifbins,difmin,difmax) ;
1658 Form(
"Generated - reconstructed #it{p}_{T} of true #eta cluster pairs, %2.2f < rec. mass < %2.2f MeV/#it{c}^{2}",
1660 nptbins,ptmin,ptmax,ndifbins,difmin,difmax) ;
1666 nptbins,ptmin,ptmax,nopanbins,opanmin,opanmax) ;
1672 Form(
"Opening angle of true #pi^{0} cluster pairs, %2.2f < rec. mass < %2.2f MeV/#it{c}^{2}",
1674 nptbins,ptmin,ptmax,nopanbins,opanmin,opanmax) ;
1680 nptbins,ptmin,ptmax,nopanbins,opanmin,opanmax) ;
1686 Form(
"Opening angle of true #eta cluster pairs, %2.2f < rec. mass < %2.2f MeV/#it{c}^{2}",
1688 nptbins,ptmin,ptmax,nopanbins,opanmin,opanmax) ;
1696 (
"hMCPi0PerCentrality",
1697 "Reconstructed #it{p}_{T} vs centrality of true #pi^{0} cluster pairs",
1698 nptbins,ptmin,ptmax,100,0,100) ;
1704 (
"hMCPi0PerCentralityMassCut",
1705 Form(
"Reconstructed #it{p}_{T} vs centrality of true #pi^{0} cluster pairs, %2.2f < rec. mass < %2.2f MeV/#it{c}^{2}",
1707 nptbins,ptmin,ptmax,100,0,100) ;
1713 (
"hMCEtaPerCentrality",
1714 "Reconstructed #it{p}_{T} vs centrality of true #pi^{0} cluster pairs",
1715 nptbins,ptmin,ptmax,100,0,100) ;
1721 (
"hMCEtaPerCentralityMassCut",
1722 Form(
"Reconstructed #it{p}_{T} vs centrality of true #pi^{0} cluster pairs, %2.2f < rec. mass < %2.2f MeV/#it{c}^{2}",
1724 nptbins,ptmin,ptmax,100,0,100) ;
1736 TString pairnamePHOS[] = {
"(0-1)",
"(0-2)",
"(1-2)",
"(0-3)",
"(0-4)",
"(1-3)",
"(1-4)",
"(2-3)",
"(2-4)",
"(3-4)"};
1740 snprintf(key, buffersize,
"hReMod_%d",imod) ;
1741 snprintf(title, buffersize,
"Real #it{M}_{#gamma#gamma} distr. for Module %d",imod) ;
1742 fhReMod[imod] =
new TH2F(key,title,nptbins,ptmin,ptmax,nmassbins,massmin,massmax) ;
1743 fhReMod[imod]->SetXTitle(
"#it{p}_{T} (GeV/#it{c})");
1744 fhReMod[imod]->SetYTitle(
"#it{M}_{#gamma,#gamma} (GeV/#it{c}^{2})");
1745 outputContainer->Add(
fhReMod[imod]) ;
1748 snprintf(key, buffersize,
"hReDiffPHOSMod_%d",imod) ;
1749 snprintf(title, buffersize,
"Real pairs PHOS, clusters in different Modules: %s",(pairnamePHOS[imod]).
Data()) ;
1750 fhReDiffPHOSMod[imod] =
new TH2F(key,title,nptbins,ptmin,ptmax,nmassbins,massmin,massmax) ;
1752 fhReDiffPHOSMod[imod]->SetYTitle(
"#it{M}_{#gamma,#gamma} (GeV/#it{c}^{2})");
1757 if(imod<fNModules/2)
1759 snprintf(key, buffersize,
"hReSameSectorEMCAL_%d",imod) ;
1760 snprintf(title, buffersize,
"Real pairs EMCAL, clusters in same sector, SM(%d,%d)",imod*2,imod*2+1) ;
1766 if(imod<fNModules-2)
1768 snprintf(key, buffersize,
"hReSameSideEMCAL_%d",imod) ;
1769 snprintf(title, buffersize,
"Real pairs EMCAL, clusters in same side SM(%d,%d)",imod, imod+2) ;
1779 snprintf(key, buffersize,
"hMiMod_%d",imod) ;
1780 snprintf(title, buffersize,
"Mixed #it{M}_{#gamma#gamma} distr. for Module %d",imod) ;
1781 fhMiMod[imod] =
new TH2F(key,title,nptbins,ptmin,ptmax,nmassbins,massmin,massmax) ;
1782 fhMiMod[imod]->SetXTitle(
"#it{p}_{T} (GeV/#it{c})");
1783 fhMiMod[imod]->SetYTitle(
"#it{M}_{#gamma,#gamma} (GeV/#it{c}^{2})");
1784 outputContainer->Add(
fhMiMod[imod]) ;
1788 snprintf(key, buffersize,
"hMiDiffPHOSMod_%d",imod) ;
1789 snprintf(title, buffersize,
"Mixed pairs PHOS, clusters in different Modules: %s",(pairnamePHOS[imod]).
Data()) ;
1790 fhMiDiffPHOSMod[imod] =
new TH2F(key,title,nptbins,ptmin,ptmax,nmassbins,massmin,massmax) ;
1792 fhMiDiffPHOSMod[imod]->SetYTitle(
"#it{M}_{#gamma,#gamma} (GeV/#it{c}^{2})");
1797 if(imod<fNModules/2)
1799 snprintf(key, buffersize,
"hMiSameSectorEMCALMod_%d",imod) ;
1800 snprintf(title, buffersize,
"Mixed pairs EMCAL, clusters in same sector, SM(%d,%d)",imod*2,imod*2+1) ;
1806 if(imod<fNModules-2){
1808 snprintf(key, buffersize,
"hMiSameSideEMCALMod_%d",imod) ;
1809 snprintf(title, buffersize,
"Mixed pairs EMCAL, clusters in same side SM(%d,%d)",imod, imod+2) ;
1821 Int_t dcSameSM[6] = {12,13,14,15,16,17};
1822 Int_t phSameSM[6] = {3, 3, 2, 2, 1, 1};
1824 Int_t dcDiffSM[8] = {12,13,14,15,16,17,0,0};
1825 Int_t phDiffSM[8] = {2, 2, 1, 1, 3, 3,0,0};
1827 for(
Int_t icombi = 0; icombi < 8; icombi++)
1829 snprintf(key, buffersize,
"hReDiffSectorDCALPHOS_%d",icombi) ;
1830 snprintf(title, buffersize,
"Real pairs DCAL-PHOS, clusters in different sector, SM(%d,%d)",dcDiffSM[icombi],phDiffSM[icombi]) ;
1837 snprintf(key, buffersize,
"hMiDiffSectorDCALPHOS_%d",icombi) ;
1838 snprintf(title, buffersize,
"Mixed pairs DCAL-PHOS, clusters in different sector, SM(%d,%d)",dcDiffSM[icombi],phDiffSM[icombi]) ;
1845 if(icombi > 5) continue ;
1847 snprintf(key, buffersize,
"hReSameSectorDCALPHOS_%d",icombi) ;
1848 snprintf(title, buffersize,
"Real pairs DCAL-PHOS, clusters in same sector, SM(%d,%d)",dcSameSM[icombi],phSameSM[icombi]) ;
1855 snprintf(key, buffersize,
"hMiSameSectorDCALPHOS_%d",icombi) ;
1856 snprintf(title, buffersize,
"Mixed pairs DCAL-PHOS, clusters in same sector, SM(%d,%d)",dcSameSM[icombi],phSameSM[icombi]) ;
1873 (Form(
"hReOpAngleBin%d_ClusterMin_EtaPhi",icut),
1875 netabins,etamin,etamax,nphibins,phimin,phimax);
1881 (Form(
"hReOpAngleBin%d_ClusterMax_EtaPhi",icut),
1883 netabins,etamin,etamax,nphibins,phimin,phimax);
1889 (Form(
"hReOpAngleBin%d_ClusterMin_ColRow",icut),
1891 96+2,-1.5,96+0.5,(8*24+2*8)+2,-1.5,(8*24+2*8)+0.5);
1897 (Form(
"hReOpAngleBin%d_ClusterMax_ColRow",icut),
1899 96+2,-1.5,96+0.5,(8*24+2*8)+2,-1.5,(8*24+2*8)+0.5);
1905 (Form(
"hReOpAngleBin%d_ClusterMin_EPerSM",icut),
1907 nptbins,ptmin,ptmax,20,0,20);
1913 (Form(
"hReOpAngleBin%d_ClusterMax_EPerSM",icut),
1915 nptbins,ptmin,ptmax,20,0,20);
1921 (Form(
"hReOpAngleBin%d_ClusterMin_TimePerSM",icut),
1923 ntimebins,timemin,timemax,20,0,20);
1929 (Form(
"hReOpAngleBin%d_ClusterMax_TimePerSM",icut),
1931 ntimebins,timemin,timemax,20,0,20);
1937 (Form(
"hReOpAngleBin%d_ClusterMin_NCellPerSM",icut),
1945 (Form(
"hReOpAngleBin%d_ClusterMax_NCellPerSM",icut),
1953 (Form(
"hReOpAngleBin%d_PairCluster_RatioPerSM",icut),
1961 (Form(
"hReOpAngleBin%d_PairCluster_MassPerSM",icut),
1963 nmassbins,massmin,massmax,20,0,20);
1969 (Form(
"hReOpAngleBin%d_PairCluster_Mass",icut),
1971 nptbins,ptmin,ptmax,nmassbins,massmin,massmax);
1981 (Form(
"hReOpAngleBin%d_PairCluster_MassMCTruePi0",icut),
1983 nptbins,ptmin,ptmax,nmassbins,massmin,massmax);
1989 (Form(
"hReOpAngleBin%d_PairCluster_MassMCTrueEta",icut),
1991 nptbins,ptmin,ptmax,nmassbins,massmin,massmax);
1998 (Form(
"hPrimPi0AccPt_OpAngleBin%d",icut),
2000 nptbins,ptmin,ptmax) ;
2005 (Form(
"hPrimEtaAccPt_OpAngleBin%d",icut),
2007 nptbins,ptmin,ptmax) ;
2024 (Form(
"hMiOpAngleBin%d_ClusterMin_EtaPhi",icut),
2026 netabins,etamin,etamax,nphibins,phimin,phimax);
2032 (Form(
"hMiOpAngleBin%d_ClusterMax_EtaPhi",icut),
2034 netabins,etamin,etamax,nphibins,phimin,phimax);
2056 (Form(
"hMiOpAngleBin%d_ClusterMin_EPerSM",icut),
2058 nptbins,ptmin,ptmax,20,0,20);
2064 (Form(
"hMiOpAngleBin%d_ClusterMax_EPerSM",icut),
2066 nptbins,ptmin,ptmax,20,0,20);
2072 (Form(
"hMiOpAngleBin%d_ClusterMin_TimePerSM",icut),
2074 ntimebins,timemin,timemax,20,0,20);
2080 (Form(
"hMiOpAngleBin%d_ClusterMax_TimePerSM",icut),
2082 ntimebins,timemin,timemax,20,0,20);
2088 (Form(
"hMiOpAngleBin%d_ClusterMin_NCellPerSM",icut),
2096 (Form(
"hMiOpAngleBin%d_ClusterMax_NCellPerSM",icut),
2104 (Form(
"hMiOpAngleBin%d_PairCluster_RatioPerSM",icut),
2112 (Form(
"hMiOpAngleBin%d_PairCluster_MassPerSM",icut),
2114 nmassbins,massmin,massmax,20,0,20);
2120 (Form(
"hMiOpAngleBin%d_PairCluster_Mass",icut),
2122 nptbins,ptmin,ptmax,nmassbins,massmin,massmax);
2140 TString mcGenNames[] = {
"",
"_MC_Pi0Merged",
"_MC_Pi0Decay",
"_MC_EtaDecay",
"_MC_PhotonOther",
"_MC_Electron",
"_MC_Other"};
2141 TString mcGenTitle[] = {
"",
",MC Pi0-Merged",
",MC Pi0-Decay",
", MC Eta-Decay",
", MC Photon other sources",
", MC Electron",
", MC other sources"};
2144 "Clean",
"HijingBkg",
"NotHijingBkg",
"HijingAndOtherBkg",
2145 "Clean_HijingBkg",
"Clean_NotHijingBkg",
"Clean_HijingAndOtherBkg",
2146 "HijingBkg_NotHijingBkg",
"HijingBkg_HijingAndOtherBkg",
"NotHijingBkg_HijingAndOtherBkg" } ;
2148 "no overlap",
"pair Hijing Bkg",
"pair not Hijing bkg",
"pair Hijing and other bkg",
2149 "no overlap and hijing overlap",
"no overlap and generator overlap",
"no overlap and multiple overlap",
2150 "hijing overlap and gener overlap",
"hijing overlap and multiple overlap",
"gener overlap and multiple overlap" } ;
2162 nptbins,ptmin,ptmax) ;
2169 nptbins,ptmin,ptmax,netabinsopen,-2, 2) ;
2177 nptbins,ptmin,ptmax,nphibinsopen,0,360) ;
2187 nptbins,ptmin,ptmax) ;
2193 Form(
"Primary #pi^{0} #it{p}_{T} with both photons in acceptance, generator %s",
GetCocktailGenNameToCheck(igen).Data()),
2194 nptbins,ptmin,ptmax) ;
2200 Form(
"Primary #pi^{0} #it{p}_{T} with both photons in acceptance, generator %s",
GetCocktailGenNameToCheck(igen).Data()),
2201 nptbins,ptmin,ptmax) ;
2211 nptbins,ptmin,ptmax) ;
2215 Int_t netabinsopen = TMath::Nint(netabins*4/(etamax-etamin));
2219 nptbins,ptmin,ptmax,netabinsopen,-2, 2) ;
2227 nptbins,ptmin,ptmax,nphibinsopen,0,360) ;
2237 nptbins,ptmin,ptmax) ;
2244 nptbins,ptmin,ptmax) ;
2251 nptbins,ptmin,ptmax) ;
2258 for(
Int_t itag = 0; itag < 10; itag++)
2261 (Form(
"h%sGeneratorPairMass%s%s",
2263 Form(
"Pair Mass with generator%s, %s ",
2265 nptbins,ptmin,ptmax,nmassbins,massmin,massmax);
2271 (Form(
"h%sGeneratorPairMass%s%s_MCPi0",
2273 Form(
"Pair Mass with contribution of true #pi^{0} generator%s, %s ",
2275 nptbins,ptmin,ptmax,nmassbins,massmin,massmax);
2281 (Form(
"h%sGeneratorPairMass%s%s_MCEta",
2283 Form(
"Pair Mass with contribution of true #eta generator%s, %s ",
2285 nptbins,ptmin,ptmax,nmassbins,massmin,massmax);
2293 (Form(
"h%sGeneratorPairCent%s%s_MCPi0",
2295 Form(
"Pair Mass with contribution of true #pi^{0} generator%s, %s ",
2297 nptbins,ptmin,ptmax,100,0,100);
2303 (Form(
"h%sGeneratorPairCent%s%s_MCPi0_MassCut",
2305 Form(
"Pair Mass with contribution of true #pi^{0} generator%s, %s, %2.2f<M<%2.2f",
2307 nptbins,ptmin,ptmax,100,0,100);
2313 (Form(
"h%sGeneratorPairCent%s%s_MCEta",
2315 Form(
"Pair Mass with contribution of true #eta generator%s, %s ",
2317 nptbins,ptmin,ptmax,100,0,100);
2323 (Form(
"h%sGeneratorPairCent%s%s_MCEta_MassCut",
2325 Form(
"Pair Mass with contribution of true #eta generator%s, %s, %2.2f<M<%2.2f",
2327 nptbins,ptmin,ptmax,100,0,100);
2334 (Form(
"h%sGeneratorPairEPrimRecoRatio%s%s_MCPi0",
2336 Form(
"#it{E}_{reco}/#it{E}_{gen} pair with contribution of true #pi^{0} generator%s, %s ",
2338 nptbins,ptmin,ptmax,nratbins,ratmin,ratmax);
2344 (Form(
"h%sGeneratorPairEPrimRecoRatio%s%s_MCEta",
2346 Form(
"#it{E}_{reco}/#it{E}_{gen} pair with contribution of true #eta generator%s, %s ",
2348 nptbins,ptmin,ptmax,nratbins,ratmin,ratmax);
2354 (Form(
"h%sGeneratorPairEPrimRecoDiff%s%s_MCPi0",
2356 Form(
"#it{E}_{reco}-#it{E}_{gen} pair with contribution of true #pi^{0} generator%s, %s ",
2358 nptbins,ptmin,ptmax,ndifbins,difmin,difmax);
2364 (Form(
"h%sGeneratorPairEPrimRecoDiff%s%s_MCEta",
2366 Form(
"#it{E}_{reco}-#it{E}_{gen} pair with contribution of true #eta generator%s, %s ",
2368 nptbins,ptmin,ptmax,ndifbins,difmin,difmax);
2374 (Form(
"h%sGeneratorPairEPrimRecoRatio%s%s_MCPi0MassCut",
2376 Form(
"#it{E}_{reco}/#it{E}_{gen} pair with contribution of true #pi^{0} generator%s, %s ",
2378 nptbins,ptmin,ptmax,nratbins,ratmin,ratmax);
2384 (Form(
"h%sGeneratorPairEPrimRecoRatio%s%s_MCEtaMassCut",
2386 Form(
"#it{E}_{reco}/#it{E}_{gen} pair with contribution of true #eta generator%s, %s ",
2388 nptbins,ptmin,ptmax,nratbins,ratmin,ratmax);
2394 (Form(
"h%sGeneratorPairEPrimRecoDiff%s%s_MCPi0MassCut",
2396 Form(
"#it{E}_{reco}-#it{E}_{gen} pair with contribution of true #pi^{0} generator%s, %s ",
2398 nptbins,ptmin,ptmax,ndifbins,difmin,difmax);
2404 (Form(
"h%sGeneratorPairEPrimRecoDiff%s%s_MCEtaMassCut",
2406 Form(
"#it{E}_{reco}-#it{E}_{gen} pair with contribution of true #eta generator%s, %s ",
2408 nptbins,ptmin,ptmax,ndifbins,difmin,difmax);
2422 return outputContainer;
2430 printf(
"**** Print %s %s ****\n", GetName(), GetTitle() ) ;
2433 printf(
"Number of bins in Centrality: %d \n",
GetNCentrBin()) ;
2434 printf(
"Number of bins in Z vert. pos: %d \n",
GetNZvertBin()) ;
2435 printf(
"Number of bins in Reac. Plain: %d \n",
GetNRPBin()) ;
2436 printf(
"Depth of event buffer: %d \n",
GetNMaxEvMix()) ;
2437 printf(
"Pair in same Module: %d \n",
fSameSM) ;
2438 printf(
"Cuts: \n") ;
2440 printf(
"Number of modules: %d \n",
fNModules) ;
2442 printf(
"Asymmetry cuts: n = %d, \n",
fNAsymCuts) ;
2443 printf(
"\tasymmetry < ");
2447 printf(
"PID selection bits: n = %d, \n",
fNPIDBits) ;
2448 printf(
"\tPID bit = ");
2454 printf(
"pT cuts: n = %d, \n",
fNPtCuts) ;
2462 printf(
"N cell in cluster cuts: n = %d, \n",
fNCellNCuts) ;
2463 printf(
"\tnCell > ");
2468 printf(
"------------------------------------------------------\n") ;
2491 TParticle * primStack = 0;
2492 AliAODMCParticle * primAOD = 0;
2497 AliStack * stack = 0;
2502 nprim = stack->GetNtrack();
2506 TClonesArray * mcparticles = 0;
2510 if( !mcparticles )
return;
2511 nprim = mcparticles->GetEntriesFast();
2514 for(
Int_t i=0 ; i < nprim; i++)
2516 if ( !
GetReader()->AcceptParticleMCLabel( i ) ) continue ;
2518 Bool_t inacceptance = kTRUE;
2522 primStack = stack->Particle(i) ;
2525 AliWarning(
"ESD primaries pointer not available!!");
2530 if( primStack->Energy() < 0.4 )
continue;
2532 pdg = primStack->GetPdgCode();
2534 if( pdg != 111 && pdg != 221) continue ;
2536 nDaught = primStack->GetNDaughters();
2537 iphot1 = primStack->GetDaughter(0) ;
2538 iphot2 = primStack->GetDaughter(1) ;
2541 if ( primStack->Energy() == TMath::Abs(primStack->Pz()) ||
2542 (primStack->Energy() - primStack->Pz()) < 1e-3 ||
2543 (primStack->Energy() + primStack->Pz()) < 0 ) continue ;
2551 mesonY = 0.5*TMath::Log((primStack->Energy()+primStack->Pz())/(primStack->Energy()-primStack->Pz())) ;
2559 else inacceptance = kFALSE;
2563 primAOD = (AliAODMCParticle *) mcparticles->At(i);
2566 AliWarning(
"AOD primaries pointer not available!!");
2571 if( primAOD->E() < 0.4 )
continue;
2573 pdg = primAOD->GetPdgCode();
2575 if( pdg != 111 && pdg != 221) continue ;
2577 nDaught = primAOD->GetNDaughters();
2578 iphot1 = primAOD->GetFirstDaughter() ;
2579 iphot2 = primAOD->GetLastDaughter() ;
2582 if ( primAOD->E() == TMath::Abs(primAOD->Pz()) ||
2583 (primAOD->E() - primAOD->Pz()) < 1e-3 ||
2584 (primAOD->E() + primAOD->Pz()) < 0 ) continue ;
2587 fMCPrimMesonMom.SetPxPyPzE(primAOD->Px(),primAOD->Py(),primAOD->Pz(),primAOD->E());
2589 mesonY = 0.5*TMath::Log((primAOD->E()+primAOD->Pz())/(primAOD->E()-primAOD->Pz())) ;
2597 else inacceptance = kFALSE;
2604 if( mesonPhi < 0 ) mesonPhi+=TMath::TwoPi();
2605 mesonPhi *= TMath::RadToDeg();
2630 if(TMath::Abs(mesonY) < 1.0)
2664 if(TMath::Abs(mesonY) < 1.0)
2700 Int_t momindex = -1;
2702 Int_t momstatus = -1;
2705 if(
GetReader()->ReadStack()) momindex = primStack->GetFirstMother();
2706 if(
GetReader()->ReadAODMCParticles()) momindex = primAOD ->GetMother();
2708 if(momindex >= 0 && momindex < nprim)
2712 status = primStack->GetStatusCode();
2713 TParticle* mother = stack->Particle(momindex);
2714 mompdg = TMath::Abs(mother->GetPdgCode());
2715 momstatus = mother->GetStatusCode();
2721 status = primAOD->GetStatus();
2722 AliAODMCParticle* mother = (AliAODMCParticle*) mcparticles->At(momindex);
2723 mompdg = TMath::Abs(mother->GetPdgCode());
2724 momstatus = mother->GetStatus();
2725 momR = TMath::Sqrt(mother->Xv()*mother->Xv()+mother->Yv()*mother->Yv());
2736 else if(mompdg > 2100 && mompdg < 2210)
2742 else if(mompdg >= 310 && mompdg <= 323)
2745 else if(momstatus == 11 || momstatus == 12 )
2756 else if(mompdg > 2100 && mompdg < 2210)
2762 else if(mompdg >= 310 && mompdg <= 323)
2765 else if(momstatus == 11 || momstatus == 12 )
2775 else if(mompdg > 2100 && mompdg < 2210)
2778 else if(momstatus == 11 || momstatus == 12 )
2792 if ( nDaught != 2 )
continue;
2794 if ( iphot1 < 0 || iphot1 >= nprim || iphot2 < 0 || iphot2 >= nprim ) continue ;
2798 Bool_t inacceptance1 = kTRUE;
2799 Bool_t inacceptance2 = kTRUE;
2803 TParticle * phot1 = stack->Particle(iphot1) ;
2804 TParticle * phot2 = stack->Particle(iphot2) ;
2806 if(!phot1 || !phot2) continue ;
2808 pdg1 = phot1->GetPdgCode();
2809 pdg2 = phot2->GetPdgCode();
2824 AliAODMCParticle * phot1 = (AliAODMCParticle *) mcparticles->At(iphot1) ;
2825 AliAODMCParticle * phot2 = (AliAODMCParticle *) mcparticles->At(iphot2) ;
2827 if(!phot1 || !phot2) continue ;
2829 pdg1 = phot1->GetPdgCode();
2830 pdg2 = phot2->GetPdgCode();
2832 fPhotonMom1.SetPxPyPzE(phot1->Px(),phot1->Py(),phot1->Pz(),phot1->E());
2833 fPhotonMom2.SetPxPyPzE(phot2->Px(),phot2->Py(),phot2->Pz(),phot2->E());
2843 if( pdg1 != 22 || pdg2 !=22) continue ;
2862 if(photonPhi1 < 0) photonPhi1+=TMath::TwoPi();
2863 if(photonPhi2 < 0) photonPhi2+=TMath::TwoPi();
2872 Bool_t sameSector = kFALSE;
2876 if((sm1==j && sm2==j+1) || (sm1==j+1 && sm2==j)) sameSector = kTRUE;
2879 if(sm1!=sm2 && !sameSector)
2881 inacceptance1 = kFALSE;
2882 inacceptance2 = kFALSE;
2889 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",
2891 mesonPt,mesonYeta,mesonPhi,
2894 inacceptance1, inacceptance2));
2896 if(inacceptance1 && inacceptance2)
2901 Bool_t cutAngle = kFALSE;
2904 AliDebug(2,Form(
"\t ACCEPTED pdg %d: pt %2.2f, phi %2.2f, eta %2.2f",pdg,mesonPt,mesonPhi,mesonYeta));
2942 Int_t angleBin = -1;
2949 if( angleBin >= 0 && angleBin < fNAngleCutBins)
2990 Int_t angleBin = -1;
2997 if( angleBin >= 0 && angleBin < fNAngleCutBins)
3013 Float_t momentumDaughter1AlongMother = 0.;
3014 Float_t momentumDaughter2AlongMother = 0.;
3016 if (momentumSquaredMother > 0.)
3023 Float_t ptArmSquared = momentumSquaredDaughter1 - momentumDaughter1AlongMother*momentumDaughter1AlongMother;
3026 if (ptArmSquared > 0.)
3027 pTArm = sqrt(ptArmSquared);
3030 if(momentumDaughter1AlongMother + momentumDaughter2AlongMother > 0)
3031 alphaArm = (momentumDaughter1AlongMother -momentumDaughter2AlongMother) / (momentumDaughter1AlongMother + momentumDaughter2AlongMother);
3039 if(en > 8 && en <= 12) ebin = 0;
3040 if(en > 12 && en <= 16) ebin = 1;
3041 if(en > 16 && en <= 20) ebin = 2;
3042 if(en > 20) ebin = 3;
3043 if(ebin < 0 || ebin > 3) return ;
3081 Int_t momindex = -1;
3083 Int_t momstatus = -1;
3092 AliDebug(1,Form(
"Common ancestor label %d, pdg %d, name %s, status %d",
3093 ancLabel,ancPDG,TDatabasePDG::Instance()->GetParticle(ancPDG)->GetName(),ancStatus));
3099 else if(TMath::Abs(ancPDG)==11)
3103 else if(ancPDG==111)
3160 TParticle* ancestor =
GetMCStack()->Particle(ancLabel);
3161 status = ancestor->GetStatusCode();
3162 momindex = ancestor->GetFirstMother();
3165 TParticle* mother =
GetMCStack()->Particle(momindex);
3166 mompdg = TMath::Abs(mother->GetPdgCode());
3167 momstatus = mother->GetStatusCode();
3168 prodR = mother->R();
3176 AliAODMCParticle* ancestor = (AliAODMCParticle *) mcparticles->At(ancLabel);
3177 status = ancestor->GetStatus();
3178 momindex = ancestor->GetMother();
3181 AliAODMCParticle* mother = (AliAODMCParticle *) mcparticles->At(momindex);
3182 mompdg = TMath::Abs(mother->GetPdgCode());
3183 momstatus = mother->GetStatus();
3184 prodR = TMath::Sqrt(mother->Xv()*mother->Xv()+mother->Yv()*mother->Yv());
3200 else if(mompdg > 2100 && mompdg < 2210)
3206 else if(mompdg >= 310 && mompdg <= 323)
3209 else if(momstatus == 11 || momstatus == 12 )
3217 else if(mompdg > 2100 && mompdg < 2210)
3223 else if(mompdg >= 310 && mompdg <= 323)
3226 else if(momstatus == 11 || momstatus == 12 )
3237 Int_t angleBin = -1;
3244 if( angleBin >= 0 && angleBin < fNAngleCutBins)
3249 else if(ancPDG==221)
3307 TParticle* ancestor =
GetMCStack()->Particle(ancLabel);
3308 momindex = ancestor->GetFirstMother();
3311 TParticle* mother =
GetMCStack()->Particle(momindex);
3312 mompdg = TMath::Abs(mother->GetPdgCode());
3313 momstatus = mother->GetStatusCode();
3314 prodR = mother->R();
3321 AliAODMCParticle* ancestor = (AliAODMCParticle *) mcparticles->At(ancLabel);
3322 momindex = ancestor->GetMother();
3325 AliAODMCParticle* mother = (AliAODMCParticle *) mcparticles->At(momindex);
3326 mompdg = TMath::Abs(mother->GetPdgCode());
3327 momstatus = mother->GetStatus();
3328 prodR = TMath::Sqrt(mother->Xv()*mother->Xv()+mother->Yv()*mother->Yv());
3339 else if(mompdg > 2100 && mompdg < 2210)
3342 else if(momstatus == 11 || momstatus == 12 )
3352 Int_t angleBin = -1;
3359 if( angleBin >= 0 && angleBin < fNAngleCutBins)
3363 else if(ancPDG==-2212)
3367 else if(ancPDG==-2112)
3371 else if(TMath::Abs(ancPDG)==13)
3375 else if (TMath::Abs(ancPDG) > 100 && ancLabel > 7)
3388 if(ancStatus==11 || ancStatus==12)
3392 else if (ancStatus==21)
3398 else if(ancLabel < 6)
3402 else if(ancLabel < 8)
3420 AliDebug(1,
"Common ancestor not found");
3425 if(mcIndex >= 0 && mcIndex < 13)
3440 if(!cluster2 || !cluster1)
3442 AliWarning(Form(
"Cluster1 %p or Cluster 2 %p not found!",cluster1,cluster2));
3448 TString genName1 =
"", genName2 =
"", genNameBkg1 =
"", genNameBkg2 =
"";
3449 Int_t indexGen1 = -1, indexGen2 = -1, indexGenBkg1 = -1, indexGenBkg2 = -1;
3451 if (genBkgTag1 == -1)
return;
3452 else if(genBkgTag1 > 3) printf(
"Bkg1 generator tag larger than 3; Main %s Bkg %s\n",genName1.Data(),genNameBkg1.Data());
3455 if (genBkgTag2 == -1)
return;
3456 else if(genBkgTag2 > 3) printf(
"Bkg2 generator tag larger than 3; Main %s Bkg %s\n",genName2.Data(),genNameBkg2.Data());
3459 if(genName1!=genName2)
return;
3476 if ( genBkgTag1 == genBkgTag2 )
3482 Int_t genBkgMin = -1;
3483 Int_t genBkgMax = -1;
3485 if(genBkgTag1 > genBkgTag2)
3487 genBkgMax = genBkgTag1;
3488 genBkgMin = genBkgTag2;
3492 genBkgMax = genBkgTag2;
3493 genBkgMin = genBkgTag1;
3496 if ( genBkgMin == 0 )
3498 if (genBkgMax == 1 ) tag = 4;
3499 else if(genBkgMax == 2 ) tag = 5;
3500 else if(genBkgMax == 3 ) tag = 6;
3502 else if ( genBkgMin == 1 )
3504 if ( genBkgMax == 2 ) tag = 7;
3505 else if ( genBkgMax == 3 ) tag = 8;
3507 else if ( genBkgMin == 2 ) tag = 9;
3512 printf(
"Combination not found, bkg1 tag %d, bkg2 tag %d\n",genBkgTag1,genBkgTag2);
3520 if ( ptPrim < 0.1 || pt < 0.5 )
return;
3556 else if( mcIndex==3 )
3612 AliFatal(Form(
"No input aod photons in AOD with name branch < %s >, STOP",
GetInputAODName().
Data()));
3624 Int_t nPhot2 = nPhot;
3625 Int_t minEntries = 2;
3638 if(!secondLoopInputData)
3644 nPhot2 = secondLoopInputData->GetEntriesFast() ;
3649 AliDebug(1,Form(
"Photon entries %d", nPhot));
3652 if ( nPhot < minEntries )
3677 Double_t vert[] = {0.0, 0.0, 0.0} ;
3678 Int_t evtIndex1 = 0 ;
3679 Int_t currentEvtIndex = -1;
3687 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",
3700 for(
Int_t i1 = 0; i1 < nPhot-last; i1++)
3712 if ( evtIndex1 == -1 )
3714 if ( evtIndex1 == -2 )
3720 if (evtIndex1 != currentEvtIndex)
3733 currentEvtIndex = evtIndex1 ;
3739 fPhotonMom1.SetPxPyPzE(p1->Px(),p1->Py(),p1->Pz(),p1->E());
3742 module1 = p1->GetSModNumber();
3749 Int_t iclus1 = -1, iclus2 = -1 ;
3750 Float_t maxCellFraction1 = 0, maxCellFraction2 = 0;
3751 Int_t absIdMax1 = -1, absIdMax2 = -1;
3752 Int_t icol1 = -1, icol2 = -1, icolAbs1 = -1, icolAbs2 = -1;
3753 Int_t irow1 = -1, irow2 = -1, irowAbs1 = -1, irowAbs2 = -1;
3754 Int_t iRCU1 = -1, iRCU2 = -1;
3759 if(!cluster1) AliWarning(
"Cluster1 not found!");
3785 for(
Int_t i2 = first; i2 < nPhot2; i2++)
3788 AliAODPWG4Particle * p2 = (AliAODPWG4Particle*) (secondLoopInputData->At(i2)) ;
3797 if ( evtIndex2 == -1 )
3799 if ( evtIndex2 == -2 )
3846 Int_t ncell1 = p1->GetNCells();
3851 Int_t ncell2 = p2->GetNCells();
3863 fPhotonMom2.SetPxPyPzE(p2->Px(),p2->Py(),p2->Pz(),p2->E());
3866 module2 = p2->GetSModNumber();
3875 Double_t a = TMath::Abs(p1->E()-p2->E())/(p1->E()+p2->E()) ;
3877 AliDebug(2,Form(
"E: fPhotonMom1 %f, fPhotonMom2 %f; Pair: pT %f, mass %f, a %f", p1->E(), p2->E(), (
fPhotonMom1 +
fPhotonMom2).E(),m,a));
3901 Int_t ancStatus = 0;
3925 if(module1==module2 && module1 >=0 && module1<
fNModules)
3981 if(module1!=module2) ok=kFALSE;
4010 if ( l01 > 0.01 && l01 < 0.4 &&
4013 else if( l01 > 0.01 && l01 < 0.4 && l02 > 0.4 )
fhReSS[2]->Fill(pt, m,
GetEventWeight()*weightPt);
4014 else if( l02 > 0.01 && l02 < 0.4 && l01 > 0.4 )
fhReSS[2]->Fill(pt, m,
GetEventWeight()*weightPt);
4032 if(index < 0 || index >= ncentr*fNPIDBits*fNAsymCuts) continue ;
4039 if(p1->DistToBad()>0 && p2->DistToBad()>0)
4044 if(p1->DistToBad()>1 && p2->DistToBad()>1)
4068 Int_t angleBin = -1;
4075 if( angleBin >= 0 && angleBin < fNAngleCutBins)
4092 Int_t mod1 = module1;
4093 Int_t mod2 = module2;
4097 if(!cluster2) AliWarning(
"Cluster2 not found!");
4121 Int_t tmp = absIdMax2;
4122 absIdMax2 = absIdMax1;
4164 if ( p1->GetFiducialArea() == 0 && p2->GetFiducialArea() == 0 )
4167 else if ( p1->GetFiducialArea() != 0 && p2->GetFiducialArea() != 0 )
4194 p1->GetCaloLabel(0), p2->GetCaloLabel(0),
4195 p1->GetTag(),p2->GetTag(),
4197 ncell1, ncell2, m, pt, a, deta, dphi, angle);
4243 if(eventbin < 0) return ;
4249 AliWarning(Form(
"Mix event list not available, bin %d",eventbin));
4253 Int_t nMixed = evMixList->GetSize() ;
4254 for(
Int_t ii=0; ii<nMixed; ii++)
4256 TClonesArray* ev2= (TClonesArray*) (evMixList->At(ii));
4257 Int_t nPhot2=ev2->GetEntriesFast() ;
4259 AliDebug(1,Form(
"Mixed event %d photon entries %d, centrality bin %d",ii, nPhot2,
GetEventCentralityBin()));
4266 for(
Int_t i1 = 0; i1 < nPhot; i1++)
4277 fPhotonMom1.SetPxPyPzE(p1->Px(),p1->Py(),p1->Pz(),p1->E());
4283 for(
Int_t i2 = 0; i2 < nPhot2; i2++)
4285 AliAODPWG4Particle * p2 = (AliAODPWG4Particle*) (ev2->At(i2)) ;
4291 fPhotonMom2.SetPxPyPzE(p2->Px(),p2->Py(),p2->Pz(),p2->E());
4294 Double_t a = TMath::Abs(p1->E()-p2->E())/(p1->E()+p2->E()) ;
4310 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));
4322 if(module1==module2 && module1 >=0 && module1<
fNModules)
4377 if(module1!=module2) ok=kFALSE;
4417 if(index < 0 || index >= ncentr*fNPIDBits*fNAsymCuts) continue ;
4424 if(p1->DistToBad()>0 && p2->DistToBad()>0)
4429 if(p1->DistToBad()>1 && p2->DistToBad()>1)
4445 Int_t ncell1 = p1->GetNCells();
4446 Int_t ncell2 = p1->GetNCells();
4490 Int_t angleBin = -1;
4497 if( angleBin >= 0 && angleBin < fNAngleCutBins)
4514 Int_t mod1 = module1;
4515 Int_t mod2 = module2;
4592 if ( p1->GetFiducialArea() == 0 && p2->GetFiducialArea() == 0 )
4595 else if ( p1->GetFiducialArea() != 0 && p2->GetFiducialArea() != 0 )
4608 TClonesArray *currentEvent =
new TClonesArray(*secondLoopInputData);
4611 if( currentEvent->GetEntriesFast() > 0 )
4613 evMixList->AddFirst(currentEvent) ;
4617 TClonesArray * tmp = (TClonesArray*) (evMixList->Last()) ;
4618 evMixList->RemoveLast() ;
4624 delete currentEvent ;
4629 AliDebug(1,
"End fill histograms");
4639 Int_t evtIndex = -1 ;
4645 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 * fhPairGeneratorsBkgMassMCPi0[10][10]
! Mass for a pair of clusters with depending bkg type, pi0 true pairs
TH2F ** fhRe3
[GetNCentrBin()*fNPIDBits*fNAsymCuts]
TH2F * fhPrimEtaAccPtCentrality
! primary eta with accepted daughters reconstructed centrality vs pT
TH2F * fhMiOpAngleBinMinClusterEPerSM[10]
! energy of lowest energy cluster in pair, depending on opening angle cut, y axis is SM number...
TH2F * fhPairGeneratorsBkgEPrimRecoRatioMCEtaMassCut[10][10]
! pT reco / pT primary for a pair of clusters with depending bkg type, eta true pairs, eta mass window
TH2F * fhReOpAngleBinMaxClusterEPerSM[10]
! energy of highest energy cluster in pair, depending on opening angle cut, y axis is SM number ...
TH1F * fhPrimPi0PtInCaloPerGenerator[10]
! Spectrum of primary with pi0 in calo
Int_t GetCocktailGeneratorBackgroundTag(AliVCluster *clus, Int_t mctag, TString &genName, Int_t &index, TString &genNameBkg, Int_t &indexBkg)