23 #include "TClonesArray.h"
24 #include "TObjString.h"
25 #include "TDatabasePDG.h"
31 #include "AliMCEvent.h"
33 #include "AliVEvent.h"
34 #include "AliESDCaloCluster.h"
35 #include "AliESDEvent.h"
36 #include "AliAODEvent.h"
38 #include "AliMixedEvent.h"
39 #include "AliVParticle.h"
40 #include "AliMCEvent.h"
43 #include "AliPHOSGeoUtils.h"
44 #include "AliEMCALGeometry.h"
55 fUseAngleCut(kFALSE), fUseAngleEDepCut(kFALSE), fAngleCut(0), fAngleMaxCut(0.),
56 fMultiCutAna(kFALSE), fMultiCutAnaSim(kFALSE), fMultiCutAnaAcc(kFALSE),
57 fNPtCuts(0), fNAsymCuts(0), fNCellNCuts(0), fNPIDBits(0), fNAngleCutBins(0),
58 fMakeInvPtPlots(kFALSE), fSameSM(kFALSE),
59 fFillSMCombinations(kFALSE), fCheckConversion(kFALSE),
60 fFillBadDistHisto(kFALSE), fFillSSCombinations(kFALSE),
61 fFillAngleHisto(kFALSE), fFillAsymmetryHisto(kFALSE), fFillOriginHisto(0),
62 fFillArmenterosThetaStar(0), fFillOnlyMCAcceptanceHisto(0),
63 fFillSecondaryCellTiming(0), fFillOpAngleCutHisto(0), fCheckAccInSector(0),
64 fPairWithOtherDetector(0), fOtherDetectorInputName(
""),
65 fPhotonMom1(), fPhotonMom1Boost(), fPhotonMom2(), fMCPrimMesonMom(),
69 fhReMod(0x0), fhReSameSideEMCALMod(0x0), fhReSameSectorEMCALMod(0x0), fhReDiffPHOSMod(0x0),
70 fhReSameSectorDCALPHOSMod(0),fhReDiffSectorDCALPHOSMod(0),
71 fhMiMod(0x0), fhMiSameSideEMCALMod(0x0), fhMiSameSectorEMCALMod(0x0), fhMiDiffPHOSMod(0x0),
72 fhMiSameSectorDCALPHOSMod(0),fhMiDiffSectorDCALPHOSMod(0),
73 fhReConv(0x0), fhMiConv(0x0), fhReConv2(0x0), fhMiConv2(0x0),
74 fhRe1(0x0), fhMi1(0x0), fhRe2(0x0), fhMi2(0x0),
75 fhRe3(0x0), fhMi3(0x0), fhReInvPt1(0x0), fhMiInvPt1(0x0),
76 fhReInvPt2(0x0), fhMiInvPt2(0x0), fhReInvPt3(0x0), fhMiInvPt3(0x0),
77 fhRePtNCellAsymCuts(0x0), fhMiPtNCellAsymCuts(0x0), fhRePtNCellAsymCutsSM(),
78 fhRePtNCellAsymCutsOpAngle(0x0), fhMiPtNCellAsymCutsOpAngle(0x0),
79 fhRePtAsym(0x0), fhRePtAsymPi0(0x0), fhRePtAsymEta(0x0),
80 fhMiPtAsym(0x0), fhMiPtAsymPi0(0x0), fhMiPtAsymEta(0x0),
81 fhEventBin(0), fhEventMixBin(0),
82 fhCentrality(0x0), fhCentralityNoPair(0x0),
83 fhEventPlaneResolution(0x0),
84 fhRealOpeningAngle(0x0), fhRealCosOpeningAngle(0x0), fhMixedOpeningAngle(0x0), fhMixedCosOpeningAngle(0x0),
86 fhPrimPi0E(0x0), fhPrimPi0Pt(0x0), fhPrimPi0PtInCalo(0x0),
87 fhPrimPi0AccE(0x0), fhPrimPi0AccPt(0x0), fhPrimPi0AccPtPhotonCuts(0x0),
88 fhPrimPi0Y(0x0), fhPrimPi0AccY(0x0),
89 fhPrimPi0Yeta(0x0), fhPrimPi0YetaYcut(0x0), fhPrimPi0AccYeta(0x0),
90 fhPrimPi0Phi(0x0), fhPrimPi0AccPhi(0x0),
91 fhPrimPi0OpeningAngle(0x0), fhPrimPi0OpeningAnglePhotonCuts(0x0),
92 fhPrimPi0OpeningAngleAsym(0x0),fhPrimPi0CosOpeningAngle(0x0),
93 fhPrimPi0PtCentrality(0), fhPrimPi0PtEventPlane(0),
94 fhPrimPi0AccPtCentrality(0), fhPrimPi0AccPtEventPlane(0),
95 fhPrimEtaE(0x0), fhPrimEtaPt(0x0), fhPrimEtaPtInCalo(0x0),
96 fhPrimEtaAccE(0x0), fhPrimEtaAccPt(0x0), fhPrimEtaAccPtPhotonCuts(0x0),
97 fhPrimEtaY(0x0), fhPrimEtaAccY(0x0),
98 fhPrimEtaYeta(0x0), fhPrimEtaYetaYcut(0x0), fhPrimEtaAccYeta(0x0),
99 fhPrimEtaPhi(0x0), fhPrimEtaAccPhi(0x0),
100 fhPrimEtaOpeningAngle(0x0), fhPrimEtaOpeningAnglePhotonCuts(0x0),
101 fhPrimEtaOpeningAngleAsym(0x0),fhPrimEtaCosOpeningAngle(0x0),
102 fhPrimEtaPtCentrality(0), fhPrimEtaPtEventPlane(0),
103 fhPrimEtaAccPtCentrality(0), fhPrimEtaAccPtEventPlane(0),
104 fhPrimPi0PtOrigin(0x0), fhPrimEtaPtOrigin(0x0),
105 fhPrimNotResonancePi0PtOrigin(0x0), fhPrimPi0PtStatus(0x0),
106 fhMCPi0MassPtRec(0x0), fhMCPi0MassPtTrue(0x0),
107 fhMCPi0PtTruePtRec(0x0), fhMCPi0PtTruePtRecMassCut(0x0),
108 fhMCEtaMassPtRec(0x0), fhMCEtaMassPtTrue(0x0),
109 fhMCEtaPtTruePtRec(0x0), fhMCEtaPtTruePtRecMassCut(0x0),
110 fhMCPi0PerCentrality(0), fhMCPi0PerCentralityMassCut(0),
111 fhMCEtaPerCentrality(0), fhMCEtaPerCentralityMassCut(0),
112 fhMCPi0PtTruePtRecRat(0), fhMCPi0PtTruePtRecDif(0), fhMCPi0PtRecOpenAngle(0),
113 fhMCEtaPtTruePtRecRat(0), fhMCEtaPtTruePtRecDif(0), fhMCEtaPtRecOpenAngle(0),
114 fhMCPi0PtTruePtRecRatMassCut(0), fhMCPi0PtTruePtRecDifMassCut(0), fhMCPi0PtRecOpenAngleMassCut(0),
115 fhMCEtaPtTruePtRecRatMassCut(0), fhMCEtaPtTruePtRecDifMassCut(0), fhMCEtaPtRecOpenAngleMassCut(0),
116 fhMCPi0PtOrigin(0), fhMCEtaPtOrigin(0),
117 fhMCNotResonancePi0PtOrigin(0),fhMCPi0PtStatus(0x0),
118 fhMCPi0ProdVertex(0), fhMCEtaProdVertex(0),
119 fhPrimPi0ProdVertex(0), fhPrimEtaProdVertex(0),
120 fhReMCFromConversion(0), fhReMCFromNotConversion(0), fhReMCFromMixConversion(0),
121 fhCosThStarPrimPi0(0), fhCosThStarPrimEta(0),
123 fhReSecondaryCellInTimeWindow(0), fhMiSecondaryCellInTimeWindow(0),
124 fhReSecondaryCellOutTimeWindow(0), fhMiSecondaryCellOutTimeWindow(0)
129 for(
Int_t i = 0; i < 4; i++)
135 for(
Int_t ism = 0; ism < 20; ism++)
141 for(
Int_t icut = 0; icut < 10; icut++)
184 for(
Int_t igen = 0; igen < 10; igen++)
186 for(
Int_t itag = 0; itag < 10; itag++)
221 for(
Int_t i=0;i<10;i++){
224 for(
Int_t i=0;i<6;i++){
228 for(
Int_t i = 0; i < 17; i++)
321 const Int_t buffersize = 255;
322 char onePar[buffersize] ;
323 snprintf(onePar,buffersize,
"--- AliAnaPi0 ---:") ;
325 snprintf(onePar,buffersize,
"Number of bins in Centrality: %d;",
GetNCentrBin()) ;
327 snprintf(onePar,buffersize,
"Number of bins in Z vert. pos: %d;",
GetNZvertBin()) ;
329 snprintf(onePar,buffersize,
"Number of bins in Reac. Plain: %d;",
GetNRPBin()) ;
331 snprintf(onePar,buffersize,
"Depth of event buffer: %d;",
GetNMaxEvMix()) ;
335 snprintf(onePar,buffersize,
" Asymmetry cuts: n = %d, asymmetry < ",
fNAsymCuts) ;
338 snprintf(onePar,buffersize,
" PID selection bits: n = %d, PID bit =",
fNPIDBits) ;
341 snprintf(onePar,buffersize,
"Cuts:") ;
349 snprintf(onePar, buffersize,
" pT cuts: n = %d, pt > ",
fNPtCuts) ;
352 snprintf(onePar,buffersize,
" N cell in cluster cuts: n = %d, nCell > ",
fNCellNCuts) ;
357 return new TObjString(parList) ;
367 outputContainer->SetName(GetName());
370 const Int_t buffersize = 255;
371 char key[buffersize] ;
372 char title[buffersize] ;
412 Int_t netabinsopen = TMath::Nint(netabins*4/(etamax-etamin));
413 Int_t nphibinsopen = TMath::Nint(nphibins*TMath::TwoPi()/(phimax-phimin));
429 Float_t rowcellmin = fNMaxRowsFullMin-1.5;
438 fhPrimPi0E =
new TH1F(
"hPrimPi0E",
"Primary #pi^{0} E, |#it{Y}|<1",
439 nptbins,ptmin,ptmax) ;
443 fhPrimPi0Pt =
new TH1F(
"hPrimPi0Pt",
"Primary #pi^{0} #it{p}_{T} , |#it{Y}|<1",
444 nptbins,ptmin,ptmax) ;
445 fhPrimPi0Pt ->SetXTitle(
"#it{p}_{T} (GeV/#it{c})");
448 fhPrimPi0Y =
new TH2F(
"hPrimPi0Rapidity",
"Rapidity of primary #pi^{0}",
449 nptbins,ptmin,ptmax,netabinsopen,-2, 2) ;
451 fhPrimPi0Y ->SetXTitle(
"#it{p}_{T} (GeV/#it{c})");
454 fhPrimPi0Yeta =
new TH2F(
"hPrimPi0PseudoRapidity",
"PseudoRapidity of primary #pi^{0}",
455 nptbins,ptmin,ptmax,netabinsopen,-2, 2) ;
460 fhPrimPi0YetaYcut =
new TH2F(
"hPrimPi0PseudoRapidityYcut",
"PseudoRapidity of primary #pi^{0}, |#it{Y}|<1",
461 nptbins,ptmin,ptmax,netabinsopen,-2, 2) ;
466 fhPrimPi0Phi =
new TH2F(
"hPrimPi0Phi",
"#varphi of primary #pi^{0}, |#it{Y}|<1",
467 nptbins,ptmin,ptmax,nphibinsopen,0,360) ;
474 fhPrimPi0PtInCalo =
new TH1F(
"hPrimPi0PtInCalo",
"Primary #pi^{0} #it{p}_{T} , in calorimeter acceptance",
475 nptbins,ptmin,ptmax) ;
479 fhPrimPi0AccE =
new TH1F(
"hPrimPi0AccE",
"Primary #pi^{0} #it{E} with both photons in acceptance",
480 nptbins,ptmin,ptmax) ;
484 fhPrimPi0AccPt =
new TH1F(
"hPrimPi0AccPt",
"Primary #pi^{0} #it{p}_{T} with both photons in acceptance",
485 nptbins,ptmin,ptmax) ;
489 fhPrimPi0AccPtPhotonCuts =
new TH1F(
"hPrimPi0AccPtPhotonCuts",
"Primary #pi^{0} #it{p}_{T} with both photons in acceptance",
490 nptbins,ptmin,ptmax) ;
494 fhPrimPi0AccY =
new TH2F(
"hPrimPi0AccRapidity",
"Rapidity of primary #pi^{0} with accepted daughters",
495 nptbins,ptmin,ptmax,netabins,etamin,etamax) ;
500 fhPrimPi0AccYeta =
new TH2F(
"hPrimPi0AccPseudoRapidity",
"PseudoRapidity of primary #pi^{0} with accepted daughters",
501 nptbins,ptmin,ptmax,netabins,etamin,etamax) ;
506 fhPrimPi0AccPhi =
new TH2F(
"hPrimPi0AccPhi",
"#varphi of primary #pi^{0} with accepted daughters",
508 nphibins,phimin*TMath::RadToDeg(),phimax*TMath::RadToDeg()) ;
516 fhPrimEtaE =
new TH1F(
"hPrimEtaE",
"Primary eta E",
517 nptbins,ptmin,ptmax) ;
521 fhPrimEtaPt =
new TH1F(
"hPrimEtaPt",
"Primary #eta #it{p}_{T}",
522 nptbins,ptmin,ptmax) ;
523 fhPrimEtaPt ->SetXTitle(
"#it{p}_{T} (GeV/#it{c})");
526 fhPrimEtaY =
new TH2F(
"hPrimEtaRapidity",
"Rapidity of primary #eta",
527 nptbins,ptmin,ptmax,netabinsopen,-2, 2) ;
529 fhPrimEtaY->SetXTitle(
"#it{p}_{T} (GeV/#it{c})");
532 fhPrimEtaYeta =
new TH2F(
"hPrimEtaPseudoRapidityEta",
"PseudoRapidity of primary #eta",
533 nptbins,ptmin,ptmax,netabinsopen,-2, 2) ;
538 fhPrimEtaYetaYcut =
new TH2F(
"hPrimEtaPseudoRapidityEtaYcut",
"PseudoRapidity of primary #eta, |#it{Y}|<1",
539 nptbins,ptmin,ptmax,netabinsopen,-2, 2) ;
545 nptbins,ptmin,ptmax, nphibinsopen,0,360) ;
552 fhPrimEtaPtInCalo =
new TH1F(
"hPrimEtaPtInCalo",
"Primary #eta #it{p}_{T}, in calorimeter acceptance",
553 nptbins,ptmin,ptmax) ;
557 fhPrimEtaAccE =
new TH1F(
"hPrimEtaAccE",
"Primary #eta #it{E} with both photons in acceptance",
558 nptbins,ptmin,ptmax) ;
562 fhPrimEtaAccPt =
new TH1F(
"hPrimEtaAccPt",
"Primary eta #it{p}_{T} with both photons in acceptance",
563 nptbins,ptmin,ptmax) ;
567 fhPrimEtaAccPtPhotonCuts =
new TH1F(
"hPrimEtaAccPtPhotonCuts",
"Primary eta #it{p}_{T} with both photons in acceptance",
568 nptbins,ptmin,ptmax) ;
572 fhPrimEtaAccPhi =
new TH2F(
"hPrimEtaAccPhi",
"Azimuthal of primary #eta with accepted daughters",
573 nptbins,ptmin,ptmax, nphibins,phimin*TMath::RadToDeg(),phimax*TMath::RadToDeg()) ;
579 nptbins,ptmin,ptmax, netabins,etamin,etamax) ;
585 nptbins,ptmin,ptmax, netabins,etamin,etamax) ;
595 nptbins,ptmin,ptmax, 100, 0, 100) ;
601 nptbins,ptmin,ptmax, 100, 0, 100) ;
607 fhPrimPi0PtEventPlane =
new TH2F(
"hPrimPi0PtEventPlane",
"Primary #pi^{0} #it{p}_{T} vs reco event plane angle, |#it{Y}|<1",
608 nptbins,ptmin,ptmax, 100, 0, TMath::Pi()) ;
615 nptbins,ptmin,ptmax, 100, 0, TMath::Pi()) ;
622 fhPrimPi0AccPtCentrality =
new TH2F(
"hPrimPi0AccPtCentrality",
"Primary #pi^{0} with both photons in acceptance #it{p}_{T} vs reco centrality",
623 nptbins,ptmin,ptmax, 100, 0, 100) ;
628 fhPrimEtaAccPtCentrality =
new TH2F(
"hPrimEtaAccPtCentrality",
"Primary #eta with both photons in acceptance #it{p}_{T} vs reco centrality",
629 nptbins,ptmin,ptmax, 100, 0, 100) ;
634 fhPrimPi0AccPtEventPlane =
new TH2F(
"hPrimPi0AccPtEventPlane",
"Primary #pi^{0} with both photons in acceptance #it{p}_{T} vs reco event plane angle",
635 nptbins,ptmin,ptmax, 100, 0, TMath::Pi()) ;
640 fhPrimEtaAccPtEventPlane =
new TH2F(
"hPrimEtaAccPtEventPlane",
"Primary #eta with both #gamma_{decay} in acceptance #it{p}_{T} vs reco event plane angle",
641 nptbins,ptmin,ptmax, 100, 0, TMath::Pi()) ;
651 (
"hPrimPi0OpeningAngle",
"Angle between all primary #gamma pair vs E_{#pi^{0}}, in acceptance",
652 nptbins,ptmin,ptmax,nopanbins,opanmin,opanmax);
658 (
"hPrimPi0OpeningAnglePhotonCuts",
"Angle between all primary #gamma pair vs E_{#pi^{0}} in acceptance",
659 nptbins,ptmin,ptmax,nopanbins,opanmin,opanmax);
665 (
"hPrimPi0OpeningAngleAsym",
"Angle between all primary #gamma pair vs #it{Asymmetry}, in acceptance, #it{p}_{T}>5 GeV/#it{c}",
666 100,0,1,nopanbins,opanmin,opanmax);
672 (
"hPrimPi0CosOpeningAngle",
"Cosinus of angle between all primary #gamma pair vs E_{#pi^{0}}, in acceptance",
673 nptbins,ptmin,ptmax,100,-1,1);
679 (
"hPrimEtaOpeningAngle",
"Angle between all primary #gamma pair vs E_{#eta}, in acceptance",
680 nptbins,ptmin,ptmax,nopanbins,opanmin,opanmax);
686 (
"hPrimEtaOpeningAnglePhotonCuts",
"Angle between all primary #gamma pair vs E_{#eta}, in acceptance",
687 nptbins,ptmin,ptmax,nopanbins,opanmin,opanmax);
693 (
"hPrimEtaOpeningAngleAsym",
"Angle between all primary #gamma pair vs #it{Asymmetry}, #it{p}_{T}>5 GeV/#it{c}, in acceptance",
694 100,0,1,nopanbins,opanmin,opanmax);
700 (
"hPrimEtaCosOpeningAngle",
"Cosinus of angle between all primary #gamma pair vs E_{#eta}, in acceptance",
701 nptbins,ptmin,ptmax,100,-1,1);
711 fhPrimPi0PtOrigin =
new TH2F(
"hPrimPi0PtOrigin",
"Primary #pi^{0} #it{p}_{T} vs origin",nptbins,ptmin,ptmax,11,0,11) ;
741 fhPrimPi0PtStatus =
new TH2F(
"hPrimPi0PtStatus",
"Primary #pi^{0} #it{p}_{T} vs status",nptbins,ptmin,ptmax,101,-50,50) ;
747 fhPrimEtaPtOrigin =
new TH2F(
"hPrimEtaPtOrigin",
"Primary #pi^{0} #it{p}_{T} vs origin",nptbins,ptmin,ptmax,7,0,7) ;
760 200,0.,20.,5000,0,500) ;
766 200,0.,20.,5000,0,500) ;
774 TString ebin[] = {
"8 < E < 12 GeV",
"12 < E < 16 GeV",
"16 < E < 20 GeV",
"E > 20 GeV" };
775 Int_t narmbins = 400;
779 for(
Int_t i = 0; i < 4; i++)
782 Form(
"Armenteros of primary #pi^{0}, %s",ebin[i].
Data()),
783 200, -1, 1, narmbins,armmin,armmax);
789 Form(
"Armenteros of primary #eta, %s",ebin[i].
Data()),
790 200, -1, 1, narmbins,armmin,armmax);
798 (
"hCosThStarPrimPi0",
"cos(#theta *) for primary #pi^{0}",nptbins,ptmin,ptmax,200,-1,1);
804 (
"hCosThStarPrimEta",
"cos(#theta *) for primary #eta",nptbins,ptmin,ptmax,200,-1,1);
864 snprintf(key, buffersize,
"hRe_cen%d_pidbit%d_asy%d_dist1",ic,ipid,iasym) ;
865 snprintf(title, buffersize,
"Real #it{M}_{#gamma#gamma} distr. for centrality=%d, PID bit=%d and asymmetry %1.2f, dist bad 1",
867 fhRe1[index] =
new TH2F(key,title,nptbins,ptmin,ptmax,nmassbins,massmin,massmax) ;
868 fhRe1[index]->SetXTitle(
"#it{p}_{T} (GeV/#it{c})");
869 fhRe1[index]->SetYTitle(
"#it{M}_{#gamma,#gamma} (GeV/#it{c}^{2})");
871 outputContainer->Add(
fhRe1[index]) ;
876 snprintf(key, buffersize,
"hRe_cen%d_pidbit%d_asy%d_dist2",ic,ipid,iasym) ;
877 snprintf(title, buffersize,
"Real #it{M}_{#gamma#gamma} distr. for centrality=%d, PID bit=%d and asymmetry %1.2f, dist bad 2",
879 fhRe2[index] =
new TH2F(key,title,nptbins,ptmin,ptmax,nmassbins,massmin,massmax) ;
880 fhRe2[index]->SetXTitle(
"#it{p}_{T} (GeV/#it{c})");
881 fhRe2[index]->SetYTitle(
"#it{M}_{#gamma,#gamma} (GeV/#it{c}^{2})");
882 outputContainer->Add(
fhRe2[index]) ;
885 snprintf(key, buffersize,
"hRe_cen%d_pidbit%d_asy%d_dist3",ic,ipid,iasym) ;
886 snprintf(title, buffersize,
"Real #it{M}_{#gamma#gamma} distr. for centrality=%d, PID bit=%d and asymmetry %1.2f, dist bad 3",
888 fhRe3[index] =
new TH2F(key,title,nptbins,ptmin,ptmax,nmassbins,massmin,massmax) ;
889 fhRe3[index]->SetXTitle(
"#it{p}_{T} (GeV/#it{c})");
890 fhRe3[index]->SetYTitle(
"#it{M}_{#gamma,#gamma} (GeV/#it{c}^{2})");
891 outputContainer->Add(
fhRe3[index]) ;
898 snprintf(key, buffersize,
"hReInvPt_cen%d_pidbit%d_asy%d_dist1",ic,ipid,iasym) ;
899 snprintf(title, buffersize,
"Real #it{M}_{#gamma#gamma} distr. for centrality=%d, PID bit=%d and asymmetry %1.2f, dist bad 1",
901 fhReInvPt1[index] =
new TH2F(key,title,nptbins,ptmin,ptmax,nmassbins,massmin,massmax) ;
902 fhReInvPt1[index]->SetXTitle(
"#it{p}_{T} (GeV/#it{c})");
903 fhReInvPt1[index]->SetYTitle(
"#it{M}_{#gamma,#gamma} (GeV/#it{c}^{2})");
908 snprintf(key, buffersize,
"hReInvPt_cen%d_pidbit%d_asy%d_dist2",ic,ipid,iasym) ;
909 snprintf(title, buffersize,
"Real #it{M}_{#gamma#gamma} distr. for centrality=%d, PID bit=%d and asymmetry %1.2f, dist bad 2",
911 fhReInvPt2[index] =
new TH2F(key,title,nptbins,ptmin,ptmax,nmassbins,massmin,massmax) ;
912 fhReInvPt2[index]->SetXTitle(
"#it{p}_{T} (GeV/#it{c})");
913 fhReInvPt2[index]->SetYTitle(
"#it{M}_{#gamma,#gamma} (GeV/#it{c}^{2})");
917 snprintf(key, buffersize,
"hReInvPt_cen%d_pidbit%d_asy%d_dist3",ic,ipid,iasym) ;
918 snprintf(title, buffersize,
"Real #it{M}_{#gamma#gamma} distr. for centrality=%d, PID bit=%d and asymmetry %1.2f, dist bad 3",
920 fhReInvPt3[index] =
new TH2F(key,title,nptbins,ptmin,ptmax,nmassbins,massmin,massmax) ;
921 fhReInvPt3[index]->SetXTitle(
"#it{p}_{T} (GeV/#it{c})");
922 fhReInvPt3[index]->SetYTitle(
"#it{M}_{#gamma,#gamma} (GeV/#it{c}^{2})");
930 snprintf(key, buffersize,
"hMi_cen%d_pidbit%d_asy%d_dist1",ic,ipid,iasym) ;
931 snprintf(title, buffersize,
"Mixed #it{M}_{#gamma#gamma} distr. for centrality=%d, PID bit=%d and asymmetry %1.2f, dist bad 1",
933 fhMi1[index] =
new TH2F(key,title,nptbins,ptmin,ptmax,nmassbins,massmin,massmax) ;
934 fhMi1[index]->SetXTitle(
"#it{p}_{T} (GeV/#it{c})");
935 fhMi1[index]->SetYTitle(
"#it{M}_{#gamma,#gamma} (GeV/#it{c}^{2})");
936 outputContainer->Add(
fhMi1[index]) ;
939 snprintf(key, buffersize,
"hMi_cen%d_pidbit%d_asy%d_dist2",ic,ipid,iasym) ;
940 snprintf(title, buffersize,
"Mixed #it{M}_{#gamma#gamma} distr. for centrality=%d, PID bit=%d and asymmetry %1.2f, dist bad 2",
942 fhMi2[index] =
new TH2F(key,title,nptbins,ptmin,ptmax,nmassbins,massmin,massmax) ;
943 fhMi2[index]->SetXTitle(
"#it{p}_{T} (GeV/#it{c})");
944 fhMi2[index]->SetYTitle(
"#it{M}_{#gamma,#gamma} (GeV/#it{c}^{2})");
945 outputContainer->Add(
fhMi2[index]) ;
948 snprintf(key, buffersize,
"hMi_cen%d_pidbit%d_asy%d_dist3",ic,ipid,iasym) ;
949 snprintf(title, buffersize,
"Mixed #it{M}_{#gamma#gamma} distr. for centrality=%d, PID bit=%d and asymmetry %1.2f, dist bad 3",
951 fhMi3[index] =
new TH2F(key,title,nptbins,ptmin,ptmax,nmassbins,massmin,massmax) ;
952 fhMi3[index]->SetXTitle(
"#it{p}_{T} (GeV/#it{c})");
953 fhMi3[index]->SetYTitle(
"#it{M}_{#gamma,#gamma} (GeV/#it{c}^{2})");
954 outputContainer->Add(
fhMi3[index]) ;
961 snprintf(key, buffersize,
"hMiInvPt_cen%d_pidbit%d_asy%d_dist1",ic,ipid,iasym) ;
962 snprintf(title, buffersize,
"Mixed #it{M}_{#gamma#gamma} distr. for centrality=%d, PID bit=%d and asymmetry %1.2f, dist bad 1",
964 fhMiInvPt1[index] =
new TH2F(key,title,nptbins,ptmin,ptmax,nmassbins,massmin,massmax) ;
965 fhMiInvPt1[index]->SetXTitle(
"#it{p}_{T} (GeV/#it{c})");
966 fhMiInvPt1[index]->SetYTitle(
"#it{M}_{#gamma,#gamma} (GeV/#it{c}^{2})");
970 snprintf(key, buffersize,
"hMiInvPt_cen%d_pidbit%d_asy%d_dist2",ic,ipid,iasym) ;
971 snprintf(title, buffersize,
"Mixed #it{M}_{#gamma#gamma} distr. for centrality=%d, PID bit=%d and asymmetry %1.2f, dist bad 2",
973 fhMiInvPt2[index] =
new TH2F(key,title,nptbins,ptmin,ptmax,nmassbins,massmin,massmax) ;
974 fhMiInvPt2[index]->SetXTitle(
"#it{p}_{T} (GeV/#it{c})");
975 fhMiInvPt2[index]->SetYTitle(
"#it{M}_{#gamma,#gamma} (GeV/#it{c}^{2})");
979 snprintf(key, buffersize,
"hMiInvPt_cen%d_pidbit%d_asy%d_dist3",ic,ipid,iasym) ;
980 snprintf(title, buffersize,
"Mixed #it{M}_{#gamma#gamma} distr. for centrality=%d, PID bit=%d and asymmetry %1.2f,dist bad 3",
982 fhMiInvPt3[index] =
new TH2F(key,title,nptbins,ptmin,ptmax,nmassbins,massmin,massmax) ;
983 fhMiInvPt3[index]->SetXTitle(
"#it{p}_{T} (GeV/#it{c})");
984 fhMiInvPt3[index]->SetYTitle(
"#it{M}_{#gamma,#gamma} (GeV/#it{c}^{2})");
993 fhEPairDiffTime =
new TH2F(
"hEPairDiffTime",
"cluster pair time difference vs #it{p}_{T}",nptbins,ptmin,ptmax, tdbins,tdmin,tdmax);
1001 nptbins,ptmin,ptmax,nmassbins,massmin,massmax) ;
1007 nptbins,ptmin,ptmax,nmassbins,massmin,massmax) ;
1015 nptbins,ptmin,ptmax,nmassbins,massmin,massmax) ;
1021 nptbins,ptmin,ptmax,nmassbins,massmin,massmax) ;
1031 fhReConv =
new TH2F(
"hReConv",
"Real Pair with one recombined conversion ",nptbins,ptmin,ptmax,nmassbins,massmin,massmax) ;
1032 fhReConv->SetXTitle(
"#it{p}_{T} (GeV/#it{c})");
1033 fhReConv->SetYTitle(
"#it{M}_{#gamma,#gamma} (GeV/#it{c}^{2})");
1036 fhReConv2 =
new TH2F(
"hReConv2",
"Real Pair with 2 recombined conversion ",nptbins,ptmin,ptmax,nmassbins,massmin,massmax) ;
1037 fhReConv2->SetXTitle(
"#it{p}_{T} (GeV/#it{c})");
1038 fhReConv2->SetYTitle(
"#it{M}_{#gamma,#gamma} (GeV/#it{c}^{2})");
1043 fhMiConv =
new TH2F(
"hMiConv",
"Mixed Pair with one recombined conversion ",nptbins,ptmin,ptmax,nmassbins,massmin,massmax) ;
1044 fhMiConv->SetXTitle(
"#it{p}_{T} (GeV/#it{c})");
1045 fhMiConv->SetYTitle(
"#it{M}_{#gamma,#gamma} (GeV/#it{c}^{2})");
1048 fhMiConv2 =
new TH2F(
"hMiConv2",
"Mixed Pair with 2 recombined conversion ",nptbins,ptmin,ptmax,nmassbins,massmin,massmax) ;
1049 fhMiConv2->SetXTitle(
"#it{p}_{T} (GeV/#it{c})");
1050 fhMiConv2->SetYTitle(
"#it{M}_{#gamma,#gamma} (GeV/#it{c}^{2})");
1057 fhRePtAsym =
new TH2F(
"hRePtAsym",
"#it{Asymmetry} vs #it{p}_{T}, for pairs",
1058 nptbins,ptmin,ptmax,nasymbins,asymmin,asymmax) ;
1059 fhRePtAsym->SetXTitle(
"#it{p}_{T} (GeV/#it{c})");
1063 fhRePtAsymPi0 =
new TH2F(
"hRePtAsymPi0",Form(
"#it{Asymmetry} vs #it{p}_{T}, for pairs %2.2f<M<%2.2f MeV/#it{c}^{2}",
1065 nptbins,ptmin,ptmax,nasymbins,asymmin,asymmax) ;
1070 fhRePtAsymEta =
new TH2F(
"hRePtAsymEta",Form(
"#it{Asymmetry} vs #it{p}_{T}, for pairs %2.2f<M<%2.2f MeV/#it{c}^{2}",
1072 nptbins,ptmin,ptmax,nasymbins,asymmin,asymmax) ;
1079 fhMiPtAsym =
new TH2F(
"hMiPtAsym",
"#it{Asymmetry} vs #it{p}_{T}, for mixed pairs",nptbins,ptmin,ptmax,nasymbins,asymmin,asymmax) ;
1080 fhMiPtAsym->SetXTitle(
"#it{p}_{T} (GeV/#it{c})");
1084 fhMiPtAsymPi0 =
new TH2F(
"hMiPtAsymPi0",Form(
"#it{Asymmetry} vs #it{p}_{T}, for mixed pairs %2.2f<M<%2.2f MeV/#it{c}^{2}",
1086 nptbins,ptmin,ptmax,nasymbins,asymmin,asymmax) ;
1092 Form(
"#it{Asymmetry} vs #it{p}_{T}, for mixed pairs %2.2f<M<%2.2f MeV/#it{c}^{2}",
1094 nptbins,ptmin,ptmax,nasymbins,asymmin,asymmax) ;
1106 (Form(
"hPtBin%d_Cluster_EtaPhi",ipt),
1107 Form(
"#eta vs #varphi, %2.2f<#it{p}_{T}<%2.2f GeV/#it{c}",
fPtCuts[ipt],
fPtCuts[ipt+1]),
1108 netabins,etamin,etamax,nphibins,phimin,phimax);
1114 (Form(
"hPtBin%d_Cluster_ColRow",ipt),
1115 Form(
"column vs row, %2.2f<#it{p}_{T}<%2.2f GeV/#it{c}",
fPtCuts[ipt],
fPtCuts[ipt+1]),
1116 ncolcell,colcellmin,colcellmax,nrowcell,rowcellmin,rowcellmax);
1157 snprintf(key, buffersize,
"hRe_pt%d_cell%d_asym%d",ipt,icell,iasym) ;
1158 snprintf(title, buffersize,
"Real #it{M}_{#gamma#gamma} distr. for %1.1f< #it{p}_{T} < %1.1f, ncell>%d and asym<%1.2f ",
1171 snprintf(key, buffersize,
"hMi_pt%d_cell%d_asym%d",ipt,icell,iasym) ;
1172 snprintf(title, buffersize,
"Mixed #it{M}_{#gamma#gamma} distr. for %1.1f< #it{p}_{T} < %1.1f, ncell>%d and asym<%1.2f",
1191 snprintf(key, buffersize,
"hRe_pt%d_cell%d_asym%d_SM%d",ipt,icell,iasym,iSM) ;
1192 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 ",
1202 snprintf(key, buffersize,
"hReOpAngle_pt%d_cell%d_asym%d",ipt,icell,iasym) ;
1203 snprintf(title, buffersize,
"Real #theta_{#gamma#gamma} distr. for %1.1f< #it{p}_{T} < %1.1f, ncell>%d and asym<%1.2f ",
1216 snprintf(key, buffersize,
"hMiOpAngle_pt%d_cell%d_asym%d",ipt,icell,iasym) ;
1217 snprintf(title, buffersize,
"Mixed #theta_{#gamma#gamma} distr. for %1.1f< #it{p}_{T} < %1.1f, ncell>%d and asym<%1.2f",
1235 snprintf(key, buffersize,
"hReOpAngle_pt%d_cell%d_asym%d_SM%d",ipt,icell,iasym,iSM) ;
1236 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 ",
1254 fhReSS[0] =
new TH2F(
"hRe_SS_Tight",
" 0.01 < #lambda_{0}^{2} < 0.4",
1255 nptbins,ptmin,ptmax,nmassbins,massmin,massmax);
1256 fhReSS[0]->SetXTitle(
"#it{p}_{T} (GeV/#it{c})");
1257 fhReSS[0]->SetYTitle(
"#it{M}_{#gamma,#gamma} (GeV/#it{c}^{2})");
1258 outputContainer->Add(
fhReSS[0]) ;
1261 fhReSS[1] =
new TH2F(
"hRe_SS_Loose",
" #lambda_{0}^{2} > 0.4",
1262 nptbins,ptmin,ptmax,nmassbins,massmin,massmax);
1263 fhReSS[1]->SetXTitle(
"#it{p}_{T} (GeV/#it{c})");
1264 fhReSS[1]->SetYTitle(
"#it{M}_{#gamma,#gamma} (GeV/#it{c}^{2})");
1265 outputContainer->Add(
fhReSS[1]) ;
1268 fhReSS[2] =
new TH2F(
"hRe_SS_Both",
" cluster_{1} #lambda_{0}^{2} > 0.4; cluster_{2} 0.01 < #lambda_{0}^{2} < 0.4",
1269 nptbins,ptmin,ptmax,nmassbins,massmin,massmax);
1270 fhReSS[2]->SetXTitle(
"#it{p}_{T} (GeV/#it{c})");
1271 fhReSS[2]->SetYTitle(
"#it{M}_{#gamma,#gamma} (GeV/#it{c}^{2})");
1272 outputContainer->Add(
fhReSS[2]) ;
1277 fhEventBin=
new TH1I(
"hEventBin",
"Number of real pairs per bin(cen,vz,rp)",
1284 fhEventMixBin=
new TH1I(
"hEventMixBin",
"Number of mixed pairs per bin(cen,vz,rp)",
1310 (
"hRealOpeningAngle",
"Angle between all #gamma pair vs E_{#pi^{0}}",nptbins,ptmin,ptmax,nopanbins,opanmin,opanmax);
1316 (
"hRealCosOpeningAngle",
"Cosinus of angle between all #gamma pair vs E_{#pi^{0}}",nptbins,ptmin,ptmax,100,0,1);
1324 (
"hMixedOpeningAngle",
"Angle between all #gamma pair vs E_{#pi^{0}}, Mixed pairs",nptbins,ptmin,ptmax,nopanbins,opanmin,opanmax);
1330 (
"hMixedCosOpeningAngle",
"Cosinus of angle between all #gamma pair vs E_{#pi^{0}}, Mixed pairs",nptbins,ptmin,ptmax,100,0,1);
1338 for(
Int_t ism = 0; ism < 20; ism++)
1341 (Form(
"hRealOpeningAngleMod_%d",ism),
1342 Form(
"Angle between all #gamma pair vs E_{#pi^{0}}, SM %d",ism),
1343 nptbins,ptmin,ptmax,nopanbins,opanmin,opanmax);
1351 (Form(
"hMixedOpeningAngleMod_%d",ism),
1352 Form(
"Angle between all #gamma pair vs E_{#pi^{0}}, Mixed pairs, SM %d",ism),
1353 nptbins,ptmin,ptmax,nopanbins,opanmin,opanmax);
1366 nptbins,ptmin,ptmax,nmassbins,massmin,massmax);
1372 nptbins,ptmin,ptmax,nmassbins,massmin,massmax);
1378 nptbins,ptmin,ptmax,nmassbins,massmin,massmax);
1385 fhMCPi0PtOrigin =
new TH2F(
"hMCPi0PtOrigin",
"Reconstructed pair from generated #pi^{0} #it{p}_{T} vs origin",nptbins,ptmin,ptmax,11,0,11) ;
1400 fhMCNotResonancePi0PtOrigin =
new TH2F(
"hMCNotResonancePi0PtOrigin",
"Reconstructed pair from generated #pi^{0} #it{p}_{T} vs origin",nptbins,ptmin,ptmax,11,0,11) ;
1415 fhMCPi0PtStatus =
new TH2F(
"hMCPi0PtStatus",
"Reconstructed pair from generated #pi^{0} #it{p}_{T} vs status",nptbins,ptmin,ptmax,101,-50,50) ;
1422 fhMCEtaPtOrigin =
new TH2F(
"hMCEtaPtOrigin",
"Reconstructed pair from generated #pi^{0} #it{p}_{T} vs origin",nptbins,ptmin,ptmax,7,0,7) ;
1433 fhMCPi0ProdVertex =
new TH2F(
"hMCPi0ProdVertex",
"Selected reco pair from generated #pi^{0} #it{p}_{T} vs production vertex",
1434 200,0.,20.,5000,0,500) ;
1439 fhMCEtaProdVertex =
new TH2F(
"hMCEtaProdVertex",
"Selected reco pair from generated #eta #it{p}_{T} vs production vertex",
1440 200,0.,20.,5000,0,500) ;
1446 TString originTitlePi0[] = {
"Status 21",
"Quark",
"qq Resonances",
"Resonances",
"#rho",
"#omega",
"K",
"Other",
"#eta",
"#eta prime"};
1447 for (
Int_t iorg=0;iorg<10;iorg++) {
1449 (Form(
"hPrimPi0Radius_%d",iorg),
1450 Form(
"Production radius of reconstructed pair from generated #pi^{0}, origin %s",originTitlePi0[iorg].
Data()),
1451 200,0,20,1000,0,500) ;
1456 TString originTitleEta[] = {
"Status 21",
"Quark",
"qq Resonances",
"Resonances",
"Other",
"#eta prime"};
1457 for (
Int_t iorg=0;iorg<6;iorg++) {
1459 (Form(
"hPrimEtaRadius_%d",iorg),
1460 Form(
"Production radius of reconstructed pair from generated #eta, origin %s",originTitleEta[iorg].
Data()),
1461 200,0,20,1000,0,500) ;
1468 TString ancestorTitle[] = {
"Photon, conversion",
"Electron, conversion",
1469 "Pi0",
"Eta",
"AntiProton",
"AntiNeutron",
"Muon & converted stable particles",
1470 "Resonances",
"Strings",
"Initial state interaction",
"Final state radiations",
"Colliding protons",
1471 "Pi0Not2SingleGamma",
"EtaNot2Gamma",
"Photon, not both conversion",
"Electron, not both conversion",
"not found"};
1473 for(
Int_t i = 0; i<17; i++)
1475 fhMCOrgMass[i] =
new TH2F(Form(
"hMCOrgMass_%d",i),Form(
"#it{M} vs #it{p}_{T}, ancestor %s",ancestorTitle[i].
Data()),
1476 nptbins,ptmin,ptmax,nmassbins,massmin,massmax) ;
1477 fhMCOrgMass[i]->SetXTitle(
"#it{p}_{T} (GeV/#it{c})");
1478 fhMCOrgMass[i]->SetYTitle(
"#it{M}_{#gamma,#gamma} (GeV/#it{c}^{2})");
1481 fhMCOrgAsym[i]=
new TH2F(Form(
"hMCOrgAsym_%d",i),Form(
"#it{Asymmetry} vs #it{p}_{T}, ancestor %s",ancestorTitle[i].
Data()),
1482 nptbins,ptmin,ptmax,nasymbins,asymmin,asymmax) ;
1483 fhMCOrgAsym[i]->SetXTitle(
"#it{p}_{T} (GeV/#it{c})");
1487 fhMCOrgDeltaEta[i] =
new TH2F(Form(
"hMCOrgDeltaEta_%d",i),Form(
"#Delta #eta of pair vs #it{p}_{T}, ancestor %s",ancestorTitle[i].
Data()),
1488 nptbins,ptmin,ptmax,netabins,-1.4,1.4) ;
1493 fhMCOrgDeltaPhi[i]=
new TH2F(Form(
"hMCOrgDeltaPhi_%d",i),Form(
"#Delta #varphi of pair vs #it{p}_{T}, ancestor %s",ancestorTitle[i].
Data()),
1494 nptbins,ptmin,ptmax,nphibins,-0.7,0.7) ;
1521 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",
1523 nptbins,ptmin,ptmax,nmassbins,massmin,massmax) ;
1524 fhMCPi0MassPtRec[index]->SetXTitle(
"#it{p}_{T, reconstructed} (GeV/#it{c})");
1525 fhMCPi0MassPtRec[index]->SetYTitle(
"#it{M}_{#gamma,#gamma} (GeV/#it{c}^{2})");
1529 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",
1531 nptbins,ptmin,ptmax,nmassbins,massmin,massmax) ;
1537 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",
1539 nptbins,ptmin,ptmax,nptbins,ptmin,ptmax) ;
1545 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",
1547 nptbins,ptmin,ptmax,nptbins,ptmin,ptmax) ;
1553 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",
1555 nptbins,ptmin,ptmax,nmassbins,massmin,massmax) ;
1557 fhMCEtaMassPtRec[index]->SetYTitle(
"#it{M}_{#gamma,#gamma} (GeV/#it{c}^{2})");
1561 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",
1563 nptbins,ptmin,ptmax,nmassbins,massmin,massmax) ;
1569 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",
1571 nptbins,ptmin,ptmax,nptbins,ptmin,ptmax) ;
1578 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",
1580 nptbins,ptmin,ptmax,nptbins,ptmin,ptmax) ;
1600 fhMCPi0MassPtTrue[0] =
new TH2F(
"hMCPi0MassPtTrue",
"Reconstructed Mass vs generated #it{p}_{T} of true #pi^{0} cluster pairs",
1601 nptbins,ptmin,ptmax,nmassbins,massmin,massmax) ;
1606 fhMCPi0MassPtRec[0] =
new TH2F(
"hMCPi0MassPtRec",
"Reconstructed Mass vs reconstructed #it{p}_{T} of true #pi^{0} cluster pairs",
1607 nptbins,ptmin,ptmax,nmassbins,massmin,massmax) ;
1612 fhMCPi0PtTruePtRec[0]=
new TH2F(
"hMCPi0PtTruePtRec",
"Generated vs reconstructed #it{p}_{T} of true #pi^{0} cluster pairs",
1613 nptbins,ptmin,ptmax,nptbins,ptmin,ptmax) ;
1619 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]),
1620 nptbins,ptmin,ptmax,nptbins,ptmin,ptmax) ;
1625 fhMCEtaMassPtTrue[0] =
new TH2F(
"hMCEtaMassPtTrue",
"Reconstructed Mass vs generated #it{p}_{T} of true #eta cluster pairs",
1626 nptbins,ptmin,ptmax,nmassbins,massmin,massmax) ;
1631 fhMCEtaMassPtRec[0] =
new TH2F(
"hMCEtaMassPtRec",
"Reconstructed Mass vs reconstructed #it{p}_{T} of true #eta cluster pairs",
1632 nptbins,ptmin,ptmax,nmassbins,massmin,massmax) ;
1637 fhMCEtaPtTruePtRec[0]=
new TH2F(
"hMCEtaPtTruePtRec",
"Generated vs reconstructed #it{p}_{T} of true #eta cluster pairs",
1638 nptbins,ptmin,ptmax,nptbins,ptmin,ptmax) ;
1644 Form(
"Generated vs reconstructed #it{p}_{T} of true #eta cluster pairs, %2.2f < rec. mass < %2.2f MeV/#it{c}^{2}",
1646 nptbins,ptmin,ptmax,nptbins,ptmin,ptmax) ;
1652 fhMCPi0PtTruePtRecRat =
new TH2F(
"hMCPi0PtTruePtRecRat",
"Reconstructed / generated #it{p}_{T} of true #pi^{0} cluster pairs",
1653 nptbins,ptmin,ptmax,nratbins,ratmin,ratmax) ;
1659 Form(
"Reconstructed / generated #it{p}_{T} of true #pi^{0} cluster pairs, %2.2f < rec. mass < %2.2f MeV/#it{c}^{2}",
1661 nptbins,ptmin,ptmax,nratbins,ratmin,ratmax) ;
1666 fhMCEtaPtTruePtRecRat =
new TH2F(
"hMCEtaPtTruePtRecRat",
"Reconstructed / generated #it{p}_{T} of true #eta cluster pairs",
1667 nptbins,ptmin,ptmax,nratbins,ratmin,ratmax) ;
1673 Form(
"Reconstructed / generated #it{p}_{T} of true #eta cluster pairs, %2.2f < rec. mass < %2.2f MeV/#it{c}^{2}",
1675 nptbins,ptmin,ptmax,nratbins,ratmin,ratmax) ;
1680 fhMCPi0PtTruePtRecDif =
new TH2F(
"hMCPi0PtTruePtRecDif",
"Generated - reconstructed #it{p}_{T} of true #pi^{0} cluster pairs",
1681 nptbins,ptmin,ptmax,ndifbins,difmin,difmax) ;
1687 Form(
"Generated - reconstructed #it{p}_{T} of true #pi^{0} cluster pairs, %2.2f < rec. mass < %2.2f MeV/#it{c}^{2}",
1689 nptbins,ptmin,ptmax,ndifbins,difmin,difmax) ;
1694 fhMCEtaPtTruePtRecDif =
new TH2F(
"hMCEtaPtTruePtRecDif",
"Generated - reconstructed #it{p}_{T} of true #eta cluster pairs",
1695 nptbins,ptmin,ptmax,ndifbins,difmin,difmax) ;
1701 Form(
"Generated - reconstructed #it{p}_{T} of true #eta cluster pairs, %2.2f < rec. mass < %2.2f MeV/#it{c}^{2}",
1703 nptbins,ptmin,ptmax,ndifbins,difmin,difmax) ;
1709 nptbins,ptmin,ptmax,nopanbins,opanmin,opanmax) ;
1715 Form(
"Opening angle of true #pi^{0} cluster pairs, %2.2f < rec. mass < %2.2f MeV/#it{c}^{2}",
1717 nptbins,ptmin,ptmax,nopanbins,opanmin,opanmax) ;
1723 nptbins,ptmin,ptmax,nopanbins,opanmin,opanmax) ;
1729 Form(
"Opening angle of true #eta cluster pairs, %2.2f < rec. mass < %2.2f MeV/#it{c}^{2}",
1731 nptbins,ptmin,ptmax,nopanbins,opanmin,opanmax) ;
1739 (
"hMCPi0PerCentrality",
1740 "Reconstructed #it{p}_{T} vs centrality of true #pi^{0} cluster pairs",
1741 nptbins,ptmin,ptmax,100,0,100) ;
1747 (
"hMCPi0PerCentralityMassCut",
1748 Form(
"Reconstructed #it{p}_{T} vs centrality of true #pi^{0} cluster pairs, %2.2f < rec. mass < %2.2f MeV/#it{c}^{2}",
1750 nptbins,ptmin,ptmax,100,0,100) ;
1756 (
"hMCEtaPerCentrality",
1757 "Reconstructed #it{p}_{T} vs centrality of true #pi^{0} cluster pairs",
1758 nptbins,ptmin,ptmax,100,0,100) ;
1764 (
"hMCEtaPerCentralityMassCut",
1765 Form(
"Reconstructed #it{p}_{T} vs centrality of true #pi^{0} cluster pairs, %2.2f < rec. mass < %2.2f MeV/#it{c}^{2}",
1767 nptbins,ptmin,ptmax,100,0,100) ;
1780 AliError(Form(
"Last module number <%d> is larger than total SM number <%d>, please check configuration \n",
fLastModule,
fNModules));
1823 snprintf(key, buffersize,
"hReMod_%d",imod) ;
1824 snprintf(title, buffersize,
"Real #it{M}_{#gamma#gamma} distr. for Module %d",imod) ;
1825 fhReMod[imod] =
new TH2F(key,title,nptbins,ptmin,ptmax,nmassbins,massmin,massmax) ;
1826 fhReMod[imod]->SetXTitle(
"#it{p}_{T} (GeV/#it{c})");
1827 fhReMod[imod]->SetYTitle(
"#it{M}_{#gamma,#gamma} (GeV/#it{c}^{2})");
1828 outputContainer->Add(
fhReMod[imod]) ;
1831 snprintf(key, buffersize,
"hMiMod_%d",imod) ;
1832 snprintf(title, buffersize,
"Mixed #it{M}_{#gamma#gamma} distr. for Module %d",imod) ;
1833 fhMiMod[imod] =
new TH2F(key,title,nptbins,ptmin,ptmax,nmassbins,massmin,massmax) ;
1834 fhMiMod[imod]->SetXTitle(
"#it{p}_{T} (GeV/#it{c})");
1835 fhMiMod[imod]->SetYTitle(
"#it{M}_{#gamma,#gamma} (GeV/#it{c}^{2})");
1836 outputContainer->Add(
fhMiMod[imod]) ;
1844 TString pairnamePHOS[] = {
"(0-1)",
"(0-2)",
"(1-2)",
"(0-3)",
"(1-3)",
"(2-3)",
"(0-4)",
"(1-4)",
"(2-4)",
"(3-4)"};
1846 for(
Int_t imod=0; imod<10; imod++)
1848 if ( (fNModules == 3 && imod > 2) || (fNModules == 4 && imod > 5) )
1856 snprintf(key, buffersize,
"hReDiffPHOSMod_%d",imod) ;
1857 snprintf(title, buffersize,
"Real pairs PHOS, clusters in different Modules: %s",(pairnamePHOS[imod]).
Data()) ;
1858 fhReDiffPHOSMod[imod] =
new TH2F(key,title,nptbins,ptmin,ptmax,nmassbins,massmin,massmax) ;
1860 fhReDiffPHOSMod[imod]->SetYTitle(
"#it{M}_{#gamma,#gamma} (GeV/#it{c}^{2})");
1865 snprintf(key, buffersize,
"hMiDiffPHOSMod_%d",imod) ;
1866 snprintf(title, buffersize,
"Mixed pairs PHOS, clusters in different Modules: %s",(pairnamePHOS[imod]).
Data()) ;
1867 fhMiDiffPHOSMod[imod] =
new TH2F(key,title,nptbins,ptmin,ptmax,nmassbins,massmin,massmax) ;
1869 fhMiDiffPHOSMod[imod]->SetYTitle(
"#it{M}_{#gamma,#gamma} (GeV/#it{c}^{2})");
1882 for(
Int_t isector=minSector; isector<=maxSector; isector++)
1884 snprintf(key, buffersize,
"hReSameSectorEMCALMod_%d",isector) ;
1885 snprintf(title, buffersize,
"Real pairs EMCAL, clusters in same sector, SM(%d,%d)",isector*2,isector*2+1) ;
1893 snprintf(key, buffersize,
"hMiSameSectorEMCALMod_%d",isector) ;
1894 snprintf(title, buffersize,
"Mixed pairs EMCAL, clusters in same sector, SM(%d,%d)",isector*2,isector*2+1) ;
1905 Int_t maxSide = fNModules-2;
1908 maxSide = fNModules-4;
1915 for(
Int_t iside=minSide; iside<maxSide; iside++)
1918 Int_t ism2 = iside+2;
1927 snprintf(key, buffersize,
"hReSameSideEMCALMod_%d",iside) ;
1928 snprintf(title, buffersize,
"Real pairs EMCAL, clusters in same side SM(%d,%d)",ism1, ism2) ;
1936 snprintf(key, buffersize,
"hMiSameSideEMCALMod_%d",iside) ;
1937 snprintf(title, buffersize,
"Mixed pairs EMCAL, clusters in same side SM(%d,%d)",ism1, ism2) ;
1954 Int_t dcSameSM[6] = {12,13,14,15,16,17};
1955 Int_t phSameSM[6] = {3, 3, 2, 2, 1, 1};
1957 Int_t dcDiffSM[8] = {12,13,14,15,16,17,0,0};
1958 Int_t phDiffSM[8] = {2, 2, 1, 1, 3, 3,0,0};
1960 for(
Int_t icombi = 0; icombi < 8; icombi++)
1962 snprintf(key, buffersize,
"hReDiffSectorDCALPHOS_%d",icombi) ;
1963 snprintf(title, buffersize,
"Real pairs DCAL-PHOS, clusters in different sector, SM(%d,%d)",dcDiffSM[icombi],phDiffSM[icombi]) ;
1970 snprintf(key, buffersize,
"hMiDiffSectorDCALPHOS_%d",icombi) ;
1971 snprintf(title, buffersize,
"Mixed pairs DCAL-PHOS, clusters in different sector, SM(%d,%d)",dcDiffSM[icombi],phDiffSM[icombi]) ;
1978 if ( icombi > 5 ) continue ;
1980 snprintf(key, buffersize,
"hReSameSectorDCALPHOS_%d",icombi) ;
1981 snprintf(title, buffersize,
"Real pairs DCAL-PHOS, clusters in same sector, SM(%d,%d)",dcSameSM[icombi],phSameSM[icombi]) ;
1988 snprintf(key, buffersize,
"hMiSameSectorDCALPHOS_%d",icombi) ;
1989 snprintf(title, buffersize,
"Mixed pairs DCAL-PHOS, clusters in same sector, SM(%d,%d)",dcSameSM[icombi],phSameSM[icombi]) ;
2006 (Form(
"hReOpAngleBin%d_ClusterMin_EtaPhi",icut),
2008 netabins,etamin,etamax,nphibins,phimin,phimax);
2014 (Form(
"hReOpAngleBin%d_ClusterMax_EtaPhi",icut),
2016 netabins,etamin,etamax,nphibins,phimin,phimax);
2022 (Form(
"hReOpAngleBin%d_ClusterMin_ColRow",icut),
2024 ncolcell,colcellmin,colcellmax,nrowcell,rowcellmin,rowcellmax);
2030 (Form(
"hReOpAngleBin%d_ClusterMax_ColRow",icut),
2032 ncolcell,colcellmin,colcellmax,nrowcell,rowcellmin,rowcellmax);
2038 (Form(
"hReOpAngleBin%d_ClusterMin_EPerSM",icut),
2040 nptbins,ptmin,ptmax,20,0,20);
2046 (Form(
"hReOpAngleBin%d_ClusterMax_EPerSM",icut),
2048 nptbins,ptmin,ptmax,20,0,20);
2054 (Form(
"hReOpAngleBin%d_ClusterMin_TimePerSM",icut),
2056 ntimebins,timemin,timemax,20,0,20);
2062 (Form(
"hReOpAngleBin%d_ClusterMax_TimePerSM",icut),
2064 ntimebins,timemin,timemax,20,0,20);
2070 (Form(
"hReOpAngleBin%d_ClusterMin_NCellPerSM",icut),
2078 (Form(
"hReOpAngleBin%d_ClusterMax_NCellPerSM",icut),
2086 (Form(
"hReOpAngleBin%d_PairCluster_RatioPerSM",icut),
2094 (Form(
"hReOpAngleBin%d_PairCluster_MassPerSM",icut),
2096 nmassbins,massmin,massmax,20,0,20);
2102 (Form(
"hReOpAngleBin%d_PairCluster_Mass",icut),
2104 nptbins,ptmin,ptmax,nmassbins,massmin,massmax);
2114 (Form(
"hReOpAngleBin%d_PairCluster_MassMCTruePi0",icut),
2116 nptbins,ptmin,ptmax,nmassbins,massmin,massmax);
2122 (Form(
"hReOpAngleBin%d_PairCluster_MassMCTrueEta",icut),
2124 nptbins,ptmin,ptmax,nmassbins,massmin,massmax);
2131 (Form(
"hPrimPi0AccPt_OpAngleBin%d",icut),
2133 nptbins,ptmin,ptmax) ;
2138 (Form(
"hPrimEtaAccPt_OpAngleBin%d",icut),
2140 nptbins,ptmin,ptmax) ;
2157 (Form(
"hMiOpAngleBin%d_ClusterMin_EtaPhi",icut),
2159 netabins,etamin,etamax,nphibins,phimin,phimax);
2165 (Form(
"hMiOpAngleBin%d_ClusterMax_EtaPhi",icut),
2167 netabins,etamin,etamax,nphibins,phimin,phimax);
2189 (Form(
"hMiOpAngleBin%d_ClusterMin_EPerSM",icut),
2191 nptbins,ptmin,ptmax,20,0,20);
2197 (Form(
"hMiOpAngleBin%d_ClusterMax_EPerSM",icut),
2199 nptbins,ptmin,ptmax,20,0,20);
2205 (Form(
"hMiOpAngleBin%d_ClusterMin_TimePerSM",icut),
2207 ntimebins,timemin,timemax,20,0,20);
2213 (Form(
"hMiOpAngleBin%d_ClusterMax_TimePerSM",icut),
2215 ntimebins,timemin,timemax,20,0,20);
2221 (Form(
"hMiOpAngleBin%d_ClusterMin_NCellPerSM",icut),
2229 (Form(
"hMiOpAngleBin%d_ClusterMax_NCellPerSM",icut),
2237 (Form(
"hMiOpAngleBin%d_PairCluster_RatioPerSM",icut),
2245 (Form(
"hMiOpAngleBin%d_PairCluster_MassPerSM",icut),
2247 nmassbins,massmin,massmax,20,0,20);
2253 (Form(
"hMiOpAngleBin%d_PairCluster_Mass",icut),
2255 nptbins,ptmin,ptmax,nmassbins,massmin,massmax);
2273 TString mcGenNames[] = {
"",
"_MC_Pi0Merged",
"_MC_Pi0Decay",
"_MC_EtaDecay",
"_MC_PhotonOther",
"_MC_Electron",
"_MC_Other"};
2274 TString mcGenTitle[] = {
"",
",MC Pi0-Merged",
",MC Pi0-Decay",
", MC Eta-Decay",
", MC Photon other sources",
", MC Electron",
", MC other sources"};
2277 "Clean",
"HijingBkg",
"NotHijingBkg",
"HijingAndOtherBkg",
2278 "Clean_HijingBkg",
"Clean_NotHijingBkg",
"Clean_HijingAndOtherBkg",
2279 "HijingBkg_NotHijingBkg",
"HijingBkg_HijingAndOtherBkg",
"NotHijingBkg_HijingAndOtherBkg" } ;
2281 "no overlap",
"pair Hijing Bkg",
"pair not Hijing bkg",
"pair Hijing and other bkg",
2282 "no overlap and hijing overlap",
"no overlap and generator overlap",
"no overlap and multiple overlap",
2283 "hijing overlap and gener overlap",
"hijing overlap and multiple overlap",
"gener overlap and multiple overlap" } ;
2295 nptbins,ptmin,ptmax) ;
2302 nptbins,ptmin,ptmax,netabinsopen,-2, 2) ;
2310 nptbins,ptmin,ptmax,nphibinsopen,0,360) ;
2320 nptbins,ptmin,ptmax) ;
2326 Form(
"Primary #pi^{0} #it{p}_{T} with both photons in acceptance, generator %s",
GetCocktailGenNameToCheck(igen).Data()),
2327 nptbins,ptmin,ptmax) ;
2333 Form(
"Primary #pi^{0} #it{p}_{T} with both photons in acceptance, generator %s",
GetCocktailGenNameToCheck(igen).Data()),
2334 nptbins,ptmin,ptmax) ;
2344 nptbins,ptmin,ptmax) ;
2348 Int_t netabinsopen = TMath::Nint(netabins*4/(etamax-etamin));
2352 nptbins,ptmin,ptmax,netabinsopen,-2, 2) ;
2360 nptbins,ptmin,ptmax,nphibinsopen,0,360) ;
2370 nptbins,ptmin,ptmax) ;
2377 nptbins,ptmin,ptmax) ;
2384 nptbins,ptmin,ptmax) ;
2391 for(
Int_t itag = 0; itag < 10; itag++)
2394 (Form(
"h%sGeneratorPairMass%s%s",
2396 Form(
"Pair Mass with generator%s, %s ",
2398 nptbins,ptmin,ptmax,nmassbins,massmin,massmax);
2404 (Form(
"h%sGeneratorPairMass%s%s_MCPi0",
2406 Form(
"Pair Mass with contribution of true #pi^{0} generator%s, %s ",
2408 nptbins,ptmin,ptmax,nmassbins,massmin,massmax);
2414 (Form(
"h%sGeneratorPairMass%s%s_MCEta",
2416 Form(
"Pair Mass with contribution of true #eta generator%s, %s ",
2418 nptbins,ptmin,ptmax,nmassbins,massmin,massmax);
2426 (Form(
"h%sGeneratorPairCent%s%s_MCPi0",
2428 Form(
"Pair Mass with contribution of true #pi^{0} generator%s, %s ",
2430 nptbins,ptmin,ptmax,100,0,100);
2436 (Form(
"h%sGeneratorPairCent%s%s_MCPi0_MassCut",
2438 Form(
"Pair Mass with contribution of true #pi^{0} generator%s, %s, %2.2f<M<%2.2f",
2440 nptbins,ptmin,ptmax,100,0,100);
2446 (Form(
"h%sGeneratorPairCent%s%s_MCEta",
2448 Form(
"Pair Mass with contribution of true #eta generator%s, %s ",
2450 nptbins,ptmin,ptmax,100,0,100);
2456 (Form(
"h%sGeneratorPairCent%s%s_MCEta_MassCut",
2458 Form(
"Pair Mass with contribution of true #eta generator%s, %s, %2.2f<M<%2.2f",
2460 nptbins,ptmin,ptmax,100,0,100);
2467 (Form(
"h%sGeneratorPairEPrimRecoRatio%s%s_MCPi0",
2469 Form(
"#it{E}_{reco}/#it{E}_{gen} pair with contribution of true #pi^{0} generator%s, %s ",
2471 nptbins,ptmin,ptmax,nratbins,ratmin,ratmax);
2477 (Form(
"h%sGeneratorPairEPrimRecoRatio%s%s_MCEta",
2479 Form(
"#it{E}_{reco}/#it{E}_{gen} pair with contribution of true #eta generator%s, %s ",
2481 nptbins,ptmin,ptmax,nratbins,ratmin,ratmax);
2487 (Form(
"h%sGeneratorPairEPrimRecoDiff%s%s_MCPi0",
2489 Form(
"#it{E}_{reco}-#it{E}_{gen} pair with contribution of true #pi^{0} generator%s, %s ",
2491 nptbins,ptmin,ptmax,ndifbins,difmin,difmax);
2497 (Form(
"h%sGeneratorPairEPrimRecoDiff%s%s_MCEta",
2499 Form(
"#it{E}_{reco}-#it{E}_{gen} pair with contribution of true #eta generator%s, %s ",
2501 nptbins,ptmin,ptmax,ndifbins,difmin,difmax);
2507 (Form(
"h%sGeneratorPairEPrimRecoRatio%s%s_MCPi0MassCut",
2509 Form(
"#it{E}_{reco}/#it{E}_{gen} pair with contribution of true #pi^{0} generator%s, %s ",
2511 nptbins,ptmin,ptmax,nratbins,ratmin,ratmax);
2517 (Form(
"h%sGeneratorPairEPrimRecoRatio%s%s_MCEtaMassCut",
2519 Form(
"#it{E}_{reco}/#it{E}_{gen} pair with contribution of true #eta generator%s, %s ",
2521 nptbins,ptmin,ptmax,nratbins,ratmin,ratmax);
2527 (Form(
"h%sGeneratorPairEPrimRecoDiff%s%s_MCPi0MassCut",
2529 Form(
"#it{E}_{reco}-#it{E}_{gen} pair with contribution of true #pi^{0} generator%s, %s ",
2531 nptbins,ptmin,ptmax,ndifbins,difmin,difmax);
2537 (Form(
"h%sGeneratorPairEPrimRecoDiff%s%s_MCEtaMassCut",
2539 Form(
"#it{E}_{reco}-#it{E}_{gen} pair with contribution of true #eta generator%s, %s ",
2541 nptbins,ptmin,ptmax,ndifbins,difmin,difmax);
2554 return outputContainer;
2562 printf(
"**** Print %s %s ****\n", GetName(), GetTitle() ) ;
2565 printf(
"Number of bins in Centrality: %d \n",
GetNCentrBin()) ;
2566 printf(
"Number of bins in Z vert. pos: %d \n",
GetNZvertBin()) ;
2567 printf(
"Number of bins in Reac. Plain: %d \n",
GetNRPBin()) ;
2568 printf(
"Depth of event buffer: %d \n",
GetNMaxEvMix()) ;
2569 printf(
"Pair in same Module: %d \n",
fSameSM) ;
2570 printf(
"Cuts: \n") ;
2572 printf(
"Number of modules: %d \n",
fNModules) ;
2574 printf(
"Asymmetry cuts: n = %d, \n",
fNAsymCuts) ;
2575 printf(
"\tasymmetry < ");
2579 printf(
"PID selection bits: n = %d, \n",
fNPIDBits) ;
2580 printf(
"\tPID bit = ");
2586 printf(
"pT cuts: n = %d, \n",
fNPtCuts) ;
2594 printf(
"N cell in cluster cuts: n = %d, \n",
fNCellNCuts) ;
2595 printf(
"\tnCell > ");
2600 printf(
"------------------------------------------------------\n") ;
2608 if ( !
GetMC() )
return;
2625 AliVParticle * primary = 0;
2629 for(
Int_t i=0 ; i < nprim; i++)
2631 if ( !
GetReader()->AcceptParticleMCLabel( i ) ) continue ;
2633 primary =
GetMC()->GetTrack(i) ;
2636 AliWarning(
"Primaries pointer not available!!");
2641 if( primary->E() < 0.4 )
continue;
2643 pdg = primary->PdgCode();
2645 if( pdg != 111 && pdg != 221) continue ;
2647 nDaught = primary->GetNDaughters();
2648 iphot1 = primary->GetDaughterLabel(0) ;
2649 iphot2 = primary->GetDaughterLabel(1) ;
2652 if ( primary->E() == TMath::Abs(primary->Pz()) ||
2653 (primary->E() - primary->Pz()) < 1e-3 ||
2654 (primary->E() + primary->Pz()) < 0 ) continue ;
2662 mesonY = 0.5*TMath::Log((primary->E()+primary->Pz())/(primary->E()-primary->Pz())) ;
2664 Bool_t inacceptance = kTRUE;
2671 else inacceptance = kFALSE;
2677 if( mesonPhi < 0 ) mesonPhi+=TMath::TwoPi();
2678 mesonPhi *= TMath::RadToDeg();
2703 if(TMath::Abs(mesonY) < 1.0)
2737 if(TMath::Abs(mesonY) < 1.0)
2773 Int_t momindex = primary->GetMother();
2775 Int_t momstatus = -1;
2779 if(momindex >= 0 && momindex < nprim)
2781 status = primary->MCStatusCode();
2782 AliVParticle* mother =
GetMC()->GetTrack(momindex);
2783 mompdg = TMath::Abs(mother->PdgCode());
2784 momstatus = mother->MCStatusCode();
2786 momR = TMath::Sqrt(mother->Xv()*mother->Xv()+mother->Yv()*mother->Yv());
2796 else if(mompdg > 2100 && mompdg < 2210)
2802 else if(mompdg >= 310 && mompdg <= 323)
2805 else if(momstatus == 11 || momstatus == 12 )
2816 else if(mompdg > 2100 && mompdg < 2210)
2822 else if(mompdg >= 310 && mompdg <= 323)
2825 else if(momstatus == 11 || momstatus == 12 )
2835 else if(mompdg > 2100 && mompdg < 2210)
2838 else if(momstatus == 11 || momstatus == 12 )
2852 if ( nDaught != 2 )
continue;
2854 if ( iphot1 < 0 || iphot1 >= nprim || iphot2 < 0 || iphot2 >= nprim ) continue ;
2858 Bool_t inacceptance1 = kTRUE;
2859 Bool_t inacceptance2 = kTRUE;
2861 AliVParticle * phot1 =
GetMC()->GetTrack(iphot1) ;
2862 AliVParticle * phot2 =
GetMC()->GetTrack(iphot2) ;
2864 if(!phot1 || !phot2) continue ;
2866 pdg1 = phot1->PdgCode();
2867 pdg2 = phot2->PdgCode();
2869 fPhotonMom1.SetPxPyPzE(phot1->Px(),phot1->Py(),phot1->Pz(),phot1->E());
2870 fPhotonMom2.SetPxPyPzE(phot2->Px(),phot2->Py(),phot2->Pz(),phot2->E());
2879 if( pdg1 != 22 || pdg2 !=22) continue ;
2898 if(photonPhi1 < 0) photonPhi1+=TMath::TwoPi();
2899 if(photonPhi2 < 0) photonPhi2+=TMath::TwoPi();
2908 Bool_t sameSector = kFALSE;
2912 if((sm1==j && sm2==j+1) || (sm1==j+1 && sm2==j)) sameSector = kTRUE;
2915 if(sm1!=sm2 && !sameSector)
2917 inacceptance1 = kFALSE;
2918 inacceptance2 = kFALSE;
2925 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",
2927 mesonPt,mesonYeta,mesonPhi,
2930 inacceptance1, inacceptance2));
2932 if(inacceptance1 && inacceptance2)
2937 Bool_t cutAngle = kFALSE;
2940 AliDebug(2,Form(
"\t ACCEPTED pdg %d: pt %2.2f, phi %2.2f, eta %2.2f",pdg,mesonPt,mesonPhi,mesonYeta));
2978 Int_t angleBin = -1;
2985 if( angleBin >= 0 && angleBin < fNAngleCutBins)
3026 Int_t angleBin = -1;
3033 if( angleBin >= 0 && angleBin < fNAngleCutBins)
3049 Float_t momentumDaughter1AlongMother = 0.;
3050 Float_t momentumDaughter2AlongMother = 0.;
3052 if (momentumSquaredMother > 0.)
3059 Float_t ptArmSquared = momentumSquaredDaughter1 - momentumDaughter1AlongMother*momentumDaughter1AlongMother;
3062 if (ptArmSquared > 0.)
3063 pTArm = sqrt(ptArmSquared);
3066 if(momentumDaughter1AlongMother + momentumDaughter2AlongMother > 0)
3067 alphaArm = (momentumDaughter1AlongMother -momentumDaughter2AlongMother) / (momentumDaughter1AlongMother + momentumDaughter2AlongMother);
3075 if(en > 8 && en <= 12) ebin = 0;
3076 if(en > 12 && en <= 16) ebin = 1;
3077 if(en > 16 && en <= 20) ebin = 2;
3078 if(en > 20) ebin = 3;
3079 if(ebin < 0 || ebin > 3) return ;
3117 Int_t momindex = -1;
3119 Int_t momstatus = -1;
3128 AliDebug(1,Form(
"Common ancestor label %d, pdg %d, name %s, status %d",
3129 ancLabel,ancPDG,TDatabasePDG::Instance()->GetParticle(ancPDG)->GetName(),ancStatus));
3139 else if(TMath::Abs(ancPDG)==11)
3147 else if(ancPDG==111)
3149 AliVParticle * mom =
GetMC()->GetTrack(ancLabel);
3152 if ( mom->GetNDaughters()!=2 )
3158 AliVParticle * d1 =
GetMC()->GetTrack(mom->GetDaughterLabel(0));
3159 AliVParticle * d2 =
GetMC()->GetTrack(mom->GetDaughterLabel(1));
3160 if(d1->PdgCode() != 22 || d2->PdgCode() != 22) ok = kFALSE;
3217 AliVParticle* ancestor =
GetMC()->GetTrack(ancLabel);
3218 status = ancestor->MCStatusCode();
3219 momindex = ancestor->GetMother();
3224 AliVParticle* mother =
GetMC()->GetTrack(momindex);
3225 mompdg = TMath::Abs(mother->PdgCode());
3226 momstatus = mother->MCStatusCode();
3227 prodR = TMath::Sqrt(mother->Xv()*mother->Xv()+mother->Yv()*mother->Yv());
3241 if (momstatus == 21) {
3245 else if(mompdg < 22 ) {
3249 else if(mompdg > 2100 && mompdg < 2210) {
3253 else if(mompdg == 221) {
3257 else if(mompdg == 331) {
3261 else if(mompdg == 213) {
3265 else if(mompdg == 223) {
3269 else if(mompdg >= 310 && mompdg <= 323) {
3273 else if(mompdg == 130) {
3277 else if(momstatus == 11 || momstatus == 12 ) {
3290 else if(mompdg > 2100 && mompdg < 2210)
3296 else if(mompdg >= 310 && mompdg <= 323)
3299 else if(momstatus == 12 )
3310 Int_t angleBin = -1;
3317 if( angleBin >= 0 && angleBin < fNAngleCutBins)
3368 else if(ancPDG==221)
3370 AliVParticle * mom =
GetMC()->GetTrack(ancLabel);
3373 if ( mom->GetNDaughters()!=2 )
3379 AliVParticle * d1 =
GetMC()->GetTrack(mom->GetDaughterLabel(0));
3380 AliVParticle * d2 =
GetMC()->GetTrack(mom->GetDaughterLabel(1));
3381 if(d1->PdgCode() != 22 || d2->PdgCode() != 22) ok = kFALSE;
3384 if ( mom->GetNDaughters()!=2 ) ok = kFALSE;
3443 AliVParticle* ancestor =
GetMC()->GetTrack(ancLabel);
3444 momindex = ancestor->GetMother();
3447 AliVParticle* mother =
GetMC()->GetTrack(momindex);
3448 mompdg = TMath::Abs(mother->PdgCode());
3449 momstatus = mother->MCStatusCode();
3451 prodR = TMath::Sqrt(mother->Xv()*mother->Xv()+mother->Yv()*mother->Yv());
3459 if (momstatus == 21 ) {
3463 else if(mompdg < 22 ) {
3467 else if(mompdg > 2100 && mompdg < 2210) {
3471 else if(mompdg == 331) {
3475 else if(momstatus == 11 || momstatus == 12 ) {
3492 Int_t angleBin = -1;
3499 if( angleBin >= 0 && angleBin < fNAngleCutBins)
3508 else if(ancPDG==-2212)
3512 else if(ancPDG==-2112)
3516 else if(TMath::Abs(ancPDG)==13)
3520 else if (TMath::Abs(ancPDG) > 100 && ancLabel > 7)
3533 if(ancStatus == 11 || ancStatus == 12 || ancStatus == 0 )
3543 else if(ancLabel < 6)
3547 else if(ancLabel < 8)
3565 AliDebug(1,
"Common ancestor not found");
3570 if(mcIndex < 0 || mcIndex >= 17)
3572 AliInfo(Form(
"Wrong ancestor type %d, set it to unknown (12)",mcIndex));
3574 AliInfo(Form(
"\t Ancestor type not found: label %d, pdg %d, name %s, status %d\n",
3575 ancLabel,ancPDG,TDatabasePDG::Instance()->GetParticle(ancPDG)->GetName(),ancStatus));
3594 if(!cluster2 || !cluster1)
3596 AliWarning(Form(
"Cluster1 %p or Cluster 2 %p not found!",cluster1,cluster2));
3602 TString genName1 =
"", genName2 =
"", genNameBkg1 =
"", genNameBkg2 =
"";
3603 Int_t indexGen1 = -1, indexGen2 = -1, indexGenBkg1 = -1, indexGenBkg2 = -1;
3605 if (genBkgTag1 == -1)
return;
3606 else if(genBkgTag1 > 3) printf(
"Bkg1 generator tag larger than 3; Main %s Bkg %s\n",genName1.Data(),genNameBkg1.Data());
3609 if (genBkgTag2 == -1)
return;
3610 else if(genBkgTag2 > 3) printf(
"Bkg2 generator tag larger than 3; Main %s Bkg %s\n",genName2.Data(),genNameBkg2.Data());
3613 if(genName1!=genName2)
return;
3630 if ( genBkgTag1 == genBkgTag2 )
3636 Int_t genBkgMin = -1;
3637 Int_t genBkgMax = -1;
3639 if(genBkgTag1 > genBkgTag2)
3641 genBkgMax = genBkgTag1;
3642 genBkgMin = genBkgTag2;
3646 genBkgMax = genBkgTag2;
3647 genBkgMin = genBkgTag1;
3650 if ( genBkgMin == 0 )
3652 if (genBkgMax == 1 ) tag = 4;
3653 else if(genBkgMax == 2 ) tag = 5;
3654 else if(genBkgMax == 3 ) tag = 6;
3656 else if ( genBkgMin == 1 )
3658 if ( genBkgMax == 2 ) tag = 7;
3659 else if ( genBkgMax == 3 ) tag = 8;
3661 else if ( genBkgMin == 2 ) tag = 9;
3666 printf(
"Combination not found, bkg1 tag %d, bkg2 tag %d\n",genBkgTag1,genBkgTag2);
3674 if ( ptPrim < 0.1 || pt < 0.5 )
return;
3710 else if( mcIndex==3 )
3766 AliFatal(Form(
"No input aod photons in AOD with name branch < %s >, STOP",
GetInputAODName().
Data()));
3778 Int_t nPhot2 = nPhot;
3779 Int_t minEntries = 2;
3792 if(!secondLoopInputData)
3798 nPhot2 = secondLoopInputData->GetEntriesFast() ;
3803 AliDebug(1,Form(
"Photon entries %d", nPhot));
3806 if ( nPhot < minEntries )
3831 Double_t vert[] = {0.0, 0.0, 0.0} ;
3832 Int_t evtIndex1 = 0 ;
3833 Int_t currentEvtIndex = -1;
3841 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",
3854 for(
Int_t i1 = 0; i1 < nPhot-last; i1++)
3866 if ( evtIndex1 == -1 )
3868 if ( evtIndex1 == -2 )
3874 if (evtIndex1 != currentEvtIndex)
3887 currentEvtIndex = evtIndex1 ;
3893 fPhotonMom1.SetPxPyPzE(p1->Px(),p1->Py(),p1->Pz(),p1->E());
3896 module1 = p1->GetSModNumber();
3903 Int_t iclus1 = -1, iclus2 = -1 ;
3904 Float_t maxCellFraction1 = 0, maxCellFraction2 = 0;
3905 Int_t absIdMax1 = -1, absIdMax2 = -1;
3906 Int_t icol1 = -1, icol2 = -1, icolAbs1 = -1, icolAbs2 = -1;
3907 Int_t irow1 = -1, irow2 = -1, irowAbs1 = -1, irowAbs2 = -1;
3908 Int_t iRCU1 = -1, iRCU2 = -1;
3913 if(!cluster1) AliWarning(
"Cluster1 not found!");
3939 for(
Int_t i2 = first; i2 < nPhot2; i2++)
3942 AliAODPWG4Particle * p2 = (AliAODPWG4Particle*) (secondLoopInputData->At(i2)) ;
3951 if ( evtIndex2 == -1 )
3953 if ( evtIndex2 == -2 )
4000 Int_t ncell1 = p1->GetNCells();
4005 Int_t ncell2 = p2->GetNCells();
4017 fPhotonMom2.SetPxPyPzE(p2->Px(),p2->Py(),p2->Pz(),p2->E());
4020 module2 = p2->GetSModNumber();
4029 Double_t a = TMath::Abs(p1->E()-p2->E())/(p1->E()+p2->E()) ;
4031 AliDebug(2,Form(
"E: fPhotonMom1 %f, fPhotonMom2 %f; Pair: pT %f, mass %f, a %f", p1->E(), p2->E(), (
fPhotonMom1 +
fPhotonMom2).E(),m,a));
4055 Int_t ancStatus = 0;
4081 if ( module1==module2 )
4089 Int_t isector1 = module1/2;
4090 Int_t isector2 = module2/2;
4091 if ( isector1==isector2 )
4096 else if ( TMath::Abs(isector2-isector1) == 1 )
4098 Int_t iside1 = module1;
4099 Int_t iside2 = module2;
4101 if(module1 > 11) iside1-=2;
4102 if(module2 > 11) iside2-=2;
4104 if ( module1 < module2 && module2-module1==2 )
4106 else if( module2 < module1 && module1-module2==2 )
4152 if(module1!=module2) ok=kFALSE;
4181 if ( l01 > 0.01 && l01 < 0.4 &&
4184 else if( l01 > 0.01 && l01 < 0.4 && l02 > 0.4 )
fhReSS[2]->Fill(pt, m,
GetEventWeight()*weightPt);
4185 else if( l02 > 0.01 && l02 < 0.4 && l01 > 0.4 )
fhReSS[2]->Fill(pt, m,
GetEventWeight()*weightPt);
4203 if(index < 0 || index >= ncentr*fNPIDBits*fNAsymCuts) continue ;
4211 if(p1->DistToBad()>0 && p2->DistToBad()>0)
4216 if(p1->DistToBad()>1 && p2->DistToBad()>1)
4240 Int_t angleBin = -1;
4247 if( angleBin >= 0 && angleBin < fNAngleCutBins)
4264 Int_t mod1 = module1;
4265 Int_t mod2 = module2;
4269 if(!cluster2) AliWarning(
"Cluster2 not found!");
4293 Int_t tmp = absIdMax2;
4294 absIdMax2 = absIdMax1;
4336 if ( p1->GetFiducialArea() == 0 && p2->GetFiducialArea() == 0 )
4339 else if ( p1->GetFiducialArea() != 0 && p2->GetFiducialArea() != 0 )
4367 p1->GetCaloLabel(0), p2->GetCaloLabel(0),
4368 p1->GetTag(),p2->GetTag(),
4370 ncell1, ncell2, m, pt, a, deta, dphi, angle);
4417 if(eventbin < 0) return ;
4423 AliWarning(Form(
"Mix event list not available, bin %d",eventbin));
4427 Int_t nMixed = evMixList->GetSize() ;
4428 for(
Int_t ii=0; ii<nMixed; ii++)
4430 TClonesArray* ev2= (TClonesArray*) (evMixList->At(ii));
4431 Int_t nPhot2=ev2->GetEntriesFast() ;
4433 AliDebug(1,Form(
"Mixed event %d photon entries %d, centrality bin %d",ii, nPhot2,
GetEventCentralityBin()));
4440 for(
Int_t i1 = 0; i1 < nPhot; i1++)
4451 fPhotonMom1.SetPxPyPzE(p1->Px(),p1->Py(),p1->Pz(),p1->E());
4457 for(
Int_t i2 = 0; i2 < nPhot2; i2++)
4459 AliAODPWG4Particle * p2 = (AliAODPWG4Particle*) (ev2->At(i2)) ;
4465 fPhotonMom2.SetPxPyPzE(p2->Px(),p2->Py(),p2->Pz(),p2->E());
4468 Double_t a = TMath::Abs(p1->E()-p2->E())/(p1->E()+p2->E()) ;
4484 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));
4498 if ( module1==module2 )
4506 Int_t isector1 = module1/2;
4507 Int_t isector2 = module2/2;
4508 if ( isector1==isector2 )
4513 else if ( TMath::Abs(isector2-isector1) == 1 )
4515 Int_t iside1 = module1;
4516 Int_t iside2 = module2;
4518 if(module1 > 11) iside1-=2;
4519 if(module2 > 11) iside2-=2;
4521 if ( module1 < module2 && module2-module1==2 )
4523 else if( module2 < module1 && module1-module2==2 )
4567 if(module1!=module2) ok=kFALSE;
4607 if(index < 0 || index >= ncentr*fNPIDBits*fNAsymCuts) continue ;
4614 if(p1->DistToBad()>0 && p2->DistToBad()>0)
4619 if(p1->DistToBad()>1 && p2->DistToBad()>1)
4635 Int_t ncell1 = p1->GetNCells();
4636 Int_t ncell2 = p1->GetNCells();