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",
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);
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++)
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);
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);
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);
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})");
2778 Form(
"MC %s: generated trigger #phi",nameMC[i].
Data()),
2779 nptbins,ptmin,ptmax, nphibins,phimin,phimax);
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);
2811 Form(
"MC %s: #eta_{h^{#pm}} vs #it{p}_{T #pm}",nameMC[i].
Data()),
2812 nptbins,ptmin,ptmax,100,-1.,1.);
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);
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);
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);
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;
3739 pTLeadTrackInCone = particle->GetChargedLeadPtInCone();
3740 pTLeadClusterInCone = particle->GetNeutralLeadPtInCone();
3742 pTSumTrackInCone = particle->GetChargedPtSumInCone();
3743 pTSumClusterInCone = particle->GetNeutralPtSumInCone();
3745 Float_t pTLeadInCone = pTLeadTrackInCone;
3746 if(pTLeadClusterInCone > pTLeadInCone) pTLeadInCone = pTLeadClusterInCone;
3747 Float_t pTSumInCone = pTSumTrackInCone + pTSumClusterInCone;
3750 Int_t pTSumBin = -1;
3751 Int_t pTLeadBin = -1;
3753 for(Int_t ibin = 0; ibin <
fNBkgBin; ibin++)
3771 Int_t decayTag = particle->DecayTag();
3772 if(decayTag < 0) decayTag = 0;
3778 Int_t pTLeadBinDecay = pTLeadBin+ibit*
fNBkgBin;
3779 Int_t pTSumBinDecay = pTSumBin+ibit*
fNBkgBin;
3788 Int_t pTLeadBinMC = pTLeadBin+mcIndex*
fNBkgBin;
3789 Int_t pTSumBinMC = pTSumBin+mcIndex*
fNBkgBin;
3830 AliFatal(Form(
"Lost decay Bit assigned to bad case, mcIndex %d",mcIndex));
3852 Int_t decayTag = particle->DecayTag();
3853 if(decayTag < 0) decayTag = 0;
3878 Float_t phi = particle->Phi();
3879 if( phi < 0 ) phi+=TMath::TwoPi();
3919 AliDebug(1,
"End fill histograms");
3931 AliDebug(1,
"Make trigger particle - charged hadron correlation");
3933 Float_t phiTrig = aodParticle->Phi();
3934 Float_t etaTrig = aodParticle->Eta();
3935 Float_t ptTrig = aodParticle->Pt();
3936 Int_t mcTag = aodParticle->GetTag();
3944 decayTag = aodParticle->DecayTag();
3945 if(decayTag < 0) decayTag = 0;
3954 Float_t pt = -100. ;
3955 Float_t phi = -100. ;
3956 Float_t eta = -100. ;
3957 Float_t deltaPhi = -100. ;
3959 TObjArray * reftracks = 0x0;
3963 Int_t evtIndex11 = -1 ;
3964 Int_t evtIndex12 = -1 ;
3965 Int_t evtIndex13 = -1 ;
3969 evtIndex11 =
GetMixedEvent()->EventIndexForCaloCluster(aodParticle->GetCaloLabel(0)) ;
3970 evtIndex12 =
GetMixedEvent()->EventIndexForCaloCluster(aodParticle->GetCaloLabel(1)) ;
3971 evtIndex13 =
GetMixedEvent()->EventIndex(aodParticle->GetTrackLabel(0)) ;
3983 Bool_t decayFound = kFALSE;
3986 decayFound =
GetDecayPhotonMomentum(aodParticle->GetCaloLabel(0),aodParticle->GetCaloLabel(1),aodParticle->GetDetectorTag());
3998 for(Int_t ipr = 0;ipr <
GetCTSTracks()->GetEntriesFast() ; ipr ++ )
4000 AliVTrack * track = (AliVTrack *) (
GetCTSTracks()->At(ipr)) ;
4002 fTrackVector.SetXYZ(track->Px(),track->Py(),track->Pz());
4006 if(phi < 0) phi+=TMath::TwoPi();
4009 if(pt < fMinAssocPt || pt >
fMaxAssocPt) continue ;
4012 if( track->GetID() == aodParticle->GetTrackLabel(0) || track->GetID() == aodParticle->GetTrackLabel(1) ||
4013 track->GetID() == aodParticle->GetTrackLabel(2) || track->GetID() == aodParticle->GetTrackLabel(3) )
4017 Int_t evtIndex2 = 0 ;
4021 if (evtIndex11 == evtIndex2 || evtIndex12 == evtIndex2 || evtIndex13 == evtIndex2 )
4028 AliDebug(2,Form(
"Selected charge for momentum imbalance: pt %2.2f, phi %2.2f, eta %2.2f",pt,phi,eta));
4037 Int_t assocBin = -1;
4056 Int_t bin = assocBin*nz+vz;
4063 ULong_t status = track->GetStatus();
4064 Bool_t okTOF = ( (status & AliVTrack::kTOFout) == AliVTrack::kTOFout ) ;
4066 Int_t trackBC = track->GetTOFBunchCrossing(bz);
4069 if (okTOF && trackBC!=0) outTOF = 1;
4070 else if(okTOF && trackBC==0) outTOF = 0;
4079 deltaPhi = phiTrig-phi;
4086 if(deltaPhi <= -TMath::PiOver2()) deltaPhi+=TMath::TwoPi();
4087 if(deltaPhi > 3*TMath::PiOver2()) deltaPhi-=TMath::TwoPi();
4090 eta, etaTrig, decayTag, track->GetHMPIDsignal(),
4091 outTOF, cenbin, mcTag);
4102 assocBin, decayTag, outTOF, mcTag);
4129 reftracks =
new TObjArray(0);
4131 reftracks->SetName(trackname.Data());
4132 reftracks->SetOwner(kFALSE);
4135 reftracks->Add(track);
4142 aodParticle->AddObjArray(reftracks);
4151 AliDebug(1,Form(
"Make trigger particle - charged hadron mixed event correlation"));
4158 AliAnalysisManager * manager = AliAnalysisManager::GetAnalysisManager();
4160 AliInputEventHandler * inputHandler =
dynamic_cast<AliInputEventHandler*
>(manager->GetInputEventHandler());
4162 if(!inputHandler)
return;
4170 if(eventBin < 0)
return;
4179 TList * poolCalo = 0;
4193 if( neutralMix && !poolCalo )
4194 AliWarning(
"Careful, cluster pool not available");
4196 Double_t ptTrig = aodParticle->Pt();
4197 Double_t etaTrig = aodParticle->Eta();
4198 Double_t phiTrig = aodParticle->Phi();
4199 if(phiTrig < 0.) phiTrig+=TMath::TwoPi();
4201 AliDebug(1,Form(
"Pool bin %d size %d, trigger trigger pt=%f, phi=%f, eta=%f",
4202 eventBin,pool->GetSize(), ptTrig,phiTrig,etaTrig));
4204 Double_t ptAssoc = -999.;
4205 Double_t phiAssoc = -999.;
4206 Double_t etaAssoc = -999.;
4207 Double_t deltaPhi = -999.;
4208 Double_t deltaEta = -999.;
4209 Double_t xE = -999.;
4215 for(Int_t ev=ev0; ev < pool->GetSize(); ev++)
4220 TObjArray* bgTracks =
static_cast<TObjArray*
>(pool->At(ev));
4221 TObjArray* bgCalo = 0;
4224 if( neutralMix && poolCalo )
4226 if(pool->GetSize()!=poolCalo->GetSize())
4227 AliWarning(
"Different size of calo and track pools");
4229 bgCalo =
static_cast<TObjArray*
>(poolCalo->At(ev));
4231 if(!bgCalo) AliDebug(1,Form(
"Event %d in calo pool not available?",ev));
4239 Int_t n=0, nfrac = 0;
4240 Bool_t isolated = kFALSE;
4241 Float_t coneptsum = 0, coneptlead = 0;
4244 kFALSE, aodParticle,
"",
4245 n,nfrac,coneptsum,coneptlead,isolated);
4252 if(!isolated) continue ;
4258 Int_t nTracks=bgTracks->GetEntriesFast();
4262 Bool_t leading = kTRUE;
4263 for(Int_t jlead = 0;jlead < nTracks; jlead++ )
4265 AliAODPWG4Particle *track = (AliAODPWG4Particle*) bgTracks->At(jlead) ;
4267 ptAssoc = track->Pt();
4268 phiAssoc = track->Phi() ;
4269 if(phiAssoc < 0) phiAssoc+=TMath::TwoPi();
4273 deltaPhi = phiTrig-phiAssoc;
4274 if(deltaPhi <= -TMath::PiOver2()) deltaPhi+=TMath::TwoPi();
4275 if(deltaPhi > 3*TMath::PiOver2()) deltaPhi-=TMath::TwoPi();
4277 if(ptAssoc > ptTrig && deltaPhi < TMath::PiOver2())
4286 if(ptAssoc > ptTrig)
4295 AliWarning(
"Leading of clusters requested but no clusters in mixed event");
4299 Int_t nClusters=bgCalo->GetEntriesFast();
4300 for(Int_t jlead = 0;jlead <nClusters; jlead++ )
4302 AliAODPWG4Particle *cluster= (AliAODPWG4Particle*) bgCalo->At(jlead) ;
4304 ptAssoc = cluster->Pt();
4305 phiAssoc = cluster->Phi() ;
4306 if(phiAssoc < 0) phiAssoc+=TMath::TwoPi();
4310 deltaPhi = phiTrig-phiAssoc;
4311 if(deltaPhi <= -TMath::PiOver2()) deltaPhi+=TMath::TwoPi();
4312 if(deltaPhi > 3*TMath::PiOver2()) deltaPhi-=TMath::TwoPi();
4314 if(ptAssoc > ptTrig && deltaPhi < TMath::PiOver2())
4323 if(ptAssoc > ptTrig)
4332 if(!leading)
continue;
4353 for(Int_t j1 = 0;j1 <nTracks; j1++ )
4355 AliAODPWG4Particle *track = (AliAODPWG4Particle*) bgTracks->At(j1) ;
4357 if(!track)
continue;
4359 ptAssoc = track->Pt();
4360 etaAssoc = track->Eta();
4361 phiAssoc = track->Phi() ;
4362 if(phiAssoc < 0) phiAssoc+=TMath::TwoPi();
4364 deltaPhi = phiTrig-phiAssoc;
4365 if(deltaPhi < -TMath::PiOver2()) deltaPhi+=TMath::TwoPi();
4366 if(deltaPhi > 3*TMath::PiOver2()) deltaPhi-=TMath::TwoPi();
4367 deltaEta = etaTrig-etaAssoc;
4369 AliDebug(1,Form(
"deltaPhi= %f, deltaEta=%f",deltaPhi, deltaEta));
4380 xE = -ptAssoc/ptTrig*TMath::Cos(deltaPhi);
4383 AliWarning(Form(
"Careful!!, negative xE %2.2f for right UE cos(dPhi %2.2f) = %2.2f, check correlation dPhi limits %f to %f",
4397 Double_t uexE = -(ptAssoc/ptTrig)*TMath::Cos(randomphi);
4400 AliWarning(Form(
"Careful!!, negative xE %2.2f for left UE cos(dPhi %2.2f) = %2.2f, check correlation dPhi limits %f to %f",
4407 Int_t assocBin = -1;
4425 Int_t bin = assocBin*nz+vz;
4427 if(bin < 0) continue ;
4434 if(TMath::Abs(deltaEta) > 0.8)
4436 if(TMath::Abs(deltaEta) < 0.01)
4451 if(!pi0list) return ;
4453 Int_t npi0 = pi0list->GetEntriesFast();
4454 if(npi0 == 0) return ;
4456 AliDebug(1,Form(
"Particle - pi0 correlation, %d pi0's",npi0));
4458 Int_t evtIndex11 = 0 ;
4459 Int_t evtIndex12 = 0 ;
4462 evtIndex11 =
GetMixedEvent()->EventIndexForCaloCluster(aodParticle->GetCaloLabel(0)) ;
4463 evtIndex12 =
GetMixedEvent()->EventIndexForCaloCluster(aodParticle->GetCaloLabel(1)) ;
4466 Float_t pt = -100. ;
4467 Float_t zT = -100. ;
4468 Float_t phi = -100. ;
4469 Float_t eta = -100. ;
4470 Float_t xE = -100. ;
4471 Float_t hbpXE= -100. ;
4472 Float_t hbpZT= -100. ;
4474 Float_t ptTrig = aodParticle->Pt();
4475 Float_t phiTrig = aodParticle->Phi();
4476 Float_t etaTrig = aodParticle->Eta();
4477 Float_t deltaPhi= -100. ;
4478 Float_t deltaEta= -100. ;
4483 Bool_t decayFound = kFALSE;
4486 TObjArray * refpi0 = 0x0;
4491 for(Int_t iaod = 0; iaod < npi0 ; iaod++)
4493 AliAODPWG4Particle* pi0 = (AliAODPWG4Particle*) (pi0list->At(iaod));
4495 Int_t evtIndex2 = 0 ;
4496 Int_t evtIndex3 = 0 ;
4499 evtIndex2 =
GetMixedEvent()->EventIndexForCaloCluster(pi0->GetCaloLabel(0)) ;
4500 evtIndex3 =
GetMixedEvent()->EventIndexForCaloCluster(pi0->GetCaloLabel(1)) ;
4502 if (evtIndex11 == evtIndex2 || evtIndex12 == evtIndex2 ||
4503 evtIndex11 == evtIndex3 || evtIndex12 == evtIndex3)
4509 if(pt < fMinAssocPt || pt >
fMaxAssocPt) continue ;
4512 if(aodParticle->GetCaloLabel(0) >= 0 &&
4513 (pi0->GetCaloLabel(0) == aodParticle->GetCaloLabel(0) || pi0->GetCaloLabel(1) == aodParticle->GetCaloLabel(0))) continue ;
4515 if( aodParticle->GetCaloLabel(1) >= 0 &&
4516 (pi0->GetCaloLabel(0) == aodParticle->GetCaloLabel(1) || pi0->GetCaloLabel(1) == aodParticle->GetCaloLabel(1))) continue ;
4523 deltaEta = etaTrig-eta;
4524 deltaPhi = phiTrig-phi;
4525 if(deltaPhi <= -TMath::PiOver2()) deltaPhi+=TMath::TwoPi();
4526 if(deltaPhi > 3*TMath::PiOver2()) deltaPhi-=TMath::TwoPi();
4543 if(zT > 0 ) hbpZT = TMath::Log(1./zT);
4548 xE =-pt/ptTrig*TMath::Cos(deltaPhi);
4551 AliWarning(Form(
"Careful!!, negative xE %2.2f for right UE cos(dPhi %2.2f) = %2.2f, check correlation dPhi limits %f to %f",
4554 if( xE > 0 ) hbpXE = TMath::Log(1./xE);
4567 xE = -(pt/ptTrig)*TMath::Cos(randomphi);
4568 if(xE > 0 ) hbpXE = TMath::Log(1./xE);
4592 refpi0 =
new TObjArray(0);
4594 refpi0->SetOwner(kFALSE);
4599 AliDebug(1,Form(
"Selected pi0: pt %2.2f, phi %2.2f, eta %2.2f",pt,phi,eta));
4606 aodParticle->AddObjArray(refpi0);
4615 AliDebug(1,
"Make trigger particle - charged hadron correlation in AOD MC level");
4619 AliDebug(1,Form(
" *** bad label ***: label %d", label));
4626 if(histoIndex < fMCGenTypeMin || histoIndex >
fMCGenTypeMax) return ;
4628 AliStack * stack = 0x0 ;
4629 TParticle * primary = 0x0 ;
4630 TClonesArray * mcparticles = 0x0 ;
4631 AliAODMCParticle * aodprimary = 0x0 ;
4633 Double_t eprim = 0 ;
4634 Double_t ptprim = 0 ;
4635 Double_t phiprim = 0 ;
4636 Double_t etaprim = 0 ;
4638 Int_t iParticle = 0 ;
4640 Bool_t leadTrig = kTRUE;
4647 AliFatal(
"Stack not available, is the MC handler called? STOP");
4652 nTracks = stack->GetNprimary();
4653 if( label >= stack->GetNtrack() )
4656 AliInfo(Form(
"*** large label ***: label %d, n tracks %d", label, stack->GetNtrack()));
4660 primary = stack->Particle(label);
4663 AliInfo(Form(
" *** no primary ***: label %d", label));
4667 eprim = primary->Energy();
4668 ptprim = primary->Pt();
4669 etaprim = primary->Eta();
4670 phiprim = primary->Phi();
4671 if(phiprim < 0) phiprim+=TMath::TwoPi();
4673 if(ptprim < 0.01 || eprim < 0.01) return ;
4675 for (iParticle = 0 ; iParticle < nTracks ; iParticle++)
4677 TParticle * particle = stack->Particle(iParticle);
4680 if( particle->GetStatusCode() != 1 )
continue ;
4683 Int_t
pdg = particle->GetPdgCode();
4684 Int_t
charge = (Int_t) TDatabasePDG::Instance()->GetParticle(pdg)->Charge();
4685 if(charge == 0)
continue;
4692 if( !inCTS )
continue;
4695 if ( TMath::Abs(pdg) == 11 && stack->Particle(particle->GetFirstMother())->GetPdgCode() == 22 )
continue ;
4697 if ( label == iParticle )
continue;
4699 Float_t phi = particle->Phi();
4700 if(phi < 0) phi+=TMath::TwoPi();
4704 if ( !lead ) leadTrig = kFALSE;
4713 if( !mcparticles )
return;
4715 nTracks = mcparticles->GetEntriesFast() ;
4717 if( label >= nTracks )
4720 AliInfo(Form(
" *** large label ***: label %d, n tracks %d", label,nTracks));
4725 aodprimary = (AliAODMCParticle*) mcparticles->At(label);
4728 AliInfo(Form(
" *** no AOD primary ***: label %d", label));
4732 eprim = aodprimary->E();
4733 ptprim = aodprimary->Pt();
4734 etaprim = aodprimary->Eta();
4735 phiprim = aodprimary->Phi();
4736 if(phiprim < 0) phiprim+=TMath::TwoPi();
4738 if(ptprim < 0.01 || eprim < 0.01) return ;
4740 for (iParticle = 0; iParticle < nTracks; iParticle++)
4742 AliAODMCParticle *part = (AliAODMCParticle*) mcparticles->At(iParticle);
4744 if (!part->IsPhysicalPrimary() )
continue;
4746 if ( part->Charge() == 0 )
continue;
4748 fMomentum.SetPxPyPzE(part->Px(),part->Py(),part->Pz(),part->E());
4753 if( !inCTS )
continue;
4756 Int_t indexmother = part->GetMother();
4757 if ( indexmother > -1 )
4759 Int_t
pdg = part->GetPdgCode();
4760 Int_t mPdg = ((AliAODMCParticle*) mcparticles->At(indexmother)) ->GetPdgCode();
4761 if (TMath::Abs(pdg) == 11 && mPdg == 22)
continue;
4764 if ( label == iParticle )
continue;
4766 Float_t phi = part->Phi();
4767 if(phi < 0) phi+=TMath::TwoPi();
4771 if ( !lead ) leadTrig = kFALSE;
4786 if (histoIndex == 2 && 8 >=
fMCGenTypeMin && 8 <= fMCGenTypeMax )
4793 else if(histoIndex == 4 && 9 >=
fMCGenTypeMin && 9 <= fMCGenTypeMax )
4804 AliDebug(1,Form(
"Not leading primary trigger: pT %2.2f, phi %2.2f, eta %2.2f",
4805 ptprim,phiprim*TMath::RadToDeg(),etaprim));
4814 if (histoIndex == 2 && 8 >=
fMCGenTypeMin && 8 <= fMCGenTypeMax )
4821 else if(histoIndex == 4 && 9 >=
fMCGenTypeMin && 9 <= fMCGenTypeMax )
4840 printf(
"**** Print %s %s ****\n", GetName(), GetTitle() ) ;
4851 printf(
"Do Decay-hadron correlation ? %d\n",
fPi0Trigger) ;
4852 printf(
"Select absolute leading for cluster triggers ? %d or Near Side %d\n",
4874 AliWarning(
"n = larger than 19 or too small, set to 19");
4884 if(ibin <= fNAssocPtBins || ibin >= 0)
4890 AliWarning(Form(
"Bin number too large %d > %d or small, nothing done", ibin,
fNAssocPtBins)) ;
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.
TH2F * fhDeltaPhiChargedMC[fgkNmcTypes]
! Trigger particle -charged hadron delta phi histogram, check the origin of the cluster : decay photo...
void SetListWithMixedEventsForTracks(TList **l)
Int_t GetVertexBC(const AliVVertex *vtx)