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 fhXEUeChargedSmallCone(0), fhXEUeChargedMediumCone(0), fhXEUeChargedLargeCone(0),
106 fhXEPosCharged(0), fhXENegCharged(0),
107 fhPtHbpXECharged(0), fhPtHbpXECharged_Cone2(0), fhPtHbpXEUeCharged(0),
108 fhZTCharged(0), fhZTUeCharged(0),
109 fhZTPosCharged(0), fhZTNegCharged(0),
110 fhPtHbpZTCharged(0), fhPtHbpZTUeCharged(0),
111 fhXEChargedMC(), fhDeltaPhiChargedMC(),
112 fhXEUeChargedRightMC(), fhXEUeChargedLeftMC(),
113 fhDeltaPhiDeltaEtaChargedPtA3GeV(0),
114 fhDeltaPhiChargedPtA3GeV(0), fhDeltaEtaChargedPtA3GeV(0),
116 fhDeltaPhiChargedPileUp(), fhDeltaEtaChargedPileUp(),
117 fhDeltaPhiChargedPtA3GeVPileUp(), fhDeltaEtaChargedPtA3GeVPileUp(),
118 fhXEChargedPileUp(), fhXEUeChargedPileUp(),
119 fhZTChargedPileUp(), fhZTUeChargedPileUp(),
120 fhPtTrigChargedPileUp(),
121 fhDeltaPhiChargedOtherBC(), fhDeltaPhiChargedPtA3GeVOtherBC(),
122 fhXEChargedOtherBC(), fhXEUeChargedOtherBC(),
123 fhZTChargedOtherBC(), fhZTUeChargedOtherBC(),
124 fhPtTrigChargedOtherBC(),
125 fhDeltaPhiChargedBC0(), fhDeltaPhiChargedPtA3GeVBC0(),
126 fhXEChargedBC0(), fhXEUeChargedBC0(),
127 fhZTChargedBC0(), fhZTUeChargedBC0(),
128 fhPtTrigChargedBC0(),
129 fhDeltaPhiChargedVtxBC0(), fhDeltaPhiChargedPtA3GeVVtxBC0(),
130 fhXEChargedVtxBC0(), fhXEUeChargedVtxBC0(),
131 fhZTChargedVtxBC0(), fhZTUeChargedVtxBC0(),
132 fhPtTrigChargedVtxBC0(),
133 fhDeltaPhiUeLeftCharged(0),
134 fhDeltaPhiUeLeftUpCharged(0), fhDeltaPhiUeRightUpCharged(0),
135 fhDeltaPhiUeLeftDownCharged(0), fhDeltaPhiUeRightDownCharged(0),
136 fhXEUeLeftCharged(0),
137 fhXEUeLeftUpCharged(0), fhXEUeRightUpCharged(0),
138 fhXEUeLeftDownCharged(0), fhXEUeRightDownCharged(0),
139 fhPtHbpXEUeLeftCharged(0), fhZTUeLeftCharged(0),
140 fhPtHbpZTUeLeftCharged(0),
141 fhPtTrigPout(0), fhPtTrigCharged(0),
142 fhDeltaPhiChargedMult(0x0), fhDeltaEtaChargedMult(0x0),
143 fhXEMult(0x0), fhXEUeMult(0x0),
144 fhZTMult(0x0), fhZTUeMult(0x0),
145 fhAssocPtBkg(0), fhDeltaPhiDeltaEtaAssocPtBin(0),
146 fhDeltaPhiAssocPtBin(0),
147 fhDeltaPhiAssocPtBinDEta08(0), fhDeltaPhiAssocPtBinDEta0(0),
148 fhDeltaPhiAssocPtBinHMPID(0), fhDeltaPhiAssocPtBinHMPIDAcc(0),
149 fhDeltaPhiBradAssocPtBin(0), fhDeltaPhiBrad(0),
150 fhXEAssocPtBin(0), fhZTAssocPtBin(0),
151 fhXEVZ(0), fhZTVZ(0),
152 fhDeltaPhiDeltaEtaNeutral(0),
153 fhPhiNeutral(0), fhEtaNeutral(0),
154 fhDeltaPhiNeutral(0), fhDeltaEtaNeutral(0),
155 fhDeltaPhiNeutralPt(0), fhDeltaPhiUeNeutralPt(0),
156 fhXENeutral(0), fhXEUeNeutral(0),
157 fhPtHbpXENeutral(0), fhPtHbpXEUeNeutral(0),
158 fhZTNeutral(0), fhZTUeNeutral(0),
159 fhPtHbpZTNeutral(0), fhPtHbpZTUeNeutral(0),
160 fhDeltaPhiUeLeftNeutral(0), fhXEUeLeftNeutral(0),
161 fhPtHbpXEUeLeftNeutral(0), fhZTUeLeftNeutral(0),
162 fhPtHbpZTUeLeftNeutral(0), fhPtPi0DecayRatio(0),
163 fhDeltaPhiPi0DecayCharged(0), fhXEPi0DecayCharged(0), fhZTPi0DecayCharged(0),
164 fhDeltaPhiPi0DecayNeutral(0), fhXEPi0DecayNeutral(0), fhZTPi0DecayNeutral(0),
165 fhDeltaPhiDecayCharged(), fhXEDecayCharged(), fhZTDecayCharged(),
166 fhDeltaPhiDecayChargedAssocPtBin(),
167 fhMCPtTrigger(), fhMCPhiTrigger(), fhMCEtaTrigger(),
168 fhMCPtTriggerNotLeading(), fhMCPhiTriggerNotLeading(), fhMCEtaTriggerNotLeading(),
169 fhMCEtaCharged(), fhMCPhiCharged(),
170 fhMCDeltaEtaCharged(), fhMCDeltaPhiCharged(),
171 fhMCDeltaPhiDeltaEtaCharged(), fhMCDeltaPhiChargedPt(),
172 fhMCPtXECharged(), fhMCPtXEUeCharged(),
173 fhMCPtXEUeLeftCharged(),
174 fhMCPtHbpXECharged(), fhMCPtHbpXEUeCharged(),
175 fhMCPtHbpXEUeLeftCharged(),
177 fhMCPtZTCharged(), fhMCPtZTUeCharged(),
178 fhMCPtZTUeLeftCharged(),
179 fhMCPtHbpZTCharged(), fhMCPtHbpZTUeCharged(),
180 fhMCPtHbpZTUeLeftCharged(),
181 fhMCPtTrigPout(), fhMCPtAssocDeltaPhi(),
183 fhNEventsTrigger(0), fhNtracksMB(0), fhNclustersMB(0),
184 fhMixDeltaPhiCharged(0), fhMixDeltaPhiDeltaEtaCharged(0),
185 fhMixXECharged(0), fhMixXEUeCharged(0), fhMixHbpXECharged(0),
186 fhMixDeltaPhiChargedAssocPtBin(),
187 fhMixDeltaPhiChargedAssocPtBinDEta08(),
188 fhMixDeltaPhiChargedAssocPtBinDEta0(),
189 fhMixDeltaPhiDeltaEtaChargedAssocPtBin(),
190 fhEventBin(0), fhEventMixBin(0), fhEventMBBin(0),
191 fhMassPtTrigger(0), fhMCMassPtTrigger(),
192 fhPtLeadInConeBin(), fhPtSumInConeBin(),
193 fhPtLeadConeBinDecay(), fhSumPtConeBinDecay(),
194 fhPtLeadConeBinMC(), fhSumPtConeBinMC(),
195 fhTrackResolution(0), fhTrackResolutionUE(0)
213 for(Int_t i = 0; i < 7; i++)
273 Float_t phiAssoc, Float_t phiTrig, Float_t deltaPhi,
274 Float_t etaAssoc, Float_t etaTrig,
275 Int_t decayTag, Float_t hmpidSignal, Int_t outTOF,
276 Int_t cen, Int_t mcTag)
278 Float_t deltaEta = etaTrig-etaAssoc;
279 Float_t deltaPhiOrg = phiTrig-phiAssoc;
311 if(vtxBC == 0 || vtxBC==AliVTrack::kTOFBCNA)
327 if(
GetReader()->IsPileUpFromSPDOrEMCal())
332 if(
GetReader()->IsPileUpFromSPDAndEMCal())
337 if(
GetReader()->IsPileUpFromSPDAndNotEMCal())
342 if(
GetReader()->IsPileUpFromEMCalAndNotSPD())
347 if(
GetReader()->IsPileUpFromNotSPDAndNotEMCal())
365 if(
GetReader()->IsPileUpFromSPDOrEMCal())
370 if(
GetReader()->IsPileUpFromSPDAndEMCal())
375 if(
GetReader()->IsPileUpFromSPDAndNotEMCal())
380 if(
GetReader()->IsPileUpFromEMCalAndNotSPD())
385 if(
GetReader()->IsPileUpFromNotSPDAndNotEMCal())
415 Double_t dphiBrad = -100;
418 dphiBrad = atan2(sin(deltaPhiOrg), cos(deltaPhiOrg))/TMath::Pi();
419 if( TMath::Abs(dphiBrad) > 0.325 && TMath::Abs(dphiBrad) < 0.475 )
424 if( dphiBrad < -1./3 ) dphiBrad += 2;
437 if(TMath::Abs(deltaEta)> 0.8)
440 if(TMath::Abs(deltaEta)< 0.01)
455 if( hmpidSignal > 0 )
461 if(phiAssoc > 5*TMath::DegToRad() && phiAssoc < 20*TMath::DegToRad())
481 Float_t mcTrigPt, Float_t mcTrigPhi, Float_t mcTrigEta,
482 Int_t histoIndex, Bool_t lostDecayPair)
493 if( mcAssocPhi < 0 ) mcAssocPhi+=TMath::TwoPi();
495 Float_t mcdeltaPhi= mcTrigPhi-mcAssocPhi;
496 if(mcdeltaPhi <= -TMath::PiOver2()) mcdeltaPhi+=TMath::TwoPi();
497 if(mcdeltaPhi > 3*TMath::PiOver2()) mcdeltaPhi-=TMath::TwoPi();
501 if( mcAssocPt > mcTrigPt && mcdeltaPhi < TMath::PiOver2() ) lead = kFALSE;
506 if ( mcAssocPt < fMinAssocPt || mcAssocPt >
fMaxAssocPt )
return lead ;
507 if ( mcAssocPt <
GetReader()->GetCTSPtMin())
return lead ;
512 if(TMath::Abs(mcAssocPt -mcTrigPt ) < 1e-6 &&
514 TMath::Abs(mcAssocEta-mcTrigEta) < 1e-6)
return lead ;
516 Float_t mcxE =-mcAssocPt/mcTrigPt*TMath::Cos(mcdeltaPhi);
517 Float_t mchbpXE =-100 ;
518 if(mcxE > 0 ) mchbpXE = TMath::Log(1./mcxE);
520 Float_t mczT = mcAssocPt/mcTrigPt ;
521 Float_t mchbpZT =-100 ;
522 if(mczT > 0 ) mchbpZT = TMath::Log(1./mczT);
524 Double_t mcpout = mcAssocPt*TMath::Sin(mcdeltaPhi) ;
526 AliDebug(1,Form(
"Charged hadron: track Pt %f, track Phi %f, phi trigger %f. Cuts: delta phi %2.2f < %2.2f < %2.2f",
605 Double_t mcUexE = -(mcAssocPt/mcTrigPt)*TMath::Cos(randomphi);
606 Double_t mcUezT = mcAssocPt/mcTrigPt;
609 AliWarning(Form(
"Careful!!, negative xE %2.2f for right UE cos(dPhi %2.2f) = %2.2f, check correlation dPhi limits %f to %f",
654 Double_t mcUexE = -(mcAssocPt/mcTrigPt)*TMath::Cos(randomphi);
655 Double_t mcUezT = mcAssocPt/mcTrigPt;
658 AliWarning(Form(
"Careful!!, negative xE %2.2f for left UE cos(dPhi %2.2f) = %2.2f, check correlation dPhi limits %f to %f",
701 Int_t bin, Int_t decayTag,
702 Int_t outTOF, Int_t mcTag)
705 Float_t zT = ptAssoc/ptTrig ;
706 Float_t xE =-ptAssoc/ptTrig*TMath::Cos(deltaPhi);
707 Float_t pout = ptAssoc*TMath::Sin(deltaPhi) ;
710 AliWarning(Form(
"Careful!!, negative xE %2.2f for right UE cos(dPhi %2.2f) = %2.2f, check correlation dPhi limits %f to %f",
713 Float_t hbpXE = -100;
714 Float_t hbpZT = -100;
716 if(xE > 0 ) hbpXE = TMath::Log(1./xE);
717 if(zT > 0 ) hbpZT = TMath::Log(1./zT);
726 if((deltaPhi > 5*TMath::Pi()/6.) && (deltaPhi < 7*TMath::Pi()/6.))
763 if(vtxBC == 0 || vtxBC==AliVTrack::kTOFBCNA)
782 if(
GetReader()->IsPileUpFromSPDOrEMCal())
788 if(
GetReader()->IsPileUpFromSPDAndEMCal())
794 if(
GetReader()->IsPileUpFromSPDAndNotEMCal())
800 if(
GetReader()->IsPileUpFromEMCalAndNotSPD())
806 if(
GetReader()->IsPileUpFromNotSPDAndNotEMCal())
862 Float_t deltaPhi, Int_t cen, Int_t outTOF, Int_t mcTag)
869 Double_t uexE = -(ptAssoc/ptTrig)*TMath::Cos(randomphi);
870 Double_t uezT = ptAssoc/ptTrig;
873 AliWarning(Form(
"Careful!!, negative xE %2.2f for right UE cos(dPhi %2.2f) = %2.2f, check correlation dPhi limits %f to %f",
915 if(vtxBC == 0 || vtxBC==AliVTrack::kTOFBCNA)
931 if(
GetReader()->IsPileUpFromSPDOrEMCal())
936 if(
GetReader()->IsPileUpFromSPDAndEMCal())
941 if(
GetReader()->IsPileUpFromSPDAndNotEMCal())
946 if(
GetReader()->IsPileUpFromEMCalAndNotSPD())
951 if(
GetReader()->IsPileUpFromNotSPDAndNotEMCal())
980 Double_t uexE = -(ptAssoc/ptTrig)*TMath::Cos(randomphi);
981 Double_t uezT = ptAssoc/ptTrig;
984 AliWarning(Form(
"Careful!!, negative xE %2.2f for left UE cos(dPhi %2.2f) = %2.2f, check correlation dPhi limits %f to %f",
1014 Double_t uexE = -(ptAssoc/ptTrig)*TMath::Cos(randomphi);
1017 AliWarning(Form(
"Careful!!, negative xE %2.2f for left-down UE cos(dPhi %2.2f) = %2.2f, check correlation dPhi limits %f to %f",
1028 Double_t uexE = -(ptAssoc/ptTrig)*TMath::Cos(randomphi);
1031 AliWarning(Form(
"Careful!!, negative xE %2.2f for left-up UE cos(dPhi %2.2f) = %2.2f, check correlation dPhi limits %f to %f",
1042 Double_t uexE = -(ptAssoc/ptTrig)*TMath::Cos(randomphi);
1045 AliWarning(Form(
"Careful!!, negative xE %2.2f for right-up UE cos(dPhi %2.2f) = %2.2f, check correlation dPhi limits %f to %f",
1056 Double_t uexE = -(ptAssoc/ptTrig)*TMath::Cos(randomphi);
1059 AliWarning(Form(
"Careful!!, negative xE %2.2f for right-down UE cos(dPhi %2.2f) = %2.2f, check correlation dPhi limits %f to %f",
1075 Float_t zTDecay1 = -100, zTDecay2 = -100;
1076 if(ptDecay1 > 0) zTDecay1 = ptAssoc/ptDecay1 ;
1077 if(ptDecay2 > 0) zTDecay2 = ptAssoc/ptDecay2 ;
1079 Float_t deltaPhiDecay1 =
fDecayMom1.Phi()-phiAssoc;
1080 if(deltaPhiDecay1< -TMath::PiOver2()) deltaPhiDecay1+=TMath::TwoPi();
1081 if(deltaPhiDecay1>3*TMath::PiOver2()) deltaPhiDecay1-=TMath::TwoPi();
1083 Float_t deltaPhiDecay2 =
fDecayMom2.Phi()-phiAssoc;
1084 if(deltaPhiDecay2< -TMath::PiOver2()) deltaPhiDecay2+=TMath::TwoPi();
1085 if(deltaPhiDecay2>3*TMath::PiOver2()) deltaPhiDecay2-=TMath::TwoPi();
1087 Float_t xEDecay1 =-zTDecay1*TMath::Cos(deltaPhiDecay1);
1088 Float_t xEDecay2 =-zTDecay2*TMath::Cos(deltaPhiDecay2);
1090 if(bChargedOrNeutral)
1095 AliDebug(2,Form(
"deltaPhoton1 = %f, deltaPhoton2 = %f", deltaPhiDecay1, deltaPhiDecay2));
1113 AliDebug(2,Form(
"deltaPhoton1 = %f, deltaPhoton2 = %f", deltaPhiDecay1, deltaPhiDecay2));
1133 Float_t zT, Float_t hbpZT,
1138 Float_t xE =-ptAssoc/ptTrig*TMath::Cos(randomphi);
1139 Float_t hbpXE = -100;
1140 if(xE > 0 ) hbpXE = TMath::Log(1./xE);
1181 AliAnalysisManager * manager = AliAnalysisManager::GetAnalysisManager();
1182 AliInputEventHandler * inputHandler =
dynamic_cast<AliInputEventHandler*
>(manager->GetInputEventHandler());
1184 if(!inputHandler) return ;
1192 if(eventBin < 0)
return;
1196 TObjArray * mixEventTracks =
new TObjArray;
1209 for(Int_t ipr = 0;ipr <
GetCTSTracks()->GetEntriesFast() ; ipr ++ )
1211 AliVTrack * track = (AliVTrack *) (
GetCTSTracks()->At(ipr)) ;
1213 fTrackVector.SetXYZ(track->Px(),track->Py(),track->Pz());
1217 if(pt < fMinAssocPt || pt >
fMaxAssocPt) continue ;
1219 AliAODPWG4Particle * mixedTrack =
new AliAODPWG4Particle(track->Px(),track->Py(),track->Pz(),0);
1220 mixedTrack->SetDetectorTag(
kCTS);
1221 mixedTrack->SetChargedBit(track->Charge()>0);
1222 mixEventTracks->Add(mixedTrack);
1231 pool->AddFirst(mixEventTracks);
1239 TClonesArray * tmp =
static_cast<TClonesArray*
>(pool->Last()) ;
1240 pool->RemoveLast() ;
1263 AliAnalysisManager * manager = AliAnalysisManager::GetAnalysisManager();
1264 AliInputEventHandler * inputHandler =
dynamic_cast<AliInputEventHandler*
>(manager->GetInputEventHandler());
1266 if(!inputHandler) return ;
1274 if(eventBin < 0)
return;
1276 TObjArray * mixEventCalo =
new TObjArray;
1287 for(Int_t ipr = 0;ipr < pl->GetEntriesFast() ; ipr ++ )
1289 AliVCluster * calo = (AliVCluster *) (pl->At(ipr)) ;
1301 Double_t vertex[]={0,0,0};
1308 if(pt < fMinAssocPt || pt >
fMaxAssocPt) continue ;
1310 AliAODPWG4Particle * mixedCalo =
new AliAODPWG4Particle(
fMomentum);
1311 mixedCalo->SetDetectorTag(
kEMCAL);
1312 mixEventCalo->Add(mixedCalo);
1321 poolCalo->AddFirst(mixEventCalo);
1329 TClonesArray * tmp =
static_cast<TClonesArray*
>(poolCalo->Last()) ;
1330 poolCalo->RemoveLast() ;
1341 Float_t etaTrig = particle->Eta();
1342 Float_t ptTrig = particle->Pt();
1343 Float_t phiTrig = particle->Phi();
1344 if(phiTrig < 0 ) phiTrig+= TMath::TwoPi();
1346 Float_t ptLeadHad = 0 ;
1347 Float_t dphiLeadHad= -100 ;
1348 Float_t phiLeadHad = -100 ;
1349 Float_t etaLeadHad = -100 ;
1352 for(Int_t ipr = 0;ipr <
GetCTSTracks()->GetEntriesFast() ; ipr ++ )
1354 AliVTrack * track = (AliVTrack *) (
GetCTSTracks()->At(ipr)) ;
1356 fTrackVector.SetXYZ(track->Px(),track->Py(),track->Pz());
1360 if(phi < 0 ) phi+= TMath::TwoPi();
1362 Float_t deltaPhi = phiTrig-phi;
1368 if(deltaPhi <= -TMath::PiOver2()) deltaPhi+=TMath::TwoPi();
1369 if(deltaPhi > 3*TMath::PiOver2()) deltaPhi-=TMath::TwoPi();
1371 if(pt > ptLeadHad && deltaPhi > TMath::PiOver2())
1375 dphiLeadHad= deltaPhi;
1397 AliDebug(1,Form(
"pT %2.2f, phi %2.2f, eta %2.2f, nTracks away %d, total tracks %d",
1399 AliDebug(1,Form(
"\t pT trig %2.2f, Dphi (trigger-hadron) %2.2f, Deta (trigger-hadron) %2.2f",
1400 ptTrig, dphiLeadHad*TMath::RadToDeg(), etaLeadHad-etaTrig));
1401 AliDebug(1,Form(
"\t cuts pT: min %2.2f, max %2.2f; DPhi: min %2.2f, max %2.2f",
1407 if( nTrack == 0 )
return kFALSE;
1409 if( ptLeadHad < fMinLeadHadPt || ptLeadHad >
fMaxLeadHadPt )
return kFALSE;
1413 if( dphiLeadHad < fMinLeadHadPhi || dphiLeadHad >
fMaxLeadHadPhi )
return kFALSE;
1426 const Int_t buffersize = 560;
1427 char onePar[buffersize] ;
1429 snprintf(onePar,buffersize,
"--- AliAnaPaticleHadronCorrelation ---:") ;
1437 snprintf(onePar,buffersize,
"Isolated Trigger? %d;",
fSelectIsolated) ;
1441 snprintf(onePar,buffersize,
"Name of AOD Pi0 Branch %s;",
fPi0AODBranchName.Data());
1445 snprintf(onePar,buffersize,
"Select absolute leading for cluster triggers ? %d or Near Side Leading %d;",
1448 snprintf(onePar,buffersize,
"Associated particle pt bins %d: ",
fNAssocPtBins) ;
1461 return new TObjString(parList) ;
1470 TList * outputContainer =
new TList() ;
1471 outputContainer->SetName(
"CorrelationHistos") ;
1495 TString nameMC[] = {
"Photon",
"Pi0",
"Pi0Decay",
"Eta",
"EtaDecay",
"OtherDecay",
"Electron",
"Hadron",
"Pi0DecayLostPair",
"EtaDecayLostPair"};
1496 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"} ;
1497 TString pileUpName[] = {
"SPD",
"EMCAL",
"SPDOrEMCAL",
"SPDAndEMCAL",
"SPDAndNotEMCAL",
"EMCALAndNotSPD",
"NotSPDAndNotEMCAL"} ;
1499 TString parTitle = Form(
"#it{R} = %2.2f",
GetIsolationCut()->GetConeSize());
1513 fhTrackResolution =
new TH2F (
"hTrackResolution",
"Track resolution: #sigma_{#it{p}_{T}} vs #it{p}_{T}, away side, ESDs",
1514 nptbins,ptmin,ptmax,600,0,0.3);
1519 fhTrackResolutionUE =
new TH2F (
"hTrackResolutionUE",
"Track resolution: #sigma_{#it{p}_{T}} vs #it{p}_{T}, UE, ESDs",
1520 nptbins,ptmin,ptmax,600,0,0.3);
1526 fhPtTriggerInput =
new TH1F(
"hPtTriggerInput",
"Input trigger #it{p}_{T}", nptbins,ptmin,ptmax);
1532 fhPtTriggerSSCut =
new TH1F(
"hPtTriggerSSCut",
"Trigger #it{p}_{T} after #lambda^{2}_{0} cut", nptbins,ptmin,ptmax);
1539 fhPtTriggerIsoCut =
new TH1F(
"hPtTriggerIsoCut",
"Trigger #it{p}_{T} after isolation (and #lambda^{2}_{0} cut)", nptbins,ptmin,ptmax);
1544 fhPtTriggerFidCut =
new TH1F(
"hPtTriggerFidCut",
"Trigger #it{p}_{T} after fiducial (isolation and #lambda^{2}_{0}) cut", nptbins,ptmin,ptmax);
1548 fhPtTrigger =
new TH1F(
"hPtTrigger",
"#it{p}_{T} distribution of trigger particles (after opposite hadron leading cut and rest)", nptbins,ptmin,ptmax);
1549 fhPtTrigger->SetXTitle(
"#it{p}_{T}^{trig} (GeV/#it{c})");
1554 fhMassPtTrigger =
new TH2F(
"hMassPtTrigger",
"2 photons invariant mass vs p_{T}^{trig}",
1555 nptbins,ptmin,ptmax,nmassbins,massmin,massmax);
1576 for(Int_t ibin = 0; ibin <
fNBkgBin; ibin++)
1579 (Form(
"hPtLeadCone_Bin%d",ibin),
1580 Form(
"cone %2.2f<#it{p}_{T}^{leading}<%2.2f GeV/#it{c}, %s",
1587 (Form(
"hSumPtCone_Bin%d",ibin),
1588 Form(
"in cone %2.2f <#Sigma #it{p}_{T}< %2.2f GeV/#it{c}, %s",
1596 for(Int_t idecay = 0; idecay <
fNDecayBits; idecay++)
1598 Int_t bindecay = ibin+idecay*
fNBkgBin;
1601 (Form(
"hPtLeadCone_Bin%d_DecayBit%d",ibin,
fDecayBits[idecay]),
1602 Form(
"Decay bit %d, cone %2.2f<#it{p}_{T}^{leading}<%2.2f GeV/#it{c}, %s",
1609 (Form(
"hSumPtCone_Bin%d_DecayBit%d",ibin,
fDecayBits[idecay]),
1610 Form(
"Decay bit %d, in cone %2.2f <#Sigma #it{p}_{T}< %2.2f GeV/#it{c}, %s",
1624 (Form(
"hPtLeadCone_Bin%d_MC%s",ibin, nameMC[imc].
Data()),
1625 Form(
"in cone %2.2f<#it{p}_{T}^{leading}<%2.2f GeV/#it{c}, MC %s, %s",
1632 (Form(
"hSumPtCone_Bin%d_MC%s",ibin,nameMC[imc].
Data()),
1633 Form(
"in cone %2.2f <#Sigma #it{p}_{T}< %2.2f GeV/#it{c}, MC %s, %s",
1648 Form(
"#it{p}_{T} distribution of trigger particles, trigger origin is %s",nameMC[i].
Data()),
1649 nptbins,ptmin,ptmax);
1650 fhPtTriggerMC[i]->SetXTitle(
"#it{p}_{T}^{trig} (GeV/#it{c})");
1656 Form(
"2 photons invariant mass, trigger origin is %s",nameMC[i].
Data()),
1657 nptbins,ptmin,ptmax,nmassbins,massmin,massmax);
1670 Form(
"#it{p}_{T} distribution of trigger particles, decay Bit %d",
fDecayBits[ibit]),
1671 nptbins,ptmin,ptmax);
1680 Form(
"#it{p}_{T} distribution of trigger particles, decay Bit %d, trigger origin is %s",
fDecayBits[ibit], nameMC[i].
Data()),
1681 nptbins,ptmin,ptmax);
1697 fhPtTriggerBin =
new TH2F (
"hPtTriggerBin",
"#it{p}_{T} distribution of trigger particles", nptbins,ptmin,ptmax,nMixBins,0,nMixBins);
1702 fhPhiTrigger =
new TH2F (
"hPhiTrigger",
"#phi distribution of trigger Particles",nptbins,ptmin,ptmax, nphibins,phimin,phimax);
1706 fhEtaTrigger =
new TH2F (
"hEtaTrigger",
"#eta distribution of trigger",nptbins,ptmin,ptmax, netabins,etamin,etamax);
1712 fhPtTriggerCentrality =
new TH2F(
"hPtTriggerCentrality",
"Trigger particle #it{p}_{T} vs centrality",nptbins,ptmin,ptmax,100,0.,100) ;
1717 fhPtTriggerEventPlane =
new TH2F(
"hPtTriggerEventPlane",
"Trigger particle #it{p}_{T} vs event plane angle",nptbins,ptmin,ptmax, 100,0.,TMath::Pi()) ;
1722 fhTriggerEventPlaneCentrality =
new TH2F(
"hTriggerEventPlaneCentrality",
"Trigger particle centrality vs event plane angle",100,0.,100,100,0.,TMath::Pi()) ;
1731 fhPtLeadingOppositeHadron =
new TH2F(
"hPtTriggerPtLeadingOppositeHadron",
"Leading hadron opposite to trigger vs trigger #it{p}_{T}",
1732 nptbins,ptmin,ptmax,nptbins,ptmin,ptmax);
1738 nptbins,ptmin,ptmax);
1743 netabins,etamin,etamax,nphibins,phimin,phimax);
1749 fhPtDiffPhiLeadingOppositeHadron =
new TH2F(
"hPtTriggerDiffPhiTriggerLeadingOppositeHadron",
"#phi_{trigger}-#phi_{leading opposite hadron} vs #it{p}_{T}^{trig}",
1750 nptbins,ptmin,ptmax,ndeltaphibins,deltaphimin,deltaphimax);
1755 fhPtDiffEtaLeadingOppositeHadron =
new TH2F(
"hPtTriggerDiffEtaTriggerPhiLeadingOppositeHadron",
"#eta_{trigger}-#eta_{leading opposite hadron} vs #it{p}_{T}^{trig}",
1756 nptbins,ptmin,ptmax,ndeltaetabins,deltaetamin,deltaetamax);
1765 (
"hDeltaPhiDeltaEtaCharged",
"#eta_{trigger} - #eta_{h^{#pm}} vs #phi_{trigger} - #phi_{h^{#pm}}",
1766 ndeltaphibins ,deltaphimin,deltaphimax,ndeltaetabins,deltaetamin,deltaetamax);
1771 (
"hDeltaPhiDeltaEtaChargedPtA3GeV",
"#eta_{trigger} - #eta_{h^{#pm}} vs #phi_{trigger} - #phi_{h^{#pm}, #it{p}_{TA}>3 GeV/#it{c}}",
1772 ndeltaphibins ,deltaphimin,deltaphimax,ndeltaetabins,deltaetamin,deltaetamax);
1777 (
"hPhiCharged",
"#phi_{h^{#pm}} vs #it{p}_{T #pm}",
1778 nptbins,ptmin,ptmax,180,0,TMath::TwoPi());
1780 fhPhiCharged->SetXTitle(
"#it{p}_{T #pm} (GeV/#it{c})");
1783 (
"hEtaCharged",
"#eta_{h^{#pm}} vs #it{p}_{T #pm}",
1784 nptbins,ptmin,ptmax,100,-1.,1.);
1786 fhEtaCharged->SetXTitle(
"#it{p}_{T #pm} (GeV/#it{c})");
1789 (
"hDeltaPhiCharged",
"#phi_{trigger} - #phi_{h^{#pm}} vs #it{p}_{T trigger}",
1790 nptbins,ptmin,ptmax, ndeltaphibins ,deltaphimin,deltaphimax);
1795 (
"hDeltaPhiChargedPtA3GeV",
"#phi_{trigger} - #phi_{h^{#pm}} vs #it{p}_{T trigger}, #it{p}_{TA}>3 GeV/#it{c}",
1796 nptbins,ptmin,ptmax, ndeltaphibins ,deltaphimin,deltaphimax);
1802 (
"hDeltaPhiChargedPt",
"#phi_{trigger} - #phi_{#h^{#pm}} vs #it{p}_{T h^{#pm}}",
1803 nptbins,ptmin,ptmax, ndeltaphibins ,deltaphimin,deltaphimax);
1808 (
"hDeltaEtaCharged",
"#eta_{trigger} - #eta_{h^{#pm}} vs #it{p}_{T trigger}",
1809 nptbins,ptmin,ptmax,ndeltaetabins,deltaetamin,deltaetamax);
1814 (
"hDeltaEtaChargedPtA3GeV",
"#eta_{trigger} - #eta_{h^{#pm}} vs #it{p}_{T trigger}, #it{p}_{TA}>3 GeV/#it{c}",
1815 nptbins,ptmin,ptmax,ndeltaetabins,deltaetamin,deltaetamax);
1820 new TH2F(
"hXECharged",
"#it{x}_{#it{E}} for charged tracks",
1821 nptbins,ptmin,ptmax,nxeztbins,xeztmin,xeztmax);
1823 fhXECharged->SetXTitle(
"#it{p}_{T trigger} (GeV/#it{c})");
1826 new TH2F(
"hXECharged_Cone2",
"#it{x}_{#it{E}} for charged tracks in cone 2 (5#pi/6-7#pi/6)",
1827 nptbins,ptmin,ptmax,nxeztbins,xeztmin,xeztmax);
1832 new TH2F(
"hXEPositiveCharged",
"#it{x}_{#it{E}} for positive charged tracks",
1833 nptbins,ptmin,ptmax,nxeztbins,xeztmin,xeztmax);
1838 new TH2F(
"hXENegativeCharged",
"#it{x}_{#it{E}} for negative charged tracks",
1839 nptbins,ptmin,ptmax,nxeztbins,xeztmin,xeztmax);
1844 new TH2F(
"hHbpXECharged",
"#xi = ln(1/#it{x}_{#it{E}}) with charged hadrons",
1845 nptbins,ptmin,ptmax,nhbpbins,hbpmin,hbpmax);
1850 new TH2F(
"hHbpXECharged_Cone2",
"#xi = ln(1/#it{x}_{#it{E}}) with charged hadrons in cone 2 (5#pi/6-7#pi/6)",
1851 nptbins,ptmin,ptmax,nhbpbins,hbpmin,hbpmax);
1856 new TH2F(
"hZTCharged",
"#it{z}_{T} for charged tracks",
1857 nptbins,ptmin,ptmax,nxeztbins,xeztmin,xeztmax);
1862 new TH2F(
"hZTPositiveCharged",
"#it{z}_{T} for positive charged tracks",
1863 nptbins,ptmin,ptmax,nxeztbins,xeztmin,xeztmax);
1868 new TH2F(
"hZTNegativeCharged",
"#it{z}_{T} for negative charged tracks",
1869 nptbins,ptmin,ptmax,nxeztbins,xeztmin,xeztmax);
1874 new TH2F(
"hHbpZTCharged",
"#xi = ln(1/#it{z}_{T}) with charged hadrons",
1875 nptbins,ptmin,ptmax,nhbpbins,hbpmin,hbpmax);
1880 new TH2F(
"hPtTrigPout",
"Pout with triggers",
1881 nptbins,ptmin,ptmax,nptbins,-1.*ptmax/2.,ptmax/2.);
1883 fhPtTrigPout->SetXTitle(
"#it{p}_{T trigger} (GeV/#it{c})");
1886 new TH2F(
"hPtTrigCharged",
"trigger and charged tracks pt distribution",
1887 nptbins,ptmin,ptmax,nptbins,ptmin,ptmax);
1910 Form(
"#Delta #phi for charged tracks, trigger origin is %s",nameMC[i].
Data()),
1911 nptbins,ptmin,ptmax,ndeltaphibins ,deltaphimin,deltaphimax);
1917 Form(
"#it{x}_{#it{E}} for charged tracks, trigger origin is %s",nameMC[i].
Data()),
1918 nptbins,ptmin,ptmax,nxeztbins,xeztmin,xeztmax);
1920 fhXEChargedMC[i]->SetXTitle(
"#it{p}_{T trigger} (GeV/#it{c})");
1924 Form(
"#it{x}_{#it{E}} for charged tracks in right UE cone, trigger origin is %s",nameMC[i].
Data()),
1925 nptbins,ptmin,ptmax,nxeztbins,xeztmin,xeztmax);
1931 Form(
"#it{x}_{#it{E}} for charged tracks in left UE cone, trigger origin is %s",nameMC[i].
Data()),
1932 nptbins,ptmin,ptmax,nxeztbins,xeztmin,xeztmax);
1955 fhUePart =
new TH1F(
"hUePart",
"UE particles distribution vs pt trig",
1956 nptbins,ptmin,ptmax);
1958 fhUePart->SetXTitle(
"#it{p}_{T trigger} (GeV/#it{c})");
1961 (Form(
"hDeltaPhiUe%sChargedPt",right.Data()),
"#phi_{trigger} - #phi_{#Ueh^{#pm}} vs #it{p}_{T Ueh^{#pm}}",
1962 nptbins,ptmin,ptmax, ndeltaphibins ,deltaphimin,deltaphimax);
1967 new TH2F(Form(
"hXEUeCharged%s",right.Data()),
"#it{x}_{#it{E}} for Underlying Event",
1968 nptbins,ptmin,ptmax,nxeztbins,xeztmin,xeztmax);
1970 fhXEUeCharged->SetXTitle(
"#it{p}_{T trigger} (GeV/#it{c})");
1973 new TH2F(Form(
"hXEUeChargedSmallCone%s",right.Data()),
"#it{x}_{#it{E}} for Underlying Event in a cone [80,100] deg",
1974 nptbins,ptmin,ptmax,nxeztbins,xeztmin,xeztmax);
1979 new TH2F(Form(
"hXEUeChargedMediumCone%s",right.Data()),
"#it{x}_{#it{E}} for Underlying Event in a cone [70,110] deg",
1980 nptbins,ptmin,ptmax,nxeztbins,xeztmin,xeztmax);
1985 new TH2F(Form(
"hXEUeChargedLargeCone%s",right.Data()),
"#it{x}_{#it{E}} for Underlying Event in a cone [60,120] deg",
1986 nptbins,ptmin,ptmax,nxeztbins,xeztmin,xeztmax);
1991 new TH2F(Form(
"hHbpXEUeCharged%s",right.Data()),
"#xi = ln(1/#it{x}_{#it{E}}) for Underlying Event",
1992 nptbins,ptmin,ptmax,nhbpbins,hbpmin,hbpmax);
1997 new TH2F(Form(
"hZTUeCharged%s",right.Data()),
"#it{z}_{T} for Underlying Event",
1998 nptbins,ptmin,ptmax,nxeztbins,xeztmin,xeztmax);
2000 fhZTUeCharged->SetXTitle(
"#it{p}_{T trigger} (GeV/#it{c})");
2003 new TH2F(Form(
"hHbpZTUeCharged%s",right.Data()),
"#xi = ln(1/#it{z}_{T}) for Underlying Event",
2004 nptbins,ptmin,ptmax,nhbpbins,hbpmin,hbpmax);
2021 (
"hDeltaPhiUeLeftChargedPt",
"#phi_{trigger} - #phi_{#Ueh^{#pm}} vs #it{p}_{T Ueh^{#pm}} with UE left side range of trigger particles",
2022 nptbins,ptmin,ptmax, ndeltaphibins ,deltaphimin,deltaphimax);
2028 (
"hDeltaPhiUeLeftUpChargedPt",
"#phi_{trigger} - #phi_{#Ueh^{#pm}} vs #it{p}_{T Ueh^{#pm}} with UE left Up side range of trigger particles",
2029 nptbins,ptmin,ptmax, ndeltaphibins ,deltaphimin,deltaphimax);
2035 (
"hDeltaPhiUeRightUpChargedPt",
"#phi_{trigger} - #phi_{#Ueh^{#pm}} vs #it{p}_{T Ueh^{#pm}} with UE right Up side range of trigger particles",
2036 nptbins,ptmin,ptmax, ndeltaphibins ,deltaphimin,deltaphimax);
2042 (
"hDeltaPhiUeLeftDownChargedPt",
"#phi_{trigger} - #phi_{#Ueh^{#pm}} vs #it{p}_{T Ueh^{#pm}} with UE left Down side range of trigger particles",
2043 nptbins,ptmin,ptmax, ndeltaphibins ,deltaphimin,deltaphimax);
2049 (
"hDeltaPhiUeRightDownChargedPt",
"#phi_{trigger} - #phi_{#Ueh^{#pm}} vs #it{p}_{T Ueh^{#pm}} with UE right Down side range of trigger particles",
2050 nptbins,ptmin,ptmax, ndeltaphibins ,deltaphimin,deltaphimax);
2056 new TH2F(
"hXEUeChargedLeft",
"#it{x}_{#it{E}} with UE left side of trigger",
2057 nptbins,ptmin,ptmax,nxeztbins,xeztmin,xeztmax);
2063 new TH2F(
"hXEUeChargedLeftUp",
"#it{x}_{#it{E}} with UE left Up side of trigger",
2064 nptbins,ptmin,ptmax,nxeztbins,xeztmin,xeztmax);
2070 new TH2F(
"hXEUeChargedRightUp",
"#it{x}_{#it{E} h^{#pm}} with UE right Up side of trigger",
2071 nptbins,ptmin,ptmax,nxeztbins,xeztmin,xeztmax);
2077 new TH2F(
"hXEUeChargedLeftDown",
"#it{x}_{#it{E}} with UE left Down side of trigger",
2078 nptbins,ptmin,ptmax,nxeztbins,xeztmin,xeztmax);
2084 new TH2F(
"hXEUeChargedRightDown",
"#it{x}_{#it{E} h^{#pm}} with UE right Down side of trigger",
2085 nptbins,ptmin,ptmax,nxeztbins,xeztmin,xeztmax);
2091 new TH2F(
"hHbpXEUeChargedLeft",
"#xi = ln(1/#it{x}_{#it{E}}) with charged UE left side of trigger",
2092 nptbins,ptmin,ptmax,nhbpbins,hbpmin,hbpmax);
2098 new TH2F(
"hZTUeChargedLeft",
"#it{z}_{trigger h^{#pm}} = #it{p}_{T Ueh^{#pm}} / #it{p}_{T trigger} with UE left side of trigger",
2099 nptbins,ptmin,ptmax,nxeztbins,xeztmin,xeztmax);
2105 new TH2F(
"hHbpZTUeChargedLeft",
"#xi = ln(1/#it{z}_{T}) with charged UE left side of trigger",
2106 nptbins,ptmin,ptmax,nhbpbins,hbpmin,hbpmax);
2115 (
"hDeltaPhiChargedOtherBC",
"#phi_{trigger} - #phi_{h^{#pm}} vs #it{p}_{T trigger}, track BC!=0",
2116 nptbins,ptmin,ptmax, ndeltaphibins ,deltaphimin,deltaphimax);
2121 (
"hDeltaPhiChargedPtA3GeVOtherBC",
"#phi_{trigger} - #phi_{h^{#pm}} vs #it{p}_{T trigger}, #it{p}_{TA}>3 GeV/#it{c}, track BC!=0",
2122 nptbins,ptmin,ptmax, ndeltaphibins ,deltaphimin,deltaphimax);
2127 new TH2F(
"hPtTrigChargedOtherBC",
"trigger and charged tracks pt distribution, track BC!=0",
2128 nptbins,ptmin,ptmax,nptbins,ptmin,ptmax);
2133 new TH2F(
"hXEChargedOtherBC",
"#it{x}_{#it{E}} for charged tracks, track BC!=0",
2134 nptbins,ptmin,ptmax,nxeztbins,xeztmin,xeztmax);
2139 new TH2F(
"hXEUeChargedOtherBC",
"#it{x}_{#it{E}} for Underlying Event, track BC!=0",
2140 nptbins,ptmin,ptmax,nxeztbins,xeztmin,xeztmax);
2145 new TH2F(
"hZTChargedOtherBC",
"#it{z}_{T} for charged tracks, track BC!=0",
2146 nptbins,ptmin,ptmax,nxeztbins,xeztmin,xeztmax);
2151 new TH2F(
"hZTUeChargedOtherBC",
"#it{z}_{T} for Underlying Event, track BC!=0",
2152 nptbins,ptmin,ptmax,nxeztbins,xeztmin,xeztmax);
2165 (
"hDeltaPhiChargedBC0",
"#phi_{trigger} - #phi_{h^{#pm}} vs #it{p}_{T trigger}, track BC==0",
2166 nptbins,ptmin,ptmax, ndeltaphibins ,deltaphimin,deltaphimax);
2171 (
"hDeltaPhiChargedPtA3GeVBC0",
"#phi_{trigger} - #phi_{h^{#pm}} vs #it{p}_{T trigger}, #it{p}_{TA}>3 GeV/#it{c}, track BC==0",
2172 nptbins,ptmin,ptmax, ndeltaphibins ,deltaphimin,deltaphimax);
2177 new TH2F(
"hPtTrigChargedBC0",
"trigger and charged tracks pt distribution, track BC==0",
2178 nptbins,ptmin,ptmax,nptbins,ptmin,ptmax);
2183 new TH2F(
"hXEChargedBC0",
"#it{x}_{#it{E}} for charged tracks, track BC==0",
2184 nptbins,ptmin,ptmax,nxeztbins,xeztmin,xeztmax);
2189 new TH2F(
"hXEUeChargedBC0",
"#it{x}_{#it{E}} for Underlying Event, track BC==0",
2190 nptbins,ptmin,ptmax,nxeztbins,xeztmin,xeztmax);
2195 new TH2F(
"hZTChargedBC0",
"#it{z}_{T} for charged tracks, track BC==0",
2196 nptbins,ptmin,ptmax,nxeztbins,xeztmin,xeztmax);
2201 new TH2F(
"hZTUeChargedBC0",
"#it{z}_{T} for Underlying Event, track BC==0",
2202 nptbins,ptmin,ptmax,nxeztbins,xeztmin,xeztmax);
2214 fhPtTriggerVtxBC0 =
new TH1F(
"hPtTriggerVtxBC0",
"#it{p}_{T} distribution of trigger particles", nptbins,ptmin,ptmax);
2218 (
"hDeltaPhiChargedVtxBC0",
"#phi_{trigger} - #phi_{h^{#pm}} vs #it{p}_{T trigger}, track BC==0",
2219 nptbins,ptmin,ptmax, ndeltaphibins ,deltaphimin,deltaphimax);
2224 (
"hDeltaPhiChargedPtA3GeVVtxBC0",
"#phi_{trigger} - #phi_{h^{#pm}} vs #it{p}_{T trigger}, #it{p}_{TA}>3 GeV/#it{c}, track BC==0",
2225 nptbins,ptmin,ptmax, ndeltaphibins ,deltaphimin,deltaphimax);
2230 new TH2F(
"hPtTrigChargedVtxBC0",
"trigger and charged tracks pt distribution, track BC==0",
2231 nptbins,ptmin,ptmax,nptbins,ptmin,ptmax);
2236 new TH2F(
"hXEChargedVtxBC0",
"#it{x}_{#it{E}} for charged tracks, track BC==0",
2237 nptbins,ptmin,ptmax,nxeztbins,xeztmin,xeztmax);
2242 new TH2F(
"hXEUeChargedVtxBC0",
"#it{x}_{#it{E}} for Underlying Event, track BC==0",
2243 nptbins,ptmin,ptmax,nxeztbins,xeztmin,xeztmax);
2248 new TH2F(
"hZTChargedVtxBC0",
"#it{z}_{T} for charged tracks, track BC==0",
2249 nptbins,ptmin,ptmax,nxeztbins,xeztmin,xeztmax);
2254 new TH2F(
"hZTUeChargedVtxBC0",
"#it{z}_{T} for Underlying Event, track BC==0",
2255 nptbins,ptmin,ptmax,nxeztbins,xeztmin,xeztmax);
2268 for(Int_t i = 0 ; i < 7 ; i++)
2271 Form(
"#it{p}_{T} distribution of trigger particles, %s Pile-Up event",pileUpName[i].
Data()), nptbins,ptmin,ptmax);
2276 Form(
"#phi_{trigger} - #phi_{h^{#pm}} vs #it{p}_{T trigger}, %s Pile-Up event",pileUpName[i].
Data()),
2277 nptbins,ptmin,ptmax, ndeltaphibins ,deltaphimin,deltaphimax);
2283 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()),
2284 nptbins,ptmin,ptmax, ndeltaphibins ,deltaphimin,deltaphimax);
2290 Form(
"#eta_{trigger} - #eta_{h^{#pm}} vs #it{p}_{T trigger}, %s Pile-Up event",pileUpName[i].
Data()),
2291 nptbins,ptmin,ptmax,ndeltaetabins,deltaetamin,deltaetamax);
2297 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()),
2298 nptbins,ptmin,ptmax,ndeltaetabins,deltaetamin,deltaetamax);
2304 Form(
"#it{x}_{#it{E}} for charged tracks, %s Pile-Up event",pileUpName[i].
Data()),
2305 nptbins,ptmin,ptmax,nxeztbins,xeztmin,xeztmax);
2311 Form(
"#it{x}_{#it{E}} for Underlying Event, %s Pile-Up event",pileUpName[i].
Data()),
2312 nptbins,ptmin,ptmax,nxeztbins,xeztmin,xeztmax);
2318 Form(
"#it{z}_{T} for charged tracks, %s Pile-Up event",pileUpName[i].
Data()),
2319 nptbins,ptmin,ptmax,nxeztbins,xeztmin,xeztmax);
2325 Form(
"#it{z}_{T} for Underlying Event, %s Pile-Up event",pileUpName[i].
Data()),
2326 nptbins,ptmin,ptmax,nxeztbins,xeztmin,xeztmax);
2332 Form(
"trigger and charged tracks pt distribution, %s Pile-Up event",pileUpName[i].
Data()),
2333 nptbins,ptmin,ptmax,nptbins,ptmin,ptmax);
2350 for(Int_t im=0; im<nMultiBins; im++)
2353 (Form(
"hDeltaPhiCharged_Mult%d",im),Form(
"#Delta #phi charged Mult bin %d",im), nptbins,ptmin,ptmax, ndeltaphibins ,deltaphimin,deltaphimax);
2358 (Form(
"hDeltaEtaCharged_Mult%d",im),Form(
"#Delta #eta charged Mult bin %d",im), nptbins,ptmin,ptmax, ndeltaetabins ,deltaetamin,deltaetamax);
2363 (Form(
"hXECharged_Mult%d",im),Form(
"#it{x}_{E} charged Mult bin %d",im), nptbins,ptmin,ptmax,nxeztbins,xeztmin,xeztmax);
2364 fhXEMult[im]->SetYTitle(
"#it{x}_{E}");
2365 fhXEMult[im]->SetXTitle(
"#it{p}_{T trigger} (GeV/#it{c})");
2368 (Form(
"hXEUeCharged_Mult%d",im),Form(
"#it{x}_{E} UE charged Mult bin %d",im), nptbins,ptmin,ptmax,nxeztbins,xeztmin,xeztmax);
2370 fhXEUeMult[im]->SetXTitle(
"#it{p}_{T trigger}(GeV/#it{c})");
2373 (Form(
"hZTCharged_Mult%d",im),Form(
"#it{z}_{T} charged Mult bin %d",im), nptbins,ptmin,ptmax,nxeztbins,xeztmin,xeztmax);
2374 fhZTMult[im]->SetYTitle(
"#it{z}_{T}");
2375 fhZTMult[im]->SetXTitle(
"#it{p}_{T trigger} (GeV/#it{c})");
2378 (Form(
"hZTUeCharged_Mult%d",im),Form(
"#it{z}_{T} UE charged Mult bin %d",im), nptbins,ptmin,ptmax,nxeztbins,xeztmin,xeztmax);
2380 fhZTUeMult[im]->SetXTitle(
"#it{p}_{T trigger} (GeV/#it{c})");
2384 outputContainer->Add(
fhXEMult [im]);
2386 outputContainer->Add(
fhZTMult [im]);
2393 fhAssocPtBkg =
new TH2F(
"hAssocPtBkg",
" Trigger #it{p}_{T} vs associated hadron #it{p}_{T} from background",
2394 nptbins, ptmin, ptmax,nptbins,ptmin,ptmax);
2395 fhAssocPtBkg->SetXTitle(
"#it{p}_{T trigger} (GeV/#it{c})");
2396 fhAssocPtBkg->SetYTitle(
"#it{p}_{T associated} (GeV/#it{c})");
2399 fhDeltaPhiBrad =
new TH2F(
"hDeltaPhiBrad",
"atan2(sin(#Delta #phi), cos(#Delta #phi))/#pi vs #it{p}_{T trigger} ",
2400 nptbins, ptmin, ptmax,288, -1.0/3.0, 5.0/3.0);
2402 fhDeltaPhiBrad->SetYTitle(
"atan2(sin(#Delta #phi), cos(#Delta #phi))/#pi");
2439 for(Int_t z = 0 ; z < nz ; z++)
2445 sz = Form(
"_vz%d",z);
2446 tz = Form(
", #it{v}_{#it{z}} bin %d",z);
2453 ndeltaphibins ,deltaphimin,deltaphimax,ndeltaetabins,deltaetamin,deltaetamax);
2459 nptbins, ptmin, ptmax, ndeltaphibins ,deltaphimin,deltaphimax);
2469 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()),
2470 nptbins, ptmin, ptmax, ndeltaphibins ,deltaphimin,deltaphimax);
2475 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()),
2476 nptbins, ptmin, ptmax, ndeltaphibins ,deltaphimin,deltaphimax);
2488 nptbins, ptmin, ptmax, ndeltaphibins ,deltaphimin,deltaphimax);
2498 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()),
2499 nptbins, ptmin, ptmax,288, -1.0/3.0, 5.0/3.0);
2508 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()),
2509 nptbins, ptmin, ptmax, ndeltaphibins ,deltaphimin,deltaphimax);
2514 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()),
2515 nptbins, ptmin, ptmax, ndeltaphibins ,deltaphimin,deltaphimax);
2531 nptbins, ptmin, ptmax,nxeztbins,xeztmin,xeztmax);
2537 nptbins, ptmin, ptmax,nxeztbins,xeztmin,xeztmax);
2549 for(Int_t z = 0 ; z < nz ; z++)
2551 sz = Form(
"_vz%d",z);
2552 tz = Form(
", #it{v}_{#it{z}} bin %d",z);
2554 fhXEVZ[z] =
new TH2F(Form(
"hXE%s", sz.Data()),
2555 Form(
"#it{x}_{#it{E}} vs #it{p}_{T trigger}%s", tz.Data()),
2556 nptbins, ptmin, ptmax,nxeztbins,xeztmin,xeztmax);
2557 fhXEVZ[z]->SetXTitle(
"#it{p}_{T trigger} (GeV/#it{c})");
2558 fhXEVZ[z]->SetYTitle(
"#it{x}_{#it{E}}");
2560 fhZTVZ[z] =
new TH2F(Form(
"hZT%s",sz.Data()),
2561 Form(
"#it{z}_{T} vs #it{p}_{T trigger}%s", tz.Data()),
2562 nptbins, ptmin, ptmax,nxeztbins,xeztmin,xeztmax);
2563 fhZTVZ[z]->SetXTitle(
"#it{p}_{T trigger} (GeV/#it{c})");
2564 fhZTVZ[z]->SetYTitle(
"#it{z}_{T}");
2566 outputContainer->Add(
fhXEVZ[z]);
2567 outputContainer->Add(
fhZTVZ[z]);
2574 (
"hPtPi0DecayRatio",
"#it{p}_{T} of #pi^{0} and the ratio of pt for two decay",
2575 nptbins,ptmin,ptmax, 100,0.,2.);
2581 (
"hDeltaPhiPi0DecayCharged",
"#phi_{Decay} - #phi_{h^{#pm}} vs #it{p}_{T Decay}",
2582 nptbins,ptmin,ptmax, ndeltaphibins ,deltaphimin,deltaphimax);
2587 new TH2F(
"hXEPi0DecayCharged",
"#it{x}_{#it{E}} Decay",
2588 nptbins,ptmin,ptmax,nxeztbins,xeztmin,xeztmax);
2593 new TH2F(
"hZTPi0DecayCharged",
"#it{z}_{trigger h^{#pm}} = #it{p}_{T h^{#pm}} / #it{p}_{T Decay}",
2594 nptbins,ptmin,ptmax,nxeztbins,xeztmin,xeztmax);
2608 (Form(
"hDeltaPhiDecayCharged_bit%d",
fDecayBits[ibit]),
2609 Form(
"#phi_{Decay} - #phi_{h^{#pm}} vs #it{p}_{T Decay}, Bit %d",
fDecayBits[ibit]),
2610 nptbins,ptmin,ptmax, ndeltaphibins ,deltaphimin,deltaphimax);
2615 new TH2F(Form(
"hXEDecayCharged_bit%d",
fDecayBits[ibit]),
2616 Form(
"#it{x}_{#it{E}} Decay, Bit %d",
fDecayBits[ibit]),
2617 nptbins,ptmin,ptmax,nxeztbins,xeztmin,xeztmax);
2622 new TH2F(Form(
"hZTDecayCharged_bit%d",
fDecayBits[ibit]),
2623 Form(
"#it{z}_{trigger h^{#pm}} = #it{p}_{T h^{#pm}} / #it{p}_{T Decay}, Bit %d",
fDecayBits[ibit]),
2624 nptbins,ptmin,ptmax,nxeztbins,xeztmin,xeztmax);
2638 (
"hDeltaPhiDeltaEtaNeutral",
"#phi_{trigger} - #phi_{h^{0}} vs #eta_{trigger} - #eta_{h^{0}}",
2639 ndeltaphibins ,deltaphimin,deltaphimax, ndeltaetabins ,deltaetamin,deltaetamax);
2644 (
"hPhiNeutral",
"#phi_{#pi^{0}} vs #it{p}_{T #pi^{0}}",
2645 nptbins,ptmin,ptmax,180,0,TMath::TwoPi());
2647 fhPhiNeutral->SetXTitle(
"#it{p}_{T #pi^{0}} (GeV/#it{c})");
2650 (
"hEtaNeutral",
"#eta_{#pi^{0}} vs #it{p}_{T #pi^{0}}",
2651 nptbins,ptmin,ptmax,200,-1.,1.);
2653 fhEtaNeutral->SetXTitle(
"#it{p}_{T #pi^{0}} (GeV/#it{c})");
2656 (
"hDeltaPhiNeutral",
"#phi_{trigger} - #phi_{#pi^{0}} vs #it{p}_{T trigger}",
2657 nptbins,ptmin,ptmax,ndeltaphibins ,deltaphimin,deltaphimax);
2662 (
"hDeltaPhiNeutralPt",
"#phi_{trigger} - #phi_{#pi^{0}} vs #it{p}_{T #pi^{0}}}",
2663 nptbins,ptmin,ptmax, ndeltaphibins ,deltaphimin,deltaphimax);
2668 (
"hDeltaEtaNeutral",
"#eta_{trigger} - #eta_{#pi^{0}} vs #it{p}_{T trigger}",
2669 nptbins,ptmin,ptmax, ndeltaetabins ,deltaetamin,deltaetamax);
2674 new TH2F(
"hXENeutral",
"#it{x}_{#it{E}} for #pi^{0} associated",
2675 nptbins,ptmin,ptmax,nxeztbins,xeztmin,xeztmax);
2677 fhXENeutral->SetXTitle(
"#it{p}_{T trigger} (GeV/#it{c})");
2680 new TH2F(
"hHbpXENeutral",
"#xi = ln(1/#it{x}_{#it{E}})for #pi^{0} associated",
2681 nptbins,ptmin,ptmax,nhbpbins,hbpmin,hbpmax);
2686 new TH2F(
"hZTNeutral",
"#it{z}_{trigger #pi} = #it{p}_{T #pi^{0}} / #it{p}_{T trigger} for #pi^{0} associated",
2687 nptbins,ptmin,ptmax,nxeztbins,xeztmin,xeztmax);
2688 fhZTNeutral->SetYTitle(
"#it{z}_{trigger #pi^{0}}");
2689 fhZTNeutral->SetXTitle(
"#it{p}_{T trigger} (GeV/#it{c})");
2692 new TH2F(
"hHbpZTNeutral",
"#xi = ln(1/#it{x}_{#it{E}}) for #pi^{0} associated",
2693 nptbins,ptmin,ptmax,nhbpbins,hbpmin,hbpmax);
2709 (Form(
"hDeltaPhiUe%sNeutralPt",right.Data()),
"#phi_{trigger} - #phi_{#pi^{0}} vs #it{p}_{T #pi^{0}}}",
2710 nptbins,ptmin,ptmax, ndeltaphibins ,deltaphimin,deltaphimax);
2715 new TH2F(Form(
"hXEUeNeutral%s",right.Data()),
"#it{x}_{#it{E}} for #pi^{0} associated",
2716 nptbins,ptmin,ptmax,nxeztbins,xeztmin,xeztmax);
2718 fhXEUeNeutral->SetXTitle(
"#it{p}_{T trigger} (GeV/#it{c})");
2721 new TH2F(Form(
"hHbpXEUeNeutral%s",right.Data()),
"#xi = ln(1/#it{x}_{#it{E}}) for #pi^{0} associated",
2722 nptbins,ptmin,ptmax,nhbpbins,hbpmin,hbpmax);
2727 new TH2F(Form(
"hZTUeNeutral%s",right.Data()),
"#it{z}_{trigger #pi} = #it{p}_{T #pi^{0}} / #it{p}_{T trigger} for #pi^{0} associated",
2728 nptbins,ptmin,ptmax,nxeztbins,xeztmin,xeztmax);
2730 fhZTUeNeutral->SetXTitle(
"#it{p}_{T trigger} (GeV/#it{c})");
2733 new TH2F(Form(
"hHbpZTUeNeutral%s",right.Data()),
"#xi = ln(1/#it{x}_{#it{E}}) for #pi^{0} associated",
2734 nptbins,ptmin,ptmax,nhbpbins,hbpmin,hbpmax);
2747 (
"hDeltaPhiUeLeftNeutralPt",
"#phi_{trigger} - #phi_{#Ueh^{0}} vs #it{p}_{T h^{0}} with neutral UE left side range of trigger particles",
2748 nptbins,ptmin,ptmax, ndeltaphibins ,deltaphimin,deltaphimax);
2754 new TH2F(
"hXEUeNeutralLeft",
"#it{x}_{#it{E}} = #it{p}_{T Ueh^{0}} / #it{p}_{T trigger} with neutral UE left side of trigger",
2755 nptbins,ptmin,ptmax,nxeztbins,xeztmin,xeztmax);
2761 new TH2F(
"hHbpXEUeNeutralLeft",
"#xi = ln(1/#it{x}_{#it{E}}) with neutral UE left side of trigger",
2762 nptbins,ptmin,ptmax,nhbpbins,hbpmin,hbpmax);
2768 new TH2F(
"hZTUeNeutralLeft",
"#it{z}_{trigger h^{0}} = #it{p}_{T Ueh^{0}} / #it{p}_{T trigger} with neutral UE left side of trigger",
2769 nptbins,ptmin,ptmax,nxeztbins,xeztmin,xeztmax);
2775 new TH2F(
"hHbpZTUeNeutralLeft",
"#xi = ln(1/#it{z}_{T}) with neutral UE left side of trigger",
2776 nptbins,ptmin,ptmax,nhbpbins,hbpmin,hbpmax);
2785 (
"hDeltaPhiPi0DecayNeutral",
"#phi_{Decay} - #phi_{h^{0}} vs #it{p}_{T Decay}",
2786 nptbins,ptmin,ptmax, ndeltaphibins ,deltaphimin,deltaphimax);
2791 new TH2F(
"hXEPi0DecayNeutral",
"#it{x}_{#it{E}} for decay trigger",
2792 nptbins,ptmin,ptmax,nxeztbins,xeztmin,xeztmax);
2797 new TH2F(
"hZTPi0DecayNeutral",
"#it{z}_{trigger h^{0}} = #it{p}_{T h^{0}} / #it{p}_{T Decay}",
2798 nptbins,ptmin,ptmax,nxeztbins,xeztmin,xeztmax);
2814 Form(
"MC %s: generated trigger #it{p}_{T}",nameMC[i].
Data()),
2815 nptbins,ptmin,ptmax);
2816 fhMCPtTrigger[i]->SetXTitle(
"#it{p}_{T}^{trig} (GeV/#it{c})");
2819 Form(
"MC %s: generated trigger #phi",nameMC[i].
Data()),
2820 nptbins,ptmin,ptmax, nphibins,phimin,phimax);
2825 Form(
"MC %s: generated trigger #eta",nameMC[i].
Data()),
2826 nptbins,ptmin,ptmax, netabins,etamin,etamax);
2833 Form(
"MC %s: generated trigger #it{p}_{T}, when not leading of primaries",nameMC[i].
Data()),
2834 nptbins,ptmin,ptmax);
2838 Form(
"MC %s: generated trigger #phi, when not leading of primaries",nameMC[i].
Data()),
2839 nptbins,ptmin,ptmax, nphibins,phimin,phimax);
2845 Form(
"MC %s: generated triogger #eta, when not leading of primaries",nameMC[i].
Data()),
2846 nptbins,ptmin,ptmax, netabins,etamin,etamax);
2852 Form(
"MC %s: #eta_{h^{#pm}} vs #it{p}_{T #pm}",nameMC[i].
Data()),
2853 nptbins,ptmin,ptmax,100,-1.,1.);
2858 Form(
"MC %s: phi_{h^{#pm}} vs #it{p}_{T #pm}",nameMC[i].
Data()),
2859 nptbins,ptmin,ptmax,180,0,TMath::TwoPi());
2864 Form(
"MC %s: phi_{trigger} - #phi_{h^{#pm}} vs #eta_{trigger} - #eta_{h^{#pm}}",nameMC[i].
Data()),
2865 ndeltaphibins ,deltaphimin,deltaphimax,ndeltaetabins ,deltaetamin,deltaetamax);
2870 Form(
"MC %s: #eta_{trigger} - #eta_{h^{#pm}} vs #it{p}_{T trigger} and #it{p}_{T assoc}",nameMC[i].
Data()),
2871 nptbins,ptmin,ptmax,ndeltaetabins ,deltaetamin,deltaetamax);
2876 Form(
"MC %s: #phi_{trigger} - #phi_{h^{#pm}} vs #it{p}_{T trigger}",nameMC[i].
Data()),
2877 nptbins,ptmin,ptmax,ndeltaphibins ,deltaphimin,deltaphimax);
2882 Form(
"MC %s: #phi_{trigger} - #phi_{#h^{#pm}} vs #it{p}_{T h^{#pm}}",nameMC[i].
Data()),
2883 nptbins,ptmin,ptmax,ndeltaphibins ,deltaphimin,deltaphimax);
2888 Form(
"MC %s: #it{x}_{#it{E}} with charged hadrons",nameMC[i].
Data()),
2889 nptbins,ptmin,ptmax,nxeztbins,xeztmin,xeztmax);
2894 Form(
"MC %s: #xi = ln(1/#it{x}_{#it{E}}) with charged hadrons",nameMC[i].
Data()),
2895 nptbins,ptmin,ptmax,nhbpbins,hbpmin,hbpmax);
2900 Form(
"MC %s: #it{z}_{T} with charged hadrons",nameMC[i].
Data()),
2901 nptbins,ptmin,ptmax,nxeztbins,xeztmin,xeztmax);
2906 Form(
"MC %s: #xi = ln(1/#it{z}_{T}) with charged hadrons",nameMC[i].
Data()),
2907 nptbins,ptmin,ptmax,nhbpbins,hbpmin,hbpmax);
2912 Form(
"MC %s: #it{p}_{out} with triggers",nameMC[i].
Data()),
2913 nptbins,ptmin,ptmax,nptbins,-1.*ptmax/2.,ptmax/2.);
2918 Form(
"MC %s: #Delta #phi with associated charged hadrons",nameMC[i].
Data()),
2919 nptbins,ptmin,ptmax,ndeltaphibins ,deltaphimin,deltaphimax);
2951 new TH1F(Form(
"hMCUePart_%s",nameMC[i].
Data()),
2952 Form(
"MC %s: UE particles distribution vs #it{p}_{T trigger}",nameMC[i].
Data()),
2953 nptbins,ptmin,ptmax);
2955 fhMCUePart[i]->SetXTitle(
"#it{p}_{T trigger} (GeV/#it{c})");
2958 new TH2F(Form(
"hMCPtXEUeCharged%s_%s",right.Data(),nameMC[i].Data()),
2959 Form(
"MC %s: #it{x}_{#it{E}} with charged hadrons, Underlying Event %s",nameMC[i].
Data(),right.Data()),
2960 nptbins,ptmin,ptmax,nxeztbins,xeztmin,xeztmax);
2965 new TH2F(Form(
"hMCPtHbpXEUeCharged%s_%s",right.Data(),nameMC[i].Data()),
2966 Form(
"MC %s: #xi = ln(1/#it{x}_{#it{E}}) with charged hadrons, Underlying Event %s",nameMC[i].
Data(),right.Data()),
2967 nptbins,ptmin,ptmax,nhbpbins,hbpmin,hbpmax);
2972 new TH2F(Form(
"hMCPtZTUeCharged%s_%s",right.Data(),nameMC[i].Data()),
2973 Form(
"MC %s: #it{z}_{T} with charged hadrons, Underlying Event %s",nameMC[i].
Data(),right.Data()),
2974 nptbins,ptmin,ptmax,nxeztbins,xeztmin,xeztmax);
2979 new TH2F(Form(
"hMCPtHbpZTUeCharged%s_%s",right.Data(),nameMC[i].Data()),
2980 Form(
"MC %s: #xi = ln(1/#it{z}_{T}) with charged hadrons, Underlying Event %s",nameMC[i].
Data(),right.Data()),
2981 nptbins,ptmin,ptmax,nhbpbins,hbpmin,hbpmax);
2994 Form(
"MC %s: #it{x}_{#it{E}} with charged hadrons, with UE left side range of trigger particles",nameMC[i].
Data()),
2995 nptbins,ptmin,ptmax,nxeztbins,xeztmin,xeztmax);
3000 Form(
"MC %s: #xi = ln(1/#it{x}_{#it{E}}) with charged hadrons, with UE left side range of trigger particles",nameMC[i].
Data()),
3001 nptbins,ptmin,ptmax,nhbpbins,hbpmin,hbpmax);
3006 Form(
"MC %s: #it{z}_{T} with charged hadrons, with UE left side range of trigger particles",nameMC[i].
Data()),
3007 nptbins,ptmin,ptmax,nxeztbins,xeztmin,xeztmax);
3012 Form(
"MC %s: #xi = ln(1/#it{z}_{T}) with charged hadrons, with UE left side range of trigger particles",nameMC[i].
Data()),
3013 nptbins,ptmin,ptmax,nhbpbins,hbpmin,hbpmax);
3038 for( Int_t ice = 0 ; ice < nce ; ice++ )
3040 for( Int_t ivz = 0 ; ivz < nvz ; ivz++ )
3042 for( Int_t irp = 0 ; irp < nrp ; irp++ )
3056 fhPtTriggerMixed =
new TH1F (
"hPtTriggerMixed",
"#it{p}_{T} distribution of trigger particles, used for mixing", nptbins,ptmin,ptmax);
3067 fhPtTriggerMixedBin =
new TH2F (
"hPtTriggerMixedBin",
"#it{p}_{T} distribution of trigger particles vs mixing bin", nptbins,ptmin,ptmax,nMixBins,0,nMixBins);
3071 fhPhiTriggerMixed =
new TH2F (
"hPhiTriggerMixed",
"#phi distribution of trigger Particles, used for mixing",nptbins,ptmin,ptmax, nphibins,phimin,phimax);
3074 fhEtaTriggerMixed =
new TH2F (
"hEtaTriggerMixed",
"#eta distribution of trigger, used for mixing",nptbins,ptmin,ptmax, netabins,etamin,etamax);
3091 for( Int_t ice = 0 ; ice < nce ; ice++ )
3093 for( Int_t ivz = 0 ; ivz < nvz ; ivz++ )
3095 for( Int_t irp = 0 ; irp < nrp ; irp++ )
3112 if( !
GetReader()->ListWithMixedEventsForTracksExists() )
3115 if( !
GetReader()->ListWithMixedEventsForCaloExists() )
3119 fhEventBin=
new TH1I(
"hEventBin",
"Number of triggers per bin(cen,vz,rp)",
3125 fhEventMixBin=
new TH1I(
"hEventMixBin",
"Number of triggers mixed per event bin(cen,vz,rp)",
3131 fhEventMBBin=
new TH1I(
"hEventMBBin",
"Number of min bias events per bin(cen,vz,rp)",
3137 fhNtracksMB=
new TH2F(
"hNtracksMBEvent",
"Number of filtered tracks in MB event per event bin",ntrbins,trmin,trmax,
3146 fhNclustersMB=
new TH2F(
"hNclustersMBEvent",
"Number of filtered clusters in MB events per event bin",nclbins,clmin,clmax,
3155 (
"hMixDeltaPhiCharged",
"Mixed event : #phi_{trigger} - #phi_{h^{#pm}} vs #it{p}_{T trigger}",
3156 nptbins,ptmin,ptmax,ndeltaphibins ,deltaphimin,deltaphimax);
3162 (
"hMixDeltaPhiDeltaEtaCharged",
"Mixed event : #phi_{trigger} - #phi_{h^{#pm}} vs #eta_{trigger} - #eta_{h^{#pm}}",
3163 ndeltaphibins ,deltaphimin,deltaphimax,ndeltaetabins ,deltaetamin,deltaetamax);
3169 new TH2F(
"hMixXECharged",
"Mixed event : #it{x}_{#it{E}} for charged tracks",
3170 nptbins,ptmin,ptmax,nxeztbins,xeztmin,xeztmax);
3176 new TH2F(
"hMixXEUeCharged",
"Mixed event : #it{x}_{#it{E}} for charged tracks in Ue region",
3177 nptbins,ptmin,ptmax,nxeztbins,xeztmin,xeztmax);
3183 new TH2F(
"hMixHbpXECharged",
"mixed event : #xi = ln(1/#it{x}_{#it{E}}) with charged hadrons",
3184 nptbins,ptmin,ptmax,nhbpbins,hbpmin,hbpmax);
3196 for(Int_t z = 0 ; z < nz ; z++)
3202 sz = Form(
"_vz%d",z);
3203 tz = Form(
", #it{v}_{#it{z}} bin %d",z);
3210 ndeltaphibins ,deltaphimin,deltaphimax,ndeltaetabins ,deltaetamin,deltaetamax);
3218 nptbins, ptmin, ptmax, ndeltaphibins ,deltaphimin,deltaphimax);
3227 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()),
3228 nptbins, ptmin, ptmax, ndeltaphibins ,deltaphimin,deltaphimax);
3233 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()),
3234 nptbins, ptmin, ptmax, ndeltaphibins ,deltaphimin,deltaphimax);
3245 return outputContainer;
3259 if(indexPhoton1!=-1 || indexPhoton2!=-1)
return kFALSE;
3261 AliDebug(1,Form(
"indexPhoton1 = %d, indexPhoton2 = %d", indexPhoton1, indexPhoton2));
3263 TObjArray * clusters = 0x0 ;
3267 for(Int_t iclus = 0; iclus < clusters->GetEntriesFast(); iclus++)
3269 AliVCluster * photon = (AliVCluster*) (clusters->At(iclus));
3304 AliFatal(
"STOP!: You want to use CTS tracks in analysis but not read!! \n!!Check the configuration file!!");
3386 for(Int_t ibin =
fNBkgBin+1; ibin < 20; ibin++)
3401 Int_t idTrig = trigger->GetCaloLabel(0);
3402 Float_t ptTrig = trigger->Pt();
3403 Float_t tofTrig = trigger->GetTime();
3410 for(Int_t iphoton = 0; iphoton < nphoton; iphoton++)
3412 AliAODPWG4ParticleCorrelation * photon1 = (AliAODPWG4ParticleCorrelation*) (
GetInputAODBranch()->At(iphoton));
3414 if(idTrig == photon1->GetCaloLabel(0))
continue;
3421 Float_t m02 = photon1->GetM02();
3427 Double_t tdiff = tofTrig - photon1->GetTime();
3450 Double_t phiTrig = 0 ;
3453 AliAODPWG4ParticleCorrelation* pLeading = 0;
3459 AliAODPWG4ParticleCorrelation* particle = (AliAODPWG4ParticleCorrelation*) (
GetInputAODBranch()->At(iaod));
3460 particle->SetLeadingParticle(kFALSE);
3464 if(check == 0)
continue;
3465 if(check == -1)
return kFALSE;
3468 if (particle->Pt() > ptTrig)
3470 ptTrig = particle->Pt() ;
3471 phiTrig = particle->Phi();
3473 pLeading = particle ;
3477 if(index < 0)
return kFALSE;
3481 if(phiTrig < 0 ) phiTrig += TMath::TwoPi();
3485 for(Int_t ipr = 0;ipr <
GetCTSTracks()->GetEntriesFast() ; ipr ++ )
3487 AliVTrack * track = (AliVTrack *) (
GetCTSTracks()->At(ipr)) ;
3489 if(track->GetID() == pLeading->GetTrackLabel(0) || track->GetID() == pLeading->GetTrackLabel(1) ||
3490 track->GetID() == pLeading->GetTrackLabel(2) || track->GetID() == pLeading->GetTrackLabel(3) )
continue ;
3492 fTrackVector.SetXYZ(track->Px(),track->Py(),track->Pz());
3495 if(phi < 0) phi+=TMath::TwoPi();
3500 Float_t deltaPhi = phiTrig-phi;
3501 if(deltaPhi <= -TMath::PiOver2()) deltaPhi+=TMath::TwoPi();
3502 if(deltaPhi > 3*TMath::PiOver2()) deltaPhi-=TMath::TwoPi();
3504 if(pt > ptTrig && deltaPhi < TMath::PiOver2())
return kFALSE;
3509 if(pt > ptTrig)
return kFALSE ;
3518 TObjArray * nePl = 0x0;
3519 if (pLeading->GetDetectorTag() ==
kPHOS )
3524 if(!nePl)
return kTRUE;
3526 for(Int_t ipr = 0;ipr < nePl->GetEntriesFast() ; ipr ++ )
3528 AliVCluster * cluster = (AliVCluster *) (nePl->At(ipr)) ;
3530 if(cluster->GetID() == pLeading->GetCaloLabel(0) || cluster->GetID() == pLeading->GetCaloLabel(1) )
continue ;
3536 if(phi < 0) phi+=TMath::TwoPi();
3544 Float_t deltaPhi = phiTrig-phi;
3545 if(deltaPhi <= -TMath::PiOver2()) deltaPhi+=TMath::TwoPi();
3546 if(deltaPhi > 3*TMath::PiOver2()) deltaPhi-=TMath::TwoPi();
3548 if(pt > ptTrig && deltaPhi < TMath::PiOver2())
return kFALSE ;
3553 if(pt > ptTrig)
return kFALSE ;
3559 pLeading->SetLeadingParticle(kTRUE);
3561 AliDebug(1,Form(
"\t particle AOD with index %d is leading with pT %2.2f",
fLeadingTriggerIndex, pLeading->Pt()));
3585 AliFatal(Form(
"No input particles in AOD with name branch < %s >, STOP",
GetInputAODName().
Data()));
3592 AliDebug(1,
"No particle AOD found!");
3596 AliDebug(1,Form(
"Begin hadron correlation analysis, fill histograms"));
3597 AliDebug(1,Form(
"n particle branch aod entries %d", naod));
3598 AliDebug(1,Form(
"In CTS aod entries %d",
GetCTSTracks()->GetEntriesFast()));
3613 AliDebug(1,
"Leading was requested and not found");
3637 for( iaod = 0; iaod < naod; iaod++ )
3639 AliAODPWG4ParticleCorrelation* particle = (AliAODPWG4ParticleCorrelation*) (
GetInputAODBranch()->At(iaod));
3644 Float_t pt = particle->Pt();
3657 AliDebug(1,Form(
"%s Trigger : min %f, max %f, det %d",
3674 Float_t m02 = particle->GetM02();
3680 AliDebug(1,
"Pass the shower shape cut");
3689 if( !particle->IsIsolated() )
continue;
3693 AliDebug(1,
"Pass the isolation cut");
3703 if(! in ) continue ;
3705 AliDebug(1,
"Pass the fiducial cut");
3715 Bool_t okLeadHad = kTRUE;
3729 Int_t mcTag = particle->GetTag();
3730 Bool_t lostDecayPair = kFALSE;
3774 Float_t m02 = particle->GetM02();
3775 Float_t pTLeadTrackInCone = 0;
3776 Float_t pTSumTrackInCone = 0;
3777 Float_t pTLeadClusterInCone = 0;
3778 Float_t pTSumClusterInCone = 0;
3780 pTLeadTrackInCone = particle->GetChargedLeadPtInCone();
3781 pTLeadClusterInCone = particle->GetNeutralLeadPtInCone();
3783 pTSumTrackInCone = particle->GetChargedPtSumInCone();
3784 pTSumClusterInCone = particle->GetNeutralPtSumInCone();
3786 Float_t pTLeadInCone = pTLeadTrackInCone;
3787 if(pTLeadClusterInCone > pTLeadInCone) pTLeadInCone = pTLeadClusterInCone;
3788 Float_t pTSumInCone = pTSumTrackInCone + pTSumClusterInCone;
3791 Int_t pTSumBin = -1;
3792 Int_t pTLeadBin = -1;
3794 for(Int_t ibin = 0; ibin <
fNBkgBin; ibin++)
3812 Int_t decayTag = particle->DecayTag();
3813 if(decayTag < 0) decayTag = 0;
3819 Int_t pTLeadBinDecay = pTLeadBin+ibit*
fNBkgBin;
3820 Int_t pTSumBinDecay = pTSumBin+ibit*
fNBkgBin;
3829 Int_t pTLeadBinMC = pTLeadBin+mcIndex*
fNBkgBin;
3830 Int_t pTSumBinMC = pTSumBin+mcIndex*
fNBkgBin;
3871 AliFatal(Form(
"Lost decay Bit assigned to bad case, mcIndex %d",mcIndex));
3893 Int_t decayTag = particle->DecayTag();
3894 if(decayTag < 0) decayTag = 0;
3919 Float_t phi = particle->Phi();
3920 if( phi < 0 ) phi+=TMath::TwoPi();
3960 AliDebug(1,
"End fill histograms");
3972 AliDebug(1,
"Make trigger particle - charged hadron correlation");
3974 Float_t phiTrig = aodParticle->Phi();
3975 Float_t etaTrig = aodParticle->Eta();
3976 Float_t ptTrig = aodParticle->Pt();
3977 Int_t mcTag = aodParticle->GetTag();
3985 decayTag = aodParticle->DecayTag();
3986 if(decayTag < 0) decayTag = 0;
3995 Float_t pt = -100. ;
3996 Float_t phi = -100. ;
3997 Float_t eta = -100. ;
3998 Float_t deltaPhi = -100. ;
4000 TObjArray * reftracks = 0x0;
4004 Int_t evtIndex11 = -1 ;
4005 Int_t evtIndex12 = -1 ;
4006 Int_t evtIndex13 = -1 ;
4010 evtIndex11 =
GetMixedEvent()->EventIndexForCaloCluster(aodParticle->GetCaloLabel(0)) ;
4011 evtIndex12 =
GetMixedEvent()->EventIndexForCaloCluster(aodParticle->GetCaloLabel(1)) ;
4012 evtIndex13 =
GetMixedEvent()->EventIndex(aodParticle->GetTrackLabel(0)) ;
4024 Bool_t decayFound = kFALSE;
4027 decayFound =
GetDecayPhotonMomentum(aodParticle->GetCaloLabel(0),aodParticle->GetCaloLabel(1),aodParticle->GetDetectorTag());
4039 for(Int_t ipr = 0;ipr <
GetCTSTracks()->GetEntriesFast() ; ipr ++ )
4041 AliVTrack * track = (AliVTrack *) (
GetCTSTracks()->At(ipr)) ;
4043 fTrackVector.SetXYZ(track->Px(),track->Py(),track->Pz());
4047 if(phi < 0) phi+=TMath::TwoPi();
4050 if(pt < fMinAssocPt || pt >
fMaxAssocPt) continue ;
4053 if( track->GetID() == aodParticle->GetTrackLabel(0) || track->GetID() == aodParticle->GetTrackLabel(1) ||
4054 track->GetID() == aodParticle->GetTrackLabel(2) || track->GetID() == aodParticle->GetTrackLabel(3) )
4058 Int_t evtIndex2 = 0 ;
4062 if (evtIndex11 == evtIndex2 || evtIndex12 == evtIndex2 || evtIndex13 == evtIndex2 )
4069 AliDebug(2,Form(
"Selected charge for momentum imbalance: pt %2.2f, phi %2.2f, eta %2.2f",pt,phi,eta));
4078 Int_t assocBin = -1;
4097 Int_t bin = assocBin*nz+vz;
4104 ULong_t status = track->GetStatus();
4105 Bool_t okTOF = ( (status & AliVTrack::kTOFout) == AliVTrack::kTOFout ) ;
4107 Int_t trackBC = track->GetTOFBunchCrossing(bz);
4110 if (okTOF && trackBC!=0) outTOF = 1;
4111 else if(okTOF && trackBC==0) outTOF = 0;
4120 deltaPhi = phiTrig-phi;
4127 if(deltaPhi <= -TMath::PiOver2()) deltaPhi+=TMath::TwoPi();
4128 if(deltaPhi > 3*TMath::PiOver2()) deltaPhi-=TMath::TwoPi();
4131 eta, etaTrig, decayTag, track->GetHMPIDsignal(),
4132 outTOF, cenbin, mcTag);
4138 AliESDtrack * esdTrack =
dynamic_cast<AliESDtrack*
>(track);
4153 assocBin, decayTag, outTOF, mcTag);
4190 reftracks =
new TObjArray(0);
4192 reftracks->SetName(trackname.Data());
4193 reftracks->SetOwner(kFALSE);
4196 reftracks->Add(track);
4203 aodParticle->AddObjArray(reftracks);
4212 AliDebug(1,Form(
"Make trigger particle - charged hadron mixed event correlation"));
4219 AliAnalysisManager * manager = AliAnalysisManager::GetAnalysisManager();
4221 AliInputEventHandler * inputHandler =
dynamic_cast<AliInputEventHandler*
>(manager->GetInputEventHandler());
4223 if(!inputHandler)
return;
4231 if(eventBin < 0)
return;
4240 TList * poolCalo = 0;
4254 if( neutralMix && !poolCalo )
4255 AliWarning(
"Careful, cluster pool not available");
4257 Double_t ptTrig = aodParticle->Pt();
4258 Double_t etaTrig = aodParticle->Eta();
4259 Double_t phiTrig = aodParticle->Phi();
4260 if(phiTrig < 0.) phiTrig+=TMath::TwoPi();
4262 AliDebug(1,Form(
"Pool bin %d size %d, trigger trigger pt=%f, phi=%f, eta=%f",
4263 eventBin,pool->GetSize(), ptTrig,phiTrig,etaTrig));
4265 Double_t ptAssoc = -999.;
4266 Double_t phiAssoc = -999.;
4267 Double_t etaAssoc = -999.;
4268 Double_t deltaPhi = -999.;
4269 Double_t deltaEta = -999.;
4270 Double_t xE = -999.;
4276 for(Int_t ev=ev0; ev < pool->GetSize(); ev++)
4281 TObjArray* bgTracks =
static_cast<TObjArray*
>(pool->At(ev));
4282 TObjArray* bgCalo = 0;
4285 if( neutralMix && poolCalo )
4287 if(pool->GetSize()!=poolCalo->GetSize())
4288 AliWarning(
"Different size of calo and track pools");
4290 bgCalo =
static_cast<TObjArray*
>(poolCalo->At(ev));
4292 if(!bgCalo) AliDebug(1,Form(
"Event %d in calo pool not available?",ev));
4300 Int_t n=0, nfrac = 0;
4301 Bool_t isolated = kFALSE;
4302 Float_t coneptsum = 0, coneptlead = 0;
4305 kFALSE, aodParticle,
"",
4306 n,nfrac,coneptsum,coneptlead,isolated);
4313 if(!isolated) continue ;
4319 Int_t nTracks=bgTracks->GetEntriesFast();
4323 Bool_t leading = kTRUE;
4324 for(Int_t jlead = 0;jlead < nTracks; jlead++ )
4326 AliAODPWG4Particle *track = (AliAODPWG4Particle*) bgTracks->At(jlead) ;
4328 ptAssoc = track->Pt();
4329 phiAssoc = track->Phi() ;
4330 if(phiAssoc < 0) phiAssoc+=TMath::TwoPi();
4334 deltaPhi = phiTrig-phiAssoc;
4335 if(deltaPhi <= -TMath::PiOver2()) deltaPhi+=TMath::TwoPi();
4336 if(deltaPhi > 3*TMath::PiOver2()) deltaPhi-=TMath::TwoPi();
4338 if(ptAssoc > ptTrig && deltaPhi < TMath::PiOver2())
4347 if(ptAssoc > ptTrig)
4356 AliWarning(
"Leading of clusters requested but no clusters in mixed event");
4360 Int_t nClusters=bgCalo->GetEntriesFast();
4361 for(Int_t jlead = 0;jlead <nClusters; jlead++ )
4363 AliAODPWG4Particle *cluster= (AliAODPWG4Particle*) bgCalo->At(jlead) ;
4365 ptAssoc = cluster->Pt();
4366 phiAssoc = cluster->Phi() ;
4367 if(phiAssoc < 0) phiAssoc+=TMath::TwoPi();
4371 deltaPhi = phiTrig-phiAssoc;
4372 if(deltaPhi <= -TMath::PiOver2()) deltaPhi+=TMath::TwoPi();
4373 if(deltaPhi > 3*TMath::PiOver2()) deltaPhi-=TMath::TwoPi();
4375 if(ptAssoc > ptTrig && deltaPhi < TMath::PiOver2())
4384 if(ptAssoc > ptTrig)
4393 if(!leading)
continue;
4414 for(Int_t j1 = 0;j1 <nTracks; j1++ )
4416 AliAODPWG4Particle *track = (AliAODPWG4Particle*) bgTracks->At(j1) ;
4418 if(!track)
continue;
4420 ptAssoc = track->Pt();
4421 etaAssoc = track->Eta();
4422 phiAssoc = track->Phi() ;
4423 if(phiAssoc < 0) phiAssoc+=TMath::TwoPi();
4425 deltaPhi = phiTrig-phiAssoc;
4426 if(deltaPhi < -TMath::PiOver2()) deltaPhi+=TMath::TwoPi();
4427 if(deltaPhi > 3*TMath::PiOver2()) deltaPhi-=TMath::TwoPi();
4428 deltaEta = etaTrig-etaAssoc;
4430 AliDebug(1,Form(
"deltaPhi= %f, deltaEta=%f",deltaPhi, deltaEta));
4441 xE = -ptAssoc/ptTrig*TMath::Cos(deltaPhi);
4444 AliWarning(Form(
"Careful!!, negative xE %2.2f for right UE cos(dPhi %2.2f) = %2.2f, check correlation dPhi limits %f to %f",
4458 Double_t uexE = -(ptAssoc/ptTrig)*TMath::Cos(randomphi);
4461 AliWarning(Form(
"Careful!!, negative xE %2.2f for left UE cos(dPhi %2.2f) = %2.2f, check correlation dPhi limits %f to %f",
4468 Int_t assocBin = -1;
4486 Int_t bin = assocBin*nz+vz;
4488 if(bin < 0) continue ;
4495 if(TMath::Abs(deltaEta) > 0.8)
4497 if(TMath::Abs(deltaEta) < 0.01)
4512 if(!pi0list) return ;
4514 Int_t npi0 = pi0list->GetEntriesFast();
4515 if(npi0 == 0) return ;
4517 AliDebug(1,Form(
"Particle - pi0 correlation, %d pi0's",npi0));
4519 Int_t evtIndex11 = 0 ;
4520 Int_t evtIndex12 = 0 ;
4523 evtIndex11 =
GetMixedEvent()->EventIndexForCaloCluster(aodParticle->GetCaloLabel(0)) ;
4524 evtIndex12 =
GetMixedEvent()->EventIndexForCaloCluster(aodParticle->GetCaloLabel(1)) ;
4527 Float_t pt = -100. ;
4528 Float_t zT = -100. ;
4529 Float_t phi = -100. ;
4530 Float_t eta = -100. ;
4531 Float_t xE = -100. ;
4532 Float_t hbpXE= -100. ;
4533 Float_t hbpZT= -100. ;
4535 Float_t ptTrig = aodParticle->Pt();
4536 Float_t phiTrig = aodParticle->Phi();
4537 Float_t etaTrig = aodParticle->Eta();
4538 Float_t deltaPhi= -100. ;
4539 Float_t deltaEta= -100. ;
4544 Bool_t decayFound = kFALSE;
4547 TObjArray * refpi0 = 0x0;
4552 for(Int_t iaod = 0; iaod < npi0 ; iaod++)
4554 AliAODPWG4Particle* pi0 = (AliAODPWG4Particle*) (pi0list->At(iaod));
4556 Int_t evtIndex2 = 0 ;
4557 Int_t evtIndex3 = 0 ;
4560 evtIndex2 =
GetMixedEvent()->EventIndexForCaloCluster(pi0->GetCaloLabel(0)) ;
4561 evtIndex3 =
GetMixedEvent()->EventIndexForCaloCluster(pi0->GetCaloLabel(1)) ;
4563 if (evtIndex11 == evtIndex2 || evtIndex12 == evtIndex2 ||
4564 evtIndex11 == evtIndex3 || evtIndex12 == evtIndex3)
4570 if(pt < fMinAssocPt || pt >
fMaxAssocPt) continue ;
4573 if(aodParticle->GetCaloLabel(0) >= 0 &&
4574 (pi0->GetCaloLabel(0) == aodParticle->GetCaloLabel(0) || pi0->GetCaloLabel(1) == aodParticle->GetCaloLabel(0))) continue ;
4576 if( aodParticle->GetCaloLabel(1) >= 0 &&
4577 (pi0->GetCaloLabel(0) == aodParticle->GetCaloLabel(1) || pi0->GetCaloLabel(1) == aodParticle->GetCaloLabel(1))) continue ;
4584 deltaEta = etaTrig-eta;
4585 deltaPhi = phiTrig-phi;
4586 if(deltaPhi <= -TMath::PiOver2()) deltaPhi+=TMath::TwoPi();
4587 if(deltaPhi > 3*TMath::PiOver2()) deltaPhi-=TMath::TwoPi();
4604 if(zT > 0 ) hbpZT = TMath::Log(1./zT);
4609 xE =-pt/ptTrig*TMath::Cos(deltaPhi);
4612 AliWarning(Form(
"Careful!!, negative xE %2.2f for right UE cos(dPhi %2.2f) = %2.2f, check correlation dPhi limits %f to %f",
4615 if( xE > 0 ) hbpXE = TMath::Log(1./xE);
4628 xE = -(pt/ptTrig)*TMath::Cos(randomphi);
4629 if(xE > 0 ) hbpXE = TMath::Log(1./xE);
4653 refpi0 =
new TObjArray(0);
4655 refpi0->SetOwner(kFALSE);
4660 AliDebug(1,Form(
"Selected pi0: pt %2.2f, phi %2.2f, eta %2.2f",pt,phi,eta));
4667 aodParticle->AddObjArray(refpi0);
4676 AliDebug(1,
"Make trigger particle - charged hadron correlation in AOD MC level");
4680 AliDebug(1,Form(
" *** bad label ***: label %d", label));
4687 if(histoIndex < fMCGenTypeMin || histoIndex >
fMCGenTypeMax) return ;
4689 AliStack * stack = 0x0 ;
4690 TParticle * primary = 0x0 ;
4691 TClonesArray * mcparticles = 0x0 ;
4692 AliAODMCParticle * aodprimary = 0x0 ;
4694 Double_t eprim = 0 ;
4695 Double_t ptprim = 0 ;
4696 Double_t phiprim = 0 ;
4697 Double_t etaprim = 0 ;
4699 Int_t iParticle = 0 ;
4701 Bool_t leadTrig = kTRUE;
4708 AliFatal(
"Stack not available, is the MC handler called? STOP");
4713 nTracks = stack->GetNprimary();
4714 if( label >= stack->GetNtrack() )
4717 AliInfo(Form(
"*** large label ***: label %d, n tracks %d", label, stack->GetNtrack()));
4721 primary = stack->Particle(label);
4724 AliInfo(Form(
" *** no primary ***: label %d", label));
4728 eprim = primary->Energy();
4729 ptprim = primary->Pt();
4730 etaprim = primary->Eta();
4731 phiprim = primary->Phi();
4732 if(phiprim < 0) phiprim+=TMath::TwoPi();
4734 if(ptprim < 0.01 || eprim < 0.01) return ;
4736 for (iParticle = 0 ; iParticle < nTracks ; iParticle++)
4738 TParticle * particle = stack->Particle(iParticle);
4741 if( particle->GetStatusCode() != 1 )
continue ;
4744 Int_t
pdg = particle->GetPdgCode();
4745 Int_t
charge = (Int_t) TDatabasePDG::Instance()->GetParticle(pdg)->Charge();
4746 if(charge == 0)
continue;
4753 if( !inCTS )
continue;
4756 if ( TMath::Abs(pdg) == 11 && stack->Particle(particle->GetFirstMother())->GetPdgCode() == 22 )
continue ;
4758 if ( label == iParticle )
continue;
4760 Float_t phi = particle->Phi();
4761 if(phi < 0) phi+=TMath::TwoPi();
4765 if ( !lead ) leadTrig = kFALSE;
4774 if( !mcparticles )
return;
4776 nTracks = mcparticles->GetEntriesFast() ;
4778 if( label >= nTracks )
4781 AliInfo(Form(
" *** large label ***: label %d, n tracks %d", label,nTracks));
4786 aodprimary = (AliAODMCParticle*) mcparticles->At(label);
4789 AliInfo(Form(
" *** no AOD primary ***: label %d", label));
4793 eprim = aodprimary->E();
4794 ptprim = aodprimary->Pt();
4795 etaprim = aodprimary->Eta();
4796 phiprim = aodprimary->Phi();
4797 if(phiprim < 0) phiprim+=TMath::TwoPi();
4799 if(ptprim < 0.01 || eprim < 0.01) return ;
4801 for (iParticle = 0; iParticle < nTracks; iParticle++)
4803 AliAODMCParticle *part = (AliAODMCParticle*) mcparticles->At(iParticle);
4805 if (!part->IsPhysicalPrimary() )
continue;
4807 if ( part->Charge() == 0 )
continue;
4809 fMomentum.SetPxPyPzE(part->Px(),part->Py(),part->Pz(),part->E());
4814 if( !inCTS )
continue;
4817 Int_t indexmother = part->GetMother();
4818 if ( indexmother > -1 )
4820 Int_t
pdg = part->GetPdgCode();
4821 Int_t mPdg = ((AliAODMCParticle*) mcparticles->At(indexmother)) ->GetPdgCode();
4822 if (TMath::Abs(pdg) == 11 && mPdg == 22)
continue;
4825 if ( label == iParticle )
continue;
4827 Float_t phi = part->Phi();
4828 if(phi < 0) phi+=TMath::TwoPi();
4832 if ( !lead ) leadTrig = kFALSE;
4847 if (histoIndex == 2 && 8 >=
fMCGenTypeMin && 8 <= fMCGenTypeMax )
4854 else if(histoIndex == 4 && 9 >=
fMCGenTypeMin && 9 <= fMCGenTypeMax )
4865 AliDebug(1,Form(
"Not leading primary trigger: pT %2.2f, phi %2.2f, eta %2.2f",
4866 ptprim,phiprim*TMath::RadToDeg(),etaprim));
4875 if (histoIndex == 2 && 8 >=
fMCGenTypeMin && 8 <= fMCGenTypeMax )
4882 else if(histoIndex == 4 && 9 >=
fMCGenTypeMin && 9 <= fMCGenTypeMax )
4901 printf(
"**** Print %s %s ****\n", GetName(), GetTitle() ) ;
4912 printf(
"Do Decay-hadron correlation ? %d\n",
fPi0Trigger) ;
4913 printf(
"Select absolute leading for cluster triggers ? %d or Near Side %d\n",
4935 AliWarning(
"n = larger than 19 or too small, set to 19");
4945 if(ibin <= fNAssocPtBins || ibin >= 0)
4951 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.