20 #include <TDatabasePDG.h>
21 #include "TParticle.h"
22 #include <TClonesArray.h>
24 #include <TObjString.h>
30 #include "AliAODPWG4ParticleCorrelation.h"
32 #include "AliVTrack.h"
33 #include "AliVCluster.h"
35 #include "TParticle.h"
37 #include "AliAODMCParticle.h"
38 #include "AliMixedEvent.h"
39 #include "AliAnalysisManager.h"
40 #include "AliInputEventHandler.h"
41 #include "AliEventplane.h"
43 #include "AliESDEvent.h"
44 #include "AliAODEvent.h"
47 #include "AliEMCALGeometry.h"
48 #include "AliPHOSGeoUtils.h"
60 fFillAODWithReferences(0), fCheckLeadingWithNeutralClusters(0),
61 fMaxAssocPt(1000.), fMinAssocPt(0.),
62 fDeltaPhiMaxCut(0.), fDeltaPhiMinCut(0.),
63 fSelectIsolated(0), fMakeSeveralUE(0),
64 fUeDeltaPhiMaxCut(0.), fUeDeltaPhiMinCut(0.),
65 fPi0AODBranchName(
""), fAODNamepTInConeHisto(
""), fNeutralCorr(0),
66 fPi0Trigger(0), fDecayTrigger(0),
67 fNDecayBits(0), fDecayBits(),
69 fMakeAbsoluteLeading(0), fMakeNearSideLeading(0),
70 fLeadingTriggerIndex(-1), fHMPIDCorrelation(0), fFillBradHisto(0),
71 fNAssocPtBins(0), fAssocPtBinLimit(),
73 fListMixTrackEvents(), fListMixCaloEvents(),
74 fUseMixStoredInReader(0), fFillNeutralEventMixPool(0),
75 fM02MaxCut(0), fM02MinCut(0),
76 fSelectLeadingHadronAngle(0), fFillLeadHadOppositeHisto(0),
77 fMinLeadHadPhi(0), fMaxLeadHadPhi(0),
78 fMinLeadHadPt(0), fMaxLeadHadPt(0),
79 fFillEtaGapsHisto(1), fFillMomImbalancePtAssocBinsHisto(0),
80 fFillInvMassHisto(0), fFillBkgBinsHisto(0),
81 fFillTaggedDecayHistograms(0), fDecayTagsM02Cut(0),
82 fMCGenTypeMin(0), fMCGenTypeMax(0),
83 fTrackVector(), fMomentum(), fMomentumIM(),
84 fDecayMom1(), fDecayMom2(),
86 fhPtTriggerInput(0), fhPtTriggerSSCut(0),
87 fhPtTriggerIsoCut(0), fhPtTriggerFidCut(0),
88 fhPtTrigger(0), fhPtTriggerVtxBC0(0),
89 fhPtTriggerVzBin(0), fhPtTriggerBin(0),
90 fhPhiTrigger(0), fhEtaTrigger(0),
92 fhPtDecayTrigger(), fhPtDecayTriggerMC(),
93 fhPtTriggerCentrality(0), fhPtTriggerEventPlane(0),
94 fhTriggerEventPlaneCentrality(0),
95 fhPtTriggerMixed(0), fhPtTriggerMixedVzBin(0), fhPtTriggerMixedBin(0),
96 fhPhiTriggerMixed(0), fhEtaTriggerMixed(0),
97 fhPtLeadingOppositeHadron(0), fhPtDiffPhiLeadingOppositeHadron(0), fhPtDiffEtaLeadingOppositeHadron(0),
98 fhPtNoLeadingOppositeHadron(0), fhEtaPhiNoLeadingOppositeHadron(0),
99 fhDeltaPhiDeltaEtaCharged(0),
100 fhPhiCharged(0), fhEtaCharged(0),
101 fhDeltaPhiCharged(0), fhDeltaEtaCharged(0),
102 fhDeltaPhiChargedPt(0), fhDeltaPhiUeChargedPt(0),
104 fhXECharged(0), fhXECharged_Cone2(0), fhXEUeCharged(0),
105 fhXEPosCharged(0), fhXENegCharged(0),
106 fhPtHbpXECharged(0), fhPtHbpXECharged_Cone2(0), fhPtHbpXEUeCharged(0),
107 fhZTCharged(0), fhZTUeCharged(0),
108 fhZTPosCharged(0), fhZTNegCharged(0),
109 fhPtHbpZTCharged(0), fhPtHbpZTUeCharged(0),
110 fhXEChargedMC(), fhDeltaPhiChargedMC(),
111 fhXEUeChargedRightMC(), fhXEUeChargedLeftMC(),
112 fhDeltaPhiDeltaEtaChargedPtA3GeV(0),
113 fhDeltaPhiChargedPtA3GeV(0), fhDeltaEtaChargedPtA3GeV(0),
115 fhDeltaPhiChargedPileUp(), fhDeltaEtaChargedPileUp(),
116 fhDeltaPhiChargedPtA3GeVPileUp(), fhDeltaEtaChargedPtA3GeVPileUp(),
117 fhXEChargedPileUp(), fhXEUeChargedPileUp(),
118 fhZTChargedPileUp(), fhZTUeChargedPileUp(),
119 fhPtTrigChargedPileUp(),
120 fhDeltaPhiChargedOtherBC(), fhDeltaPhiChargedPtA3GeVOtherBC(),
121 fhXEChargedOtherBC(), fhXEUeChargedOtherBC(),
122 fhZTChargedOtherBC(), fhZTUeChargedOtherBC(),
123 fhPtTrigChargedOtherBC(),
124 fhDeltaPhiChargedBC0(), fhDeltaPhiChargedPtA3GeVBC0(),
125 fhXEChargedBC0(), fhXEUeChargedBC0(),
126 fhZTChargedBC0(), fhZTUeChargedBC0(),
127 fhPtTrigChargedBC0(),
128 fhDeltaPhiChargedVtxBC0(), fhDeltaPhiChargedPtA3GeVVtxBC0(),
129 fhXEChargedVtxBC0(), fhXEUeChargedVtxBC0(),
130 fhZTChargedVtxBC0(), fhZTUeChargedVtxBC0(),
131 fhPtTrigChargedVtxBC0(),
132 fhDeltaPhiUeLeftCharged(0),
133 fhDeltaPhiUeLeftUpCharged(0), fhDeltaPhiUeRightUpCharged(0),
134 fhDeltaPhiUeLeftDownCharged(0), fhDeltaPhiUeRightDownCharged(0),
135 fhXEUeLeftCharged(0),
136 fhXEUeLeftUpCharged(0), fhXEUeRightUpCharged(0),
137 fhXEUeLeftDownCharged(0), fhXEUeRightDownCharged(0),
138 fhPtHbpXEUeLeftCharged(0), fhZTUeLeftCharged(0),
139 fhPtHbpZTUeLeftCharged(0),
140 fhPtTrigPout(0), fhPtTrigCharged(0),
141 fhDeltaPhiChargedMult(0x0), fhDeltaEtaChargedMult(0x0),
142 fhXEMult(0x0), fhXEUeMult(0x0),
143 fhZTMult(0x0), fhZTUeMult(0x0),
144 fhAssocPtBkg(0), fhDeltaPhiDeltaEtaAssocPtBin(0),
145 fhDeltaPhiAssocPtBin(0),
146 fhDeltaPhiAssocPtBinDEta08(0), fhDeltaPhiAssocPtBinDEta0(0),
147 fhDeltaPhiAssocPtBinHMPID(0), fhDeltaPhiAssocPtBinHMPIDAcc(0),
148 fhDeltaPhiBradAssocPtBin(0), fhDeltaPhiBrad(0),
149 fhXEAssocPtBin(0), fhZTAssocPtBin(0),
150 fhXEVZ(0), fhZTVZ(0),
151 fhDeltaPhiDeltaEtaNeutral(0),
152 fhPhiNeutral(0), fhEtaNeutral(0),
153 fhDeltaPhiNeutral(0), fhDeltaEtaNeutral(0),
154 fhDeltaPhiNeutralPt(0), fhDeltaPhiUeNeutralPt(0),
155 fhXENeutral(0), fhXEUeNeutral(0),
156 fhPtHbpXENeutral(0), fhPtHbpXEUeNeutral(0),
157 fhZTNeutral(0), fhZTUeNeutral(0),
158 fhPtHbpZTNeutral(0), fhPtHbpZTUeNeutral(0),
159 fhDeltaPhiUeLeftNeutral(0), fhXEUeLeftNeutral(0),
160 fhPtHbpXEUeLeftNeutral(0), fhZTUeLeftNeutral(0),
161 fhPtHbpZTUeLeftNeutral(0), fhPtPi0DecayRatio(0),
162 fhDeltaPhiPi0DecayCharged(0), fhXEPi0DecayCharged(0), fhZTPi0DecayCharged(0),
163 fhDeltaPhiPi0DecayNeutral(0), fhXEPi0DecayNeutral(0), fhZTPi0DecayNeutral(0),
164 fhDeltaPhiDecayCharged(), fhXEDecayCharged(), fhZTDecayCharged(),
165 fhDeltaPhiDecayChargedAssocPtBin(),
166 fhMCPtTrigger(), fhMCPhiTrigger(), fhMCEtaTrigger(),
167 fhMCPtTriggerNotLeading(), fhMCPhiTriggerNotLeading(), fhMCEtaTriggerNotLeading(),
168 fhMCEtaCharged(), fhMCPhiCharged(),
169 fhMCDeltaEtaCharged(), fhMCDeltaPhiCharged(),
170 fhMCDeltaPhiDeltaEtaCharged(), fhMCDeltaPhiChargedPt(),
171 fhMCPtXECharged(), fhMCPtXEUeCharged(),
172 fhMCPtXEUeLeftCharged(),
173 fhMCPtHbpXECharged(), fhMCPtHbpXEUeCharged(),
174 fhMCPtHbpXEUeLeftCharged(),
176 fhMCPtZTCharged(), fhMCPtZTUeCharged(),
177 fhMCPtZTUeLeftCharged(),
178 fhMCPtHbpZTCharged(), fhMCPtHbpZTUeCharged(),
179 fhMCPtHbpZTUeLeftCharged(),
180 fhMCPtTrigPout(), fhMCPtAssocDeltaPhi(),
182 fhNEventsTrigger(0), fhNtracksMB(0), fhNclustersMB(0),
183 fhMixDeltaPhiCharged(0), fhMixDeltaPhiDeltaEtaCharged(0),
184 fhMixXECharged(0), fhMixXEUeCharged(0), fhMixHbpXECharged(0),
185 fhMixDeltaPhiChargedAssocPtBin(),
186 fhMixDeltaPhiChargedAssocPtBinDEta08(),
187 fhMixDeltaPhiChargedAssocPtBinDEta0(),
188 fhMixDeltaPhiDeltaEtaChargedAssocPtBin(),
189 fhEventBin(0), fhEventMixBin(0), fhEventMBBin(0),
190 fhMassPtTrigger(0), fhMCMassPtTrigger(),
191 fhPtLeadInConeBin(), fhPtSumInConeBin(),
192 fhPtLeadConeBinDecay(), fhSumPtConeBinDecay(),
193 fhPtLeadConeBinMC(), fhSumPtConeBinMC()
211 for(Int_t i = 0; i < 7; i++)
271 Float_t phiAssoc, Float_t phiTrig, Float_t deltaPhi,
272 Float_t etaAssoc, Float_t etaTrig,
273 Int_t decayTag, Float_t hmpidSignal, Int_t outTOF,
274 Int_t cen, Int_t mcTag)
276 Float_t deltaEta = etaTrig-etaAssoc;
277 Float_t deltaPhiOrg = phiTrig-phiAssoc;
309 if(vtxBC == 0 || vtxBC==AliVTrack::kTOFBCNA)
325 if(
GetReader()->IsPileUpFromSPDOrEMCal())
330 if(
GetReader()->IsPileUpFromSPDAndEMCal())
335 if(
GetReader()->IsPileUpFromSPDAndNotEMCal())
340 if(
GetReader()->IsPileUpFromEMCalAndNotSPD())
345 if(
GetReader()->IsPileUpFromNotSPDAndNotEMCal())
363 if(
GetReader()->IsPileUpFromSPDOrEMCal())
368 if(
GetReader()->IsPileUpFromSPDAndEMCal())
373 if(
GetReader()->IsPileUpFromSPDAndNotEMCal())
378 if(
GetReader()->IsPileUpFromEMCalAndNotSPD())
383 if(
GetReader()->IsPileUpFromNotSPDAndNotEMCal())
413 Double_t dphiBrad = -100;
416 dphiBrad = atan2(sin(deltaPhiOrg), cos(deltaPhiOrg))/TMath::Pi();
417 if( TMath::Abs(dphiBrad) > 0.325 && TMath::Abs(dphiBrad) < 0.475 )
422 if( dphiBrad < -1./3 ) dphiBrad += 2;
435 if(TMath::Abs(deltaEta)> 0.8)
438 if(TMath::Abs(deltaEta)< 0.01)
453 if( hmpidSignal > 0 )
459 if(phiAssoc > 5*TMath::DegToRad() && phiAssoc < 20*TMath::DegToRad())
479 Float_t mcTrigPt, Float_t mcTrigPhi, Float_t mcTrigEta,
480 Int_t histoIndex, Bool_t lostDecayPair)
491 if( mcAssocPhi < 0 ) mcAssocPhi+=TMath::TwoPi();
493 Float_t mcdeltaPhi= mcTrigPhi-mcAssocPhi;
494 if(mcdeltaPhi <= -TMath::PiOver2()) mcdeltaPhi+=TMath::TwoPi();
495 if(mcdeltaPhi > 3*TMath::PiOver2()) mcdeltaPhi-=TMath::TwoPi();
499 if( mcAssocPt > mcTrigPt && mcdeltaPhi < TMath::PiOver2() ) lead = kFALSE;
504 if ( mcAssocPt < fMinAssocPt || mcAssocPt >
fMaxAssocPt )
return lead ;
505 if ( mcAssocPt <
GetReader()->GetCTSPtMin())
return lead ;
510 if(TMath::Abs(mcAssocPt -mcTrigPt ) < 1e-6 &&
512 TMath::Abs(mcAssocEta-mcTrigEta) < 1e-6)
return lead ;
514 Float_t mcxE =-mcAssocPt/mcTrigPt*TMath::Cos(mcdeltaPhi);
515 Float_t mchbpXE =-100 ;
516 if(mcxE > 0 ) mchbpXE = TMath::Log(1./mcxE);
518 Float_t mczT = mcAssocPt/mcTrigPt ;
519 Float_t mchbpZT =-100 ;
520 if(mczT > 0 ) mchbpZT = TMath::Log(1./mczT);
522 Double_t mcpout = mcAssocPt*TMath::Sin(mcdeltaPhi) ;
524 AliDebug(1,Form(
"Charged hadron: track Pt %f, track Phi %f, phi trigger %f. Cuts: delta phi %2.2f < %2.2f < %2.2f",
603 Double_t mcUexE = -(mcAssocPt/mcTrigPt)*TMath::Cos(randomphi);
604 Double_t mcUezT = mcAssocPt/mcTrigPt;
607 AliWarning(Form(
"Careful!!, negative xE %2.2f for right UE cos(dPhi %2.2f) = %2.2f, check correlation dPhi limits %f to %f",
652 Double_t mcUexE = -(mcAssocPt/mcTrigPt)*TMath::Cos(randomphi);
653 Double_t mcUezT = mcAssocPt/mcTrigPt;
656 AliWarning(Form(
"Careful!!, negative xE %2.2f for left UE cos(dPhi %2.2f) = %2.2f, check correlation dPhi limits %f to %f",
699 Int_t bin, Int_t decayTag,
700 Int_t outTOF, Int_t mcTag)
703 Float_t zT = ptAssoc/ptTrig ;
704 Float_t xE =-ptAssoc/ptTrig*TMath::Cos(deltaPhi);
705 Float_t pout = ptAssoc*TMath::Sin(deltaPhi) ;
708 AliWarning(Form(
"Careful!!, negative xE %2.2f for right UE cos(dPhi %2.2f) = %2.2f, check correlation dPhi limits %f to %f",
711 Float_t hbpXE = -100;
712 Float_t hbpZT = -100;
714 if(xE > 0 ) hbpXE = TMath::Log(1./xE);
715 if(zT > 0 ) hbpZT = TMath::Log(1./zT);
724 if((deltaPhi > 5*TMath::Pi()/6.) && (deltaPhi < 7*TMath::Pi()/6.))
761 if(vtxBC == 0 || vtxBC==AliVTrack::kTOFBCNA)
780 if(
GetReader()->IsPileUpFromSPDOrEMCal())
786 if(
GetReader()->IsPileUpFromSPDAndEMCal())
792 if(
GetReader()->IsPileUpFromSPDAndNotEMCal())
798 if(
GetReader()->IsPileUpFromEMCalAndNotSPD())
804 if(
GetReader()->IsPileUpFromNotSPDAndNotEMCal())
860 Float_t deltaPhi, Int_t cen, Int_t outTOF, Int_t mcTag)
867 Double_t uexE = -(ptAssoc/ptTrig)*TMath::Cos(randomphi);
868 Double_t uezT = ptAssoc/ptTrig;
871 AliWarning(Form(
"Careful!!, negative xE %2.2f for right UE cos(dPhi %2.2f) = %2.2f, check correlation dPhi limits %f to %f",
909 if(vtxBC == 0 || vtxBC==AliVTrack::kTOFBCNA)
925 if(
GetReader()->IsPileUpFromSPDOrEMCal())
930 if(
GetReader()->IsPileUpFromSPDAndEMCal())
935 if(
GetReader()->IsPileUpFromSPDAndNotEMCal())
940 if(
GetReader()->IsPileUpFromEMCalAndNotSPD())
945 if(
GetReader()->IsPileUpFromNotSPDAndNotEMCal())
974 Double_t uexE = -(ptAssoc/ptTrig)*TMath::Cos(randomphi);
975 Double_t uezT = ptAssoc/ptTrig;
978 AliWarning(Form(
"Careful!!, negative xE %2.2f for left UE cos(dPhi %2.2f) = %2.2f, check correlation dPhi limits %f to %f",
1008 Double_t uexE = -(ptAssoc/ptTrig)*TMath::Cos(randomphi);
1011 AliWarning(Form(
"Careful!!, negative xE %2.2f for left-down UE cos(dPhi %2.2f) = %2.2f, check correlation dPhi limits %f to %f",
1022 Double_t uexE = -(ptAssoc/ptTrig)*TMath::Cos(randomphi);
1025 AliWarning(Form(
"Careful!!, negative xE %2.2f for left-up UE cos(dPhi %2.2f) = %2.2f, check correlation dPhi limits %f to %f",
1036 Double_t uexE = -(ptAssoc/ptTrig)*TMath::Cos(randomphi);
1039 AliWarning(Form(
"Careful!!, negative xE %2.2f for right-up UE cos(dPhi %2.2f) = %2.2f, check correlation dPhi limits %f to %f",
1050 Double_t uexE = -(ptAssoc/ptTrig)*TMath::Cos(randomphi);
1053 AliWarning(Form(
"Careful!!, negative xE %2.2f for right-down UE cos(dPhi %2.2f) = %2.2f, check correlation dPhi limits %f to %f",
1069 Float_t zTDecay1 = -100, zTDecay2 = -100;
1070 if(ptDecay1 > 0) zTDecay1 = ptAssoc/ptDecay1 ;
1071 if(ptDecay2 > 0) zTDecay2 = ptAssoc/ptDecay2 ;
1073 Float_t deltaPhiDecay1 =
fDecayMom1.Phi()-phiAssoc;
1074 if(deltaPhiDecay1< -TMath::PiOver2()) deltaPhiDecay1+=TMath::TwoPi();
1075 if(deltaPhiDecay1>3*TMath::PiOver2()) deltaPhiDecay1-=TMath::TwoPi();
1077 Float_t deltaPhiDecay2 =
fDecayMom2.Phi()-phiAssoc;
1078 if(deltaPhiDecay2< -TMath::PiOver2()) deltaPhiDecay2+=TMath::TwoPi();
1079 if(deltaPhiDecay2>3*TMath::PiOver2()) deltaPhiDecay2-=TMath::TwoPi();
1081 Float_t xEDecay1 =-zTDecay1*TMath::Cos(deltaPhiDecay1);
1082 Float_t xEDecay2 =-zTDecay2*TMath::Cos(deltaPhiDecay2);
1084 if(bChargedOrNeutral)
1089 AliDebug(2,Form(
"deltaPhoton1 = %f, deltaPhoton2 = %f", deltaPhiDecay1, deltaPhiDecay2));
1107 AliDebug(2,Form(
"deltaPhoton1 = %f, deltaPhoton2 = %f", deltaPhiDecay1, deltaPhiDecay2));
1127 Float_t zT, Float_t hbpZT,
1132 Float_t xE =-ptAssoc/ptTrig*TMath::Cos(randomphi);
1133 Float_t hbpXE = -100;
1134 if(xE > 0 ) hbpXE = TMath::Log(1./xE);
1175 AliAnalysisManager * manager = AliAnalysisManager::GetAnalysisManager();
1176 AliInputEventHandler * inputHandler =
dynamic_cast<AliInputEventHandler*
>(manager->GetInputEventHandler());
1178 if(!inputHandler) return ;
1186 if(eventBin < 0)
return;
1190 TObjArray * mixEventTracks =
new TObjArray;
1203 for(Int_t ipr = 0;ipr <
GetCTSTracks()->GetEntriesFast() ; ipr ++ )
1205 AliVTrack * track = (AliVTrack *) (
GetCTSTracks()->At(ipr)) ;
1207 fTrackVector.SetXYZ(track->Px(),track->Py(),track->Pz());
1211 if(pt < fMinAssocPt || pt >
fMaxAssocPt) continue ;
1213 AliAODPWG4Particle * mixedTrack =
new AliAODPWG4Particle(track->Px(),track->Py(),track->Pz(),0);
1214 mixedTrack->SetDetectorTag(
kCTS);
1215 mixedTrack->SetChargedBit(track->Charge()>0);
1216 mixEventTracks->Add(mixedTrack);
1225 pool->AddFirst(mixEventTracks);
1233 TClonesArray * tmp =
static_cast<TClonesArray*
>(pool->Last()) ;
1234 pool->RemoveLast() ;
1257 AliAnalysisManager * manager = AliAnalysisManager::GetAnalysisManager();
1258 AliInputEventHandler * inputHandler =
dynamic_cast<AliInputEventHandler*
>(manager->GetInputEventHandler());
1260 if(!inputHandler) return ;
1268 if(eventBin < 0)
return;
1270 TObjArray * mixEventCalo =
new TObjArray;
1281 for(Int_t ipr = 0;ipr < pl->GetEntriesFast() ; ipr ++ )
1283 AliVCluster * calo = (AliVCluster *) (pl->At(ipr)) ;
1295 Double_t vertex[]={0,0,0};
1302 if(pt < fMinAssocPt || pt >
fMaxAssocPt) continue ;
1304 AliAODPWG4Particle * mixedCalo =
new AliAODPWG4Particle(
fMomentum);
1305 mixedCalo->SetDetectorTag(
kEMCAL);
1306 mixEventCalo->Add(mixedCalo);
1315 poolCalo->AddFirst(mixEventCalo);
1323 TClonesArray * tmp =
static_cast<TClonesArray*
>(poolCalo->Last()) ;
1324 poolCalo->RemoveLast() ;
1335 Float_t etaTrig = particle->Eta();
1336 Float_t ptTrig = particle->Pt();
1337 Float_t phiTrig = particle->Phi();
1338 if(phiTrig < 0 ) phiTrig+= TMath::TwoPi();
1340 Float_t ptLeadHad = 0 ;
1341 Float_t dphiLeadHad= -100 ;
1342 Float_t phiLeadHad = -100 ;
1343 Float_t etaLeadHad = -100 ;
1346 for(Int_t ipr = 0;ipr <
GetCTSTracks()->GetEntriesFast() ; ipr ++ )
1348 AliVTrack * track = (AliVTrack *) (
GetCTSTracks()->At(ipr)) ;
1350 fTrackVector.SetXYZ(track->Px(),track->Py(),track->Pz());
1354 if(phi < 0 ) phi+= TMath::TwoPi();
1356 Float_t deltaPhi = phiTrig-phi;
1362 if(deltaPhi <= -TMath::PiOver2()) deltaPhi+=TMath::TwoPi();
1363 if(deltaPhi > 3*TMath::PiOver2()) deltaPhi-=TMath::TwoPi();
1365 if(pt > ptLeadHad && deltaPhi > TMath::PiOver2())
1369 dphiLeadHad= deltaPhi;
1391 AliDebug(1,Form(
"pT %2.2f, phi %2.2f, eta %2.2f, nTracks away %d, total tracks %d",
1393 AliDebug(1,Form(
"\t pT trig %2.2f, Dphi (trigger-hadron) %2.2f, Deta (trigger-hadron) %2.2f",
1394 ptTrig, dphiLeadHad*TMath::RadToDeg(), etaLeadHad-etaTrig));
1395 AliDebug(1,Form(
"\t cuts pT: min %2.2f, max %2.2f; DPhi: min %2.2f, max %2.2f",
1401 if( nTrack == 0 )
return kFALSE;
1403 if( ptLeadHad < fMinLeadHadPt || ptLeadHad >
fMaxLeadHadPt )
return kFALSE;
1407 if( dphiLeadHad < fMinLeadHadPhi || dphiLeadHad >
fMaxLeadHadPhi )
return kFALSE;
1420 const Int_t buffersize = 560;
1421 char onePar[buffersize] ;
1423 snprintf(onePar,buffersize,
"--- AliAnaPaticleHadronCorrelation ---:") ;
1431 snprintf(onePar,buffersize,
"Isolated Trigger? %d;",
fSelectIsolated) ;
1435 snprintf(onePar,buffersize,
"Name of AOD Pi0 Branch %s;",
fPi0AODBranchName.Data());
1439 snprintf(onePar,buffersize,
"Select absolute leading for cluster triggers ? %d or Near Side Leading %d;",
1442 snprintf(onePar,buffersize,
"Associated particle pt bins %d: ",
fNAssocPtBins) ;
1455 return new TObjString(parList) ;
1464 TList * outputContainer =
new TList() ;
1465 outputContainer->SetName(
"CorrelationHistos") ;
1489 TString nameMC[] = {
"Photon",
"Pi0",
"Pi0Decay",
"Eta",
"EtaDecay",
"OtherDecay",
"Electron",
"Hadron",
"Pi0DecayLostPair",
"EtaDecayLostPair"};
1490 TString mcPartType[] = {
"#gamma",
"#pi^{0} (merged #gamma)",
"#gamma_{#pi decay}",
"#eta (merged #gamma)" ,
"#gamma_{#eta decay}",
"#gamma_{other decay}" ,
"e^{#pm}" ,
"hadrons?" ,
"#gamma_{#pi decay} lost companion",
"#gamma_{#eta decay} lost companion"} ;
1491 TString pileUpName[] = {
"SPD",
"EMCAL",
"SPDOrEMCAL",
"SPDAndEMCAL",
"SPDAndNotEMCAL",
"EMCALAndNotSPD",
"NotSPDAndNotEMCAL"} ;
1493 TString parTitle = Form(
"#it{R} = %2.2f",
GetIsolationCut()->GetConeSize());
1505 fhPtTriggerInput =
new TH1F(
"hPtTriggerInput",
"Input trigger #it{p}_{T}", nptbins,ptmin,ptmax);
1511 fhPtTriggerSSCut =
new TH1F(
"hPtTriggerSSCut",
"Trigger #it{p}_{T} after #lambda^{2}_{0} cut", nptbins,ptmin,ptmax);
1518 fhPtTriggerIsoCut =
new TH1F(
"hPtTriggerIsoCut",
"Trigger #it{p}_{T} after isolation (and #lambda^{2}_{0} cut)", nptbins,ptmin,ptmax);
1523 fhPtTriggerFidCut =
new TH1F(
"hPtTriggerFidCut",
"Trigger #it{p}_{T} after fiducial (isolation and #lambda^{2}_{0}) cut", nptbins,ptmin,ptmax);
1527 fhPtTrigger =
new TH1F(
"hPtTrigger",
"#it{p}_{T} distribution of trigger particles (after opposite hadron leading cut and rest)", nptbins,ptmin,ptmax);
1528 fhPtTrigger->SetXTitle(
"#it{p}_{T}^{trig} (GeV/#it{c})");
1533 fhMassPtTrigger =
new TH2F(
"hMassPtTrigger",
"2 photons invariant mass vs p_{T}^{trig}",
1534 nptbins,ptmin,ptmax,nmassbins,massmin,massmax);
1555 for(Int_t ibin = 0; ibin <
fNBkgBin; ibin++)
1558 (Form(
"hPtLeadCone_Bin%d",ibin),
1559 Form(
"cone %2.2f<#it{p}_{T}^{leading}<%2.2f GeV/#it{c}, %s",
1566 (Form(
"hSumPtCone_Bin%d",ibin),
1567 Form(
"in cone %2.2f <#Sigma #it{p}_{T}< %2.2f GeV/#it{c}, %s",
1575 for(Int_t idecay = 0; idecay <
fNDecayBits; idecay++)
1577 Int_t bindecay = ibin+idecay*
fNBkgBin;
1580 (Form(
"hPtLeadCone_Bin%d_DecayBit%d",ibin,
fDecayBits[idecay]),
1581 Form(
"Decay bit %d, cone %2.2f<#it{p}_{T}^{leading}<%2.2f GeV/#it{c}, %s",
1588 (Form(
"hSumPtCone_Bin%d_DecayBit%d",ibin,
fDecayBits[idecay]),
1589 Form(
"Decay bit %d, in cone %2.2f <#Sigma #it{p}_{T}< %2.2f GeV/#it{c}, %s",
1603 (Form(
"hPtLeadCone_Bin%d_MC%s",ibin, nameMC[imc].Data()),
1604 Form(
"in cone %2.2f<#it{p}_{T}^{leading}<%2.2f GeV/#it{c}, MC %s, %s",
1611 (Form(
"hSumPtCone_Bin%d_MC%s",ibin,nameMC[imc].Data()),
1612 Form(
"in cone %2.2f <#Sigma #it{p}_{T}< %2.2f GeV/#it{c}, MC %s, %s",
1626 fhPtTriggerMC[i] =
new TH1F(Form(
"hPtTrigger_MC%s",nameMC[i].Data()),
1627 Form(
"#it{p}_{T} distribution of trigger particles, trigger origin is %s",nameMC[i].Data()),
1628 nptbins,ptmin,ptmax);
1629 fhPtTriggerMC[i]->SetXTitle(
"#it{p}_{T}^{trig} (GeV/#it{c})");
1635 Form(
"2 photons invariant mass, trigger origin is %s",nameMC[i].Data()),
1636 nptbins,ptmin,ptmax,nmassbins,massmin,massmax);
1649 Form(
"#it{p}_{T} distribution of trigger particles, decay Bit %d",
fDecayBits[ibit]),
1650 nptbins,ptmin,ptmax);
1659 Form(
"#it{p}_{T} distribution of trigger particles, decay Bit %d, trigger origin is %s",
fDecayBits[ibit], nameMC[i].Data()),
1660 nptbins,ptmin,ptmax);
1676 fhPtTriggerBin =
new TH2F (
"hPtTriggerBin",
"#it{p}_{T} distribution of trigger particles", nptbins,ptmin,ptmax,nMixBins,0,nMixBins);
1681 fhPhiTrigger =
new TH2F (
"hPhiTrigger",
"#phi distribution of trigger Particles",nptbins,ptmin,ptmax, nphibins,phimin,phimax);
1685 fhEtaTrigger =
new TH2F (
"hEtaTrigger",
"#eta distribution of trigger",nptbins,ptmin,ptmax, netabins,etamin,etamax);
1691 fhPtTriggerCentrality =
new TH2F(
"hPtTriggerCentrality",
"Trigger particle #it{p}_{T} vs centrality",nptbins,ptmin,ptmax,100,0.,100) ;
1696 fhPtTriggerEventPlane =
new TH2F(
"hPtTriggerEventPlane",
"Trigger particle #it{p}_{T} vs event plane angle",nptbins,ptmin,ptmax, 100,0.,TMath::Pi()) ;
1701 fhTriggerEventPlaneCentrality =
new TH2F(
"hTriggerEventPlaneCentrality",
"Trigger particle centrality vs event plane angle",100,0.,100,100,0.,TMath::Pi()) ;
1710 fhPtLeadingOppositeHadron =
new TH2F(
"hPtTriggerPtLeadingOppositeHadron",
"Leading hadron opposite to trigger vs trigger #it{p}_{T}",
1711 nptbins,ptmin,ptmax,nptbins,ptmin,ptmax);
1717 nptbins,ptmin,ptmax);
1722 netabins,etamin,etamax,nphibins,phimin,phimax);
1728 fhPtDiffPhiLeadingOppositeHadron =
new TH2F(
"hPtTriggerDiffPhiTriggerLeadingOppositeHadron",
"#phi_{trigger}-#phi_{leading opposite hadron} vs #it{p}_{T}^{trig}",
1729 nptbins,ptmin,ptmax,ndeltaphibins,deltaphimin,deltaphimax);
1734 fhPtDiffEtaLeadingOppositeHadron =
new TH2F(
"hPtTriggerDiffEtaTriggerPhiLeadingOppositeHadron",
"#eta_{trigger}-#eta_{leading opposite hadron} vs #it{p}_{T}^{trig}",
1735 nptbins,ptmin,ptmax,ndeltaetabins,deltaetamin,deltaetamax);
1744 (
"hDeltaPhiDeltaEtaCharged",
"#eta_{trigger} - #eta_{h^{#pm}} vs #phi_{trigger} - #phi_{h^{#pm}}",
1745 ndeltaphibins ,deltaphimin,deltaphimax,ndeltaetabins,deltaetamin,deltaetamax);
1750 (
"hDeltaPhiDeltaEtaChargedPtA3GeV",
"#eta_{trigger} - #eta_{h^{#pm}} vs #phi_{trigger} - #phi_{h^{#pm}, #it{p}_{TA}>3 GeV/#it{c}}",
1751 ndeltaphibins ,deltaphimin,deltaphimax,ndeltaetabins,deltaetamin,deltaetamax);
1756 (
"hPhiCharged",
"#phi_{h^{#pm}} vs #it{p}_{T #pm}",
1757 nptbins,ptmin,ptmax,180,0,TMath::TwoPi());
1759 fhPhiCharged->SetXTitle(
"#it{p}_{T #pm} (GeV/#it{c})");
1762 (
"hEtaCharged",
"#eta_{h^{#pm}} vs #it{p}_{T #pm}",
1763 nptbins,ptmin,ptmax,100,-1.,1.);
1765 fhEtaCharged->SetXTitle(
"#it{p}_{T #pm} (GeV/#it{c})");
1768 (
"hDeltaPhiCharged",
"#phi_{trigger} - #phi_{h^{#pm}} vs #it{p}_{T trigger}",
1769 nptbins,ptmin,ptmax, ndeltaphibins ,deltaphimin,deltaphimax);
1774 (
"hDeltaPhiChargedPtA3GeV",
"#phi_{trigger} - #phi_{h^{#pm}} vs #it{p}_{T trigger}, #it{p}_{TA}>3 GeV/#it{c}",
1775 nptbins,ptmin,ptmax, ndeltaphibins ,deltaphimin,deltaphimax);
1781 (
"hDeltaPhiChargedPt",
"#phi_{trigger} - #phi_{#h^{#pm}} vs #it{p}_{T h^{#pm}}",
1782 nptbins,ptmin,ptmax, ndeltaphibins ,deltaphimin,deltaphimax);
1787 (
"hDeltaEtaCharged",
"#eta_{trigger} - #eta_{h^{#pm}} vs #it{p}_{T trigger}",
1788 nptbins,ptmin,ptmax,ndeltaetabins,deltaetamin,deltaetamax);
1793 (
"hDeltaEtaChargedPtA3GeV",
"#eta_{trigger} - #eta_{h^{#pm}} vs #it{p}_{T trigger}, #it{p}_{TA}>3 GeV/#it{c}",
1794 nptbins,ptmin,ptmax,ndeltaetabins,deltaetamin,deltaetamax);
1799 new TH2F(
"hXECharged",
"#it{x}_{#it{E}} for charged tracks",
1800 nptbins,ptmin,ptmax,nxeztbins,xeztmin,xeztmax);
1802 fhXECharged->SetXTitle(
"#it{p}_{T trigger} (GeV/#it{c})");
1805 new TH2F(
"hXECharged_Cone2",
"#it{x}_{#it{E}} for charged tracks in cone 2 (5#pi/6-7#pi/6)",
1806 nptbins,ptmin,ptmax,nxeztbins,xeztmin,xeztmax);
1811 new TH2F(
"hXEPositiveCharged",
"#it{x}_{#it{E}} for positive charged tracks",
1812 nptbins,ptmin,ptmax,nxeztbins,xeztmin,xeztmax);
1817 new TH2F(
"hXENegativeCharged",
"#it{x}_{#it{E}} for negative charged tracks",
1818 nptbins,ptmin,ptmax,nxeztbins,xeztmin,xeztmax);
1823 new TH2F(
"hHbpXECharged",
"#xi = ln(1/#it{x}_{#it{E}}) with charged hadrons",
1824 nptbins,ptmin,ptmax,nhbpbins,hbpmin,hbpmax);
1829 new TH2F(
"hHbpXECharged_Cone2",
"#xi = ln(1/#it{x}_{#it{E}}) with charged hadrons in cone 2 (5#pi/6-7#pi/6)",
1830 nptbins,ptmin,ptmax,nhbpbins,hbpmin,hbpmax);
1835 new TH2F(
"hZTCharged",
"#it{z}_{T} for charged tracks",
1836 nptbins,ptmin,ptmax,nxeztbins,xeztmin,xeztmax);
1841 new TH2F(
"hZTPositiveCharged",
"#it{z}_{T} for positive charged tracks",
1842 nptbins,ptmin,ptmax,nxeztbins,xeztmin,xeztmax);
1847 new TH2F(
"hZTNegativeCharged",
"#it{z}_{T} for negative charged tracks",
1848 nptbins,ptmin,ptmax,nxeztbins,xeztmin,xeztmax);
1853 new TH2F(
"hHbpZTCharged",
"#xi = ln(1/#it{z}_{T}) with charged hadrons",
1854 nptbins,ptmin,ptmax,nhbpbins,hbpmin,hbpmax);
1859 new TH2F(
"hPtTrigPout",
"Pout with triggers",
1860 nptbins,ptmin,ptmax,nptbins,-1.*ptmax/2.,ptmax/2.);
1862 fhPtTrigPout->SetXTitle(
"#it{p}_{T trigger} (GeV/#it{c})");
1865 new TH2F(
"hPtTrigCharged",
"trigger and charged tracks pt distribution",
1866 nptbins,ptmin,ptmax,nptbins,ptmin,ptmax);
1889 Form(
"#Delta #phi for charged tracks, trigger origin is %s",nameMC[i].Data()),
1890 nptbins,ptmin,ptmax,ndeltaphibins ,deltaphimin,deltaphimax);
1895 fhXEChargedMC[i] =
new TH2F(Form(
"hXECharged_MC%s",nameMC[i].Data()),
1896 Form(
"#it{x}_{#it{E}} for charged tracks, trigger origin is %s",nameMC[i].Data()),
1897 nptbins,ptmin,ptmax,nxeztbins,xeztmin,xeztmax);
1899 fhXEChargedMC[i]->SetXTitle(
"#it{p}_{T trigger} (GeV/#it{c})");
1903 Form(
"#it{x}_{#it{E}} for charged tracks in right UE cone, trigger origin is %s",nameMC[i].Data()),
1904 nptbins,ptmin,ptmax,nxeztbins,xeztmin,xeztmax);
1910 Form(
"#it{x}_{#it{E}} for charged tracks in left UE cone, trigger origin is %s",nameMC[i].Data()),
1911 nptbins,ptmin,ptmax,nxeztbins,xeztmin,xeztmax);
1934 fhUePart =
new TH1F(
"hUePart",
"UE particles distribution vs pt trig",
1935 nptbins,ptmin,ptmax);
1937 fhUePart->SetXTitle(
"#it{p}_{T trigger} (GeV/#it{c})");
1940 (Form(
"hDeltaPhiUe%sChargedPt",right.Data()),
"#phi_{trigger} - #phi_{#Ueh^{#pm}} vs #it{p}_{T Ueh^{#pm}}",
1941 nptbins,ptmin,ptmax, ndeltaphibins ,deltaphimin,deltaphimax);
1946 new TH2F(Form(
"hXEUeCharged%s",right.Data()),
"#it{x}_{#it{E}} for Underlying Event",
1947 nptbins,ptmin,ptmax,nxeztbins,xeztmin,xeztmax);
1949 fhXEUeCharged->SetXTitle(
"#it{p}_{T trigger} (GeV/#it{c})");
1952 new TH2F(Form(
"hHbpXEUeCharged%s",right.Data()),
"#xi = ln(1/#it{x}_{#it{E}}) for Underlying Event",
1953 nptbins,ptmin,ptmax,nhbpbins,hbpmin,hbpmax);
1958 new TH2F(Form(
"hZTUeCharged%s",right.Data()),
"#it{z}_{T} for Underlying Event",
1959 nptbins,ptmin,ptmax,nxeztbins,xeztmin,xeztmax);
1961 fhZTUeCharged->SetXTitle(
"#it{p}_{T trigger} (GeV/#it{c})");
1964 new TH2F(Form(
"hHbpZTUeCharged%s",right.Data()),
"#xi = ln(1/#it{z}_{T}) for Underlying Event",
1965 nptbins,ptmin,ptmax,nhbpbins,hbpmin,hbpmax);
1979 (
"hDeltaPhiUeLeftChargedPt",
"#phi_{trigger} - #phi_{#Ueh^{#pm}} vs #it{p}_{T Ueh^{#pm}} with UE left side range of trigger particles",
1980 nptbins,ptmin,ptmax, ndeltaphibins ,deltaphimin,deltaphimax);
1986 (
"hDeltaPhiUeLeftUpChargedPt",
"#phi_{trigger} - #phi_{#Ueh^{#pm}} vs #it{p}_{T Ueh^{#pm}} with UE left Up side range of trigger particles",
1987 nptbins,ptmin,ptmax, ndeltaphibins ,deltaphimin,deltaphimax);
1993 (
"hDeltaPhiUeRightUpChargedPt",
"#phi_{trigger} - #phi_{#Ueh^{#pm}} vs #it{p}_{T Ueh^{#pm}} with UE right Up side range of trigger particles",
1994 nptbins,ptmin,ptmax, ndeltaphibins ,deltaphimin,deltaphimax);
2000 (
"hDeltaPhiUeLeftDownChargedPt",
"#phi_{trigger} - #phi_{#Ueh^{#pm}} vs #it{p}_{T Ueh^{#pm}} with UE left Down side range of trigger particles",
2001 nptbins,ptmin,ptmax, ndeltaphibins ,deltaphimin,deltaphimax);
2007 (
"hDeltaPhiUeRightDownChargedPt",
"#phi_{trigger} - #phi_{#Ueh^{#pm}} vs #it{p}_{T Ueh^{#pm}} with UE right Down side range of trigger particles",
2008 nptbins,ptmin,ptmax, ndeltaphibins ,deltaphimin,deltaphimax);
2014 new TH2F(
"hXEUeChargedLeft",
"#it{x}_{#it{E}} with UE left side of trigger",
2015 nptbins,ptmin,ptmax,nxeztbins,xeztmin,xeztmax);
2021 new TH2F(
"hXEUeChargedLeftUp",
"#it{x}_{#it{E}} with UE left Up side of trigger",
2022 nptbins,ptmin,ptmax,nxeztbins,xeztmin,xeztmax);
2028 new TH2F(
"hXEUeChargedRightUp",
"#it{x}_{#it{E} h^{#pm}} with UE right Up side of trigger",
2029 nptbins,ptmin,ptmax,nxeztbins,xeztmin,xeztmax);
2035 new TH2F(
"hXEUeChargedLeftDown",
"#it{x}_{#it{E}} with UE left Down side of trigger",
2036 nptbins,ptmin,ptmax,nxeztbins,xeztmin,xeztmax);
2042 new TH2F(
"hXEUeChargedRightDown",
"#it{x}_{#it{E} h^{#pm}} with UE right Down side of trigger",
2043 nptbins,ptmin,ptmax,nxeztbins,xeztmin,xeztmax);
2049 new TH2F(
"hHbpXEUeChargedLeft",
"#xi = ln(1/#it{x}_{#it{E}}) with charged UE left side of trigger",
2050 nptbins,ptmin,ptmax,nhbpbins,hbpmin,hbpmax);
2056 new TH2F(
"hZTUeChargedLeft",
"#it{z}_{trigger h^{#pm}} = #it{p}_{T Ueh^{#pm}} / #it{p}_{T trigger} with UE left side of trigger",
2057 nptbins,ptmin,ptmax,nxeztbins,xeztmin,xeztmax);
2063 new TH2F(
"hHbpZTUeChargedLeft",
"#xi = ln(1/#it{z}_{T}) with charged UE left side of trigger",
2064 nptbins,ptmin,ptmax,nhbpbins,hbpmin,hbpmax);
2073 (
"hDeltaPhiChargedOtherBC",
"#phi_{trigger} - #phi_{h^{#pm}} vs #it{p}_{T trigger}, track BC!=0",
2074 nptbins,ptmin,ptmax, ndeltaphibins ,deltaphimin,deltaphimax);
2079 (
"hDeltaPhiChargedPtA3GeVOtherBC",
"#phi_{trigger} - #phi_{h^{#pm}} vs #it{p}_{T trigger}, #it{p}_{TA}>3 GeV/#it{c}, track BC!=0",
2080 nptbins,ptmin,ptmax, ndeltaphibins ,deltaphimin,deltaphimax);
2085 new TH2F(
"hPtTrigChargedOtherBC",
"trigger and charged tracks pt distribution, track BC!=0",
2086 nptbins,ptmin,ptmax,nptbins,ptmin,ptmax);
2091 new TH2F(
"hXEChargedOtherBC",
"#it{x}_{#it{E}} for charged tracks, track BC!=0",
2092 nptbins,ptmin,ptmax,nxeztbins,xeztmin,xeztmax);
2097 new TH2F(
"hXEUeChargedOtherBC",
"#it{x}_{#it{E}} for Underlying Event, track BC!=0",
2098 nptbins,ptmin,ptmax,nxeztbins,xeztmin,xeztmax);
2103 new TH2F(
"hZTChargedOtherBC",
"#it{z}_{T} for charged tracks, track BC!=0",
2104 nptbins,ptmin,ptmax,nxeztbins,xeztmin,xeztmax);
2109 new TH2F(
"hZTUeChargedOtherBC",
"#it{z}_{T} for Underlying Event, track BC!=0",
2110 nptbins,ptmin,ptmax,nxeztbins,xeztmin,xeztmax);
2123 (
"hDeltaPhiChargedBC0",
"#phi_{trigger} - #phi_{h^{#pm}} vs #it{p}_{T trigger}, track BC==0",
2124 nptbins,ptmin,ptmax, ndeltaphibins ,deltaphimin,deltaphimax);
2129 (
"hDeltaPhiChargedPtA3GeVBC0",
"#phi_{trigger} - #phi_{h^{#pm}} vs #it{p}_{T trigger}, #it{p}_{TA}>3 GeV/#it{c}, track BC==0",
2130 nptbins,ptmin,ptmax, ndeltaphibins ,deltaphimin,deltaphimax);
2135 new TH2F(
"hPtTrigChargedBC0",
"trigger and charged tracks pt distribution, track BC==0",
2136 nptbins,ptmin,ptmax,nptbins,ptmin,ptmax);
2141 new TH2F(
"hXEChargedBC0",
"#it{x}_{#it{E}} for charged tracks, track BC==0",
2142 nptbins,ptmin,ptmax,nxeztbins,xeztmin,xeztmax);
2147 new TH2F(
"hXEUeChargedBC0",
"#it{x}_{#it{E}} for Underlying Event, track BC==0",
2148 nptbins,ptmin,ptmax,nxeztbins,xeztmin,xeztmax);
2153 new TH2F(
"hZTChargedBC0",
"#it{z}_{T} for charged tracks, track BC==0",
2154 nptbins,ptmin,ptmax,nxeztbins,xeztmin,xeztmax);
2159 new TH2F(
"hZTUeChargedBC0",
"#it{z}_{T} for Underlying Event, track BC==0",
2160 nptbins,ptmin,ptmax,nxeztbins,xeztmin,xeztmax);
2172 fhPtTriggerVtxBC0 =
new TH1F(
"hPtTriggerVtxBC0",
"#it{p}_{T} distribution of trigger particles", nptbins,ptmin,ptmax);
2176 (
"hDeltaPhiChargedVtxBC0",
"#phi_{trigger} - #phi_{h^{#pm}} vs #it{p}_{T trigger}, track BC==0",
2177 nptbins,ptmin,ptmax, ndeltaphibins ,deltaphimin,deltaphimax);
2182 (
"hDeltaPhiChargedPtA3GeVVtxBC0",
"#phi_{trigger} - #phi_{h^{#pm}} vs #it{p}_{T trigger}, #it{p}_{TA}>3 GeV/#it{c}, track BC==0",
2183 nptbins,ptmin,ptmax, ndeltaphibins ,deltaphimin,deltaphimax);
2188 new TH2F(
"hPtTrigChargedVtxBC0",
"trigger and charged tracks pt distribution, track BC==0",
2189 nptbins,ptmin,ptmax,nptbins,ptmin,ptmax);
2194 new TH2F(
"hXEChargedVtxBC0",
"#it{x}_{#it{E}} for charged tracks, track BC==0",
2195 nptbins,ptmin,ptmax,nxeztbins,xeztmin,xeztmax);
2200 new TH2F(
"hXEUeChargedVtxBC0",
"#it{x}_{#it{E}} for Underlying Event, track BC==0",
2201 nptbins,ptmin,ptmax,nxeztbins,xeztmin,xeztmax);
2206 new TH2F(
"hZTChargedVtxBC0",
"#it{z}_{T} for charged tracks, track BC==0",
2207 nptbins,ptmin,ptmax,nxeztbins,xeztmin,xeztmax);
2212 new TH2F(
"hZTUeChargedVtxBC0",
"#it{z}_{T} for Underlying Event, track BC==0",
2213 nptbins,ptmin,ptmax,nxeztbins,xeztmin,xeztmax);
2226 for(Int_t i = 0 ; i < 7 ; i++)
2228 fhPtTriggerPileUp[i] =
new TH1F(Form(
"hPtTriggerPileUp%s",pileUpName[i].Data()),
2229 Form(
"#it{p}_{T} distribution of trigger particles, %s Pile-Up event",pileUpName[i].Data()), nptbins,ptmin,ptmax);
2234 Form(
"#phi_{trigger} - #phi_{h^{#pm}} vs #it{p}_{T trigger}, %s Pile-Up event",pileUpName[i].Data()),
2235 nptbins,ptmin,ptmax, ndeltaphibins ,deltaphimin,deltaphimax);
2241 Form(
"#phi_{trigger} - #phi_{h^{#pm}} vs #it{p}_{T trigger}, #it{p}_{TA}>3 GeV/#it{c}, %s Pile-Up event",pileUpName[i].Data()),
2242 nptbins,ptmin,ptmax, ndeltaphibins ,deltaphimin,deltaphimax);
2248 Form(
"#eta_{trigger} - #eta_{h^{#pm}} vs #it{p}_{T trigger}, %s Pile-Up event",pileUpName[i].Data()),
2249 nptbins,ptmin,ptmax,ndeltaetabins,deltaetamin,deltaetamax);
2255 Form(
"#eta_{trigger} - #eta_{h^{#pm}} vs #it{p}_{T trigger}, #it{p}_{TA}>3 GeV/#it{c}, %s Pile-Up event",pileUpName[i].Data()),
2256 nptbins,ptmin,ptmax,ndeltaetabins,deltaetamin,deltaetamax);
2261 fhXEChargedPileUp[i] =
new TH2F(Form(
"hXEChargedPileUp%s",pileUpName[i].Data()),
2262 Form(
"#it{x}_{#it{E}} for charged tracks, %s Pile-Up event",pileUpName[i].Data()),
2263 nptbins,ptmin,ptmax,nxeztbins,xeztmin,xeztmax);
2269 Form(
"#it{x}_{#it{E}} for Underlying Event, %s Pile-Up event",pileUpName[i].Data()),
2270 nptbins,ptmin,ptmax,nxeztbins,xeztmin,xeztmax);
2275 fhZTChargedPileUp[i] =
new TH2F(Form(
"hZTChargedPileUp%s",pileUpName[i].Data()),
2276 Form(
"#it{z}_{T} for charged tracks, %s Pile-Up event",pileUpName[i].Data()),
2277 nptbins,ptmin,ptmax,nxeztbins,xeztmin,xeztmax);
2283 Form(
"#it{z}_{T} for Underlying Event, %s Pile-Up event",pileUpName[i].Data()),
2284 nptbins,ptmin,ptmax,nxeztbins,xeztmin,xeztmax);
2290 Form(
"trigger and charged tracks pt distribution, %s Pile-Up event",pileUpName[i].Data()),
2291 nptbins,ptmin,ptmax,nptbins,ptmin,ptmax);
2308 for(Int_t im=0; im<nMultiBins; im++)
2311 (Form(
"hDeltaPhiCharged_Mult%d",im),Form(
"#Delta #phi charged Mult bin %d",im), nptbins,ptmin,ptmax, ndeltaphibins ,deltaphimin,deltaphimax);
2316 (Form(
"hDeltaEtaCharged_Mult%d",im),Form(
"#Delta #eta charged Mult bin %d",im), nptbins,ptmin,ptmax, ndeltaetabins ,deltaetamin,deltaetamax);
2321 (Form(
"hXECharged_Mult%d",im),Form(
"#it{x}_{E} charged Mult bin %d",im), nptbins,ptmin,ptmax,nxeztbins,xeztmin,xeztmax);
2322 fhXEMult[im]->SetYTitle(
"#it{x}_{E}");
2323 fhXEMult[im]->SetXTitle(
"#it{p}_{T trigger} (GeV/#it{c})");
2326 (Form(
"hXEUeCharged_Mult%d",im),Form(
"#it{x}_{E} UE charged Mult bin %d",im), nptbins,ptmin,ptmax,nxeztbins,xeztmin,xeztmax);
2328 fhXEUeMult[im]->SetXTitle(
"#it{p}_{T trigger}(GeV/#it{c})");
2331 (Form(
"hZTCharged_Mult%d",im),Form(
"#it{z}_{T} charged Mult bin %d",im), nptbins,ptmin,ptmax,nxeztbins,xeztmin,xeztmax);
2332 fhZTMult[im]->SetYTitle(
"#it{z}_{T}");
2333 fhZTMult[im]->SetXTitle(
"#it{p}_{T trigger} (GeV/#it{c})");
2336 (Form(
"hZTUeCharged_Mult%d",im),Form(
"#it{z}_{T} UE charged Mult bin %d",im), nptbins,ptmin,ptmax,nxeztbins,xeztmin,xeztmax);
2338 fhZTUeMult[im]->SetXTitle(
"#it{p}_{T trigger} (GeV/#it{c})");
2342 outputContainer->Add(
fhXEMult [im]);
2344 outputContainer->Add(
fhZTMult [im]);
2351 fhAssocPtBkg =
new TH2F(
"hAssocPtBkg",
" Trigger #it{p}_{T} vs associated hadron #it{p}_{T} from background",
2352 nptbins, ptmin, ptmax,nptbins,ptmin,ptmax);
2353 fhAssocPtBkg->SetXTitle(
"#it{p}_{T trigger} (GeV/#it{c})");
2354 fhAssocPtBkg->SetYTitle(
"#it{p}_{T associated} (GeV/#it{c})");
2357 fhDeltaPhiBrad =
new TH2F(
"hDeltaPhiBrad",
"atan2(sin(#Delta #phi), cos(#Delta #phi))/#pi vs #it{p}_{T trigger} ",
2358 nptbins, ptmin, ptmax,288, -1.0/3.0, 5.0/3.0);
2360 fhDeltaPhiBrad->SetYTitle(
"atan2(sin(#Delta #phi), cos(#Delta #phi))/#pi");
2397 for(Int_t z = 0 ; z < nz ; z++)
2403 sz = Form(
"_vz%d",z);
2404 tz = Form(
", #it{v}_{#it{z}} bin %d",z);
2411 ndeltaphibins ,deltaphimin,deltaphimax,ndeltaetabins,deltaetamin,deltaetamax);
2417 nptbins, ptmin, ptmax, ndeltaphibins ,deltaphimin,deltaphimax);
2427 Form(
"#Delta #phi vs #it{p}_{T trigger} for associated #it{p}_{T} bin [%2.1f,%2.1f]%s, for #Delta #eta > 0.8",
fAssocPtBinLimit[i],
fAssocPtBinLimit[i+1],tz.Data()),
2428 nptbins, ptmin, ptmax, ndeltaphibins ,deltaphimin,deltaphimax);
2433 Form(
"#Delta #phi vs #it{p}_{T trigger} for associated #it{p}_{T} bin [%2.1f,%2.1f]%s, for #Delta #eta = 0.",
fAssocPtBinLimit[i],
fAssocPtBinLimit[i+1],tz.Data()),
2434 nptbins, ptmin, ptmax, ndeltaphibins ,deltaphimin,deltaphimax);
2446 nptbins, ptmin, ptmax, ndeltaphibins ,deltaphimin,deltaphimax);
2456 Form(
"atan2(sin(#Delta #phi), cos(#Delta #phi))/#pi vs #it{p}_{T trigger} for associated #it{p}_{T} bin [%2.1f,%2.1f]%s",
fAssocPtBinLimit[i],
fAssocPtBinLimit[i+1],tz.Data()),
2457 nptbins, ptmin, ptmax,288, -1.0/3.0, 5.0/3.0);
2466 Form(
"#Delta #phi vs #it{p}_{T trigger} for associated #it{p}_{T} bin [%2.1f,%2.1f]%s, with track having HMPID signal",
fAssocPtBinLimit[i],
fAssocPtBinLimit[i+1],tz.Data()),
2467 nptbins, ptmin, ptmax, ndeltaphibins ,deltaphimin,deltaphimax);
2472 Form(
"#Delta #phi vs #it{p}_{T trigger} for associated #it{p}_{T} bin [%2.1f,%2.1f]%s, with track within 5<phi<20 deg",
fAssocPtBinLimit[i],
fAssocPtBinLimit[i+1],tz.Data()),
2473 nptbins, ptmin, ptmax, ndeltaphibins ,deltaphimin,deltaphimax);
2489 nptbins, ptmin, ptmax,nxeztbins,xeztmin,xeztmax);
2495 nptbins, ptmin, ptmax,nxeztbins,xeztmin,xeztmax);
2507 for(Int_t z = 0 ; z < nz ; z++)
2509 sz = Form(
"_vz%d",z);
2510 tz = Form(
", #it{v}_{#it{z}} bin %d",z);
2512 fhXEVZ[z] =
new TH2F(Form(
"hXE%s", sz.Data()),
2513 Form(
"#it{x}_{#it{E}} vs #it{p}_{T trigger}%s", tz.Data()),
2514 nptbins, ptmin, ptmax,nxeztbins,xeztmin,xeztmax);
2515 fhXEVZ[z]->SetXTitle(
"#it{p}_{T trigger} (GeV/#it{c})");
2516 fhXEVZ[z]->SetYTitle(
"#it{x}_{#it{E}}");
2518 fhZTVZ[z] =
new TH2F(Form(
"hZT%s",sz.Data()),
2519 Form(
"#it{z}_{T} vs #it{p}_{T trigger}%s", tz.Data()),
2520 nptbins, ptmin, ptmax,nxeztbins,xeztmin,xeztmax);
2521 fhZTVZ[z]->SetXTitle(
"#it{p}_{T trigger} (GeV/#it{c})");
2522 fhZTVZ[z]->SetYTitle(
"#it{z}_{T}");
2524 outputContainer->Add(
fhXEVZ[z]);
2525 outputContainer->Add(
fhZTVZ[z]);
2533 (
"hPtPi0DecayRatio",
"#it{p}_{T} of #pi^{0} and the ratio of pt for two decay",
2534 nptbins,ptmin,ptmax, 100,0.,2.);
2540 (
"hDeltaPhiPi0DecayCharged",
"#phi_{Decay} - #phi_{h^{#pm}} vs #it{p}_{T Decay}",
2541 nptbins,ptmin,ptmax, ndeltaphibins ,deltaphimin,deltaphimax);
2546 new TH2F(
"hXEPi0DecayCharged",
"#it{x}_{#it{E}} Decay",
2547 nptbins,ptmin,ptmax,nxeztbins,xeztmin,xeztmax);
2552 new TH2F(
"hZTPi0DecayCharged",
"#it{z}_{trigger h^{#pm}} = #it{p}_{T h^{#pm}} / #it{p}_{T Decay}",
2553 nptbins,ptmin,ptmax,nxeztbins,xeztmin,xeztmax);
2567 (Form(
"hDeltaPhiDecayCharged_bit%d",
fDecayBits[ibit]),
2568 Form(
"#phi_{Decay} - #phi_{h^{#pm}} vs #it{p}_{T Decay}, Bit %d",
fDecayBits[ibit]),
2569 nptbins,ptmin,ptmax, ndeltaphibins ,deltaphimin,deltaphimax);
2574 new TH2F(Form(
"hXEDecayCharged_bit%d",
fDecayBits[ibit]),
2575 Form(
"#it{x}_{#it{E}} Decay, Bit %d",
fDecayBits[ibit]),
2576 nptbins,ptmin,ptmax,nxeztbins,xeztmin,xeztmax);
2581 new TH2F(Form(
"hZTDecayCharged_bit%d",
fDecayBits[ibit]),
2582 Form(
"#it{z}_{trigger h^{#pm}} = #it{p}_{T h^{#pm}} / #it{p}_{T Decay}, Bit %d",
fDecayBits[ibit]),
2583 nptbins,ptmin,ptmax,nxeztbins,xeztmin,xeztmax);
2597 (
"hDeltaPhiDeltaEtaNeutral",
"#phi_{trigger} - #phi_{h^{0}} vs #eta_{trigger} - #eta_{h^{0}}",
2598 ndeltaphibins ,deltaphimin,deltaphimax, ndeltaetabins ,deltaetamin,deltaetamax);
2603 (
"hPhiNeutral",
"#phi_{#pi^{0}} vs #it{p}_{T #pi^{0}}",
2604 nptbins,ptmin,ptmax,180,0,TMath::TwoPi());
2606 fhPhiNeutral->SetXTitle(
"#it{p}_{T #pi^{0}} (GeV/#it{c})");
2609 (
"hEtaNeutral",
"#eta_{#pi^{0}} vs #it{p}_{T #pi^{0}}",
2610 nptbins,ptmin,ptmax,200,-1.,1.);
2612 fhEtaNeutral->SetXTitle(
"#it{p}_{T #pi^{0}} (GeV/#it{c})");
2615 (
"hDeltaPhiNeutral",
"#phi_{trigger} - #phi_{#pi^{0}} vs #it{p}_{T trigger}",
2616 nptbins,ptmin,ptmax,ndeltaphibins ,deltaphimin,deltaphimax);
2621 (
"hDeltaPhiNeutralPt",
"#phi_{trigger} - #phi_{#pi^{0}} vs #it{p}_{T #pi^{0}}}",
2622 nptbins,ptmin,ptmax, ndeltaphibins ,deltaphimin,deltaphimax);
2627 (
"hDeltaEtaNeutral",
"#eta_{trigger} - #eta_{#pi^{0}} vs #it{p}_{T trigger}",
2628 nptbins,ptmin,ptmax, ndeltaetabins ,deltaetamin,deltaetamax);
2633 new TH2F(
"hXENeutral",
"#it{x}_{#it{E}} for #pi^{0} associated",
2634 nptbins,ptmin,ptmax,nxeztbins,xeztmin,xeztmax);
2636 fhXENeutral->SetXTitle(
"#it{p}_{T trigger} (GeV/#it{c})");
2639 new TH2F(
"hHbpXENeutral",
"#xi = ln(1/#it{x}_{#it{E}})for #pi^{0} associated",
2640 nptbins,ptmin,ptmax,nhbpbins,hbpmin,hbpmax);
2645 new TH2F(
"hZTNeutral",
"#it{z}_{trigger #pi} = #it{p}_{T #pi^{0}} / #it{p}_{T trigger} for #pi^{0} associated",
2646 nptbins,ptmin,ptmax,nxeztbins,xeztmin,xeztmax);
2647 fhZTNeutral->SetYTitle(
"#it{z}_{trigger #pi^{0}}");
2648 fhZTNeutral->SetXTitle(
"#it{p}_{T trigger} (GeV/#it{c})");
2651 new TH2F(
"hHbpZTNeutral",
"#xi = ln(1/#it{x}_{#it{E}}) for #pi^{0} associated",
2652 nptbins,ptmin,ptmax,nhbpbins,hbpmin,hbpmax);
2668 (Form(
"hDeltaPhiUe%sNeutralPt",right.Data()),
"#phi_{trigger} - #phi_{#pi^{0}} vs #it{p}_{T #pi^{0}}}",
2669 nptbins,ptmin,ptmax, ndeltaphibins ,deltaphimin,deltaphimax);
2674 new TH2F(Form(
"hXEUeNeutral%s",right.Data()),
"#it{x}_{#it{E}} for #pi^{0} associated",
2675 nptbins,ptmin,ptmax,nxeztbins,xeztmin,xeztmax);
2677 fhXEUeNeutral->SetXTitle(
"#it{p}_{T trigger} (GeV/#it{c})");
2680 new TH2F(Form(
"hHbpXEUeNeutral%s",right.Data()),
"#xi = ln(1/#it{x}_{#it{E}}) for #pi^{0} associated",
2681 nptbins,ptmin,ptmax,nhbpbins,hbpmin,hbpmax);
2686 new TH2F(Form(
"hZTUeNeutral%s",right.Data()),
"#it{z}_{trigger #pi} = #it{p}_{T #pi^{0}} / #it{p}_{T trigger} for #pi^{0} associated",
2687 nptbins,ptmin,ptmax,nxeztbins,xeztmin,xeztmax);
2689 fhZTUeNeutral->SetXTitle(
"#it{p}_{T trigger} (GeV/#it{c})");
2692 new TH2F(Form(
"hHbpZTUeNeutral%s",right.Data()),
"#xi = ln(1/#it{x}_{#it{E}}) for #pi^{0} associated",
2693 nptbins,ptmin,ptmax,nhbpbins,hbpmin,hbpmax);
2706 (
"hDeltaPhiUeLeftNeutralPt",
"#phi_{trigger} - #phi_{#Ueh^{0}} vs #it{p}_{T h^{0}} with neutral UE left side range of trigger particles",
2707 nptbins,ptmin,ptmax, ndeltaphibins ,deltaphimin,deltaphimax);
2713 new TH2F(
"hXEUeNeutralLeft",
"#it{x}_{#it{E}} = #it{p}_{T Ueh^{0}} / #it{p}_{T trigger} with neutral UE left side of trigger",
2714 nptbins,ptmin,ptmax,nxeztbins,xeztmin,xeztmax);
2720 new TH2F(
"hHbpXEUeNeutralLeft",
"#xi = ln(1/#it{x}_{#it{E}}) with neutral UE left side of trigger",
2721 nptbins,ptmin,ptmax,nhbpbins,hbpmin,hbpmax);
2727 new TH2F(
"hZTUeNeutralLeft",
"#it{z}_{trigger h^{0}} = #it{p}_{T Ueh^{0}} / #it{p}_{T trigger} with neutral UE left side of trigger",
2728 nptbins,ptmin,ptmax,nxeztbins,xeztmin,xeztmax);
2734 new TH2F(
"hHbpZTUeNeutralLeft",
"#xi = ln(1/#it{z}_{T}) with neutral UE left side of trigger",
2735 nptbins,ptmin,ptmax,nhbpbins,hbpmin,hbpmax);
2744 (
"hDeltaPhiPi0DecayNeutral",
"#phi_{Decay} - #phi_{h^{0}} vs #it{p}_{T Decay}",
2745 nptbins,ptmin,ptmax, ndeltaphibins ,deltaphimin,deltaphimax);
2750 new TH2F(
"hXEPi0DecayNeutral",
"#it{x}_{#it{E}} for decay trigger",
2751 nptbins,ptmin,ptmax,nxeztbins,xeztmin,xeztmax);
2756 new TH2F(
"hZTPi0DecayNeutral",
"#it{z}_{trigger h^{0}} = #it{p}_{T h^{0}} / #it{p}_{T Decay}",
2757 nptbins,ptmin,ptmax,nxeztbins,xeztmin,xeztmax);
2772 fhMCPtTrigger[i] =
new TH1F (Form(
"hMCPtTrigger_%s",nameMC[i].Data()),
2773 Form(
"MC %s: generated trigger #it{p}_{T}",nameMC[i].Data()),
2774 nptbins,ptmin,ptmax);
2775 fhMCPtTrigger[i]->SetXTitle(
"#it{p}_{T}^{trig} (GeV/#it{c})");
2777 fhMCPhiTrigger[i] =
new TH2F (Form(
"hMCPhiTrigger_%s",nameMC[i].Data()),
2778 Form(
"MC %s: generated trigger #phi",nameMC[i].Data()),
2779 nptbins,ptmin,ptmax, nphibins,phimin,phimax);
2783 fhMCEtaTrigger[i] =
new TH2F (Form(
"hMCEtaTrigger_%s",nameMC[i].Data()),
2784 Form(
"MC %s: generated trigger #eta",nameMC[i].Data()),
2785 nptbins,ptmin,ptmax, netabins,etamin,etamax);
2792 Form(
"MC %s: generated trigger #it{p}_{T}, when not leading of primaries",nameMC[i].Data()),
2793 nptbins,ptmin,ptmax);
2797 Form(
"MC %s: generated trigger #phi, when not leading of primaries",nameMC[i].Data()),
2798 nptbins,ptmin,ptmax, nphibins,phimin,phimax);
2804 Form(
"MC %s: generated triogger #eta, when not leading of primaries",nameMC[i].Data()),
2805 nptbins,ptmin,ptmax, netabins,etamin,etamax);
2810 fhMCEtaCharged[i] =
new TH2F (Form(
"hMCEtaCharged_%s",nameMC[i].Data()),
2811 Form(
"MC %s: #eta_{h^{#pm}} vs #it{p}_{T #pm}",nameMC[i].Data()),
2812 nptbins,ptmin,ptmax,100,-1.,1.);
2816 fhMCPhiCharged[i] =
new TH2F(Form(
"hMCPhiCharged_%s",nameMC[i].Data()),
2817 Form(
"MC %s: phi_{h^{#pm}} vs #it{p}_{T #pm}",nameMC[i].Data()),
2818 nptbins,ptmin,ptmax,180,0,TMath::TwoPi());
2823 Form(
"MC %s: phi_{trigger} - #phi_{h^{#pm}} vs #eta_{trigger} - #eta_{h^{#pm}}",nameMC[i].Data()),
2824 ndeltaphibins ,deltaphimin,deltaphimax,ndeltaetabins ,deltaetamin,deltaetamax);
2829 Form(
"MC %s: #eta_{trigger} - #eta_{h^{#pm}} vs #it{p}_{T trigger} and #it{p}_{T assoc}",nameMC[i].Data()),
2830 nptbins,ptmin,ptmax,ndeltaetabins ,deltaetamin,deltaetamax);
2835 Form(
"MC %s: #phi_{trigger} - #phi_{h^{#pm}} vs #it{p}_{T trigger}",nameMC[i].Data()),
2836 nptbins,ptmin,ptmax,ndeltaphibins ,deltaphimin,deltaphimax);
2841 Form(
"MC %s: #phi_{trigger} - #phi_{#h^{#pm}} vs #it{p}_{T h^{#pm}}",nameMC[i].Data()),
2842 nptbins,ptmin,ptmax,ndeltaphibins ,deltaphimin,deltaphimax);
2846 fhMCPtXECharged[i] =
new TH2F (Form(
"hMCPtXECharged_%s",nameMC[i].Data()),
2847 Form(
"MC %s: #it{x}_{#it{E}} with charged hadrons",nameMC[i].Data()),
2848 nptbins,ptmin,ptmax,nxeztbins,xeztmin,xeztmax);
2853 Form(
"MC %s: #xi = ln(1/#it{x}_{#it{E}}) with charged hadrons",nameMC[i].Data()),
2854 nptbins,ptmin,ptmax,nhbpbins,hbpmin,hbpmax);
2858 fhMCPtZTCharged[i] =
new TH2F(Form(
"hMCPtZTCharged_%s",nameMC[i].Data()),
2859 Form(
"MC %s: #it{z}_{T} with charged hadrons",nameMC[i].Data()),
2860 nptbins,ptmin,ptmax,nxeztbins,xeztmin,xeztmax);
2865 Form(
"MC %s: #xi = ln(1/#it{z}_{T}) with charged hadrons",nameMC[i].Data()),
2866 nptbins,ptmin,ptmax,nhbpbins,hbpmin,hbpmax);
2870 fhMCPtTrigPout[i] =
new TH2F(Form(
"hMCPtTrigPout_%s",nameMC[i].Data()),
2871 Form(
"MC %s: #it{p}_{out} with triggers",nameMC[i].Data()),
2872 nptbins,ptmin,ptmax,nptbins,-1.*ptmax/2.,ptmax/2.);
2877 Form(
"MC %s: #Delta #phi with associated charged hadrons",nameMC[i].Data()),
2878 nptbins,ptmin,ptmax,ndeltaphibins ,deltaphimin,deltaphimax);
2910 new TH1F(Form(
"hMCUePart_%s",nameMC[i].Data()),
2911 Form(
"MC %s: UE particles distribution vs #it{p}_{T trigger}",nameMC[i].Data()),
2912 nptbins,ptmin,ptmax);
2914 fhMCUePart[i]->SetXTitle(
"#it{p}_{T trigger} (GeV/#it{c})");
2917 new TH2F(Form(
"hMCPtXEUeCharged%s_%s",right.Data(),nameMC[i].Data()),
2918 Form(
"MC %s: #it{x}_{#it{E}} with charged hadrons, Underlying Event %s",nameMC[i].Data(),right.Data()),
2919 nptbins,ptmin,ptmax,nxeztbins,xeztmin,xeztmax);
2924 new TH2F(Form(
"hMCPtHbpXEUeCharged%s_%s",right.Data(),nameMC[i].Data()),
2925 Form(
"MC %s: #xi = ln(1/#it{x}_{#it{E}}) with charged hadrons, Underlying Event %s",nameMC[i].Data(),right.Data()),
2926 nptbins,ptmin,ptmax,nhbpbins,hbpmin,hbpmax);
2931 new TH2F(Form(
"hMCPtZTUeCharged%s_%s",right.Data(),nameMC[i].Data()),
2932 Form(
"MC %s: #it{z}_{T} with charged hadrons, Underlying Event %s",nameMC[i].Data(),right.Data()),
2933 nptbins,ptmin,ptmax,nxeztbins,xeztmin,xeztmax);
2938 new TH2F(Form(
"hMCPtHbpZTUeCharged%s_%s",right.Data(),nameMC[i].Data()),
2939 Form(
"MC %s: #xi = ln(1/#it{z}_{T}) with charged hadrons, Underlying Event %s",nameMC[i].Data(),right.Data()),
2940 nptbins,ptmin,ptmax,nhbpbins,hbpmin,hbpmax);
2953 Form(
"MC %s: #it{x}_{#it{E}} with charged hadrons, with UE left side range of trigger particles",nameMC[i].Data()),
2954 nptbins,ptmin,ptmax,nxeztbins,xeztmin,xeztmax);
2959 Form(
"MC %s: #xi = ln(1/#it{x}_{#it{E}}) with charged hadrons, with UE left side range of trigger particles",nameMC[i].Data()),
2960 nptbins,ptmin,ptmax,nhbpbins,hbpmin,hbpmax);
2965 Form(
"MC %s: #it{z}_{T} with charged hadrons, with UE left side range of trigger particles",nameMC[i].Data()),
2966 nptbins,ptmin,ptmax,nxeztbins,xeztmin,xeztmax);
2971 Form(
"MC %s: #xi = ln(1/#it{z}_{T}) with charged hadrons, with UE left side range of trigger particles",nameMC[i].Data()),
2972 nptbins,ptmin,ptmax,nhbpbins,hbpmin,hbpmax);
2997 for( Int_t ice = 0 ; ice < nce ; ice++ )
2999 for( Int_t ivz = 0 ; ivz < nvz ; ivz++ )
3001 for( Int_t irp = 0 ; irp < nrp ; irp++ )
3015 fhPtTriggerMixed =
new TH1F (
"hPtTriggerMixed",
"#it{p}_{T} distribution of trigger particles, used for mixing", nptbins,ptmin,ptmax);
3026 fhPtTriggerMixedBin =
new TH2F (
"hPtTriggerMixedBin",
"#it{p}_{T} distribution of trigger particles vs mixing bin", nptbins,ptmin,ptmax,nMixBins,0,nMixBins);
3030 fhPhiTriggerMixed =
new TH2F (
"hPhiTriggerMixed",
"#phi distribution of trigger Particles, used for mixing",nptbins,ptmin,ptmax, nphibins,phimin,phimax);
3033 fhEtaTriggerMixed =
new TH2F (
"hEtaTriggerMixed",
"#eta distribution of trigger, used for mixing",nptbins,ptmin,ptmax, netabins,etamin,etamax);
3050 for( Int_t ice = 0 ; ice < nce ; ice++ )
3052 for( Int_t ivz = 0 ; ivz < nvz ; ivz++ )
3054 for( Int_t irp = 0 ; irp < nrp ; irp++ )
3071 if( !
GetReader()->ListWithMixedEventsForTracksExists() )
3074 if( !
GetReader()->ListWithMixedEventsForCaloExists() )
3078 fhEventBin=
new TH1I(
"hEventBin",
"Number of triggers per bin(cen,vz,rp)",
3084 fhEventMixBin=
new TH1I(
"hEventMixBin",
"Number of triggers mixed per event bin(cen,vz,rp)",
3090 fhEventMBBin=
new TH1I(
"hEventMBBin",
"Number of min bias events per bin(cen,vz,rp)",
3096 fhNtracksMB=
new TH2F(
"hNtracksMBEvent",
"Number of filtered tracks in MB event per event bin",ntrbins,trmin,trmax,
3105 fhNclustersMB=
new TH2F(
"hNclustersMBEvent",
"Number of filtered clusters in MB events per event bin",nclbins,clmin,clmax,
3114 (
"hMixDeltaPhiCharged",
"Mixed event : #phi_{trigger} - #phi_{h^{#pm}} vs #it{p}_{T trigger}",
3115 nptbins,ptmin,ptmax,ndeltaphibins ,deltaphimin,deltaphimax);
3121 (
"hMixDeltaPhiDeltaEtaCharged",
"Mixed event : #phi_{trigger} - #phi_{h^{#pm}} vs #eta_{trigger} - #eta_{h^{#pm}}",
3122 ndeltaphibins ,deltaphimin,deltaphimax,ndeltaetabins ,deltaetamin,deltaetamax);
3128 new TH2F(
"hMixXECharged",
"Mixed event : #it{x}_{#it{E}} for charged tracks",
3129 nptbins,ptmin,ptmax,nxeztbins,xeztmin,xeztmax);
3135 new TH2F(
"hMixXEUeCharged",
"Mixed event : #it{x}_{#it{E}} for charged tracks in Ue region",
3136 nptbins,ptmin,ptmax,nxeztbins,xeztmin,xeztmax);
3142 new TH2F(
"hMixHbpXECharged",
"mixed event : #xi = ln(1/#it{x}_{#it{E}}) with charged hadrons",
3143 nptbins,ptmin,ptmax,nhbpbins,hbpmin,hbpmax);
3155 for(Int_t z = 0 ; z < nz ; z++)
3161 sz = Form(
"_vz%d",z);
3162 tz = Form(
", #it{v}_{#it{z}} bin %d",z);
3169 ndeltaphibins ,deltaphimin,deltaphimax,ndeltaetabins ,deltaetamin,deltaetamax);
3177 nptbins, ptmin, ptmax, ndeltaphibins ,deltaphimin,deltaphimax);
3186 Form(
"Mixed event #Delta #phi vs #it{p}_{T trigger} for associated #it{p}_{T} bin [%2.1f,%2.1f]%s, for #Delta #eta > 0.8",
fAssocPtBinLimit[i],
fAssocPtBinLimit[i+1],tz.Data()),
3187 nptbins, ptmin, ptmax, ndeltaphibins ,deltaphimin,deltaphimax);
3192 Form(
"Mixed event #Delta #phi vs #it{p}_{T trigger} for associated #it{p}_{T} bin [%2.1f,%2.1f]%s, for #Delta #eta = 0",
fAssocPtBinLimit[i],
fAssocPtBinLimit[i+1],tz.Data()),
3193 nptbins, ptmin, ptmax, ndeltaphibins ,deltaphimin,deltaphimax);
3204 return outputContainer;
3218 if(indexPhoton1!=-1 || indexPhoton2!=-1)
return kFALSE;
3220 AliDebug(1,Form(
"indexPhoton1 = %d, indexPhoton2 = %d", indexPhoton1, indexPhoton2));
3222 TObjArray * clusters = 0x0 ;
3226 for(Int_t iclus = 0; iclus < clusters->GetEntriesFast(); iclus++)
3228 AliVCluster * photon = (AliVCluster*) (clusters->At(iclus));
3263 AliFatal(
"STOP!: You want to use CTS tracks in analysis but not read!! \n!!Check the configuration file!!");
3345 for(Int_t ibin =
fNBkgBin+1; ibin < 20; ibin++)
3360 Int_t idTrig = trigger->GetCaloLabel(0);
3361 Float_t ptTrig = trigger->Pt();
3362 Float_t tofTrig = trigger->GetTime();
3369 for(Int_t iphoton = 0; iphoton < nphoton; iphoton++)
3371 AliAODPWG4ParticleCorrelation * photon1 = (AliAODPWG4ParticleCorrelation*) (
GetInputAODBranch()->At(iphoton));
3373 if(idTrig == photon1->GetCaloLabel(0))
continue;
3380 Float_t m02 = photon1->GetM02();
3386 Double_t tdiff = tofTrig - photon1->GetTime();
3409 Double_t phiTrig = 0 ;
3412 AliAODPWG4ParticleCorrelation* pLeading = 0;
3418 AliAODPWG4ParticleCorrelation* particle = (AliAODPWG4ParticleCorrelation*) (
GetInputAODBranch()->At(iaod));
3419 particle->SetLeadingParticle(kFALSE);
3423 if(check == 0)
continue;
3424 if(check == -1)
return kFALSE;
3427 if (particle->Pt() > ptTrig)
3429 ptTrig = particle->Pt() ;
3430 phiTrig = particle->Phi();
3432 pLeading = particle ;
3436 if(index < 0)
return kFALSE;
3440 if(phiTrig < 0 ) phiTrig += TMath::TwoPi();
3444 for(Int_t ipr = 0;ipr <
GetCTSTracks()->GetEntriesFast() ; ipr ++ )
3446 AliVTrack * track = (AliVTrack *) (
GetCTSTracks()->At(ipr)) ;
3448 if(track->GetID() == pLeading->GetTrackLabel(0) || track->GetID() == pLeading->GetTrackLabel(1) ||
3449 track->GetID() == pLeading->GetTrackLabel(2) || track->GetID() == pLeading->GetTrackLabel(3) )
continue ;
3451 fTrackVector.SetXYZ(track->Px(),track->Py(),track->Pz());
3454 if(phi < 0) phi+=TMath::TwoPi();
3459 Float_t deltaPhi = phiTrig-phi;
3460 if(deltaPhi <= -TMath::PiOver2()) deltaPhi+=TMath::TwoPi();
3461 if(deltaPhi > 3*TMath::PiOver2()) deltaPhi-=TMath::TwoPi();
3463 if(pt > ptTrig && deltaPhi < TMath::PiOver2())
return kFALSE;
3468 if(pt > ptTrig)
return kFALSE ;
3477 TObjArray * nePl = 0x0;
3478 if (pLeading->GetDetectorTag() ==
kPHOS )
3483 if(!nePl)
return kTRUE;
3485 for(Int_t ipr = 0;ipr < nePl->GetEntriesFast() ; ipr ++ )
3487 AliVCluster * cluster = (AliVCluster *) (nePl->At(ipr)) ;
3489 if(cluster->GetID() == pLeading->GetCaloLabel(0) || cluster->GetID() == pLeading->GetCaloLabel(1) )
continue ;
3495 if(phi < 0) phi+=TMath::TwoPi();
3503 Float_t deltaPhi = phiTrig-phi;
3504 if(deltaPhi <= -TMath::PiOver2()) deltaPhi+=TMath::TwoPi();
3505 if(deltaPhi > 3*TMath::PiOver2()) deltaPhi-=TMath::TwoPi();
3507 if(pt > ptTrig && deltaPhi < TMath::PiOver2())
return kFALSE ;
3512 if(pt > ptTrig)
return kFALSE ;
3518 pLeading->SetLeadingParticle(kTRUE);
3520 AliDebug(1,Form(
"\t particle AOD with index %d is leading with pT %2.2f",
fLeadingTriggerIndex, pLeading->Pt()));
3544 AliFatal(Form(
"No input particles in AOD with name branch < %s >, STOP",
GetInputAODName().Data()));
3551 AliDebug(1,
"No particle AOD found!");
3555 AliDebug(1,Form(
"Begin hadron correlation analysis, fill histograms"));
3556 AliDebug(1,Form(
"n particle branch aod entries %d", naod));
3557 AliDebug(1,Form(
"In CTS aod entries %d",
GetCTSTracks()->GetEntriesFast()));
3572 AliDebug(1,
"Leading was requested and not found");
3596 for( iaod = 0; iaod < naod; iaod++ )
3598 AliAODPWG4ParticleCorrelation* particle = (AliAODPWG4ParticleCorrelation*) (
GetInputAODBranch()->At(iaod));
3603 Float_t pt = particle->Pt();
3616 AliDebug(1,Form(
"%s Trigger : min %f, max %f, det %d",
3633 Float_t m02 = particle->GetM02();
3639 AliDebug(1,
"Pass the shower shape cut");
3648 if( !particle->IsIsolated() )
continue;
3652 AliDebug(1,
"Pass the isolation cut");
3662 if(! in ) continue ;
3664 AliDebug(1,
"Pass the fiducial cut");
3674 Bool_t okLeadHad = kTRUE;
3688 Int_t mcTag = particle->GetTag();
3689 Bool_t lostDecayPair = kFALSE;
3733 Float_t m02 = particle->GetM02();
3734 Float_t pTLeadTrackInCone = 0;
3735 Float_t pTSumTrackInCone = 0;
3736 Float_t pTLeadClusterInCone = 0;
3737 Float_t pTSumClusterInCone = 0;
3750 Float_t pTLeadInCone = pTLeadTrackInCone;
3751 if(pTLeadClusterInCone > pTLeadInCone) pTLeadInCone = pTLeadClusterInCone;
3752 Float_t pTSumInCone = pTSumTrackInCone + pTSumClusterInCone;
3755 Int_t pTSumBin = -1;
3756 Int_t pTLeadBin = -1;
3758 for(Int_t ibin = 0; ibin <
fNBkgBin; ibin++)
3776 Int_t decayTag = particle->DecayTag();
3777 if(decayTag < 0) decayTag = 0;
3783 Int_t pTLeadBinDecay = pTLeadBin+ibit*
fNBkgBin;
3784 Int_t pTSumBinDecay = pTSumBin+ibit*
fNBkgBin;
3793 Int_t pTLeadBinMC = pTLeadBin+mcIndex*
fNBkgBin;
3794 Int_t pTSumBinMC = pTSumBin+mcIndex*
fNBkgBin;
3835 AliFatal(Form(
"Lost decay Bit assigned to bad case, mcIndex %d",mcIndex));
3857 Int_t decayTag = particle->DecayTag();
3858 if(decayTag < 0) decayTag = 0;
3883 Float_t phi = particle->Phi();
3884 if( phi < 0 ) phi+=TMath::TwoPi();
3924 AliDebug(1,
"End fill histograms");
3936 AliDebug(1,
"Make trigger particle - charged hadron correlation");
3938 Float_t phiTrig = aodParticle->Phi();
3939 Float_t etaTrig = aodParticle->Eta();
3940 Float_t ptTrig = aodParticle->Pt();
3941 Int_t mcTag = aodParticle->GetTag();
3949 decayTag = aodParticle->DecayTag();
3950 if(decayTag < 0) decayTag = 0;
3959 Float_t pt = -100. ;
3960 Float_t phi = -100. ;
3961 Float_t eta = -100. ;
3962 Float_t deltaPhi = -100. ;
3964 TObjArray * reftracks = 0x0;
3968 Int_t evtIndex11 = -1 ;
3969 Int_t evtIndex12 = -1 ;
3970 Int_t evtIndex13 = -1 ;
3974 evtIndex11 =
GetMixedEvent()->EventIndexForCaloCluster(aodParticle->GetCaloLabel(0)) ;
3975 evtIndex12 =
GetMixedEvent()->EventIndexForCaloCluster(aodParticle->GetCaloLabel(1)) ;
3976 evtIndex13 =
GetMixedEvent()->EventIndex(aodParticle->GetTrackLabel(0)) ;
3988 Bool_t decayFound = kFALSE;
3991 decayFound =
GetDecayPhotonMomentum(aodParticle->GetCaloLabel(0),aodParticle->GetCaloLabel(1),aodParticle->GetDetectorTag());
4003 for(Int_t ipr = 0;ipr <
GetCTSTracks()->GetEntriesFast() ; ipr ++ )
4005 AliVTrack * track = (AliVTrack *) (
GetCTSTracks()->At(ipr)) ;
4007 fTrackVector.SetXYZ(track->Px(),track->Py(),track->Pz());
4011 if(phi < 0) phi+=TMath::TwoPi();
4014 if(pt < fMinAssocPt || pt >
fMaxAssocPt) continue ;
4017 if( track->GetID() == aodParticle->GetTrackLabel(0) || track->GetID() == aodParticle->GetTrackLabel(1) ||
4018 track->GetID() == aodParticle->GetTrackLabel(2) || track->GetID() == aodParticle->GetTrackLabel(3) )
4022 Int_t evtIndex2 = 0 ;
4026 if (evtIndex11 == evtIndex2 || evtIndex12 == evtIndex2 || evtIndex13 == evtIndex2 )
4033 AliDebug(2,Form(
"Selected charge for momentum imbalance: pt %2.2f, phi %2.2f, eta %2.2f",pt,phi,eta));
4042 Int_t assocBin = -1;
4061 Int_t bin = assocBin*nz+vz;
4068 ULong_t status = track->GetStatus();
4069 Bool_t okTOF = ( (status & AliVTrack::kTOFout) == AliVTrack::kTOFout ) ;
4071 Int_t trackBC = track->GetTOFBunchCrossing(bz);
4074 if (okTOF && trackBC!=0) outTOF = 1;
4075 else if(okTOF && trackBC==0) outTOF = 0;
4084 deltaPhi = phiTrig-phi;
4091 if(deltaPhi <= -TMath::PiOver2()) deltaPhi+=TMath::TwoPi();
4092 if(deltaPhi > 3*TMath::PiOver2()) deltaPhi-=TMath::TwoPi();
4095 eta, etaTrig, decayTag, track->GetHMPIDsignal(),
4096 outTOF, cenbin, mcTag);
4107 assocBin, decayTag, outTOF, mcTag);
4134 reftracks =
new TObjArray(0);
4136 reftracks->SetName(trackname.Data());
4137 reftracks->SetOwner(kFALSE);
4140 reftracks->Add(track);
4147 aodParticle->AddObjArray(reftracks);
4156 AliDebug(1,Form(
"Make trigger particle - charged hadron mixed event correlation"));
4163 AliAnalysisManager * manager = AliAnalysisManager::GetAnalysisManager();
4165 AliInputEventHandler * inputHandler =
dynamic_cast<AliInputEventHandler*
>(manager->GetInputEventHandler());
4167 if(!inputHandler)
return;
4175 if(eventBin < 0)
return;
4184 TList * poolCalo = 0;
4198 if( neutralMix && !poolCalo )
4199 AliWarning(
"Careful, cluster pool not available");
4201 Double_t ptTrig = aodParticle->Pt();
4202 Double_t etaTrig = aodParticle->Eta();
4203 Double_t phiTrig = aodParticle->Phi();
4204 if(phiTrig < 0.) phiTrig+=TMath::TwoPi();
4206 AliDebug(1,Form(
"Pool bin %d size %d, trigger trigger pt=%f, phi=%f, eta=%f",
4207 eventBin,pool->GetSize(), ptTrig,phiTrig,etaTrig));
4209 Double_t ptAssoc = -999.;
4210 Double_t phiAssoc = -999.;
4211 Double_t etaAssoc = -999.;
4212 Double_t deltaPhi = -999.;
4213 Double_t deltaEta = -999.;
4214 Double_t xE = -999.;
4220 for(Int_t ev=ev0; ev < pool->GetSize(); ev++)
4225 TObjArray* bgTracks =
static_cast<TObjArray*
>(pool->At(ev));
4226 TObjArray* bgCalo = 0;
4229 if( neutralMix && poolCalo )
4231 if(pool->GetSize()!=poolCalo->GetSize())
4232 AliWarning(
"Different size of calo and track pools");
4234 bgCalo =
static_cast<TObjArray*
>(poolCalo->At(ev));
4236 if(!bgCalo) AliDebug(1,Form(
"Event %d in calo pool not available?",ev));
4244 Int_t n=0, nfrac = 0;
4245 Bool_t isolated = kFALSE;
4246 Float_t coneptsum = 0, coneptlead = 0;
4249 kFALSE, aodParticle,
"",
4250 n,nfrac,coneptsum,coneptlead,isolated);
4257 if(!isolated) continue ;
4263 Int_t nTracks=bgTracks->GetEntriesFast();
4267 Bool_t leading = kTRUE;
4268 for(Int_t jlead = 0;jlead < nTracks; jlead++ )
4270 AliAODPWG4Particle *track = (AliAODPWG4Particle*) bgTracks->At(jlead) ;
4272 ptAssoc = track->Pt();
4273 phiAssoc = track->Phi() ;
4274 if(phiAssoc < 0) phiAssoc+=TMath::TwoPi();
4278 deltaPhi = phiTrig-phiAssoc;
4279 if(deltaPhi <= -TMath::PiOver2()) deltaPhi+=TMath::TwoPi();
4280 if(deltaPhi > 3*TMath::PiOver2()) deltaPhi-=TMath::TwoPi();
4282 if(ptAssoc > ptTrig && deltaPhi < TMath::PiOver2())
4291 if(ptAssoc > ptTrig)
4300 AliWarning(
"Leading of clusters requested but no clusters in mixed event");
4304 Int_t nClusters=bgCalo->GetEntriesFast();
4305 for(Int_t jlead = 0;jlead <nClusters; jlead++ )
4307 AliAODPWG4Particle *cluster= (AliAODPWG4Particle*) bgCalo->At(jlead) ;
4309 ptAssoc = cluster->Pt();
4310 phiAssoc = cluster->Phi() ;
4311 if(phiAssoc < 0) phiAssoc+=TMath::TwoPi();
4315 deltaPhi = phiTrig-phiAssoc;
4316 if(deltaPhi <= -TMath::PiOver2()) deltaPhi+=TMath::TwoPi();
4317 if(deltaPhi > 3*TMath::PiOver2()) deltaPhi-=TMath::TwoPi();
4319 if(ptAssoc > ptTrig && deltaPhi < TMath::PiOver2())
4328 if(ptAssoc > ptTrig)
4337 if(!leading)
continue;
4358 for(Int_t j1 = 0;j1 <nTracks; j1++ )
4360 AliAODPWG4Particle *track = (AliAODPWG4Particle*) bgTracks->At(j1) ;
4362 if(!track)
continue;
4364 ptAssoc = track->Pt();
4365 etaAssoc = track->Eta();
4366 phiAssoc = track->Phi() ;
4367 if(phiAssoc < 0) phiAssoc+=TMath::TwoPi();
4369 deltaPhi = phiTrig-phiAssoc;
4370 if(deltaPhi < -TMath::PiOver2()) deltaPhi+=TMath::TwoPi();
4371 if(deltaPhi > 3*TMath::PiOver2()) deltaPhi-=TMath::TwoPi();
4372 deltaEta = etaTrig-etaAssoc;
4374 AliDebug(1,Form(
"deltaPhi= %f, deltaEta=%f",deltaPhi, deltaEta));
4385 xE = -ptAssoc/ptTrig*TMath::Cos(deltaPhi);
4388 AliWarning(Form(
"Careful!!, negative xE %2.2f for right UE cos(dPhi %2.2f) = %2.2f, check correlation dPhi limits %f to %f",
4402 Double_t uexE = -(ptAssoc/ptTrig)*TMath::Cos(randomphi);
4405 AliWarning(Form(
"Careful!!, negative xE %2.2f for left UE cos(dPhi %2.2f) = %2.2f, check correlation dPhi limits %f to %f",
4412 Int_t assocBin = -1;
4430 Int_t bin = assocBin*nz+vz;
4432 if(bin < 0) continue ;
4439 if(TMath::Abs(deltaEta) > 0.8)
4441 if(TMath::Abs(deltaEta) < 0.01)
4456 if(!pi0list) return ;
4458 Int_t npi0 = pi0list->GetEntriesFast();
4459 if(npi0 == 0) return ;
4461 AliDebug(1,Form(
"Particle - pi0 correlation, %d pi0's",npi0));
4463 Int_t evtIndex11 = 0 ;
4464 Int_t evtIndex12 = 0 ;
4467 evtIndex11 =
GetMixedEvent()->EventIndexForCaloCluster(aodParticle->GetCaloLabel(0)) ;
4468 evtIndex12 =
GetMixedEvent()->EventIndexForCaloCluster(aodParticle->GetCaloLabel(1)) ;
4471 Float_t pt = -100. ;
4472 Float_t zT = -100. ;
4473 Float_t phi = -100. ;
4474 Float_t eta = -100. ;
4475 Float_t xE = -100. ;
4476 Float_t hbpXE= -100. ;
4477 Float_t hbpZT= -100. ;
4479 Float_t ptTrig = aodParticle->Pt();
4480 Float_t phiTrig = aodParticle->Phi();
4481 Float_t etaTrig = aodParticle->Eta();
4482 Float_t deltaPhi= -100. ;
4483 Float_t deltaEta= -100. ;
4488 Bool_t decayFound = kFALSE;
4491 TObjArray * refpi0 = 0x0;
4496 for(Int_t iaod = 0; iaod < npi0 ; iaod++)
4498 AliAODPWG4Particle* pi0 = (AliAODPWG4Particle*) (pi0list->At(iaod));
4500 Int_t evtIndex2 = 0 ;
4501 Int_t evtIndex3 = 0 ;
4504 evtIndex2 =
GetMixedEvent()->EventIndexForCaloCluster(pi0->GetCaloLabel(0)) ;
4505 evtIndex3 =
GetMixedEvent()->EventIndexForCaloCluster(pi0->GetCaloLabel(1)) ;
4507 if (evtIndex11 == evtIndex2 || evtIndex12 == evtIndex2 ||
4508 evtIndex11 == evtIndex3 || evtIndex12 == evtIndex3)
4514 if(pt < fMinAssocPt || pt >
fMaxAssocPt) continue ;
4517 if(aodParticle->GetCaloLabel(0) >= 0 &&
4518 (pi0->GetCaloLabel(0) == aodParticle->GetCaloLabel(0) || pi0->GetCaloLabel(1) == aodParticle->GetCaloLabel(0))) continue ;
4520 if( aodParticle->GetCaloLabel(1) >= 0 &&
4521 (pi0->GetCaloLabel(0) == aodParticle->GetCaloLabel(1) || pi0->GetCaloLabel(1) == aodParticle->GetCaloLabel(1))) continue ;
4528 deltaEta = etaTrig-eta;
4529 deltaPhi = phiTrig-phi;
4530 if(deltaPhi <= -TMath::PiOver2()) deltaPhi+=TMath::TwoPi();
4531 if(deltaPhi > 3*TMath::PiOver2()) deltaPhi-=TMath::TwoPi();
4548 if(zT > 0 ) hbpZT = TMath::Log(1./zT);
4553 xE =-pt/ptTrig*TMath::Cos(deltaPhi);
4556 AliWarning(Form(
"Careful!!, negative xE %2.2f for right UE cos(dPhi %2.2f) = %2.2f, check correlation dPhi limits %f to %f",
4559 if( xE > 0 ) hbpXE = TMath::Log(1./xE);
4572 xE = -(pt/ptTrig)*TMath::Cos(randomphi);
4573 if(xE > 0 ) hbpXE = TMath::Log(1./xE);
4597 refpi0 =
new TObjArray(0);
4599 refpi0->SetOwner(kFALSE);
4604 AliDebug(1,Form(
"Selected pi0: pt %2.2f, phi %2.2f, eta %2.2f",pt,phi,eta));
4611 aodParticle->AddObjArray(refpi0);
4620 AliDebug(1,
"Make trigger particle - charged hadron correlation in AOD MC level");
4624 AliDebug(1,Form(
" *** bad label ***: label %d", label));
4631 if(histoIndex < fMCGenTypeMin || histoIndex >
fMCGenTypeMax) return ;
4633 AliStack * stack = 0x0 ;
4634 TParticle * primary = 0x0 ;
4635 TClonesArray * mcparticles = 0x0 ;
4636 AliAODMCParticle * aodprimary = 0x0 ;
4638 Double_t eprim = 0 ;
4639 Double_t ptprim = 0 ;
4640 Double_t phiprim = 0 ;
4641 Double_t etaprim = 0 ;
4643 Int_t iParticle = 0 ;
4645 Bool_t leadTrig = kTRUE;
4652 AliFatal(
"Stack not available, is the MC handler called? STOP");
4657 nTracks = stack->GetNprimary();
4658 if( label >= stack->GetNtrack() )
4661 AliInfo(Form(
"*** large label ***: label %d, n tracks %d", label, stack->GetNtrack()));
4665 primary = stack->Particle(label);
4668 AliInfo(Form(
" *** no primary ***: label %d", label));
4672 eprim = primary->Energy();
4673 ptprim = primary->Pt();
4674 etaprim = primary->Eta();
4675 phiprim = primary->Phi();
4676 if(phiprim < 0) phiprim+=TMath::TwoPi();
4678 if(ptprim < 0.01 || eprim < 0.01) return ;
4680 for (iParticle = 0 ; iParticle < nTracks ; iParticle++)
4682 TParticle * particle = stack->Particle(iParticle);
4685 if( particle->GetStatusCode() != 1 )
continue ;
4688 Int_t pdg = particle->GetPdgCode();
4689 Int_t
charge = (Int_t) TDatabasePDG::Instance()->GetParticle(pdg)->Charge();
4690 if(charge == 0)
continue;
4697 if( !inCTS )
continue;
4700 if ( TMath::Abs(pdg) == 11 && stack->Particle(particle->GetFirstMother())->GetPdgCode() == 22 )
continue ;
4702 if ( label == iParticle )
continue;
4704 Float_t phi = particle->Phi();
4705 if(phi < 0) phi+=TMath::TwoPi();
4709 if ( !lead ) leadTrig = kFALSE;
4718 if( !mcparticles )
return;
4720 nTracks = mcparticles->GetEntriesFast() ;
4722 if( label >= nTracks )
4725 AliInfo(Form(
" *** large label ***: label %d, n tracks %d", label,nTracks));
4730 aodprimary = (AliAODMCParticle*) mcparticles->At(label);
4733 AliInfo(Form(
" *** no AOD primary ***: label %d", label));
4737 eprim = aodprimary->E();
4738 ptprim = aodprimary->Pt();
4739 etaprim = aodprimary->Eta();
4740 phiprim = aodprimary->Phi();
4741 if(phiprim < 0) phiprim+=TMath::TwoPi();
4743 if(ptprim < 0.01 || eprim < 0.01) return ;
4745 for (iParticle = 0; iParticle < nTracks; iParticle++)
4747 AliAODMCParticle *part = (AliAODMCParticle*) mcparticles->At(iParticle);
4749 if (!part->IsPhysicalPrimary() )
continue;
4751 if ( part->Charge() == 0 )
continue;
4753 fMomentum.SetPxPyPzE(part->Px(),part->Py(),part->Pz(),part->E());
4758 if( !inCTS )
continue;
4761 Int_t indexmother = part->GetMother();
4762 if ( indexmother > -1 )
4764 Int_t pdg = part->GetPdgCode();
4765 Int_t mPdg = ((AliAODMCParticle*) mcparticles->At(indexmother)) ->GetPdgCode();
4766 if (TMath::Abs(pdg) == 11 && mPdg == 22)
continue;
4769 if ( label == iParticle )
continue;
4771 Float_t phi = part->Phi();
4772 if(phi < 0) phi+=TMath::TwoPi();
4776 if ( !lead ) leadTrig = kFALSE;
4791 if (histoIndex == 2 && 8 >=
fMCGenTypeMin && 8 <= fMCGenTypeMax )
4798 else if(histoIndex == 4 && 9 >=
fMCGenTypeMin && 9 <= fMCGenTypeMax )
4809 AliDebug(1,Form(
"Not leading primary trigger: pT %2.2f, phi %2.2f, eta %2.2f",
4810 ptprim,phiprim*TMath::RadToDeg(),etaprim));
4819 if (histoIndex == 2 && 8 >=
fMCGenTypeMin && 8 <= fMCGenTypeMax )
4826 else if(histoIndex == 4 && 9 >=
fMCGenTypeMin && 9 <= fMCGenTypeMax )
4845 printf(
"**** Print %s %s ****\n", GetName(), GetTitle() ) ;
4856 printf(
"Do Decay-hadron correlation ? %d\n",
fPi0Trigger) ;
4857 printf(
"Select absolute leading for cluster triggers ? %d or Near Side %d\n",
4879 AliWarning(
"n = larger than 19 or too small, set to 19");
4889 if(ibin <= fNAssocPtBins || ibin >= 0)
4895 AliWarning(Form(
"Bin number too large %d > %d or small, nothing done", ibin,
fNAssocPtBins)) ;
4906 Float_t & pTLeadTrackInCone, Float_t & pTSumTrackInCone)
4909 if(!reftracks) return ;
4911 for(Int_t itrack=0; itrack < reftracks->GetEntriesFast(); itrack++)
4913 AliVTrack* track = (AliVTrack *) reftracks->At(itrack);
4915 Float_t pTtrack = track->Pt();
4924 pTSumTrackInCone+=pTtrack;
4925 if(pTtrack > pTLeadTrackInCone) pTLeadTrackInCone = pTtrack;
4938 Float_t & pTLeadClusterInCone, Float_t & pTSumClusterInCone)
4941 if(!refclusters) return ;
4946 Double_t vertex[] = {0,0,0} ;
4950 for(Int_t icalo=0; icalo < refclusters->GetEntriesFast(); icalo++)
4952 AliVCluster* calo = (AliVCluster *) refclusters->At(icalo);
4964 pTSumClusterInCone += pTCluster;
4965 if(pTCluster > pTLeadClusterInCone) pTLeadClusterInCone = pTCluster;
virtual Bool_t IsFiducialCutOn() const
Float_t GetHistoPtMax() const
TH2F ** fhXEMult
[GetNCentrBin()]
TH2F * fhDeltaPhiDeltaEtaCharged
! Differences of eta and phi between trigger and charged hadrons.
TH2F * fhMCEtaCharged[fgkNmcTypes]
! MC pure particles charged primary pt vs eta (both associated)
void MakeIsolationCut(TObjArray *plCTS, TObjArray *plNe, AliCaloTrackReader *reader, AliCaloPID *pid, Bool_t bFillAOD, AliAODPWG4ParticleCorrelation *pCandidate, TString aodObjArrayName, Int_t &n, Int_t &nfrac, Float_t &ptSum, Float_t &ptLead, Bool_t &isolated)
TH2F * fhMCMassPtTrigger[fgkNmcTypes]
! Invariant mass of the trigger vs MC origin.
TH2F ** fhXEUeMult
[GetNCentrBin()]
TH2F * fhMCPtXECharged[fgkNmcTypes]
! MC pure particles charged trigger primary pt vs xE
TH2F * fhMixXECharged
! xE for mixed event.
TH2F * fhMCPtAssocDeltaPhi[fgkNmcTypes]
! MC pure particles charged associated primary pt vs delta phi (associated-trigger) ...
void SetLastCaloMixedEvent(Int_t e)
ClassImp(AliAnalysisTaskTriggerRates) AliAnalysisTaskTriggerRates
Int_t GetHistoDeltaEtaBins() const
TH1F * fhPtNoLeadingOppositeHadron
! pT trigger for events without opposite hadrons.
TH1F ** fhSumPtConeBinMC
[fNBkgBin*fgkNmcTypes]
virtual Bool_t DoOwnMix() const
TH2F * fhXEChargedVtxBC0
! Trigger particle -charged hadron momentum imbalance histogram.
TH2F * fhMixXEUeCharged
! xE for mixed event in Ue region.
Float_t GetHistoPtMin() const
virtual TObjArray * GetCTSTracks() const
virtual Float_t GetMaxPt() const
TH2F * fhDeltaPhiChargedPt
! Difference of charged particle phi and trigger particle phi as function of charged. particle pT
TH2F * fhPtHbpXECharged_Cone2
! Trigger particle -charged hadron momentum HBP histogram in cone2 (5pi/6-7pi/6). ...
virtual Int_t GetTrackMultiplicity() const
TH2F * fhPtTrigPout
! Pout =associated pt*sin(delta phi) distribution vs trigger pt
TH2F * fhZTCharged
! Trigger particle -charged hadron momentum imbalance histogram.
TH2F * fhPhiCharged
! Phi distribution of charged particles.
TH2F * fhZTPi0DecayCharged
! Trigger particle (decay from pi0/eta trigger)-charged hadron momentum imbalance histogram ...
TH2F * fhXEDecayCharged[AliNeutralMesonSelection::fgkMaxNDecayBits]
! Trigger particle (decay from pi0)-charged hadron momentum imbalance histogram.
virtual void AddToHistogramsName(TString add)
TList * GetListWithMixedEventsForTracks(Int_t bi) const
void FillNeutralUnderlyingEventSidesHistograms(Float_t ptTrig, Float_t ptAssoc, Float_t zT, Float_t hbpZT, Float_t deltaPhi)
void FillChargedUnderlyingEventHistograms(Float_t ptTrig, Float_t ptAssoc, Float_t deltaPhi, Int_t cenbin, Int_t outTOF, Int_t mcTag)
Fill underlying event histograms.
TList ** fListMixTrackEvents
Containers for tracks in stored events for mixing.
Int_t GetMCTagHistogramIndex(Int_t tag)
void InitParameters()
Initialize the default parameters of the analysis.
TH2F * fhMixDeltaPhiCharged
! Difference of charged particle phi and trigger particle phi as function of trigger particle pT...
virtual Bool_t IsDataMC() const
TH2F * fhDeltaPhiDeltaEtaNeutral
[GetNZvertBin()]
TH2F * fhMCPtHbpZTCharged[fgkNmcTypes]
! MC pure particles charged trigger primary pt vs ln(1/zT)
void MakeChargedCorrelation(AliAODPWG4ParticleCorrelation *particle)
TH2F * fhDeltaPhiNeutral
! Difference of neutral particle phi and trigger particle phi as function of trigger particle pT ...
void FillNeutralEventMixPool()
TH2F * fhZTNegCharged
! Trigger particle -negative charged hadron momentum imbalance histogram.
TH1F * fhPtTriggerIsoCut
! pT distribution of trigger particles after isolation cut selection.
virtual Float_t GetPairTimeCut() const
Time cut in ns.
TString fPi0AODBranchName
Name of AOD branch with pi0, not trigger.
TH2F * fhXEUeCharged
! Trigger particle -underlying charged hadron momentum imbalance histogram.
virtual AliStack * GetMCStack() const
TH1F * fhPtTriggerSSCut
! pT distribution of trigger particles after shower shape selection.
Bool_t ReadAODMCParticles() const
virtual void GetVertex(Double_t vertex[3]) const
Int_t GetHistoTrackMultiplicityMax() const
TH2F * fhMCPhiCharged[fgkNmcTypes]
! MC pure particles charged primary pt vs phi (both associated)
Bool_t fMakeAbsoluteLeading
Requesting absolute leading triggers.
TH1F * fhPtDecayTriggerMC[AliNeutralMesonSelection::fgkMaxNDecayBits][fgkNmcTypes]
! pT distribution of trigger particles, tagged as decay, check the origin of the cluster.
virtual TString GetInputAODName() const
TH1F * fhPtDecayTrigger[AliNeutralMesonSelection::fgkMaxNDecayBits]
! pT distribution of trigger particles, tagged as decay.
static const Int_t fgkMaxNDecayBits
TLorentzVector fMomentumIM
! Cluster momentum from Invariant mass.
void FillDecayPhotonCorrelationHistograms(Float_t ptAssoc, Float_t phiAssoc, Bool_t bChargedOrNeutral)
Do correlation with decay photons of triggered pi0 or eta.
void FillEventMixPool()
Fill the pool with tracks or clusters if requested.
TH2F ** fhZTAssocPtBin
[fNAssocPtBins]
TH2F * fhDeltaPhiUeRightUpCharged
! Difference of charged particle from underlying events phi and trigger particle phi ...
TH1F * fhPtTriggerVtxBC0
! pT distribution of trigger particles when vertex is BC0.
void MakeMCChargedCorrelation(Int_t triggerMCLable, Int_t histoIndex, Bool_t lostDecayPair)
Make the trigger-charged particles correlation at the generator level.