]>
Commit | Line | Data |
---|---|---|
e09cf5ef | 1 | /************************************************************************** |
2 | * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. * | |
3 | * * | |
4 | * Author: The ALICE Off-line Project. * | |
5 | * Contributors are mentioned in the code where appropriate. * | |
6 | * * | |
7 | * Permission to use, copy, modify and distribute this software and its * | |
8 | * documentation strictly for non-commercial purposes is hereby granted * | |
9 | * without fee, provided that the above copyright notice appears in all * | |
10 | * copies and that both the copyright notice and this permission notice * | |
11 | * appear in the supporting documentation. The authors make no claims * | |
12 | * about the suitability of this software for any purpose. It is * | |
13 | * provided "as is" without express or implied warranty. * | |
14 | **************************************************************************/ | |
e09cf5ef | 15 | |
16 | //_________________________________________________________________________ | |
17 | // Class for the analysis of particle - hadron correlations | |
18 | // Particle (for example direct gamma) must be found in a previous analysis | |
19 | //-- Author: Gustavo Conesa (LNF-INFN) | |
20 | ||
21 | // Modified by Yaxian Mao: | |
22 | // 1. add the UE subtraction for corrlation study | |
23 | // 2. change the correlation variable | |
24 | // 3. Only use leading particle(cluster/track) as trigger for correlation (2010/07/02) | |
25 | // 4. Make decay photon-hadron correlations where decay contribute pi0 mass (2010/09/09) | |
26 | // 5. fill the pout to extract kt at the end, also to study charge asymmetry(2010/10/06) | |
045396c8 | 27 | // 6. Add the possibility for event selection analysis based on vertex and multiplicity bins (10/10/2010) |
28 | // 7. change the way of delta phi cut for UE study due to memory issue (reduce histograms) | |
29 | // 8. Add the possibility to request the absolute leading particle at the near side or not, set trigger bins, general clean-up (08/2011) | |
e09cf5ef | 30 | ////////////////////////////////////////////////////////////////////////////// |
31 | ||
32 | ||
33 | // --- ROOT system --- | |
34 | //#include "TClonesArray.h" | |
907b38cd | 35 | #include <TClass.h> |
36 | #include <TMath.h> | |
37 | #include <TH2F.h> | |
38 | #include <TDatabasePDG.h> | |
e09cf5ef | 39 | |
40 | //---- ANALYSIS system ---- | |
41 | #include "AliNeutralMesonSelection.h" | |
42 | #include "AliAnaParticleHadronCorrelation.h" | |
43 | #include "AliCaloTrackReader.h" | |
e09cf5ef | 44 | #include "AliAODPWG4ParticleCorrelation.h" |
45 | #include "AliFiducialCut.h" | |
46 | #include "AliVTrack.h" | |
47 | #include "AliVCluster.h" | |
48 | #include "AliMCAnalysisUtils.h" | |
49 | #include "TParticle.h" | |
50 | #include "AliStack.h" | |
51 | #include "AliAODMCParticle.h" | |
52 | #include "AliMixedEvent.h" | |
029dea5a | 53 | #include "AliAnalysisManager.h" |
54 | #include "AliInputEventHandler.h" | |
2e876d85 | 55 | #include "AliEventplane.h" |
e09cf5ef | 56 | |
57 | ClassImp(AliAnaParticleHadronCorrelation) | |
58 | ||
59 | ||
05d0d05d | 60 | //___________________________________________________________________ |
e09cf5ef | 61 | AliAnaParticleHadronCorrelation::AliAnaParticleHadronCorrelation(): |
745913ae | 62 | AliAnaCaloTrackCorrBaseClass(), |
66e64043 | 63 | fMinTriggerPt(0.), |
64 | fMaxAssocPt(1000.), fMinAssocPt(0.), | |
05d0d05d | 65 | fDeltaPhiMaxCut(0.), fDeltaPhiMinCut(0.), |
66 | fSelectIsolated(0), fMakeSeveralUE(0), | |
67 | fUeDeltaPhiMaxCut(0.), fUeDeltaPhiMinCut(0.), | |
68 | fPi0AODBranchName(""), fNeutralCorr(0), | |
907b38cd | 69 | fPi0Trigger(0), fDecayTrigger(0), |
3f150b4b | 70 | fMakeAbsoluteLeading(0), fMakeNearSideLeading(0), |
907b38cd | 71 | fLeadingTriggerIndex(-1), fHMPIDCorrelation(0), fFillBradHisto(0), |
05d0d05d | 72 | fNAssocPtBins(0), fAssocPtBinLimit(), |
7d306daf | 73 | fCorrelVzBin(0), |
2bb7ac98 | 74 | fListMixTrackEvents(), fListMixCaloEvents(), |
75 | fUseMixStoredInReader(0), fFillNeutralEventMixPool(0), | |
b1f720a7 | 76 | fM02MaxCut(0), fM02MinCut(0), |
560498d1 | 77 | fFillPileUpHistograms(0), |
05d0d05d | 78 | //Histograms |
7d306daf | 79 | fhPtInput(0), fhPtFidCut(0), |
cc944149 | 80 | fhPtLeading(0), fhPtLeadingVtxBC0(0), |
b1f720a7 | 81 | fhPtLeadingVzBin(0), fhPtLeadingBin(0), |
764ab1f4 | 82 | fhPhiLeading(0), fhEtaLeading(0), |
83 | fhPtLeadingMC(), | |
68cd2624 | 84 | fhPtLeadingCentrality(0), fhPtLeadingEventPlane(0), |
d0b625bc | 85 | fhLeadingEventPlaneCentrality(0), |
7d306daf | 86 | fhPtLeadingMixed(0), fhPtLeadingMixedVzBin(0), fhPtLeadingMixedBin(0), |
d0b625bc | 87 | fhPhiLeadingMixed(0), fhEtaLeadingMixed(0), |
88 | fhDeltaPhiDeltaEtaCharged(0), | |
05d0d05d | 89 | fhPhiCharged(0), fhEtaCharged(0), |
90 | fhDeltaPhiCharged(0), fhDeltaEtaCharged(0), | |
91 | fhDeltaPhiChargedPt(0), fhDeltaPhiUeChargedPt(0), | |
9623bf34 | 92 | fhUePart(0), |
727a309a | 93 | fhXECharged(0), fhXECharged_Cone2(0), fhXEUeCharged(0), |
3f150b4b | 94 | fhXEPosCharged(0), fhXENegCharged(0), |
727a309a | 95 | fhPtHbpXECharged(0), fhPtHbpXECharged_Cone2(0), fhPtHbpXEUeCharged(0), |
3f150b4b | 96 | fhZTCharged(0), fhZTUeCharged(0), |
97 | fhZTPosCharged(0), fhZTNegCharged(0), | |
98 | fhPtHbpZTCharged(0), fhPtHbpZTUeCharged(0), | |
b1f720a7 | 99 | fhXEChargedMC(), fhDeltaPhiChargedMC(), |
100 | fhDeltaPhiDeltaEtaChargedPtA3GeV(0), | |
101 | fhDeltaPhiChargedPtA3GeV(0), fhDeltaEtaChargedPtA3GeV(0), | |
102 | //Pile-Up | |
17af6e24 | 103 | fhDeltaPhiChargedPileUp(), fhDeltaEtaChargedPileUp(), |
fedea415 | 104 | fhDeltaPhiChargedPtA3GeVPileUp(), fhDeltaEtaChargedPtA3GeVPileUp(), |
105 | fhXEChargedPileUp(), fhXEUeChargedPileUp(), | |
17af6e24 | 106 | fhZTChargedPileUp(), fhZTUeChargedPileUp(), |
107 | fhPtTrigChargedPileUp(), | |
fedea415 | 108 | fhDeltaPhiChargedOtherBC(), fhDeltaPhiChargedPtA3GeVOtherBC(), |
109 | fhXEChargedOtherBC(), fhXEUeChargedOtherBC(), | |
110 | fhZTChargedOtherBC(), fhZTUeChargedOtherBC(), | |
111 | fhPtTrigChargedOtherBC(), | |
2a9171b5 | 112 | fhDeltaPhiChargedBC0(), fhDeltaPhiChargedPtA3GeVBC0(), |
113 | fhXEChargedBC0(), fhXEUeChargedBC0(), | |
114 | fhZTChargedBC0(), fhZTUeChargedBC0(), | |
115 | fhPtTrigChargedBC0(), | |
cc944149 | 116 | fhDeltaPhiChargedVtxBC0(), fhDeltaPhiChargedPtA3GeVVtxBC0(), |
117 | fhXEChargedVtxBC0(), fhXEUeChargedVtxBC0(), | |
118 | fhZTChargedVtxBC0(), fhZTUeChargedVtxBC0(), | |
119 | fhPtTrigChargedVtxBC0(), | |
05d0d05d | 120 | fhDeltaPhiUeLeftCharged(0), fhDeltaPhiUeRightCharged(0), |
8cc41381 | 121 | fhDeltaPhiUeLeftUpCharged(0), fhDeltaPhiUeRightUpCharged(0), |
122 | fhDeltaPhiUeLeftDownCharged(0), fhDeltaPhiUeRightDownCharged(0), | |
3f150b4b | 123 | fhXEUeLeftCharged(0), fhXEUeRightCharged(0), |
8cc41381 | 124 | fhXEUeLeftUpCharged(0), fhXEUeRightUpCharged(0), |
125 | fhXEUeLeftDownCharged(0), fhXEUeRightDownCharged(0), | |
3f150b4b | 126 | fhPtHbpXEUeLeftCharged(0), fhPtHbpXEUeRightCharged(0), |
127 | fhZTUeLeftCharged(0), fhZTUeRightCharged(0), | |
128 | fhPtHbpZTUeLeftCharged(0), fhPtHbpZTUeRightCharged(0), | |
05d0d05d | 129 | fhPtTrigPout(0), fhPtTrigCharged(0), |
130 | fhTrigDeltaPhiCharged(0x0), fhTrigDeltaEtaCharged(0x0), | |
3f150b4b | 131 | fhTrigXECorr(0x0), fhTrigXEUeCorr(0x0), |
132 | fhTrigZTCorr(0x0), fhTrigZTUeCorr(0x0), | |
8cc41381 | 133 | fhAssocPtBkg(0), fhDeltaPhiDeltaEtaAssocPtBin(0), |
134 | fhDeltaPhiAssocPtBin(0), | |
135 | fhDeltaPhiAssocPtBinDEta08(0), fhDeltaPhiAssocPtBinDEta0(0), | |
2013f378 | 136 | fhDeltaPhiAssocPtBinHMPID(0), fhDeltaPhiAssocPtBinHMPIDAcc(0), |
66e64043 | 137 | fhDeltaPhiBradAssocPtBin(0), fhDeltaPhiBrad(0), |
907b38cd | 138 | fhXEAssocPtBin(0), fhZTAssocPtBin(0), |
e09cf5ef | 139 | fhDeltaPhiDeltaEtaNeutral(0), |
05d0d05d | 140 | fhPhiNeutral(0), fhEtaNeutral(0), |
141 | fhDeltaPhiNeutral(0), fhDeltaEtaNeutral(0), | |
142 | fhDeltaPhiNeutralPt(0), fhDeltaPhiUeNeutralPt(0), | |
3f150b4b | 143 | fhXENeutral(0), fhXEUeNeutral(0), |
144 | fhPtHbpXENeutral(0), fhPtHbpXEUeNeutral(0), | |
145 | fhZTNeutral(0), fhZTUeNeutral(0), | |
146 | fhPtHbpZTNeutral(0), fhPtHbpZTUeNeutral(0), | |
05d0d05d | 147 | fhDeltaPhiUeLeftNeutral(0), fhDeltaPhiUeRightNeutral(0), |
3f150b4b | 148 | fhXEUeLeftNeutral(0), fhXEUeRightNeutral(0), |
149 | fhPtHbpXEUeLeftNeutral(0), fhPtHbpXEUeRightNeutral(0), | |
150 | fhZTUeLeftNeutral(0), fhZTUeRightNeutral(0), | |
151 | fhPtHbpZTUeLeftNeutral(0), fhPtHbpZTUeRightNeutral(0), | |
e09cf5ef | 152 | fhPtPi0DecayRatio(0), |
3f150b4b | 153 | fhDeltaPhiDecayCharged(0), fhXEDecayCharged(0), fhZTDecayCharged(0), |
154 | fhDeltaPhiDecayNeutral(0), fhXEDecayNeutral(0), fhZTDecayNeutral(0), | |
907b38cd | 155 | fhDeltaPhiDecayChargedAssocPtBin(0), |
156 | fhXEDecayChargedAssocPtBin(0), fhZTDecayChargedAssocPtBin(0), | |
9623bf34 | 157 | fh2phiLeadingParticle(0x0), fhMCPtLeading(0), |
08f220c8 | 158 | fhMCPhiLeading(0), fhMCEtaLeading(0), |
05d0d05d | 159 | fhMCEtaCharged(0), fhMCPhiCharged(0), |
160 | fhMCDeltaEtaCharged(0), fhMCDeltaPhiCharged(0x0), | |
161 | fhMCDeltaPhiDeltaEtaCharged(0), fhMCDeltaPhiChargedPt(0), | |
9623bf34 | 162 | fhMCPtXECharged(0), fhMCPtXEUeCharged(0), |
163 | fhMCPtHbpXECharged(0), fhMCPtHbpXEUeCharged(0), | |
164 | fhMCUePart(0), | |
3f150b4b | 165 | fhMCPtZTCharged(0), fhMCPtHbpZTCharged(0), |
029dea5a | 166 | fhMCPtTrigPout(0), fhMCPtAssocDeltaPhi(0), |
167 | //Mixing | |
31864468 | 168 | fhNEventsTrigger(0), fhNtracksMB(0), fhNclustersMB(0), |
029dea5a | 169 | fhMixDeltaPhiCharged(0), fhMixDeltaPhiDeltaEtaCharged(0), |
18838011 | 170 | fhMixXECharged(0), fhMixXEUeCharged(0), fhMixHbpXECharged(0), |
2013f378 | 171 | fhMixDeltaPhiChargedAssocPtBin(), |
172 | fhMixDeltaPhiChargedAssocPtBinDEta08(), | |
8cc41381 | 173 | fhMixDeltaPhiChargedAssocPtBinDEta0(), |
2013f378 | 174 | fhMixDeltaPhiDeltaEtaChargedAssocPtBin(), |
68cd2624 | 175 | fhEventBin(0), fhEventMixBin(0) |
029dea5a | 176 | { |
8cc41381 | 177 | //Default Ctor |
029dea5a | 178 | |
e09cf5ef | 179 | //Initialize parameters |
180 | InitParameters(); | |
764ab1f4 | 181 | |
b1f720a7 | 182 | for(Int_t i = 0; i < 7; i++) |
764ab1f4 | 183 | { |
184 | fhPtLeadingMC[i] = 0; | |
185 | fhXEChargedMC[i] = 0; | |
b1f720a7 | 186 | fhDeltaPhiChargedMC[i] = 0; |
764ab1f4 | 187 | } |
188 | ||
17af6e24 | 189 | for(Int_t i = 0; i < 7; i++) |
190 | { | |
191 | fhPtLeadingPileUp [i] = 0 ; | |
192 | fhDeltaPhiChargedPileUp [i] = 0 ; fhDeltaEtaChargedPileUp [i] = 0 ; | |
193 | fhXEChargedPileUp [i] = 0 ; fhXEUeChargedPileUp [i] = 0 ; | |
194 | fhZTChargedPileUp [i] = 0 ; fhZTUeChargedPileUp [i] = 0 ; | |
195 | fhPtTrigChargedPileUp [i] = 0 ; | |
196 | fhDeltaPhiChargedPtA3GeVPileUp[i] = 0 ; fhDeltaEtaChargedPtA3GeVPileUp[i] = 0 ; | |
17af6e24 | 197 | } |
198 | ||
e09cf5ef | 199 | } |
200 | ||
029dea5a | 201 | //_________________________________________________________________ |
2bb7ac98 | 202 | AliAnaParticleHadronCorrelation::~AliAnaParticleHadronCorrelation() |
029dea5a | 203 | { |
204 | // Remove event containers | |
205 | ||
d07ffd54 | 206 | if(DoOwnMix()) |
207 | { | |
208 | if(fListMixTrackEvents) | |
209 | { | |
210 | for(Int_t iz=0; iz < GetNZvertBin(); iz++) | |
029dea5a | 211 | { |
d07ffd54 | 212 | for(Int_t ic=0; ic < GetNCentrBin(); ic++) |
213 | { | |
214 | for(Int_t irp=0; irp<GetNRPBin(); irp++) | |
215 | { | |
216 | Int_t bin = GetEventMixBin(ic, iz, irp); | |
217 | fListMixTrackEvents[bin]->Delete() ; | |
218 | delete fListMixTrackEvents[bin] ; | |
219 | } | |
220 | } | |
029dea5a | 221 | } |
222 | } | |
d07ffd54 | 223 | |
224 | delete[] fListMixTrackEvents; | |
225 | ||
226 | if(fListMixCaloEvents) | |
227 | { | |
228 | for(Int_t iz=0; iz < GetNZvertBin(); iz++) | |
229 | { | |
230 | for(Int_t ic=0; ic < GetNCentrBin(); ic++) | |
231 | { | |
232 | for(Int_t irp=0; irp<GetNRPBin(); irp++) | |
233 | { | |
234 | Int_t bin = GetEventMixBin(ic, iz, irp); | |
235 | fListMixCaloEvents[bin]->Delete() ; | |
236 | delete fListMixCaloEvents[bin] ; | |
237 | } | |
238 | } | |
239 | } | |
240 | } | |
241 | ||
242 | delete[] fListMixCaloEvents; | |
029dea5a | 243 | |
244 | } | |
245 | } | |
246 | ||
907b38cd | 247 | //______________________________________________________________________________________________________________________________________________________ |
22ad7981 | 248 | void AliAnaParticleHadronCorrelation::FillChargedAngularCorrelationHistograms(Float_t ptAssoc, Float_t ptTrig, Int_t bin, |
249 | Float_t phiAssoc, Float_t phiTrig, Float_t & deltaPhi, | |
250 | Float_t etaAssoc, Float_t etaTrig, | |
251 | Bool_t decay, Float_t hmpidSignal, Int_t outTOF, | |
252 | Int_t nTracks, Int_t mcTag) | |
907b38cd | 253 | { |
254 | // Fill angular correlation related histograms | |
255 | ||
256 | Float_t deltaEta = etaTrig-etaAssoc; | |
257 | deltaPhi = phiTrig-phiAssoc; | |
258 | Float_t deltaPhiOrg = deltaPhi; | |
259 | ||
260 | if(deltaPhi <= -TMath::PiOver2()) deltaPhi+=TMath::TwoPi(); | |
261 | if(deltaPhi > 3*TMath::PiOver2()) deltaPhi-=TMath::TwoPi(); | |
262 | ||
b1f720a7 | 263 | fhEtaCharged ->Fill(ptAssoc,etaAssoc); |
264 | fhPhiCharged ->Fill(ptAssoc,phiAssoc); | |
265 | fhDeltaEtaCharged ->Fill(ptTrig ,deltaEta); | |
266 | fhDeltaPhiCharged ->Fill(ptTrig ,deltaPhi); | |
267 | fhDeltaPhiChargedPt->Fill(ptAssoc, deltaPhi); | |
268 | fhDeltaPhiDeltaEtaCharged->Fill(deltaPhi, deltaEta); | |
269 | ||
270 | if(ptAssoc > 3 ) | |
271 | { | |
272 | fhDeltaEtaChargedPtA3GeV ->Fill(ptTrig ,deltaEta); | |
273 | fhDeltaPhiChargedPtA3GeV ->Fill(ptTrig ,deltaPhi); | |
274 | fhDeltaPhiDeltaEtaChargedPtA3GeV->Fill(deltaPhi, deltaEta); | |
275 | } | |
907b38cd | 276 | |
b1f720a7 | 277 | // Pile up studies |
17af6e24 | 278 | |
279 | if(fFillPileUpHistograms) | |
b1f720a7 | 280 | { |
2a9171b5 | 281 | if (outTOF==1) |
fedea415 | 282 | { |
560498d1 | 283 | fhDeltaPhiChargedOtherBC->Fill(ptTrig ,deltaPhi) ; |
fedea415 | 284 | if(ptAssoc > 3 ) fhDeltaPhiChargedPtA3GeVOtherBC->Fill(ptTrig ,deltaPhi) ; |
285 | } | |
2a9171b5 | 286 | else if(outTOF==0) |
287 | { | |
288 | fhDeltaPhiChargedBC0->Fill(ptTrig ,deltaPhi) ; | |
289 | if(ptAssoc > 3 ) fhDeltaPhiChargedPtA3GeVBC0->Fill(ptTrig ,deltaPhi) ; | |
290 | } | |
fedea415 | 291 | |
cc944149 | 292 | Int_t vtxBC = GetReader()->GetVertexBC(); |
293 | if(vtxBC == 0 || vtxBC==AliVTrack::kTOFBCNA) | |
294 | { | |
295 | fhDeltaPhiChargedVtxBC0->Fill(ptTrig ,deltaPhi) ; | |
296 | if(ptAssoc > 3 ) fhDeltaPhiChargedPtA3GeVVtxBC0->Fill(ptTrig ,deltaPhi) ; | |
297 | } | |
298 | ||
17af6e24 | 299 | if(GetReader()->IsPileUpFromSPD()) { fhDeltaEtaChargedPileUp[0]->Fill(ptTrig ,deltaEta) ; fhDeltaPhiChargedPileUp[0]->Fill(ptTrig ,deltaPhi) ; } |
300 | if(GetReader()->IsPileUpFromEMCal()) { fhDeltaEtaChargedPileUp[1]->Fill(ptTrig ,deltaEta) ; fhDeltaPhiChargedPileUp[1]->Fill(ptTrig ,deltaPhi) ; } | |
301 | if(GetReader()->IsPileUpFromSPDOrEMCal()) { fhDeltaEtaChargedPileUp[2]->Fill(ptTrig ,deltaEta) ; fhDeltaPhiChargedPileUp[2]->Fill(ptTrig ,deltaPhi) ; } | |
302 | if(GetReader()->IsPileUpFromSPDAndEMCal()) { fhDeltaEtaChargedPileUp[3]->Fill(ptTrig ,deltaEta) ; fhDeltaPhiChargedPileUp[3]->Fill(ptTrig ,deltaPhi) ; } | |
303 | if(GetReader()->IsPileUpFromSPDAndNotEMCal()) { fhDeltaEtaChargedPileUp[4]->Fill(ptTrig ,deltaEta) ; fhDeltaPhiChargedPileUp[4]->Fill(ptTrig ,deltaPhi) ; } | |
304 | if(GetReader()->IsPileUpFromEMCalAndNotSPD()) { fhDeltaEtaChargedPileUp[5]->Fill(ptTrig ,deltaEta) ; fhDeltaPhiChargedPileUp[5]->Fill(ptTrig ,deltaPhi) ; } | |
305 | if(GetReader()->IsPileUpFromNotSPDAndNotEMCal()) { fhDeltaEtaChargedPileUp[6]->Fill(ptTrig ,deltaEta) ; fhDeltaPhiChargedPileUp[6]->Fill(ptTrig ,deltaPhi) ; } | |
306 | ||
b1f720a7 | 307 | if(ptAssoc > 3 ) |
308 | { | |
17af6e24 | 309 | if(GetReader()->IsPileUpFromSPD()) { fhDeltaEtaChargedPtA3GeVPileUp[0]->Fill(ptTrig ,deltaEta) ; fhDeltaPhiChargedPtA3GeVPileUp[0]->Fill(ptTrig ,deltaPhi) ; } |
310 | if(GetReader()->IsPileUpFromEMCal()) { fhDeltaEtaChargedPtA3GeVPileUp[1]->Fill(ptTrig ,deltaEta) ; fhDeltaPhiChargedPtA3GeVPileUp[1]->Fill(ptTrig ,deltaPhi) ; } | |
311 | if(GetReader()->IsPileUpFromSPDOrEMCal()) { fhDeltaEtaChargedPtA3GeVPileUp[2]->Fill(ptTrig ,deltaEta) ; fhDeltaPhiChargedPtA3GeVPileUp[2]->Fill(ptTrig ,deltaPhi) ; } | |
312 | if(GetReader()->IsPileUpFromSPDAndEMCal()) { fhDeltaEtaChargedPtA3GeVPileUp[3]->Fill(ptTrig ,deltaEta) ; fhDeltaPhiChargedPtA3GeVPileUp[3]->Fill(ptTrig ,deltaPhi) ; } | |
313 | if(GetReader()->IsPileUpFromSPDAndNotEMCal()) { fhDeltaEtaChargedPtA3GeVPileUp[4]->Fill(ptTrig ,deltaEta) ; fhDeltaPhiChargedPtA3GeVPileUp[4]->Fill(ptTrig ,deltaPhi) ; } | |
314 | if(GetReader()->IsPileUpFromEMCalAndNotSPD()) { fhDeltaEtaChargedPtA3GeVPileUp[5]->Fill(ptTrig ,deltaEta) ; fhDeltaPhiChargedPtA3GeVPileUp[5]->Fill(ptTrig ,deltaPhi) ; } | |
315 | if(GetReader()->IsPileUpFromNotSPDAndNotEMCal()) { fhDeltaEtaChargedPtA3GeVPileUp[6]->Fill(ptTrig ,deltaEta) ; fhDeltaPhiChargedPtA3GeVPileUp[6]->Fill(ptTrig ,deltaPhi) ; } | |
b1f720a7 | 316 | } |
317 | } | |
318 | ||
319 | if(IsDataMC()) | |
320 | { | |
321 | Int_t mcIndex = GetMCTagHistogramIndex(mcTag); | |
322 | fhDeltaPhiChargedMC[mcIndex]->Fill(ptTrig , deltaPhi); | |
323 | } | |
907b38cd | 324 | |
325 | if(fDecayTrigger && decay) fhDeltaPhiDecayCharged ->Fill(ptTrig , deltaPhi); | |
326 | ||
327 | Double_t dphiBrad = -100; | |
328 | if(fFillBradHisto) | |
329 | { | |
330 | dphiBrad = atan2(sin(deltaPhiOrg), cos(deltaPhiOrg))/TMath::Pi();//-1 to 1 | |
331 | if(TMath::Abs(dphiBrad)>0.325 && TMath::Abs(dphiBrad)<0.475) //Hardcoded values, BAD, FIXME | |
332 | { | |
333 | fhAssocPtBkg->Fill(ptTrig, ptAssoc); | |
334 | } | |
335 | ||
336 | if(dphiBrad<-1./3) dphiBrad += 2; | |
337 | fhDeltaPhiBrad->Fill(ptTrig, dphiBrad); | |
338 | } | |
339 | ||
340 | // Fill histograms in bins of associated particle pT | |
8cc41381 | 341 | if(bin>=0) |
907b38cd | 342 | { |
8cc41381 | 343 | fhDeltaPhiDeltaEtaAssocPtBin [bin]->Fill(deltaPhi,deltaEta); |
344 | ||
345 | fhDeltaPhiAssocPtBin [bin]->Fill(ptTrig, deltaPhi); | |
2013f378 | 346 | |
347 | if(TMath::Abs(deltaEta)> 0.8) | |
8cc41381 | 348 | fhDeltaPhiAssocPtBinDEta08 [bin]->Fill(ptTrig, deltaPhi); |
349 | ||
03a96401 | 350 | if(TMath::Abs(deltaEta)< 0.01) |
8cc41381 | 351 | fhDeltaPhiAssocPtBinDEta0 [bin]->Fill(ptTrig, deltaPhi); |
2013f378 | 352 | |
353 | if (fFillBradHisto) | |
8cc41381 | 354 | fhDeltaPhiBradAssocPtBin [bin]->Fill(ptTrig, dphiBrad); |
2013f378 | 355 | |
356 | if(fDecayTrigger && decay) | |
8cc41381 | 357 | fhDeltaPhiDecayChargedAssocPtBin[bin]->Fill(ptTrig, deltaPhi); |
907b38cd | 358 | |
359 | if(fHMPIDCorrelation) | |
360 | { | |
361 | if( hmpidSignal > 0 ) | |
362 | { | |
363 | //printf("Track pt %f with HMPID signal %f \n",pt,hmpidSignal); | |
8cc41381 | 364 | fhDeltaPhiAssocPtBinHMPID[bin]->Fill(ptTrig, deltaPhi); |
907b38cd | 365 | } |
366 | ||
367 | if(phiAssoc > 5*TMath::DegToRad() && phiAssoc < 20*TMath::DegToRad()) | |
368 | { | |
369 | //printf("Track pt %f in HMPID acceptance phi %f \n ",pt,phi*TMath::RadToDeg() ); | |
8cc41381 | 370 | fhDeltaPhiAssocPtBinHMPIDAcc[bin]->Fill(ptTrig, deltaPhi); |
907b38cd | 371 | } |
372 | } | |
373 | } | |
374 | ||
375 | //fill different multiplicity histogram | |
376 | if(DoEventSelect()) | |
377 | { | |
378 | for(Int_t im = 0; im<GetMultiBin(); im++) | |
379 | { | |
380 | if(nTracks < ( GetMaxMulti() - GetMinMulti() )/GetMultiBin()*(im+1)) | |
381 | { | |
382 | fhTrigDeltaPhiCharged[im]->Fill(ptTrig,deltaPhi); | |
383 | fhTrigDeltaEtaCharged[im]->Fill(ptTrig,deltaEta); | |
384 | } | |
385 | } | |
386 | } | |
387 | } | |
388 | ||
389 | //____________________________________________________________________________________________________________________________________________________ | |
22ad7981 | 390 | Bool_t AliAnaParticleHadronCorrelation::FillChargedMCCorrelationHistograms(Float_t mcAssocPt, Float_t mcAssocPhi, Float_t mcAssocEta, |
391 | Float_t mcTrigPt, Float_t mcTrigPhi, Float_t mcTrigEta) | |
907b38cd | 392 | { |
393 | // Fill MC histograms independently of AOD or ESD | |
394 | ||
395 | //Select only hadrons in pt range | |
396 | if(mcAssocPt < fMinAssocPt || mcAssocPt > fMaxAssocPt) return kTRUE ; // exclude but continue | |
397 | ||
398 | if(mcAssocPhi < 0) mcAssocPhi+=TMath::TwoPi(); | |
399 | ||
400 | //remove trigger itself for correlation when use charged triggers | |
401 | if(TMath::Abs(mcAssocPt -mcTrigPt ) < 1e-6 && | |
402 | TMath::Abs(mcAssocPhi-mcTrigPhi) < 1e-6 && | |
403 | TMath::Abs(mcAssocEta-mcTrigEta) < 1e-6) return kTRUE ; // exclude but continue | |
404 | ||
405 | // Absolute leading? | |
406 | if( fMakeAbsoluteLeading && mcAssocPt > mcTrigPt ) return kFALSE; // jump event | |
407 | ||
408 | //jump out this event if near side associated partile pt larger than trigger | |
409 | if( fMakeNearSideLeading && mcAssocPt > mcTrigPt && | |
410 | TMath::Abs(mcAssocPhi-mcTrigPhi)<TMath::PiOver2() ) return kFALSE; // jump event | |
411 | ||
412 | Float_t mcdeltaPhi= mcTrigPhi-mcAssocPhi; | |
413 | if(mcdeltaPhi <= -TMath::PiOver2()) mcdeltaPhi+=TMath::TwoPi(); | |
414 | if(mcdeltaPhi > 3*TMath::PiOver2()) mcdeltaPhi-=TMath::TwoPi(); | |
415 | ||
416 | Float_t mcxE =-mcAssocPt/mcTrigPt*TMath::Cos(mcdeltaPhi);// -(mcAssocPx*pxprim+mcAssocPy*pyprim)/(mcTrigPt*mcTrigPt); | |
417 | Float_t mchbpXE =-100 ; | |
f16872ec | 418 | if(mcxE > 0 ) mchbpXE = TMath::Log(1./mcxE); |
907b38cd | 419 | |
420 | Float_t mczT = mcAssocPt/mcTrigPt ; | |
421 | Float_t mchbpZT =-100 ; | |
f16872ec | 422 | if(mczT > 0 ) mchbpZT = TMath::Log(1./mczT); |
907b38cd | 423 | |
424 | //Selection within angular range | |
425 | if( mcdeltaPhi< -TMath::PiOver2()) mcdeltaPhi+=TMath::TwoPi(); | |
426 | if( mcdeltaPhi>3*TMath::PiOver2()) mcdeltaPhi-=TMath::TwoPi(); | |
427 | ||
428 | Double_t mcpout = mcAssocPt*TMath::Sin(mcdeltaPhi) ; | |
429 | ||
430 | if(GetDebug() > 0 ) | |
431 | printf("AliAnaParticleHadronCorrelation::MakeMCChargedCorrelation() - Charged hadron: track Pt %f, track Phi %f, phi trigger %f. Cuts: delta phi %2.2f < %2.2f < %2.2f, pT min %2.2f \n", | |
432 | mcAssocPt,mcAssocPhi, mcTrigPhi,fDeltaPhiMinCut, mcdeltaPhi, fDeltaPhiMaxCut, GetMinPt()); | |
433 | ||
434 | // Fill Histograms | |
435 | fhMCEtaCharged ->Fill(mcAssocPt, mcAssocEta); | |
436 | fhMCPhiCharged ->Fill(mcAssocPt, mcAssocPhi); | |
437 | fhMCDeltaEtaCharged->Fill(mcTrigPt, mcTrigEta-mcAssocEta); | |
438 | fhMCDeltaPhiCharged->Fill(mcTrigPt, mcdeltaPhi); | |
439 | fhMCPtAssocDeltaPhi->Fill(mcAssocPt, mcdeltaPhi); | |
440 | ||
441 | fhMCDeltaPhiDeltaEtaCharged->Fill(mcdeltaPhi,mcTrigEta-mcAssocEta); | |
442 | ||
443 | //delta phi cut for correlation | |
444 | if( (mcdeltaPhi > fDeltaPhiMinCut) && (mcdeltaPhi < fDeltaPhiMaxCut) ) | |
445 | { | |
446 | fhMCDeltaPhiChargedPt->Fill(mcAssocPt,mcdeltaPhi); | |
447 | fhMCPtXECharged ->Fill(mcTrigPt,mcxE); | |
448 | fhMCPtHbpXECharged ->Fill(mcTrigPt,mchbpXE); | |
449 | fhMCPtZTCharged ->Fill(mcTrigPt,mczT); | |
450 | fhMCPtHbpZTCharged ->Fill(mcTrigPt,mchbpZT); | |
451 | fhMCPtTrigPout ->Fill(mcTrigPt, mcpout) ; | |
452 | } | |
9623bf34 | 453 | |
454 | //underlying event | |
455 | if ( (mcdeltaPhi > fUeDeltaPhiMinCut) && (mcdeltaPhi < fUeDeltaPhiMaxCut) ) | |
456 | { | |
457 | Double_t randomphi = gRandom->Uniform(TMath::Pi()/2,3*TMath::Pi()/2); | |
458 | Double_t mcUexE = -(mcAssocPt/mcTrigPt)*TMath::Cos(randomphi); | |
459 | ||
460 | if(mcUexE < 0.) mcUexE = -mcUexE; | |
461 | ||
462 | fhMCPtXEUeCharged->Fill(mcTrigPt,mcUexE); | |
463 | if(mcUexE > 0) fhMCPtHbpXEUeCharged->Fill(mcTrigPt,TMath::Log(1/mcUexE)); | |
464 | ||
465 | fhMCUePart->Fill(mcTrigPt); | |
466 | } | |
907b38cd | 467 | |
468 | return kTRUE; | |
469 | } | |
470 | ||
471 | //___________________________________________________________________________________________________________________ | |
22ad7981 | 472 | void AliAnaParticleHadronCorrelation::FillChargedMomentumImbalanceHistograms(Float_t ptTrig, Float_t ptAssoc, |
473 | Float_t xE, Float_t hbpXE, | |
474 | Float_t zT, Float_t hbpZT, | |
727a309a | 475 | Float_t pout, Float_t deltaPhi, |
22ad7981 | 476 | Int_t nTracks, Int_t charge, |
477 | Int_t bin, Bool_t decay, | |
478 | Int_t outTOF, Int_t mcTag) | |
907b38cd | 479 | |
480 | { | |
481 | // Fill mostly momentum imbalance related histograms | |
482 | ||
727a309a | 483 | fhXECharged ->Fill(ptTrig , xE); |
907b38cd | 484 | fhPtHbpXECharged ->Fill(ptTrig , hbpXE); |
485 | fhZTCharged ->Fill(ptTrig , zT); | |
486 | fhPtHbpZTCharged ->Fill(ptTrig , hbpZT); | |
487 | fhPtTrigPout ->Fill(ptTrig , pout) ; | |
488 | fhPtTrigCharged ->Fill(ptTrig , ptAssoc) ; | |
727a309a | 489 | if((deltaPhi > 5*TMath::Pi()/6.) && (deltaPhi < 7*TMath::Pi()/6.)) { |
490 | fhXECharged_Cone2 ->Fill(ptTrig , xE); | |
491 | fhPtHbpXECharged_Cone2 ->Fill(ptTrig , hbpXE); | |
492 | } | |
907b38cd | 493 | |
b1f720a7 | 494 | // Pile up studies |
17af6e24 | 495 | if(fFillPileUpHistograms) |
b1f720a7 | 496 | { |
2a9171b5 | 497 | if (outTOF==1) |
fedea415 | 498 | { |
499 | fhXEChargedOtherBC ->Fill(ptTrig,xE); | |
500 | fhZTChargedOtherBC ->Fill(ptTrig,zT); | |
501 | fhPtTrigChargedOtherBC->Fill(ptTrig,ptAssoc); | |
502 | } | |
2a9171b5 | 503 | else if(outTOF==0) |
504 | { | |
505 | fhXEChargedBC0 ->Fill(ptTrig,xE); | |
506 | fhZTChargedBC0 ->Fill(ptTrig,zT); | |
507 | fhPtTrigChargedBC0->Fill(ptTrig,ptAssoc); | |
508 | } | |
509 | ||
cc944149 | 510 | Int_t vtxBC = GetReader()->GetVertexBC(); |
511 | if(vtxBC == 0 || vtxBC==AliVTrack::kTOFBCNA) | |
512 | { | |
513 | fhXEChargedVtxBC0 ->Fill(ptTrig,xE); | |
514 | fhZTChargedVtxBC0 ->Fill(ptTrig,zT); | |
515 | fhPtTrigChargedVtxBC0->Fill(ptTrig,ptAssoc); | |
516 | } | |
517 | ||
fedea415 | 518 | if(GetReader()->IsPileUpFromSPD()) { fhXEChargedPileUp[0]->Fill(ptTrig,xE); fhZTChargedPileUp[0]->Fill(ptTrig,zT); fhPtTrigChargedPileUp[0]->Fill(ptTrig,ptAssoc); } |
519 | if(GetReader()->IsPileUpFromEMCal()) { fhXEChargedPileUp[1]->Fill(ptTrig,xE); fhZTChargedPileUp[1]->Fill(ptTrig,zT); fhPtTrigChargedPileUp[1]->Fill(ptTrig,ptAssoc); } | |
520 | if(GetReader()->IsPileUpFromSPDOrEMCal()) { fhXEChargedPileUp[2]->Fill(ptTrig,xE); fhZTChargedPileUp[2]->Fill(ptTrig,zT); fhPtTrigChargedPileUp[2]->Fill(ptTrig,ptAssoc); } | |
521 | if(GetReader()->IsPileUpFromSPDAndEMCal()) { fhXEChargedPileUp[3]->Fill(ptTrig,xE); fhZTChargedPileUp[3]->Fill(ptTrig,zT); fhPtTrigChargedPileUp[3]->Fill(ptTrig,ptAssoc); } | |
522 | if(GetReader()->IsPileUpFromSPDAndNotEMCal()) { fhXEChargedPileUp[4]->Fill(ptTrig,xE); fhZTChargedPileUp[4]->Fill(ptTrig,zT); fhPtTrigChargedPileUp[4]->Fill(ptTrig,ptAssoc); } | |
523 | if(GetReader()->IsPileUpFromEMCalAndNotSPD()) { fhXEChargedPileUp[5]->Fill(ptTrig,xE); fhZTChargedPileUp[5]->Fill(ptTrig,zT); fhPtTrigChargedPileUp[5]->Fill(ptTrig,ptAssoc); } | |
524 | if(GetReader()->IsPileUpFromNotSPDAndNotEMCal()) { fhXEChargedPileUp[6]->Fill(ptTrig,xE); fhZTChargedPileUp[6]->Fill(ptTrig,zT); fhPtTrigChargedPileUp[6]->Fill(ptTrig,ptAssoc); } | |
b1f720a7 | 525 | } |
526 | ||
764ab1f4 | 527 | if(IsDataMC()) |
528 | { | |
b1f720a7 | 529 | Int_t mcIndex = GetMCTagHistogramIndex(mcTag); |
530 | fhXEChargedMC [mcIndex]->Fill(ptTrig , xE ); | |
764ab1f4 | 531 | } |
532 | ||
907b38cd | 533 | if(fDecayTrigger && decay) |
534 | { | |
535 | fhXEDecayCharged->Fill(ptTrig,xE); | |
536 | fhZTDecayCharged->Fill(ptTrig,zT); | |
537 | } // photon decay pi0/eta trigger | |
538 | ||
8cc41381 | 539 | if(bin >= 0 )//away side |
907b38cd | 540 | { |
8cc41381 | 541 | fhXEAssocPtBin[bin]->Fill(ptTrig, xE) ; |
542 | fhZTAssocPtBin[bin]->Fill(ptTrig, zT) ; | |
907b38cd | 543 | |
544 | if(fDecayTrigger && decay) | |
545 | { | |
8cc41381 | 546 | fhXEDecayChargedAssocPtBin[bin]->Fill(ptTrig, xE); |
547 | fhZTDecayChargedAssocPtBin[bin]->Fill(ptTrig, zT); | |
907b38cd | 548 | } |
549 | } | |
550 | ||
551 | if(charge > 0) | |
552 | { | |
553 | fhXEPosCharged->Fill(ptTrig,xE) ; | |
554 | fhZTPosCharged->Fill(ptTrig,zT) ; | |
555 | } | |
556 | else | |
557 | { | |
558 | fhXENegCharged->Fill(ptTrig,xE) ; | |
559 | fhZTNegCharged->Fill(ptTrig,zT) ; | |
560 | } | |
561 | ||
562 | //fill different multiplicity histogram | |
563 | if(DoEventSelect()) | |
564 | { | |
565 | for(Int_t im=0; im<GetMultiBin(); im++) | |
566 | { | |
567 | if(nTracks < ( GetMaxMulti() - GetMinMulti() )/GetMultiBin()*(im+1)) | |
568 | { | |
569 | fhTrigXECorr[im]->Fill(ptTrig,xE); | |
570 | fhTrigZTCorr[im]->Fill(ptTrig,zT); | |
571 | } | |
572 | } | |
573 | } //multiplicity events selection | |
574 | } | |
575 | ||
576 | //_______________________________________________________________________________________________________________________ | |
22ad7981 | 577 | void AliAnaParticleHadronCorrelation::FillChargedUnderlyingEventHistograms(Float_t ptTrig, Float_t ptAssoc, |
578 | Float_t deltaPhi, Int_t nTracks, Int_t outTOF) | |
907b38cd | 579 | { |
580 | // Fill underlying event histograms | |
581 | ||
582 | fhDeltaPhiUeChargedPt->Fill(ptAssoc,deltaPhi); | |
583 | ||
08f220c8 | 584 | Double_t randomphi = gRandom->Uniform(fDeltaPhiMinCut,fDeltaPhiMaxCut); |
907b38cd | 585 | Double_t uexE = -(ptAssoc/ptTrig)*TMath::Cos(randomphi); |
586 | Double_t uezT = ptAssoc/ptTrig; | |
587 | ||
588 | if(uexE < 0.) uexE = -uexE; | |
589 | ||
590 | fhXEUeCharged->Fill(ptTrig,uexE); | |
f16872ec | 591 | if(uexE > 0) fhPtHbpXEUeCharged->Fill(ptTrig,TMath::Log(1/uexE)); |
907b38cd | 592 | |
593 | fhZTUeCharged->Fill(ptTrig,uezT); | |
f16872ec | 594 | if(uexE > 0) fhPtHbpZTUeCharged->Fill(ptTrig,TMath::Log(1/uezT)); |
907b38cd | 595 | |
b1f720a7 | 596 | // Pile up studies |
17af6e24 | 597 | |
598 | if(fFillPileUpHistograms) | |
b1f720a7 | 599 | { |
2a9171b5 | 600 | if (outTOF==1) |
fedea415 | 601 | { |
602 | fhXEUeChargedOtherBC->Fill(ptTrig,uexE); | |
603 | fhZTUeChargedOtherBC->Fill(ptTrig,uezT); | |
604 | } | |
2a9171b5 | 605 | else if(outTOF==0) |
606 | { | |
607 | fhXEUeChargedBC0->Fill(ptTrig,uexE); | |
608 | fhZTUeChargedBC0->Fill(ptTrig,uezT); | |
609 | } | |
fedea415 | 610 | |
cc944149 | 611 | Int_t vtxBC = GetReader()->GetVertexBC(); |
612 | if(vtxBC == 0 || vtxBC==AliVTrack::kTOFBCNA) | |
613 | { | |
614 | fhXEUeChargedVtxBC0->Fill(ptTrig,uexE); | |
615 | fhZTUeChargedVtxBC0->Fill(ptTrig,uezT); | |
616 | } | |
617 | ||
17af6e24 | 618 | if(GetReader()->IsPileUpFromSPD()) { fhXEUeChargedPileUp[0]->Fill(ptTrig,uexE); fhZTUeChargedPileUp[0]->Fill(ptTrig,uezT);} |
619 | if(GetReader()->IsPileUpFromEMCal()) { fhXEUeChargedPileUp[1]->Fill(ptTrig,uexE); fhZTUeChargedPileUp[1]->Fill(ptTrig,uezT);} | |
620 | if(GetReader()->IsPileUpFromSPDOrEMCal()) { fhXEUeChargedPileUp[2]->Fill(ptTrig,uexE); fhZTUeChargedPileUp[2]->Fill(ptTrig,uezT);} | |
621 | if(GetReader()->IsPileUpFromSPDAndEMCal()) { fhXEUeChargedPileUp[3]->Fill(ptTrig,uexE); fhZTUeChargedPileUp[3]->Fill(ptTrig,uezT);} | |
622 | if(GetReader()->IsPileUpFromSPDAndNotEMCal()) { fhXEUeChargedPileUp[4]->Fill(ptTrig,uexE); fhZTUeChargedPileUp[4]->Fill(ptTrig,uezT);} | |
623 | if(GetReader()->IsPileUpFromEMCalAndNotSPD()) { fhXEUeChargedPileUp[5]->Fill(ptTrig,uexE); fhZTUeChargedPileUp[5]->Fill(ptTrig,uezT);} | |
624 | if(GetReader()->IsPileUpFromNotSPDAndNotEMCal()) { fhXEUeChargedPileUp[6]->Fill(ptTrig,uexE); fhZTUeChargedPileUp[6]->Fill(ptTrig,uezT);} | |
625 | } | |
b1f720a7 | 626 | |
907b38cd | 627 | if(DoEventSelect()) |
628 | { | |
629 | for(Int_t im=0; im<GetMultiBin(); im++) | |
630 | { | |
631 | if(nTracks < ( GetMaxMulti() - GetMinMulti() )/GetMultiBin()*(im+1)) | |
632 | { | |
633 | fhTrigXEUeCorr[im]->Fill(ptTrig,uexE); // xE? CHECK | |
634 | fhTrigZTUeCorr[im]->Fill(ptTrig,uezT); // zT? CHECK | |
635 | } | |
636 | } | |
637 | } //multiplicity events selection | |
638 | } | |
639 | ||
8cc41381 | 640 | //_____________________________________________________________________________________________________ |
22ad7981 | 641 | void AliAnaParticleHadronCorrelation::FillChargedUnderlyingEventSidesHistograms(Float_t ptTrig, |
642 | Float_t ptAssoc, | |
643 | Float_t deltaPhi) | |
907b38cd | 644 | { |
08f220c8 | 645 | // Fill underlying event histograms to the left and right of trigger |
646 | if((deltaPhi<-fUeDeltaPhiMinCut) || (deltaPhi >2*fUeDeltaPhiMaxCut)) | |
907b38cd | 647 | { |
08f220c8 | 648 | fhDeltaPhiUeLeftCharged->Fill(ptAssoc,deltaPhi); |
649 | Double_t randomphi = gRandom->Uniform(fDeltaPhiMinCut,fDeltaPhiMaxCut); | |
650 | Double_t uexE = -(ptAssoc/ptTrig)*TMath::Cos(randomphi); | |
651 | Double_t uezT = ptAssoc/ptTrig; | |
652 | ||
653 | if(uexE < 0.) uexE = -uexE; | |
654 | ||
655 | fhXEUeLeftCharged->Fill(ptTrig,uexE); | |
656 | if(uexE > 0) fhPtHbpXEUeLeftCharged->Fill(ptTrig,TMath::Log(1/uexE)); | |
657 | ||
658 | fhZTUeLeftCharged->Fill(ptTrig,uezT); | |
659 | if(uexE > 0) fhPtHbpZTUeLeftCharged->Fill(ptTrig,TMath::Log(1/uezT)); | |
907b38cd | 660 | fhDeltaPhiUeLeftCharged->Fill(ptAssoc, deltaPhi); |
907b38cd | 661 | } |
662 | ||
663 | if((deltaPhi > fUeDeltaPhiMinCut) && (deltaPhi < fUeDeltaPhiMaxCut)) | |
664 | { | |
08f220c8 | 665 | fhDeltaPhiUeRightCharged->Fill(ptAssoc,deltaPhi); |
666 | Double_t randomphi = gRandom->Uniform(fDeltaPhiMinCut,fDeltaPhiMaxCut); | |
667 | Double_t uexE = -(ptAssoc/ptTrig)*TMath::Cos(randomphi); | |
668 | Double_t uezT = ptAssoc/ptTrig; | |
669 | ||
670 | if(uexE < 0.) uexE = -uexE; | |
671 | ||
672 | fhXEUeRightCharged->Fill(ptTrig,uexE); | |
673 | if(uexE > 0) fhPtHbpXEUeRightCharged->Fill(ptTrig,TMath::Log(1/uexE)); | |
674 | ||
675 | fhZTUeRightCharged->Fill(ptTrig,uezT); | |
676 | if(uexE > 0) fhPtHbpZTUeRightCharged->Fill(ptTrig,TMath::Log(1/uezT)); | |
907b38cd | 677 | fhDeltaPhiUeRightCharged->Fill(ptAssoc, deltaPhi); |
907b38cd | 678 | } |
8cc41381 | 679 | |
680 | if((deltaPhi<-fUeDeltaPhiMinCut) && (deltaPhi >-TMath::Pi()/2)) | |
681 | { | |
682 | fhDeltaPhiUeLeftDownCharged->Fill(ptAssoc,deltaPhi); | |
683 | Double_t randomphi = gRandom->Uniform(fDeltaPhiMinCut,fDeltaPhiMaxCut); | |
684 | Double_t uexE = -(ptAssoc/ptTrig)*TMath::Cos(randomphi); | |
685 | ||
686 | if(uexE < 0.) uexE = -uexE; | |
687 | ||
688 | fhXEUeLeftDownCharged->Fill(ptTrig,uexE); | |
689 | } | |
690 | ||
691 | if((deltaPhi>2*fUeDeltaPhiMaxCut) && (deltaPhi <3*TMath::Pi()/2)) | |
692 | { | |
693 | fhDeltaPhiUeLeftUpCharged->Fill(ptAssoc,deltaPhi); | |
694 | Double_t randomphi = gRandom->Uniform(fDeltaPhiMinCut,fDeltaPhiMaxCut); | |
695 | Double_t uexE = -(ptAssoc/ptTrig)*TMath::Cos(randomphi); | |
696 | ||
697 | if(uexE < 0.) uexE = -uexE; | |
698 | ||
699 | fhXEUeLeftUpCharged->Fill(ptTrig,uexE); | |
700 | } | |
701 | ||
702 | if((deltaPhi > TMath::Pi()/2) && (deltaPhi < fUeDeltaPhiMaxCut)) | |
703 | { | |
704 | fhDeltaPhiUeRightUpCharged->Fill(ptAssoc,deltaPhi); | |
705 | Double_t randomphi = gRandom->Uniform(fDeltaPhiMinCut,fDeltaPhiMaxCut); | |
706 | Double_t uexE = -(ptAssoc/ptTrig)*TMath::Cos(randomphi); | |
707 | ||
708 | if(uexE < 0.) uexE = -uexE; | |
709 | ||
710 | fhXEUeRightUpCharged->Fill(ptTrig,uexE); | |
711 | } | |
712 | ||
713 | if((deltaPhi > fUeDeltaPhiMinCut) && (deltaPhi < TMath::Pi()/2)) | |
714 | { | |
715 | fhDeltaPhiUeRightDownCharged->Fill(ptAssoc,deltaPhi); | |
716 | Double_t randomphi = gRandom->Uniform(fDeltaPhiMinCut,fDeltaPhiMaxCut); | |
717 | Double_t uexE = -(ptAssoc/ptTrig)*TMath::Cos(randomphi); | |
718 | ||
719 | if(uexE < 0.) uexE = -uexE; | |
720 | ||
721 | fhXEUeRightDownCharged->Fill(ptTrig,uexE); | |
722 | } | |
907b38cd | 723 | } |
724 | ||
725 | //______________________________________________________________________________________________________________________________ | |
22ad7981 | 726 | void AliAnaParticleHadronCorrelation::FillDecayPhotonCorrelationHistograms(Float_t ptAssoc, Float_t phiAssoc, |
727 | TLorentzVector mom1, TLorentzVector mom2, | |
728 | Bool_t bChargedOrNeutral) | |
907b38cd | 729 | { |
730 | // Do correlation with decay photons of triggered pi0 or eta | |
731 | ||
732 | // Calculate the correlation parameters | |
733 | Float_t ptDecay1 = mom1.Pt(); | |
734 | Float_t ptDecay2 = mom2.Pt(); | |
735 | ||
736 | Float_t zTDecay1 = -100, zTDecay2 = -100; | |
737 | if(ptDecay1) zTDecay1 = ptAssoc/ptDecay1 ; | |
738 | if(ptDecay2) zTDecay2 = ptAssoc/ptDecay2 ; | |
739 | ||
740 | Float_t deltaPhiDecay1 = mom1.Phi()-phiAssoc; | |
741 | if(deltaPhiDecay1< -TMath::PiOver2()) deltaPhiDecay1+=TMath::TwoPi(); | |
742 | if(deltaPhiDecay1>3*TMath::PiOver2()) deltaPhiDecay1-=TMath::TwoPi(); | |
743 | ||
744 | Float_t deltaPhiDecay2 = mom2.Phi()-phiAssoc; | |
745 | if(deltaPhiDecay2< -TMath::PiOver2()) deltaPhiDecay2+=TMath::TwoPi(); | |
746 | if(deltaPhiDecay2>3*TMath::PiOver2()) deltaPhiDecay2-=TMath::TwoPi(); | |
747 | ||
748 | Float_t xEDecay1 =-zTDecay1*TMath::Cos(deltaPhiDecay1); // -(px*pxTrig+py*pyTrig)/(ptTrig*ptTrig); | |
749 | Float_t xEDecay2 =-zTDecay2*TMath::Cos(deltaPhiDecay2); // -(px*pxTrig+py*pyTrig)/(ptTrig*ptTrig); | |
750 | ||
751 | if(bChargedOrNeutral) // correlate with charges | |
752 | { | |
753 | fhDeltaPhiDecayCharged->Fill(ptDecay1, deltaPhiDecay1); | |
754 | fhDeltaPhiDecayCharged->Fill(ptDecay2, deltaPhiDecay2); | |
755 | ||
2e876d85 | 756 | if(GetDebug() > 1) printf("AliAnaParticleHadronCorrelation::FillDecayPhotonHistograms( Charged corr) - deltaPhoton1 = %f, deltaPhoton2 = %f \n", deltaPhiDecay1, deltaPhiDecay2); |
907b38cd | 757 | |
758 | if( (deltaPhiDecay1 > fDeltaPhiMinCut) && ( deltaPhiDecay1 < fDeltaPhiMaxCut) ) | |
759 | { | |
760 | fhZTDecayCharged->Fill(ptDecay1,zTDecay1); | |
761 | fhXEDecayCharged->Fill(ptDecay1,xEDecay1); | |
762 | } | |
763 | if( (deltaPhiDecay2 > fDeltaPhiMinCut) && ( deltaPhiDecay2 < fDeltaPhiMaxCut) ) | |
764 | { | |
765 | fhZTDecayCharged->Fill(ptDecay2,zTDecay2); | |
766 | fhXEDecayCharged->Fill(ptDecay2,xEDecay2); | |
767 | } | |
768 | } | |
769 | else // correlate with neutrals | |
770 | { | |
771 | fhDeltaPhiDecayCharged->Fill(ptDecay1, deltaPhiDecay1); | |
772 | fhDeltaPhiDecayCharged->Fill(ptDecay2, deltaPhiDecay2); | |
773 | ||
2e876d85 | 774 | if(GetDebug() > 1) printf("AliAnaParticleHadronCorrelation::FillDecayPhotonHistograms(Neutral corr) - deltaPhoton1 = %f, deltaPhoton2 = %f \n", deltaPhiDecay1, deltaPhiDecay2); |
907b38cd | 775 | |
776 | if( (deltaPhiDecay1 > fDeltaPhiMinCut) && ( deltaPhiDecay1 < fDeltaPhiMaxCut) ) | |
777 | { | |
778 | fhZTDecayCharged->Fill(ptDecay1,zTDecay1); | |
779 | fhXEDecayCharged->Fill(ptDecay1,xEDecay1); | |
780 | } | |
781 | if( (deltaPhiDecay2 > fDeltaPhiMinCut) && ( deltaPhiDecay2 < fDeltaPhiMaxCut) ) | |
782 | { | |
783 | fhZTDecayCharged->Fill(ptDecay2,zTDecay2); | |
784 | fhXEDecayCharged->Fill(ptDecay2,xEDecay2); | |
785 | } | |
786 | } | |
787 | } | |
788 | ||
789 | //______________________________________________________________________________________________________________________________________________________ | |
22ad7981 | 790 | void AliAnaParticleHadronCorrelation::FillNeutralAngularCorrelationHistograms(Float_t ptAssoc, Float_t ptTrig, |
791 | Float_t phiAssoc, Float_t phiTrig, Float_t & deltaPhi, | |
792 | Float_t etaAssoc, Float_t etaTrig) | |
907b38cd | 793 | { |
794 | // Fill angular correlation related histograms | |
795 | ||
796 | Float_t deltaEta = etaTrig-etaAssoc; | |
797 | deltaPhi = phiTrig-phiAssoc; | |
798 | ||
799 | if(deltaPhi <= -TMath::PiOver2()) deltaPhi+=TMath::TwoPi(); | |
800 | if(deltaPhi > 3*TMath::PiOver2()) deltaPhi-=TMath::TwoPi(); | |
801 | ||
802 | fhEtaNeutral ->Fill(ptAssoc,etaAssoc); | |
803 | fhPhiNeutral ->Fill(ptAssoc,phiAssoc); | |
804 | fhDeltaEtaNeutral->Fill(ptTrig ,deltaEta); | |
805 | fhDeltaPhiNeutral->Fill(ptTrig ,deltaPhi); | |
806 | ||
807 | if(ptAssoc > 2 ) fhDeltaPhiDeltaEtaNeutral->Fill(deltaPhi, deltaEta); | |
808 | ||
809 | } | |
810 | ||
811 | //_____________________________________________________________________________________________________________________________ | |
22ad7981 | 812 | void AliAnaParticleHadronCorrelation::FillNeutralUnderlyingEventSidesHistograms(Float_t ptTrig, Float_t ptAssoc, |
813 | Float_t xE, Float_t hbpXE, | |
814 | Float_t zT, Float_t hbpZT, | |
815 | Float_t deltaPhi) | |
907b38cd | 816 | { |
817 | // Fill underlying event histograms to the left and right of trigger | |
818 | ||
819 | if((deltaPhi<-fUeDeltaPhiMinCut) && (deltaPhi >-fUeDeltaPhiMaxCut)) | |
820 | { | |
821 | fhDeltaPhiUeLeftNeutral->Fill(ptAssoc, deltaPhi); | |
822 | fhXEUeLeftNeutral ->Fill(ptTrig , xE); | |
823 | fhPtHbpXEUeLeftNeutral ->Fill(ptTrig , hbpXE); | |
824 | fhZTUeLeftNeutral ->Fill(ptTrig , zT); | |
825 | fhPtHbpZTUeLeftNeutral ->Fill(ptTrig , hbpZT); | |
826 | } | |
827 | ||
828 | if((deltaPhi > fUeDeltaPhiMinCut) && (deltaPhi < fUeDeltaPhiMaxCut)) | |
829 | { | |
830 | fhDeltaPhiUeRightNeutral->Fill(ptAssoc, deltaPhi); | |
831 | fhXEUeRightNeutral ->Fill(ptTrig , xE); | |
832 | fhPtHbpXEUeRightNeutral ->Fill(ptTrig , hbpXE); | |
833 | fhZTUeRightNeutral ->Fill(ptTrig , zT); | |
834 | fhPtHbpZTUeRightNeutral ->Fill(ptTrig , hbpZT); | |
835 | } | |
836 | } | |
837 | ||
31864468 | 838 | //______________________________________________________ |
839 | void AliAnaParticleHadronCorrelation::FillEventMixPool() | |
840 | { | |
841 | // Fill the pool with tracks if requested | |
842 | ||
843 | if(DoOwnMix()) | |
844 | { | |
845 | FillChargedEventMixPool(); | |
846 | ||
847 | if(OnlyIsolated() || fFillNeutralEventMixPool) | |
848 | FillNeutralEventMixPool(); | |
849 | } | |
850 | ||
851 | } | |
852 | ||
029dea5a | 853 | //_____________________________________________________________ |
854 | void AliAnaParticleHadronCorrelation::FillChargedEventMixPool() | |
855 | { | |
d07ffd54 | 856 | // Mixed event pool filling for tracks |
31864468 | 857 | |
7ed3a248 | 858 | if(fUseMixStoredInReader && GetReader()->GetLastTracksMixedEvent() == GetEventNumber()) |
859 | { | |
860 | //printf("%s : Pool already filled for this event !!!\n",GetInputAODName().Data()); | |
861 | return ; // pool filled previously for another trigger | |
862 | } | |
863 | ||
029dea5a | 864 | Int_t nTracks = GetCTSTracks()->GetEntriesFast(); |
31864468 | 865 | |
029dea5a | 866 | AliAnalysisManager * manager = AliAnalysisManager::GetAnalysisManager(); |
867 | AliInputEventHandler * inputHandler = dynamic_cast<AliInputEventHandler*>(manager->GetInputEventHandler()); | |
868 | ||
c6b4facc | 869 | if(!inputHandler) return ; |
31864468 | 870 | |
d07ffd54 | 871 | // Do mixing only with MB event (or the chosen mask), if not skip |
872 | if( !(inputHandler->IsEventSelected( ) & GetReader()->GetMixEventTriggerMask()) ) return ; | |
873 | ||
874 | fhNtracksMB->Fill(nTracks); | |
875 | ||
876 | Int_t eventBin = GetEventMixBin(); | |
877 | ||
878 | //Check that the bin exists, if not (bad determination of RP, centrality or vz bin) do nothing | |
879 | if(eventBin < 0) return; | |
880 | ||
881 | TObjArray * mixEventTracks = new TObjArray; | |
882 | ||
883 | if(fUseMixStoredInReader) | |
029dea5a | 884 | { |
d07ffd54 | 885 | fListMixTrackEvents[eventBin] = GetReader()->GetListWithMixedEventsForTracks(eventBin); |
886 | } | |
887 | ||
888 | if(!fListMixTrackEvents[eventBin]) fListMixTrackEvents[eventBin] = new TList(); | |
889 | ||
890 | //printf("%s ***** Pool Event bin : %d - nTracks %d\n",GetInputAODName().Data(),eventBin, GetCTSTracks()->GetEntriesFast()); | |
891 | ||
892 | TList * pool = fListMixTrackEvents[eventBin]; | |
893 | ||
894 | TVector3 p3; | |
895 | for(Int_t ipr = 0;ipr < GetCTSTracks()->GetEntriesFast() ; ipr ++ ) | |
896 | { | |
897 | AliVTrack * track = (AliVTrack *) (GetCTSTracks()->At(ipr)) ; | |
029dea5a | 898 | |
d07ffd54 | 899 | Double_t mom[3] = {track->Px(),track->Py(),track->Pz()}; |
900 | p3.SetXYZ(mom[0],mom[1],mom[2]); | |
901 | Float_t pt = p3.Pt(); | |
2e876d85 | 902 | |
d07ffd54 | 903 | //Select only hadrons in pt range |
904 | if(pt < fMinAssocPt || pt > fMaxAssocPt) continue ; | |
029dea5a | 905 | |
d07ffd54 | 906 | AliAODPWG4Particle * mixedTrack = new AliAODPWG4Particle(mom[0],mom[1],mom[2],0); |
907 | mixedTrack->SetDetector("CTS"); | |
908 | mixedTrack->SetChargedBit(track->Charge()>0); | |
909 | mixEventTracks->Add(mixedTrack); | |
910 | } | |
911 | ||
912 | //Set the event number where the last event was added, to avoid double pool filling | |
913 | GetReader()->SetLastTracksMixedEvent(GetEventNumber()); | |
914 | ||
915 | //printf("Add event to pool with %d tracks \n ",mixEventTracks->GetEntries()); | |
916 | pool->AddFirst(mixEventTracks); | |
917 | mixEventTracks = 0; | |
918 | ||
919 | //printf("Pool size %d, max %d\n",pool->GetSize(), GetNMaxEvMix()); | |
920 | ||
921 | if(pool->GetSize() > GetNMaxEvMix()) | |
922 | {//Remove last event | |
923 | TClonesArray * tmp = static_cast<TClonesArray*>(pool->Last()) ; | |
924 | pool->RemoveLast() ; | |
925 | delete tmp ; | |
926 | } | |
927 | } | |
928 | ||
929 | //_____________________________________________________________ | |
930 | void AliAnaParticleHadronCorrelation::FillNeutralEventMixPool() | |
931 | { | |
932 | // Mixed event pool filling for neutral clusters | |
933 | // Right now only for EMCAL and in isolation case | |
934 | ||
935 | //printf("FillNeutralEventMixPool for %s\n",GetInputAODName().Data()); | |
936 | ||
2bb7ac98 | 937 | TObjArray * pl = GetEMCALClusters(); |
938 | //if (GetAODObjArrayName.Contains("PHOS") )pl = GetPHOSClusters(); | |
939 | //else pl = GetEMCALClusters(); | |
940 | ||
941 | Int_t nClusters = pl->GetEntriesFast(); | |
2bb7ac98 | 942 | |
d07ffd54 | 943 | if(fUseMixStoredInReader && GetReader()->GetLastCaloMixedEvent() == GetEventNumber()) |
944 | { | |
945 | //printf("%s : Pool already filled for this event !!!\n",GetInputAODName().Data()); | |
946 | return ; // pool filled previously for another trigger | |
947 | } | |
948 | ||
d07ffd54 | 949 | AliAnalysisManager * manager = AliAnalysisManager::GetAnalysisManager(); |
950 | AliInputEventHandler * inputHandler = dynamic_cast<AliInputEventHandler*>(manager->GetInputEventHandler()); | |
951 | ||
952 | if(!inputHandler) return ; | |
31864468 | 953 | |
d07ffd54 | 954 | // Do mixing only with MB event (or the chosen mask), if not skip |
955 | if( !(inputHandler->IsEventSelected( ) & GetReader()->GetMixEventTriggerMask()) ) return ; | |
956 | ||
2bb7ac98 | 957 | fhNclustersMB->Fill(nClusters); |
d07ffd54 | 958 | |
959 | Int_t eventBin = GetEventMixBin(); | |
960 | ||
961 | //Check that the bin exists, if not (bad determination of RP, centrality or vz bin) do nothing | |
962 | if(eventBin < 0) return; | |
963 | ||
964 | TObjArray * mixEventCalo = new TObjArray; | |
965 | ||
966 | if(fUseMixStoredInReader) | |
967 | { | |
968 | fListMixCaloEvents[eventBin] = GetReader()->GetListWithMixedEventsForCalo(eventBin); | |
969 | } | |
970 | ||
971 | if(!fListMixCaloEvents[eventBin]) fListMixCaloEvents[eventBin] = new TList(); | |
972 | ||
973 | TList * poolCalo = fListMixCaloEvents[eventBin]; | |
974 | ||
d07ffd54 | 975 | TLorentzVector mom; |
2bb7ac98 | 976 | |
977 | for(Int_t ipr = 0;ipr < nClusters ; ipr ++ ) | |
d07ffd54 | 978 | { |
979 | AliVCluster * calo = (AliVCluster *) (pl->At(ipr)) ; | |
980 | ||
981 | // remove matched clusters | |
982 | if( IsTrackMatched( calo, GetReader()->GetInputEvent() ) ) continue ; | |
283f989c | 983 | |
2bb7ac98 | 984 | //Cluster momentum calculation |
d07ffd54 | 985 | if(GetReader()->GetDataType() != AliCaloTrackReader::kMC) |
283f989c | 986 | { |
d07ffd54 | 987 | calo->GetMomentum(mom,GetVertex(0)) ; |
988 | }//Assume that come from vertex in straight line | |
989 | else | |
029dea5a | 990 | { |
d07ffd54 | 991 | Double_t vertex[]={0,0,0}; |
992 | calo->GetMomentum(mom,vertex) ; | |
029dea5a | 993 | } |
994 | ||
d07ffd54 | 995 | Float_t pt = mom.Pt(); |
996 | //Select only clusters in pt range | |
997 | if(pt < fMinAssocPt || pt > fMaxAssocPt) continue ; | |
2e876d85 | 998 | |
d07ffd54 | 999 | AliAODPWG4Particle * mixedCalo = new AliAODPWG4Particle(mom); |
1000 | mixedCalo->SetDetector("EMCAL"); | |
1001 | mixEventCalo->Add(mixedCalo); | |
1002 | } | |
1003 | ||
1004 | //Set the event number where the last event was added, to avoid double pool filling | |
1005 | GetReader()->SetLastCaloMixedEvent(GetEventNumber()); | |
1006 | ||
1007 | //printf("Add event to pool with %d clusters \n ",mixEventCalo->GetEntries()); | |
1008 | poolCalo->AddFirst(mixEventCalo); | |
1009 | mixEventCalo = 0; | |
1010 | ||
1011 | //printf("Pool size %d, max %d\n",poolCalo->GetSize(), GetNMaxEvMix()); | |
029dea5a | 1012 | |
d07ffd54 | 1013 | if(poolCalo->GetSize() > GetNMaxEvMix()) |
1014 | {//Remove last event | |
1015 | TClonesArray * tmp = static_cast<TClonesArray*>(poolCalo->Last()) ; | |
1016 | poolCalo->RemoveLast() ; | |
1017 | delete tmp ; | |
1018 | } | |
029dea5a | 1019 | } |
1020 | ||
05d0d05d | 1021 | //____________________________________________________________ |
1022 | TObjString* AliAnaParticleHadronCorrelation::GetAnalysisCuts() | |
1023 | { | |
1024 | //Save parameters used for analysis | |
1025 | TString parList ; //this will be list of parameters used for this analysis. | |
1026 | const Int_t buffersize = 560; | |
1027 | char onePar[buffersize] ; | |
1028 | ||
1029 | snprintf(onePar,buffersize,"--- AliAnaPaticleHadronCorrelation ---\n") ; | |
1030 | parList+=onePar ; | |
66e64043 | 1031 | snprintf(onePar,buffersize," Pt Trigger > %3.2f ", fMinTriggerPt) ; |
05d0d05d | 1032 | parList+=onePar ; |
66e64043 | 1033 | snprintf(onePar,buffersize," %3.2f < Pt associated < %3.2f ", fMinAssocPt, fMaxAssocPt) ; |
05d0d05d | 1034 | parList+=onePar ; |
66e64043 | 1035 | snprintf(onePar,buffersize," %3.2f < Phi trigger particle-Hadron < %3.2f ", fDeltaPhiMinCut, fDeltaPhiMaxCut) ; |
05d0d05d | 1036 | parList+=onePar ; |
66e64043 | 1037 | snprintf(onePar,buffersize," %3.2f < Phi trigger particle-UeHadron < %3.2f ", fUeDeltaPhiMinCut, fUeDeltaPhiMaxCut) ; |
05d0d05d | 1038 | parList+=onePar ; |
66e64043 | 1039 | snprintf(onePar,buffersize,"Isolated Trigger? %d\n", fSelectIsolated) ; |
05d0d05d | 1040 | parList+=onePar ; |
66e64043 | 1041 | snprintf(onePar,buffersize,"Several UE? %d\n", fMakeSeveralUE) ; |
05d0d05d | 1042 | parList+=onePar ; |
66e64043 | 1043 | snprintf(onePar,buffersize,"Name of AOD Pi0 Branch %s ", fPi0AODBranchName.Data()); |
05d0d05d | 1044 | parList+=onePar ; |
907b38cd | 1045 | snprintf(onePar,buffersize,"Do Decay-hadron correlation ? pi0 %d, decay %d", fPi0Trigger, fDecayTrigger) ; |
05d0d05d | 1046 | parList+=onePar ; |
3f150b4b | 1047 | snprintf(onePar,buffersize,"Select absolute leading for cluster triggers ? %d or Near Side Leading %d \n", |
1048 | fMakeAbsoluteLeading, fMakeNearSideLeading) ; | |
05d0d05d | 1049 | parList+=onePar ; |
1050 | snprintf(onePar,buffersize,"Associated particle pt bins %d: ", fNAssocPtBins) ; | |
1051 | parList+=onePar ; | |
1052 | for (Int_t ibin = 0; ibin<fNAssocPtBins; ibin++) { | |
1053 | snprintf(onePar,buffersize,"bin %d = [%2.1f,%2.1f];", ibin, fAssocPtBinLimit[ibin], fAssocPtBinLimit[ibin+1]) ; | |
1054 | } | |
1055 | parList+=onePar ; | |
1056 | ||
1057 | //Get parameters set in base class. | |
1058 | parList += GetBaseParametersList() ; | |
1059 | ||
05d0d05d | 1060 | //Get parameters set in FiducialCut class (not available yet) |
1061 | //parlist += GetFidCut()->GetFidCutParametersList() | |
1062 | ||
1063 | return new TObjString(parList) ; | |
1064 | ||
1065 | } | |
1066 | ||
1067 | //________________________________________________________________ | |
e09cf5ef | 1068 | TList * AliAnaParticleHadronCorrelation::GetCreateOutputObjects() |
1069 | { | |
1070 | ||
1071 | // Create histograms to be saved in output file and | |
1072 | // store them in fOutputContainer | |
029dea5a | 1073 | |
e09cf5ef | 1074 | TList * outputContainer = new TList() ; |
1075 | outputContainer->SetName("CorrelationHistos") ; | |
1076 | ||
62f2fe4d | 1077 | Int_t nptbins = GetHistogramRanges()->GetHistoPtBins(); Int_t nphibins = GetHistogramRanges()->GetHistoPhiBins(); Int_t netabins = GetHistogramRanges()->GetHistoEtaBins(); Int_t ndeltaphibins = GetHistogramRanges()->GetHistoDeltaPhiBins(); Int_t ndeltaetabins = GetHistogramRanges()->GetHistoDeltaEtaBins(); |
1078 | Float_t ptmax = GetHistogramRanges()->GetHistoPtMax(); Float_t phimax = GetHistogramRanges()->GetHistoPhiMax(); Float_t etamax = GetHistogramRanges()->GetHistoEtaMax(); Float_t deltaphimax = GetHistogramRanges()->GetHistoDeltaPhiMax(); Float_t deltaetamax = GetHistogramRanges()->GetHistoDeltaEtaMax(); | |
1079 | Float_t ptmin = GetHistogramRanges()->GetHistoPtMin(); Float_t phimin = GetHistogramRanges()->GetHistoPhiMin(); Float_t etamin = GetHistogramRanges()->GetHistoEtaMin(); Float_t deltaphimin = GetHistogramRanges()->GetHistoDeltaPhiMin(); Float_t deltaetamin = GetHistogramRanges()->GetHistoDeltaEtaMin(); | |
e09cf5ef | 1080 | |
d0b625bc | 1081 | Int_t nMixBins = GetNCentrBin()*GetNZvertBin()*GetNRPBin(); |
1082 | ||
17af6e24 | 1083 | TString nameMC[] = {"Photon","Pi0","Pi0Decay","EtaDecay","OtherDecay","Electron","Hadron"}; |
1084 | TString pileUpName[] = {"SPD","EMCAL","SPDOrEMCAL","SPDAndEMCAL","SPDAndNotEMCAL","EMCALAndNotSPD","NotSPDAndNotEMCAL"} ; | |
1085 | ||
7d306daf | 1086 | // For vz dependent histograms, if option ON |
1087 | Int_t nz = 1 ; | |
1088 | if(fCorrelVzBin) nz = GetNZvertBin(); | |
1089 | TString sz = "" ; | |
1090 | TString tz = "" ; | |
1091 | ||
764ab1f4 | 1092 | fhPtInput = new TH1F("hPtInput","p_{T} distribution of input trigger particles", nptbins,ptmin,ptmax); |
7d306daf | 1093 | fhPtInput->SetXTitle("p_{T}^{trig} (GeV/c)"); |
1094 | outputContainer->Add(fhPtInput); | |
1095 | ||
764ab1f4 | 1096 | fhPtFidCut = new TH1F("hPtFidCut","p_{T} distribution of input trigger particles after fiducial cut", nptbins,ptmin,ptmax); |
7d306daf | 1097 | fhPtFidCut->SetXTitle("p_{T}^{trig} (GeV/c)"); |
1098 | outputContainer->Add(fhPtFidCut); | |
1099 | ||
764ab1f4 | 1100 | fhPtLeading = new TH1F("hPtLeading","p_{T} distribution of leading particles", nptbins,ptmin,ptmax); |
e09cf5ef | 1101 | fhPtLeading->SetXTitle("p_{T}^{trig} (GeV/c)"); |
7d306daf | 1102 | outputContainer->Add(fhPtLeading); |
ca17b39f | 1103 | |
764ab1f4 | 1104 | if(IsDataMC()) |
1105 | { | |
b1f720a7 | 1106 | for(Int_t i=0; i < 7; i++) |
764ab1f4 | 1107 | { |
1108 | fhPtLeadingMC[i] = new TH1F(Form("hPtLeading_MC%s",nameMC[i].Data()), | |
1109 | Form("p_{T} distribution of leading particles, trigger origin is %s",nameMC[i].Data()), | |
1110 | nptbins,ptmin,ptmax); | |
1111 | fhPtLeadingMC[i]->SetXTitle("p_{T}^{trig} (GeV/c)"); | |
1112 | outputContainer->Add(fhPtLeadingMC[i]); | |
1113 | } | |
1114 | } | |
1115 | ||
7d306daf | 1116 | if(fCorrelVzBin) |
1117 | { | |
764ab1f4 | 1118 | fhPtLeadingVzBin = new TH2F("hPtLeadingVzBin","p_{T} distribution of leading particles vs vz bin", nptbins,ptmin,ptmax,GetNZvertBin(),0,GetNZvertBin()); |
7d306daf | 1119 | fhPtLeadingVzBin->SetXTitle("p_{T}^{trig} (GeV/c)"); |
1120 | fhPtLeadingVzBin->SetYTitle("v_{z} bin"); | |
1121 | outputContainer->Add(fhPtLeadingVzBin); | |
1122 | } | |
1123 | ||
764ab1f4 | 1124 | fhPtLeadingBin = new TH2F ("hPtLeadingBin","p_{T} distribution of leading particles", nptbins,ptmin,ptmax,nMixBins,0,nMixBins); |
d0b625bc | 1125 | fhPtLeadingBin->SetXTitle("p_{T}^{trig} (GeV/c)"); |
1126 | fhPtLeadingBin->SetYTitle("Bin"); | |
7d306daf | 1127 | outputContainer->Add(fhPtLeadingBin); |
d0b625bc | 1128 | |
e09cf5ef | 1129 | fhPhiLeading = new TH2F ("hPhiLeading","#phi distribution of leading Particles",nptbins,ptmin,ptmax, nphibins,phimin,phimax); |
1130 | fhPhiLeading->SetYTitle("#phi (rad)"); | |
7d306daf | 1131 | outputContainer->Add(fhPhiLeading); |
1132 | ||
e09cf5ef | 1133 | fhEtaLeading = new TH2F ("hEtaLeading","#eta distribution of leading",nptbins,ptmin,ptmax, netabins,etamin,etamax); |
1134 | fhEtaLeading->SetYTitle("#eta "); | |
e09cf5ef | 1135 | outputContainer->Add(fhEtaLeading); |
1136 | ||
68cd2624 | 1137 | fhPtLeadingCentrality = new TH2F("hPtLeadingCentrality","Leading particle p_{T} vs centrality",nptbins,ptmin,ptmax,100,0.,100) ; |
1138 | fhPtLeadingCentrality->SetXTitle("p_{T}^{trig} (GeV/c)"); | |
1139 | fhPtLeadingCentrality->SetYTitle("Centrality (%)"); | |
1140 | outputContainer->Add(fhPtLeadingCentrality) ; | |
1141 | ||
1142 | fhPtLeadingEventPlane = new TH2F("hPtLeadingEventPlane","Leading particle p_{T} vs event plane angle",nptbins,ptmin,ptmax, 100,0.,TMath::Pi()) ; | |
1143 | fhPtLeadingEventPlane->SetXTitle("p_{T}^{trig} (GeV/c)"); | |
1144 | fhPtLeadingEventPlane->SetXTitle("EP angle (rad)"); | |
1145 | outputContainer->Add(fhPtLeadingEventPlane) ; | |
1146 | ||
1147 | fhLeadingEventPlaneCentrality = new TH2F("hLeadingEventPlane","Leading particle centrality vs event plane angle",100,0.,100,100,0.,TMath::Pi()) ; | |
1148 | fhLeadingEventPlaneCentrality->SetXTitle("Centrality (%)"); | |
1149 | fhLeadingEventPlaneCentrality->SetYTitle("EP angle (rad)"); | |
1150 | outputContainer->Add(fhLeadingEventPlaneCentrality) ; | |
1151 | ||
e09cf5ef | 1152 | //Correlation with charged hadrons |
547c2f01 | 1153 | if(GetReader()->IsCTSSwitchedOn()) |
1154 | { | |
e09cf5ef | 1155 | fhDeltaPhiDeltaEtaCharged = new TH2F |
62f2fe4d | 1156 | ("hDeltaPhiDeltaEtaCharged","#eta_{trigger} - #eta_{h^{#pm}} vs #phi_{trigger} - #phi_{h^{#pm}}", |
1157 | ndeltaphibins ,deltaphimin,deltaphimax,ndeltaetabins,deltaetamin,deltaetamax); | |
2bb7ac98 | 1158 | fhDeltaPhiDeltaEtaCharged->SetXTitle("#Delta #phi (rad)"); |
e09cf5ef | 1159 | fhDeltaPhiDeltaEtaCharged->SetYTitle("#Delta #eta"); |
1160 | ||
b1f720a7 | 1161 | fhDeltaPhiDeltaEtaChargedPtA3GeV = new TH2F |
1162 | ("hDeltaPhiDeltaEtaChargedPtA3GeV","#eta_{trigger} - #eta_{h^{#pm}} vs #phi_{trigger} - #phi_{h^{#pm}, p_{TA}>3 GeV/c}", | |
1163 | ndeltaphibins ,deltaphimin,deltaphimax,ndeltaetabins,deltaetamin,deltaetamax); | |
2bb7ac98 | 1164 | fhDeltaPhiDeltaEtaChargedPtA3GeV->SetXTitle("#Delta #phi (rad)"); |
b1f720a7 | 1165 | fhDeltaPhiDeltaEtaChargedPtA3GeV->SetYTitle("#Delta #eta"); |
1166 | ||
e09cf5ef | 1167 | fhPhiCharged = new TH2F |
babcbc9d | 1168 | ("hPhiCharged","#phi_{h^{#pm}} vs p_{T #pm}", |
e09cf5ef | 1169 | nptbins,ptmin,ptmax,nphibins,phimin,phimax); |
1170 | fhPhiCharged->SetYTitle("#phi_{h^{#pm}} (rad)"); | |
1171 | fhPhiCharged->SetXTitle("p_{T #pm} (GeV/c)"); | |
1172 | ||
1173 | fhEtaCharged = new TH2F | |
babcbc9d | 1174 | ("hEtaCharged","#eta_{h^{#pm}} vs p_{T #pm}", |
e09cf5ef | 1175 | nptbins,ptmin,ptmax,netabins,etamin,etamax); |
1176 | fhEtaCharged->SetYTitle("#eta_{h^{#pm}} (rad)"); | |
1177 | fhEtaCharged->SetXTitle("p_{T #pm} (GeV/c)"); | |
1178 | ||
1179 | fhDeltaPhiCharged = new TH2F | |
babcbc9d | 1180 | ("hDeltaPhiCharged","#phi_{trigger} - #phi_{h^{#pm}} vs p_{T trigger}", |
62f2fe4d | 1181 | nptbins,ptmin,ptmax, ndeltaphibins ,deltaphimin,deltaphimax); |
2bb7ac98 | 1182 | fhDeltaPhiCharged->SetYTitle("#Delta #phi (rad)"); |
e09cf5ef | 1183 | fhDeltaPhiCharged->SetXTitle("p_{T trigger} (GeV/c)"); |
1184 | ||
b1f720a7 | 1185 | fhDeltaPhiChargedPtA3GeV = new TH2F |
1186 | ("hDeltaPhiChargedPtA3GeV","#phi_{trigger} - #phi_{h^{#pm}} vs p_{T trigger}, p_{TA}>3 GeV/c", | |
1187 | nptbins,ptmin,ptmax, ndeltaphibins ,deltaphimin,deltaphimax); | |
2bb7ac98 | 1188 | fhDeltaPhiChargedPtA3GeV->SetYTitle("#Delta #phi (rad)"); |
b1f720a7 | 1189 | fhDeltaPhiChargedPtA3GeV->SetXTitle("p_{T trigger} (GeV/c)"); |
1190 | ||
1191 | ||
e09cf5ef | 1192 | fhDeltaPhiChargedPt = new TH2F |
babcbc9d | 1193 | ("hDeltaPhiChargedPt","#phi_{trigger} - #phi_{#h^{#pm}} vs p_{T h^{#pm}}", |
62f2fe4d | 1194 | nptbins,ptmin,ptmax, ndeltaphibins ,deltaphimin,deltaphimax); |
2bb7ac98 | 1195 | fhDeltaPhiChargedPt->SetYTitle("#Delta #phi (rad)"); |
e09cf5ef | 1196 | fhDeltaPhiChargedPt->SetXTitle("p_{T h^{#pm}} (GeV/c)"); |
1197 | ||
1198 | fhDeltaPhiUeChargedPt = new TH2F | |
babcbc9d | 1199 | ("hDeltaPhiUeChargedPt","#phi_{trigger} - #phi_{#Ueh^{#pm}} vs p_{T Ueh^{#pm}}", |
62f2fe4d | 1200 | nptbins,ptmin,ptmax, ndeltaphibins ,deltaphimin,deltaphimax); |
2bb7ac98 | 1201 | fhDeltaPhiUeChargedPt->SetYTitle("#Delta #phi (rad)"); |
e09cf5ef | 1202 | fhDeltaPhiUeChargedPt->SetXTitle("p_{T h^{#pm}} (GeV/c)"); |
1203 | ||
9623bf34 | 1204 | fhUePart = new TH1F("hUePart","UE particles distribution vs pt trig", |
1205 | nptbins,ptmin,ptmax); | |
1206 | fhUePart->SetYTitle("dNch"); | |
2bb7ac98 | 1207 | fhUePart->SetXTitle("p_{T trigger} (GeV/c)"); |
9623bf34 | 1208 | |
1209 | ||
e09cf5ef | 1210 | fhDeltaEtaCharged = new TH2F |
babcbc9d | 1211 | ("hDeltaEtaCharged","#eta_{trigger} - #eta_{h^{#pm}} vs p_{T trigger}", |
62f2fe4d | 1212 | nptbins,ptmin,ptmax,ndeltaetabins,deltaetamin,deltaetamax); |
e09cf5ef | 1213 | fhDeltaEtaCharged->SetYTitle("#Delta #eta"); |
1214 | fhDeltaEtaCharged->SetXTitle("p_{T trigger} (GeV/c)"); | |
1215 | ||
b1f720a7 | 1216 | fhDeltaEtaChargedPtA3GeV = new TH2F |
1217 | ("hDeltaEtaChargedPtA3GeV","#eta_{trigger} - #eta_{h^{#pm}} vs p_{T trigger}, p_{TA}>3 GeV/c", | |
1218 | nptbins,ptmin,ptmax,ndeltaetabins,deltaetamin,deltaetamax); | |
1219 | fhDeltaEtaChargedPtA3GeV->SetYTitle("#Delta #eta"); | |
1220 | fhDeltaEtaChargedPtA3GeV->SetXTitle("p_{T trigger} (GeV/c)"); | |
1221 | ||
3f150b4b | 1222 | fhXECharged = |
1223 | new TH2F("hXECharged","x_{E} for charged tracks", | |
e09cf5ef | 1224 | nptbins,ptmin,ptmax,200,0.,2.); |
3f150b4b | 1225 | fhXECharged->SetYTitle("x_{E}"); |
2bb7ac98 | 1226 | fhXECharged->SetXTitle("p_{T trigger} (GeV/c)"); |
727a309a | 1227 | |
1228 | fhXECharged_Cone2 = | |
1229 | new TH2F("hXECharged_Cone2","x_{E} for charged tracks in cone 2 (5#pi/6-7#pi/6)", | |
1230 | nptbins,ptmin,ptmax,200,0.,2.); | |
1231 | fhXECharged_Cone2->SetYTitle("x_{E}"); | |
1232 | fhXECharged_Cone2->SetXTitle("p_{T trigger} (GeV/c)"); | |
e09cf5ef | 1233 | |
3f150b4b | 1234 | fhXEUeCharged = |
1235 | new TH2F("hXEUeCharged","x_{E} for Underlying Event", | |
e09cf5ef | 1236 | nptbins,ptmin,ptmax,200,0.,2.); |
3f150b4b | 1237 | fhXEUeCharged->SetYTitle("x_{E}"); |
2bb7ac98 | 1238 | fhXEUeCharged->SetXTitle("p_{T trigger} (GeV/c)"); |
e09cf5ef | 1239 | |
3f150b4b | 1240 | fhXEPosCharged = |
1241 | new TH2F("hXEPositiveCharged","x_{E} for positive charged tracks", | |
e09cf5ef | 1242 | nptbins,ptmin,ptmax,200,0.,2.); |
3f150b4b | 1243 | fhXEPosCharged->SetYTitle("x_{E}"); |
2bb7ac98 | 1244 | fhXEPosCharged->SetXTitle("p_{T trigger} (GeV/c)"); |
e09cf5ef | 1245 | |
3f150b4b | 1246 | fhXENegCharged = |
1247 | new TH2F("hXENegativeCharged","x_{E} for negative charged tracks", | |
e09cf5ef | 1248 | nptbins,ptmin,ptmax,200,0.,2.); |
3f150b4b | 1249 | fhXENegCharged->SetYTitle("x_{E}"); |
2bb7ac98 | 1250 | fhXENegCharged->SetXTitle("p_{T trigger} (GeV/c)"); |
e09cf5ef | 1251 | |
3f150b4b | 1252 | fhPtHbpXECharged = |
1253 | new TH2F("hHbpXECharged","#xi = ln(1/x_{E}) with charged hadrons", | |
e09cf5ef | 1254 | nptbins,ptmin,ptmax,200,0.,10.); |
3f150b4b | 1255 | fhPtHbpXECharged->SetYTitle("ln(1/x_{E})"); |
2bb7ac98 | 1256 | fhPtHbpXECharged->SetXTitle("p_{T trigger} (GeV/c)"); |
727a309a | 1257 | |
1258 | fhPtHbpXECharged_Cone2 = | |
1259 | new TH2F("hHbpXECharged_Cone2","#xi = ln(1/x_{E}) with charged hadrons in cone 2 (5#pi/6-7#pi/6)", | |
1260 | nptbins,ptmin,ptmax,200,0.,10.); | |
1261 | fhPtHbpXECharged_Cone2->SetYTitle("ln(1/x_{E})"); | |
1262 | fhPtHbpXECharged_Cone2->SetXTitle("p_{T trigger} (GeV/c)"); | |
e09cf5ef | 1263 | |
3f150b4b | 1264 | fhPtHbpXEUeCharged = |
1265 | new TH2F("hHbpXEUeCharged","#xi = ln(1/x_{E}) with charged hadrons,Underlying Event", | |
e09cf5ef | 1266 | nptbins,ptmin,ptmax,200,0.,10.); |
3f150b4b | 1267 | fhPtHbpXEUeCharged->SetYTitle("ln(1/x_{E})"); |
2bb7ac98 | 1268 | fhPtHbpXEUeCharged->SetXTitle("p_{T trigger} (GeV/c)"); |
3f150b4b | 1269 | |
1270 | fhZTCharged = | |
1271 | new TH2F("hZTCharged","z_{T} for charged tracks", | |
1272 | nptbins,ptmin,ptmax,200,0.,2.); | |
1273 | fhZTCharged->SetYTitle("z_{T}"); | |
1274 | fhZTCharged->SetXTitle("p_{T trigger}"); | |
1275 | ||
1276 | fhZTUeCharged = | |
1277 | new TH2F("hZTUeCharged","z_{T} for Underlying Event", | |
1278 | nptbins,ptmin,ptmax,200,0.,2.); | |
1279 | fhZTUeCharged->SetYTitle("z_{T}"); | |
2bb7ac98 | 1280 | fhZTUeCharged->SetXTitle("p_{T trigger} (GeV/c)"); |
3f150b4b | 1281 | |
1282 | fhZTPosCharged = | |
1283 | new TH2F("hZTPositiveCharged","z_{T} for positive charged tracks", | |
1284 | nptbins,ptmin,ptmax,200,0.,2.); | |
1285 | fhZTPosCharged->SetYTitle("z_{T}"); | |
2bb7ac98 | 1286 | fhZTPosCharged->SetXTitle("p_{T trigger} (GeV/c)"); |
3f150b4b | 1287 | |
1288 | fhZTNegCharged = | |
1289 | new TH2F("hZTNegativeCharged","z_{T} for negative charged tracks", | |
1290 | nptbins,ptmin,ptmax,200,0.,2.); | |
1291 | fhZTNegCharged->SetYTitle("z_{T}"); | |
2bb7ac98 | 1292 | fhZTNegCharged->SetXTitle("p_{T trigger} (GeV/c)"); |
3f150b4b | 1293 | |
1294 | fhPtHbpZTCharged = | |
1295 | new TH2F("hHbpZTCharged","#xi = ln(1/z_{T}) with charged hadrons", | |
1296 | nptbins,ptmin,ptmax,200,0.,10.); | |
1297 | fhPtHbpZTCharged->SetYTitle("ln(1/z_{T})"); | |
2bb7ac98 | 1298 | fhPtHbpZTCharged->SetXTitle("p_{T trigger} (GeV/c)"); |
3f150b4b | 1299 | |
1300 | fhPtHbpZTUeCharged = | |
1301 | new TH2F("hHbpZTUeCharged","#xi = ln(1/z_{T}) with charged hadrons,Underlying Event", | |
1302 | nptbins,ptmin,ptmax,200,0.,10.); | |
1303 | fhPtHbpZTUeCharged->SetYTitle("ln(1/x_{E})"); | |
2bb7ac98 | 1304 | fhPtHbpZTUeCharged->SetXTitle("p_{T trigger} (GeV/c)"); |
e09cf5ef | 1305 | |
1306 | fhPtTrigPout = | |
babcbc9d | 1307 | new TH2F("hPtTrigPout","Pout with triggers", |
e09cf5ef | 1308 | nptbins,ptmin,ptmax,2*nptbins,-ptmax,ptmax); |
1309 | fhPtTrigPout->SetYTitle("p_{out} (GeV/c)"); | |
1310 | fhPtTrigPout->SetXTitle("p_{T trigger} (GeV/c)"); | |
1311 | ||
e09cf5ef | 1312 | fhPtTrigCharged = |
b1f720a7 | 1313 | new TH2F("hPtTrigCharged","trigger and charged tracks pt distribution", |
e09cf5ef | 1314 | nptbins,ptmin,ptmax,nptbins,ptmin,ptmax); |
1315 | fhPtTrigCharged->SetYTitle("p_{T h^{#pm}} (GeV/c)"); | |
1316 | fhPtTrigCharged->SetXTitle("p_{T trigger} (GeV/c)"); | |
1317 | ||
1318 | outputContainer->Add(fhDeltaPhiDeltaEtaCharged); | |
b1f720a7 | 1319 | outputContainer->Add(fhDeltaPhiDeltaEtaChargedPtA3GeV); |
e09cf5ef | 1320 | outputContainer->Add(fhPhiCharged) ; |
1321 | outputContainer->Add(fhEtaCharged) ; | |
1322 | outputContainer->Add(fhDeltaPhiCharged) ; | |
b1f720a7 | 1323 | outputContainer->Add(fhDeltaPhiChargedPtA3GeV) ; |
e09cf5ef | 1324 | outputContainer->Add(fhDeltaEtaCharged) ; |
b1f720a7 | 1325 | outputContainer->Add(fhDeltaEtaChargedPtA3GeV) ; |
e09cf5ef | 1326 | outputContainer->Add(fhDeltaPhiChargedPt) ; |
1327 | outputContainer->Add(fhDeltaPhiUeChargedPt) ; | |
9623bf34 | 1328 | outputContainer->Add(fhUePart); |
050ad675 | 1329 | |
3f150b4b | 1330 | outputContainer->Add(fhXECharged) ; |
727a309a | 1331 | outputContainer->Add(fhXECharged_Cone2) ; |
764ab1f4 | 1332 | if(IsDataMC()) |
1333 | { | |
b1f720a7 | 1334 | for(Int_t i=0; i < 7; i++) |
764ab1f4 | 1335 | { |
b1f720a7 | 1336 | |
1337 | fhDeltaPhiChargedMC[i] = new TH2F(Form("hDeltaPhiCharged_MC%s",nameMC[i].Data()), | |
1338 | Form("#Delta #phi for charged tracks, trigger origin is %s",nameMC[i].Data()), | |
1339 | nptbins,ptmin,ptmax,ndeltaphibins ,deltaphimin,deltaphimax); | |
1340 | fhDeltaPhiChargedMC[i]->SetYTitle("x_{E}"); | |
2bb7ac98 | 1341 | fhDeltaPhiChargedMC[i]->SetXTitle("p_{T trigger} (GeV/c)"); |
b1f720a7 | 1342 | outputContainer->Add(fhDeltaPhiChargedMC[i]) ; |
1343 | ||
764ab1f4 | 1344 | fhXEChargedMC[i] = new TH2F(Form("hXECharged_MC%s",nameMC[i].Data()), |
1345 | Form("x_{E} for charged tracks, trigger origin is %s",nameMC[i].Data()), | |
1346 | nptbins,ptmin,ptmax,200,0.,2.); | |
1347 | fhXEChargedMC[i]->SetYTitle("x_{E}"); | |
2bb7ac98 | 1348 | fhXEChargedMC[i]->SetXTitle("p_{T trigger} (GeV/c)"); |
764ab1f4 | 1349 | outputContainer->Add(fhXEChargedMC[i]) ; |
1350 | } | |
1351 | } | |
1352 | ||
3f150b4b | 1353 | outputContainer->Add(fhXEPosCharged) ; |
1354 | outputContainer->Add(fhXENegCharged) ; | |
1355 | outputContainer->Add(fhXEUeCharged) ; | |
1356 | outputContainer->Add(fhPtHbpXECharged) ; | |
727a309a | 1357 | outputContainer->Add(fhPtHbpXECharged_Cone2) ; |
3f150b4b | 1358 | outputContainer->Add(fhPtHbpXEUeCharged) ; |
050ad675 | 1359 | |
3f150b4b | 1360 | outputContainer->Add(fhZTCharged) ; |
1361 | outputContainer->Add(fhZTPosCharged) ; | |
1362 | outputContainer->Add(fhZTNegCharged) ; | |
1363 | outputContainer->Add(fhZTUeCharged) ; | |
1364 | outputContainer->Add(fhPtHbpZTCharged) ; | |
1365 | outputContainer->Add(fhPtHbpZTUeCharged) ; | |
1366 | ||
e09cf5ef | 1367 | outputContainer->Add(fhPtTrigPout) ; |
e09cf5ef | 1368 | outputContainer->Add(fhPtTrigCharged) ; |
1369 | ||
b1f720a7 | 1370 | if(fFillPileUpHistograms) |
1371 | { | |
560498d1 | 1372 | fhDeltaPhiChargedOtherBC = new TH2F |
1373 | ("hDeltaPhiChargedOtherBC","#phi_{trigger} - #phi_{h^{#pm}} vs p_{T trigger}, track BC!=0", | |
1374 | nptbins,ptmin,ptmax, ndeltaphibins ,deltaphimin,deltaphimax); | |
1375 | fhDeltaPhiChargedOtherBC->SetYTitle("#Delta #phi (rad)"); | |
1376 | fhDeltaPhiChargedOtherBC->SetXTitle("p_{T trigger} (GeV/c)"); | |
1377 | ||
1378 | fhDeltaPhiChargedPtA3GeVOtherBC = new TH2F | |
1379 | ("hDeltaPhiChargedPtA3GeVOtherBC","#phi_{trigger} - #phi_{h^{#pm}} vs p_{T trigger}, p_{TA}>3 GeV/c, track BC!=0", | |
1380 | nptbins,ptmin,ptmax, ndeltaphibins ,deltaphimin,deltaphimax); | |
1381 | fhDeltaPhiChargedPtA3GeVOtherBC->SetYTitle("#Delta #phi (rad)"); | |
1382 | fhDeltaPhiChargedPtA3GeVOtherBC->SetXTitle("p_{T trigger} (GeV/c)"); | |
1383 | ||
1384 | fhPtTrigChargedOtherBC = | |
1385 | new TH2F("hPtTrigChargedOtherBC","trigger and charged tracks pt distribution, track BC!=0", | |
1386 | nptbins,ptmin,ptmax,nptbins,ptmin,ptmax); | |
1387 | fhPtTrigChargedOtherBC->SetYTitle("p_{T h^{#pm}} (GeV/c)"); | |
1388 | fhPtTrigChargedOtherBC->SetXTitle("p_{T trigger} (GeV/c)"); | |
1389 | ||
1390 | fhXEChargedOtherBC = | |
1391 | new TH2F("hXEChargedOtherBC","x_{E} for charged tracks, track BC!=0", | |
1392 | nptbins,ptmin,ptmax,200,0.,2.); | |
1393 | fhXEChargedOtherBC->SetYTitle("x_{E}"); | |
1394 | fhXEChargedOtherBC->SetXTitle("p_{T trigger} (GeV/c)"); | |
1395 | ||
1396 | fhXEUeChargedOtherBC = | |
1397 | new TH2F("hXEUeChargedOtherBC","x_{E} for Underlying Event, track BC!=0", | |
1398 | nptbins,ptmin,ptmax,200,0.,2.); | |
1399 | fhXEUeChargedOtherBC->SetYTitle("x_{E}"); | |
1400 | fhXEUeChargedOtherBC->SetXTitle("p_{T trigger} (GeV/c)"); | |
1401 | ||
1402 | fhZTChargedOtherBC = | |
1403 | new TH2F("hZTChargedOtherBC","z_{T} for charged tracks, track BC!=0", | |
1404 | nptbins,ptmin,ptmax,200,0.,2.); | |
1405 | fhZTChargedOtherBC->SetYTitle("z_{T}"); | |
1406 | fhZTChargedOtherBC->SetXTitle("p_{T trigger}"); | |
1407 | ||
1408 | fhZTUeChargedOtherBC = | |
1409 | new TH2F("hZTUeChargedOtherBC","z_{T} for Underlying Event, track BC!=0", | |
1410 | nptbins,ptmin,ptmax,200,0.,2.); | |
1411 | fhZTUeChargedOtherBC->SetYTitle("z_{T}"); | |
1412 | fhZTUeChargedOtherBC->SetXTitle("p_{T trigger} (GeV/c)"); | |
1413 | ||
1414 | outputContainer->Add(fhDeltaPhiChargedOtherBC) ; | |
1415 | outputContainer->Add(fhDeltaPhiChargedPtA3GeVOtherBC) ; | |
1416 | outputContainer->Add(fhXEChargedOtherBC) ; | |
1417 | outputContainer->Add(fhXEUeChargedOtherBC) ; | |
1418 | outputContainer->Add(fhZTChargedOtherBC) ; | |
1419 | outputContainer->Add(fhZTUeChargedOtherBC) ; | |
1420 | outputContainer->Add(fhPtTrigChargedOtherBC) ; | |
1421 | ||
2a9171b5 | 1422 | fhDeltaPhiChargedBC0 = new TH2F |
1423 | ("hDeltaPhiChargedBC0","#phi_{trigger} - #phi_{h^{#pm}} vs p_{T trigger}, track BC==0", | |
1424 | nptbins,ptmin,ptmax, ndeltaphibins ,deltaphimin,deltaphimax); | |
1425 | fhDeltaPhiChargedBC0->SetYTitle("#Delta #phi (rad)"); | |
1426 | fhDeltaPhiChargedBC0->SetXTitle("p_{T trigger} (GeV/c)"); | |
1427 | ||
1428 | fhDeltaPhiChargedPtA3GeVBC0 = new TH2F | |
1429 | ("hDeltaPhiChargedPtA3GeVBC0","#phi_{trigger} - #phi_{h^{#pm}} vs p_{T trigger}, p_{TA}>3 GeV/c, track BC==0", | |
1430 | nptbins,ptmin,ptmax, ndeltaphibins ,deltaphimin,deltaphimax); | |
1431 | fhDeltaPhiChargedPtA3GeVBC0->SetYTitle("#Delta #phi (rad)"); | |
1432 | fhDeltaPhiChargedPtA3GeVBC0->SetXTitle("p_{T trigger} (GeV/c)"); | |
1433 | ||
1434 | fhPtTrigChargedBC0 = | |
1435 | new TH2F("hPtTrigChargedBC0","trigger and charged tracks pt distribution, track BC==0", | |
1436 | nptbins,ptmin,ptmax,nptbins,ptmin,ptmax); | |
1437 | fhPtTrigChargedBC0->SetYTitle("p_{T h^{#pm}} (GeV/c)"); | |
1438 | fhPtTrigChargedBC0->SetXTitle("p_{T trigger} (GeV/c)"); | |
1439 | ||
1440 | fhXEChargedBC0 = | |
1441 | new TH2F("hXEChargedBC0","x_{E} for charged tracks, track BC==0", | |
1442 | nptbins,ptmin,ptmax,200,0.,2.); | |
1443 | fhXEChargedBC0->SetYTitle("x_{E}"); | |
1444 | fhXEChargedBC0->SetXTitle("p_{T trigger} (GeV/c)"); | |
1445 | ||
1446 | fhXEUeChargedBC0 = | |
1447 | new TH2F("hXEUeChargedBC0","x_{E} for Underlying Event, track BC==0", | |
1448 | nptbins,ptmin,ptmax,200,0.,2.); | |
1449 | fhXEUeChargedBC0->SetYTitle("x_{E}"); | |
1450 | fhXEUeChargedBC0->SetXTitle("p_{T trigger} (GeV/c)"); | |
1451 | ||
1452 | fhZTChargedBC0 = | |
1453 | new TH2F("hZTChargedBC0","z_{T} for charged tracks, track BC==0", | |
1454 | nptbins,ptmin,ptmax,200,0.,2.); | |
1455 | fhZTChargedBC0->SetYTitle("z_{T}"); | |
1456 | fhZTChargedBC0->SetXTitle("p_{T trigger}"); | |
1457 | ||
1458 | fhZTUeChargedBC0 = | |
1459 | new TH2F("hZTUeChargedBC0","z_{T} for Underlying Event, track BC==0", | |
1460 | nptbins,ptmin,ptmax,200,0.,2.); | |
1461 | fhZTUeChargedBC0->SetYTitle("z_{T}"); | |
1462 | fhZTUeChargedBC0->SetXTitle("p_{T trigger} (GeV/c)"); | |
1463 | ||
1464 | outputContainer->Add(fhDeltaPhiChargedBC0) ; | |
1465 | outputContainer->Add(fhDeltaPhiChargedPtA3GeVBC0) ; | |
1466 | outputContainer->Add(fhXEChargedBC0) ; | |
1467 | outputContainer->Add(fhXEUeChargedBC0) ; | |
1468 | outputContainer->Add(fhZTChargedBC0) ; | |
1469 | outputContainer->Add(fhZTUeChargedBC0) ; | |
1470 | outputContainer->Add(fhPtTrigChargedBC0) ; | |
1471 | ||
cc944149 | 1472 | fhPtLeadingVtxBC0 = new TH1F("hPtLeadingVtxBC0","p_{T} distribution of leading particles", nptbins,ptmin,ptmax); |
1473 | fhPtLeadingVtxBC0->SetXTitle("p_{T}^{trig} (GeV/c)"); | |
1474 | ||
1475 | fhDeltaPhiChargedVtxBC0 = new TH2F | |
1476 | ("hDeltaPhiChargedVtxBC0","#phi_{trigger} - #phi_{h^{#pm}} vs p_{T trigger}, track BC==0", | |
1477 | nptbins,ptmin,ptmax, ndeltaphibins ,deltaphimin,deltaphimax); | |
1478 | fhDeltaPhiChargedVtxBC0->SetYTitle("#Delta #phi (rad)"); | |
1479 | fhDeltaPhiChargedVtxBC0->SetXTitle("p_{T trigger} (GeV/c)"); | |
1480 | ||
1481 | fhDeltaPhiChargedPtA3GeVVtxBC0 = new TH2F | |
1482 | ("hDeltaPhiChargedPtA3GeVVtxBC0","#phi_{trigger} - #phi_{h^{#pm}} vs p_{T trigger}, p_{TA}>3 GeV/c, track BC==0", | |
1483 | nptbins,ptmin,ptmax, ndeltaphibins ,deltaphimin,deltaphimax); | |
1484 | fhDeltaPhiChargedPtA3GeVVtxBC0->SetYTitle("#Delta #phi (rad)"); | |
1485 | fhDeltaPhiChargedPtA3GeVVtxBC0->SetXTitle("p_{T trigger} (GeV/c)"); | |
1486 | ||
1487 | fhPtTrigChargedVtxBC0 = | |
1488 | new TH2F("hPtTrigChargedVtxBC0","trigger and charged tracks pt distribution, track BC==0", | |
1489 | nptbins,ptmin,ptmax,nptbins,ptmin,ptmax); | |
1490 | fhPtTrigChargedVtxBC0->SetYTitle("p_{T h^{#pm}} (GeV/c)"); | |
1491 | fhPtTrigChargedVtxBC0->SetXTitle("p_{T trigger} (GeV/c)"); | |
1492 | ||
1493 | fhXEChargedVtxBC0 = | |
1494 | new TH2F("hXEChargedVtxBC0","x_{E} for charged tracks, track BC==0", | |
1495 | nptbins,ptmin,ptmax,200,0.,2.); | |
1496 | fhXEChargedVtxBC0->SetYTitle("x_{E}"); | |
1497 | fhXEChargedVtxBC0->SetXTitle("p_{T trigger} (GeV/c)"); | |
1498 | ||
1499 | fhXEUeChargedVtxBC0 = | |
1500 | new TH2F("hXEUeChargedVtxBC0","x_{E} for Underlying Event, track BC==0", | |
1501 | nptbins,ptmin,ptmax,200,0.,2.); | |
1502 | fhXEUeChargedVtxBC0->SetYTitle("x_{E}"); | |
1503 | fhXEUeChargedVtxBC0->SetXTitle("p_{T trigger} (GeV/c)"); | |
1504 | ||
1505 | fhZTChargedVtxBC0 = | |
1506 | new TH2F("hZTChargedVtxBC0","z_{T} for charged tracks, track BC==0", | |
1507 | nptbins,ptmin,ptmax,200,0.,2.); | |
1508 | fhZTChargedVtxBC0->SetYTitle("z_{T}"); | |
1509 | fhZTChargedVtxBC0->SetXTitle("p_{T trigger}"); | |
1510 | ||
1511 | fhZTUeChargedVtxBC0 = | |
1512 | new TH2F("hZTUeChargedVtxBC0","z_{T} for Underlying Event, track BC==0", | |
1513 | nptbins,ptmin,ptmax,200,0.,2.); | |
1514 | fhZTUeChargedVtxBC0->SetYTitle("z_{T}"); | |
1515 | fhZTUeChargedVtxBC0->SetXTitle("p_{T trigger} (GeV/c)"); | |
1516 | ||
1517 | outputContainer->Add(fhPtLeadingVtxBC0); | |
1518 | outputContainer->Add(fhDeltaPhiChargedVtxBC0) ; | |
1519 | outputContainer->Add(fhDeltaPhiChargedPtA3GeVVtxBC0) ; | |
1520 | outputContainer->Add(fhXEChargedVtxBC0) ; | |
1521 | outputContainer->Add(fhXEUeChargedVtxBC0) ; | |
1522 | outputContainer->Add(fhZTChargedVtxBC0) ; | |
1523 | outputContainer->Add(fhZTUeChargedVtxBC0) ; | |
1524 | outputContainer->Add(fhPtTrigChargedVtxBC0) ; | |
2a9171b5 | 1525 | |
17af6e24 | 1526 | for(Int_t i = 0 ; i < 7 ; i++) |
1527 | { | |
1528 | fhPtLeadingPileUp[i] = new TH1F(Form("hPtLeadingPileUp%s",pileUpName[i].Data()), | |
1529 | Form("p_{T} distribution of leading particles, %s Pile-Up event",pileUpName[i].Data()), nptbins,ptmin,ptmax); | |
1530 | fhPtLeadingPileUp[i]->SetXTitle("p_{T}^{trig} (GeV/c)"); | |
1531 | outputContainer->Add(fhPtLeadingPileUp[i]); | |
1532 | ||
1533 | fhDeltaPhiChargedPileUp[i] = new TH2F(Form("hDeltaPhiChargedPileUp%s",pileUpName[i].Data()), | |
1534 | Form("#phi_{trigger} - #phi_{h^{#pm}} vs p_{T trigger}, %s Pile-Up event",pileUpName[i].Data()), | |
1535 | nptbins,ptmin,ptmax, ndeltaphibins ,deltaphimin,deltaphimax); | |
2bb7ac98 | 1536 | fhDeltaPhiChargedPileUp[i]->SetYTitle("#Delta #phi (rad)"); |
17af6e24 | 1537 | fhDeltaPhiChargedPileUp[i]->SetXTitle("p_{T trigger} (GeV/c)"); |
1538 | outputContainer->Add(fhDeltaPhiChargedPileUp[i]) ; | |
1539 | ||
1540 | fhDeltaPhiChargedPtA3GeVPileUp[i] = new TH2F(Form("hDeltaPhiChargedPtA3GeVPileUp%s",pileUpName[i].Data()), | |
1541 | Form("#phi_{trigger} - #phi_{h^{#pm}} vs p_{T trigger}, p_{TA}>3 GeV/c, %s Pile-Up event",pileUpName[i].Data()), | |
1542 | nptbins,ptmin,ptmax, ndeltaphibins ,deltaphimin,deltaphimax); | |
2bb7ac98 | 1543 | fhDeltaPhiChargedPtA3GeVPileUp[i]->SetYTitle("#Delta #phi (rad)"); |
17af6e24 | 1544 | fhDeltaPhiChargedPtA3GeVPileUp[i]->SetXTitle("p_{T trigger} (GeV/c)"); |
1545 | outputContainer->Add(fhDeltaPhiChargedPtA3GeVPileUp[i]) ; | |
1546 | ||
1547 | fhDeltaEtaChargedPileUp[i] = new TH2F(Form("hDeltaEtaChargedPileUp%s",pileUpName[i].Data()), | |
1548 | Form("#eta_{trigger} - #eta_{h^{#pm}} vs p_{T trigger}, %s Pile-Up event",pileUpName[i].Data()), | |
1549 | nptbins,ptmin,ptmax,ndeltaetabins,deltaetamin,deltaetamax); | |
1550 | fhDeltaEtaChargedPileUp[i]->SetYTitle("#Delta #eta"); | |
1551 | fhDeltaEtaChargedPileUp[i]->SetXTitle("p_{T trigger} (GeV/c)"); | |
1552 | outputContainer->Add(fhDeltaEtaChargedPileUp[i]) ; | |
1553 | ||
1554 | fhDeltaEtaChargedPtA3GeVPileUp[i] = new TH2F(Form("hDeltaEtaChargedPtA3GeVPileUp%s",pileUpName[i].Data()), | |
1555 | Form("#eta_{trigger} - #eta_{h^{#pm}} vs p_{T trigger}, p_{TA}>3 GeV/c, %s Pile-Up event",pileUpName[i].Data()), | |
1556 | nptbins,ptmin,ptmax,ndeltaetabins,deltaetamin,deltaetamax); | |
1557 | fhDeltaEtaChargedPtA3GeVPileUp[i]->SetYTitle("#Delta #eta"); | |
1558 | fhDeltaEtaChargedPtA3GeVPileUp[i]->SetXTitle("p_{T trigger} (GeV/c)"); | |
1559 | outputContainer->Add(fhDeltaEtaChargedPtA3GeVPileUp[i]) ; | |
1560 | ||
1561 | fhXEChargedPileUp[i] = new TH2F(Form("hXEChargedPileUp%s",pileUpName[i].Data()), | |
1562 | Form("x_{E} for charged tracks, %s Pile-Up event",pileUpName[i].Data()), | |
1563 | nptbins,ptmin,ptmax,200,0.,2.); | |
1564 | fhXEChargedPileUp[i]->SetYTitle("x_{E}"); | |
2bb7ac98 | 1565 | fhXEChargedPileUp[i]->SetXTitle("p_{T trigger} (GeV/c)"); |
17af6e24 | 1566 | outputContainer->Add(fhXEChargedPileUp[i]) ; |
1567 | ||
1568 | fhXEUeChargedPileUp[i] = new TH2F(Form("hXEUeChargedPileUp%s",pileUpName[i].Data()), | |
1569 | Form("x_{E} for Underlying Event, %s Pile-Up event",pileUpName[i].Data()), | |
1570 | nptbins,ptmin,ptmax,200,0.,2.); | |
1571 | fhXEUeChargedPileUp[i]->SetYTitle("x_{E}"); | |
2bb7ac98 | 1572 | fhXEUeChargedPileUp[i]->SetXTitle("p_{T trigger} (GeV/c)"); |
17af6e24 | 1573 | outputContainer->Add(fhXEUeChargedPileUp[i]) ; |
1574 | ||
1575 | fhZTChargedPileUp[i] = new TH2F(Form("hZTChargedPileUp%s",pileUpName[i].Data()), | |
1576 | Form("z_{T} for charged tracks, %s Pile-Up event",pileUpName[i].Data()), | |
1577 | nptbins,ptmin,ptmax,200,0.,2.); | |
1578 | fhZTChargedPileUp[i]->SetYTitle("z_{T}"); | |
2bb7ac98 | 1579 | fhZTChargedPileUp[i]->SetXTitle("p_{T trigger} (GeV/c)"); |
17af6e24 | 1580 | outputContainer->Add(fhZTChargedPileUp[i]) ; |
1581 | ||
1582 | fhZTUeChargedPileUp[i] = new TH2F(Form("hZTUeChargedPileUp%s",pileUpName[i].Data()), | |
1583 | Form("z_{T} for Underlying Event, %s Pile-Up event",pileUpName[i].Data()), | |
1584 | nptbins,ptmin,ptmax,200,0.,2.); | |
1585 | fhZTUeChargedPileUp[i]->SetYTitle("z_{T}"); | |
2bb7ac98 | 1586 | fhZTUeChargedPileUp[i]->SetXTitle("p_{T trigger} (GeV/c)"); |
17af6e24 | 1587 | outputContainer->Add(fhZTUeChargedPileUp[i]) ; |
1588 | ||
1589 | fhPtTrigChargedPileUp[i] = new TH2F(Form("hPtTrigChargedPileUp%s",pileUpName[i].Data()), | |
1590 | Form("trigger and charged tracks pt distribution, %s Pile-Up event",pileUpName[i].Data()), | |
1591 | nptbins,ptmin,ptmax,nptbins,ptmin,ptmax); | |
1592 | fhPtTrigChargedPileUp[i]->SetYTitle("p_{T h^{#pm}} (GeV/c)"); | |
1593 | fhPtTrigChargedPileUp[i]->SetXTitle("p_{T trigger} (GeV/c)"); | |
1594 | outputContainer->Add(fhPtTrigChargedPileUp[i]) ; | |
2bb7ac98 | 1595 | |
17af6e24 | 1596 | } |
b1f720a7 | 1597 | } |
1598 | ||
547c2f01 | 1599 | if(DoEventSelect()) |
1600 | { | |
e09cf5ef | 1601 | Int_t nMultiBins = GetMultiBin(); |
1602 | fhTrigDeltaPhiCharged = new TH2F*[nMultiBins] ; | |
1603 | fhTrigDeltaEtaCharged = new TH2F*[nMultiBins] ; | |
3f150b4b | 1604 | fhTrigXECorr = new TH2F*[nMultiBins] ; |
1605 | fhTrigXEUeCorr = new TH2F*[nMultiBins] ; | |
1606 | fhTrigZTCorr = new TH2F*[nMultiBins] ; | |
1607 | fhTrigZTUeCorr = new TH2F*[nMultiBins] ; | |
1608 | ||
1609 | for(Int_t im=0; im<nMultiBins; im++) | |
1610 | { | |
e09cf5ef | 1611 | fhTrigDeltaPhiCharged[im] = new TH2F |
62f2fe4d | 1612 | (Form("hTrigDeltaPhiCharged_%d",im),Form("hTrigDeltaPhiCharged_%d",im), nptbins,ptmin,ptmax, ndeltaphibins ,deltaphimin,deltaphimax); |
e09cf5ef | 1613 | fhTrigDeltaPhiCharged[im]->SetXTitle("p_{T trigger} (GeV/c)"); |
2bb7ac98 | 1614 | fhTrigDeltaPhiCharged[im]->SetYTitle("#Delta #phi (rad)"); |
3f150b4b | 1615 | |
e09cf5ef | 1616 | fhTrigDeltaEtaCharged[im] = new TH2F |
62f2fe4d | 1617 | (Form("hTrigDeltaEtaCharged_%d",im),Form("hTrigDeltaEtaCharged_%d",im), nptbins,ptmin,ptmax, ndeltaetabins ,deltaetamin,deltaetamax); |
e09cf5ef | 1618 | fhTrigDeltaEtaCharged[im]->SetXTitle("p_{T trigger} (GeV/c)"); |
1619 | fhTrigDeltaEtaCharged[im]->SetYTitle("#Delta #eta"); | |
3f150b4b | 1620 | |
1621 | fhTrigXECorr[im] = new TH2F | |
1622 | (Form("hTrigXEPtCorr_%d",im),Form("hTrigXEPtCorr_%d",im), nptbins,ptmin,ptmax,200,0.,2.); | |
1623 | fhTrigXECorr[im]->SetYTitle("x_{E trigger h^{#pm}}"); | |
2bb7ac98 | 1624 | fhTrigXECorr[im]->SetXTitle("p_{T trigger} (GeV/c)"); |
3f150b4b | 1625 | |
1626 | fhTrigXEUeCorr[im] = new TH2F | |
1627 | (Form("hTrigXEPtUeCorr_%d",im),Form("hTrigXEPtUeCorr_%d",im), nptbins,ptmin,ptmax,200,0.,2.); | |
1628 | fhTrigXEUeCorr[im]->SetYTitle("x_{E trigger h^{#pm}}"); | |
2bb7ac98 | 1629 | fhTrigXEUeCorr[im]->SetXTitle("p_{T trigger}(GeV/c)"); |
3f150b4b | 1630 | |
1631 | fhTrigZTCorr[im] = new TH2F | |
1632 | (Form("hTrigZTPtCorr_%d",im),Form("hTrigZTPtCorr_%d",im), nptbins,ptmin,ptmax,200,0.,2.); | |
1633 | fhTrigZTCorr[im]->SetYTitle("z_{trigger h^{#pm}}"); | |
2bb7ac98 | 1634 | fhTrigZTCorr[im]->SetXTitle("p_{T trigger} (GeV/c)"); |
3f150b4b | 1635 | |
1636 | fhTrigZTUeCorr[im] = new TH2F | |
1637 | (Form("hTrigZTPtUeCorr_%d",im),Form("hTrigZTPtUeCorr_%d",im), nptbins,ptmin,ptmax,200,0.,2.); | |
1638 | fhTrigZTUeCorr[im]->SetYTitle("z_{trigger h^{#pm}}"); | |
2bb7ac98 | 1639 | fhTrigZTUeCorr[im]->SetXTitle("p_{T trigger} (GeV/c)"); |
045396c8 | 1640 | |
e09cf5ef | 1641 | outputContainer->Add(fhTrigDeltaPhiCharged[im]) ; |
1642 | outputContainer->Add(fhTrigDeltaEtaCharged[im]) ; | |
3f150b4b | 1643 | outputContainer->Add(fhTrigXECorr[im]); |
1644 | outputContainer->Add(fhTrigXEUeCorr[im]); | |
1645 | outputContainer->Add(fhTrigZTCorr[im]); | |
1646 | outputContainer->Add(fhTrigZTUeCorr[im]); | |
045396c8 | 1647 | } |
1648 | } | |
1649 | ||
907b38cd | 1650 | if(fFillBradHisto) |
1651 | { | |
1652 | fhAssocPtBkg = new TH2F("hAssocPtBkg", " Trigger p_{T} vs associated hadron p_{T} from background", | |
1653 | nptbins, ptmin, ptmax,nptbins,ptmin,ptmax); | |
2bb7ac98 | 1654 | fhAssocPtBkg->SetXTitle("p_{T trigger} (GeV/c)"); |
1655 | fhAssocPtBkg->SetYTitle("p_{T associated} (GeV/c)"); | |
907b38cd | 1656 | outputContainer->Add(fhAssocPtBkg) ; |
1657 | ||
1658 | fhDeltaPhiBrad = new TH2F("hDeltaPhiBrad","atan2(sin(#Delta #phi), cos(#Delta #phi))/#pi vs p_{T trigger} ", | |
1659 | nptbins, ptmin, ptmax,288, -1.0/3.0, 5.0/3.0); | |
2bb7ac98 | 1660 | fhDeltaPhiBrad->SetXTitle("p_{T trigger} (GeV/c)"); |
907b38cd | 1661 | fhDeltaPhiBrad->SetYTitle("atan2(sin(#Delta #phi), cos(#Delta #phi))/#pi"); |
1662 | outputContainer->Add(fhDeltaPhiBrad) ; | |
1663 | } | |
7d306daf | 1664 | |
1665 | fhDeltaPhiDeltaEtaAssocPtBin = new TH2F*[fNAssocPtBins*nz]; | |
1666 | fhDeltaPhiAssocPtBin = new TH2F*[fNAssocPtBins*nz]; | |
1667 | fhDeltaPhiAssocPtBinDEta08 = new TH2F*[fNAssocPtBins*nz]; | |
1668 | fhDeltaPhiAssocPtBinDEta0 = new TH2F*[fNAssocPtBins*nz]; | |
1669 | fhXEAssocPtBin = new TH2F*[fNAssocPtBins*nz]; | |
1670 | fhZTAssocPtBin = new TH2F*[fNAssocPtBins*nz]; | |
3f150b4b | 1671 | |
907b38cd | 1672 | if(fFillBradHisto) |
7d306daf | 1673 | fhDeltaPhiBradAssocPtBin = new TH2F*[fNAssocPtBins*nz]; |
907b38cd | 1674 | |
1675 | if(fPi0Trigger || fDecayTrigger) | |
1676 | { | |
7d306daf | 1677 | fhDeltaPhiAssocPtBin = new TH2F*[fNAssocPtBins*nz]; |
1678 | fhDeltaPhiAssocPtBinDEta08 = new TH2F*[fNAssocPtBins*nz]; | |
1679 | fhXEAssocPtBin = new TH2F*[fNAssocPtBins*nz]; | |
1680 | fhZTAssocPtBin = new TH2F*[fNAssocPtBins*nz]; | |
1681 | fhXEDecayChargedAssocPtBin = new TH2F*[fNAssocPtBins*nz]; | |
1682 | fhZTDecayChargedAssocPtBin = new TH2F*[fNAssocPtBins*nz]; | |
1683 | fhDeltaPhiDecayChargedAssocPtBin = new TH2F*[fNAssocPtBins*nz]; | |
907b38cd | 1684 | } |
050ad675 | 1685 | |
907b38cd | 1686 | if(fHMPIDCorrelation) |
1687 | { | |
7d306daf | 1688 | fhDeltaPhiAssocPtBinHMPID = new TH2F*[fNAssocPtBins*nz]; |
1689 | fhDeltaPhiAssocPtBinHMPIDAcc= new TH2F*[fNAssocPtBins*nz]; | |
907b38cd | 1690 | } |
1691 | ||
babcbc9d | 1692 | for(Int_t i = 0 ; i < fNAssocPtBins ; i++) |
1693 | { | |
7d306daf | 1694 | for(Int_t z = 0 ; z < nz ; z++) |
907b38cd | 1695 | { |
7d306daf | 1696 | Int_t bin = i*nz+z; |
1697 | ||
1698 | if(fCorrelVzBin) | |
1699 | { | |
1700 | sz = "_vz%d"+z; | |
1701 | tz = ", v_{z} bin "+z; | |
1702 | } | |
1703 | ||
1704 | //printf("iAssoc %d, Vz %d, bin %d - sz %s, tz %s \n",i,z,bin,sz.Data(),tz.Data()); | |
8cc41381 | 1705 | |
7d306daf | 1706 | fhDeltaPhiDeltaEtaAssocPtBin[bin] = new TH2F(Form("hDeltaPhiDeltaEtaPtAssocPt%2.1f_%2.1f%s", fAssocPtBinLimit[i], fAssocPtBinLimit[i+1],sz.Data()), |
1707 | Form("#Delta #phi vs #Delta #eta for associated p_{T} bin [%2.1f,%2.1f]%s", fAssocPtBinLimit[i], fAssocPtBinLimit[i+1],tz.Data()), | |
8cc41381 | 1708 | ndeltaphibins ,deltaphimin,deltaphimax,ndeltaetabins,deltaetamin,deltaetamax); |
2bb7ac98 | 1709 | fhDeltaPhiDeltaEtaAssocPtBin[bin]->SetXTitle("#Delta #phi (rad)"); |
8cc41381 | 1710 | fhDeltaPhiDeltaEtaAssocPtBin[bin]->SetYTitle("#Delta #eta"); |
1711 | ||
7d306daf | 1712 | fhDeltaPhiAssocPtBin[bin] = new TH2F(Form("hDeltaPhiPtAssocPt%2.1f_%2.1f%s", fAssocPtBinLimit[i], fAssocPtBinLimit[i+1],sz.Data()), |
1713 | Form("#Delta #phi vs p_{T trigger} for associated p_{T} bin [%2.1f,%2.1f]%s", fAssocPtBinLimit[i], fAssocPtBinLimit[i+1],tz.Data()), | |
62f2fe4d | 1714 | nptbins, ptmin, ptmax, ndeltaphibins ,deltaphimin,deltaphimax); |
2bb7ac98 | 1715 | fhDeltaPhiAssocPtBin[bin]->SetXTitle("p_{T trigger} (GeV/c)"); |
1716 | fhDeltaPhiAssocPtBin[bin]->SetYTitle("#Delta #phi (rad)"); | |
907b38cd | 1717 | |
7d306daf | 1718 | fhDeltaPhiAssocPtBinDEta08[bin] = new TH2F(Form("hDeltaPhiDeltaEta0.8PtAssocPt%2.1f_%2.1f%s", fAssocPtBinLimit[i], fAssocPtBinLimit[i+1],sz.Data()), |
1719 | Form("#Delta #phi vs p_{T trigger} for associated p_{T} bin [%2.1f,%2.1f]%s, for #Delta #eta > 0.8", fAssocPtBinLimit[i], fAssocPtBinLimit[i+1],tz.Data()), | |
8cc41381 | 1720 | nptbins, ptmin, ptmax, ndeltaphibins ,deltaphimin,deltaphimax); |
2bb7ac98 | 1721 | fhDeltaPhiAssocPtBinDEta08[bin]->SetXTitle("p_{T trigger} (GeV/c)"); |
1722 | fhDeltaPhiAssocPtBinDEta08[bin]->SetYTitle("#Delta #phi (rad)"); | |
8cc41381 | 1723 | |
7d306daf | 1724 | fhDeltaPhiAssocPtBinDEta0[bin] = new TH2F(Form("hDeltaPhiDeltaEta0PtAssocPt%2.1f_%2.1f%s", fAssocPtBinLimit[i], fAssocPtBinLimit[i+1],tz.Data()), |
1725 | Form("#Delta #phi vs p_{T trigger} for associated p_{T} bin [%2.1f,%2.1f]%s, for #Delta #eta = 0.", fAssocPtBinLimit[i], fAssocPtBinLimit[i+1],tz.Data()), | |
8cc41381 | 1726 | nptbins, ptmin, ptmax, ndeltaphibins ,deltaphimin,deltaphimax); |
2bb7ac98 | 1727 | fhDeltaPhiAssocPtBinDEta0[bin]->SetXTitle("p_{T trigger} (GeV/c)"); |
1728 | fhDeltaPhiAssocPtBinDEta0[bin]->SetYTitle("#Delta #phi (rad)"); | |
907b38cd | 1729 | |
7d306daf | 1730 | fhXEAssocPtBin[bin] = new TH2F(Form("hXEAssocPtBin%1.f_%1.f%s", fAssocPtBinLimit[i], fAssocPtBinLimit[i+1],sz.Data()), |
1731 | Form("x_{E} vs p_{T trigger} for associated p_{T} bin [%2.1f,%2.1f]%s", fAssocPtBinLimit[i], fAssocPtBinLimit[i+1],tz.Data()), | |
907b38cd | 1732 | nptbins, ptmin, ptmax,200, 0.0, 2.0); |
2bb7ac98 | 1733 | fhXEAssocPtBin[bin]->SetXTitle("p_{T trigger} (GeV/c)"); |
8cc41381 | 1734 | fhXEAssocPtBin[bin]->SetYTitle("x_{E}"); |
907b38cd | 1735 | |
7d306daf | 1736 | fhZTAssocPtBin[bin] = new TH2F(Form("hZTAssocPtBin%1.f_%1.f%s", fAssocPtBinLimit[i], fAssocPtBinLimit[i+1],sz.Data()), |
1737 | Form("z_{T} vs p_{T trigger} for associated p_{T} bin [%2.1f,%2.1f]%s", fAssocPtBinLimit[i], fAssocPtBinLimit[i+1],tz.Data()), | |
8cc41381 | 1738 | nptbins, ptmin, ptmax,200, 0.0, 2.0); |
2bb7ac98 | 1739 | fhZTAssocPtBin[bin]->SetXTitle("p_{T trigger} (GeV/c)"); |
8cc41381 | 1740 | fhZTAssocPtBin[bin]->SetYTitle("z_{T}"); |
907b38cd | 1741 | |
8cc41381 | 1742 | outputContainer->Add(fhDeltaPhiDeltaEtaAssocPtBin[bin]) ; |
1743 | outputContainer->Add(fhDeltaPhiAssocPtBin[bin]) ; | |
1744 | outputContainer->Add(fhDeltaPhiAssocPtBinDEta08[bin]) ; | |
1745 | outputContainer->Add(fhDeltaPhiAssocPtBinDEta0[bin]) ; | |
1746 | outputContainer->Add(fhXEAssocPtBin[bin]); | |
1747 | outputContainer->Add(fhZTAssocPtBin[bin]); | |
1748 | ||
1749 | if(fPi0Trigger || fDecayTrigger) | |
1750 | { | |
7d306daf | 1751 | fhDeltaPhiDecayChargedAssocPtBin[bin] = new TH2F(Form("hDeltaPhiPtDecayChargedAssocPt%2.1f_%2.1f%s", fAssocPtBinLimit[i], fAssocPtBinLimit[i+1],sz.Data()), |
1752 | Form("#Delta #phi vs p_{T trigger} tagged as decay for associated p_{T} bin [%2.1f,%2.1f]%s", fAssocPtBinLimit[i], fAssocPtBinLimit[i+1],tz.Data()), | |
8cc41381 | 1753 | nptbins, ptmin, ptmax, ndeltaphibins ,deltaphimin,deltaphimax); |
2bb7ac98 | 1754 | fhDeltaPhiDecayChargedAssocPtBin[bin]->SetXTitle("p_{T trigger} (GeV/c)"); |
1755 | fhDeltaPhiDecayChargedAssocPtBin[bin]->SetYTitle("#Delta #phi (rad)"); | |
8cc41381 | 1756 | |
7d306daf | 1757 | fhXEDecayChargedAssocPtBin[bin] = new TH2F(Form("hXEDecayChargedAssocPtBin%1.f_%1.f%s", fAssocPtBinLimit[i], fAssocPtBinLimit[i+1],sz.Data()), |
1758 | Form("x_{E} vs p_{T trigger} tagged as decay for associated p_{T} bin [%2.1f,%2.1f]%s", fAssocPtBinLimit[i], fAssocPtBinLimit[i+1],tz.Data()), | |
8cc41381 | 1759 | nptbins, ptmin, ptmax,200, 0.0, 2.0); |
2bb7ac98 | 1760 | fhXEDecayChargedAssocPtBin[bin]->SetXTitle("p_{T trigger} (GeV/c)"); |
8cc41381 | 1761 | fhXEDecayChargedAssocPtBin[bin]->SetYTitle("x_{E}"); |
1762 | ||
7d306daf | 1763 | fhZTDecayChargedAssocPtBin[bin] = new TH2F(Form("hZTDecayChargedAssocPtBin%1.f_%1.f%s", fAssocPtBinLimit[i], fAssocPtBinLimit[i+1],sz.Data()), |
1764 | Form("z_{T} vs p_{T trigger} tagged as decay for associated p_{T} bin [%2.1f,%2.1f]%s", fAssocPtBinLimit[i], fAssocPtBinLimit[i+1],tz.Data()), | |
8cc41381 | 1765 | nptbins, ptmin, ptmax,200, 0.0, 2.0); |
2bb7ac98 | 1766 | fhZTDecayChargedAssocPtBin[bin]->SetXTitle("p_{T trigger} (GeV/c)"); |
8cc41381 | 1767 | fhZTDecayChargedAssocPtBin[bin]->SetYTitle("z_{T}"); |
1768 | ||
1769 | outputContainer->Add(fhDeltaPhiDecayChargedAssocPtBin[bin]) ; | |
1770 | outputContainer->Add(fhXEDecayChargedAssocPtBin[bin]); | |
1771 | outputContainer->Add(fhZTDecayChargedAssocPtBin[bin]); | |
1772 | ||
1773 | } | |
907b38cd | 1774 | |
8cc41381 | 1775 | if(fFillBradHisto) |
1776 | { | |
7d306daf | 1777 | fhDeltaPhiBradAssocPtBin[bin] = new TH2F(Form("hDeltaPhiBradPtAssocPt%2.1f_%2.1f%s", fAssocPtBinLimit[i], fAssocPtBinLimit[i+1],sz.Data()), |
1778 | Form("atan2(sin(#Delta #phi), cos(#Delta #phi))/#pi vs p_{T trigger} for associated p_{T} bin [%2.1f,%2.1f]%s", fAssocPtBinLimit[i], fAssocPtBinLimit[i+1],tz.Data()), | |
8cc41381 | 1779 | nptbins, ptmin, ptmax,288, -1.0/3.0, 5.0/3.0); |
2bb7ac98 | 1780 | fhDeltaPhiBradAssocPtBin[bin]->SetXTitle("p_{T trigger} (GeV/c)"); |
8cc41381 | 1781 | fhDeltaPhiBradAssocPtBin[bin]->SetYTitle("atan2(sin(#Delta #phi), cos(#Delta #phi))/#pi"); |
1782 | outputContainer->Add(fhDeltaPhiBradAssocPtBin[bin]) ; | |
1783 | } | |
907b38cd | 1784 | |
8cc41381 | 1785 | if(fHMPIDCorrelation) |
1786 | { | |
7d306daf | 1787 | fhDeltaPhiAssocPtBinHMPID[bin] = new TH2F(Form("hDeltaPhiPtAssocPt%2.1f_%2.1f%sHMPID", fAssocPtBinLimit[i], fAssocPtBinLimit[i+1],sz.Data()), |
1788 | Form("#Delta #phi vs p_{T trigger} for associated p_{T} bin [%2.1f,%2.1f]%s, with track having HMPID signal", fAssocPtBinLimit[i], fAssocPtBinLimit[i+1],tz.Data()), | |
8cc41381 | 1789 | nptbins, ptmin, ptmax, ndeltaphibins ,deltaphimin,deltaphimax); |
2bb7ac98 | 1790 | fhDeltaPhiAssocPtBinHMPID[bin]->SetXTitle("p_{T trigger} (GeV/c)" ); |
1791 | fhDeltaPhiAssocPtBinHMPID[bin]->SetYTitle("#Delta #phi (rad)"); | |
8cc41381 | 1792 | |
7d306daf | 1793 | fhDeltaPhiAssocPtBinHMPIDAcc[bin] = new TH2F(Form("hDeltaPhiPtAssocPt%2.1f_%2.1f%sHMPIDAcc", fAssocPtBinLimit[i], fAssocPtBinLimit[i+1],sz.Data()), |
1794 | Form("#Delta #phi vs p_{T trigger} for associated p_{T} bin [%2.1f,%2.1f]%s, with track within 5<phi<20 deg", fAssocPtBinLimit[i], fAssocPtBinLimit[i+1],tz.Data()), | |
8cc41381 | 1795 | nptbins, ptmin, ptmax, ndeltaphibins ,deltaphimin,deltaphimax); |
2bb7ac98 | 1796 | fhDeltaPhiAssocPtBinHMPIDAcc[bin]->SetXTitle("p_{T trigger} (GeV/c)"); |
1797 | fhDeltaPhiAssocPtBinHMPIDAcc[bin]->SetYTitle("#Delta #phi (rad)"); | |
8cc41381 | 1798 | |
7d306daf | 1799 | outputContainer->Add(fhDeltaPhiAssocPtBinHMPID[bin]) ; |
1800 | outputContainer->Add(fhDeltaPhiAssocPtBinHMPIDAcc[bin]) ; | |
8cc41381 | 1801 | |
1802 | } | |
1803 | } | |
e09cf5ef | 1804 | } |
045396c8 | 1805 | |
907b38cd | 1806 | if(fPi0Trigger || fDecayTrigger) |
547c2f01 | 1807 | { |
907b38cd | 1808 | if(fPi0Trigger) |
1809 | { | |
1810 | fhPtPi0DecayRatio = new TH2F | |
764ab1f4 | 1811 | ("hPtPi0DecayRatio","p_{T} of #pi^{0} and the ratio of pt for two decay", |
907b38cd | 1812 | nptbins,ptmin,ptmax, 100,0.,2.); |
1813 | fhPtPi0DecayRatio->SetXTitle("p_{T}^{#pi^{0}} (GeV/c)"); | |
1814 | fhPtPi0DecayRatio->SetYTitle("p_{T}^{Decay}/p_{T}^{#pi^{0}}"); | |
050ad675 | 1815 | outputContainer->Add(fhPtPi0DecayRatio) ; |
907b38cd | 1816 | } |
e09cf5ef | 1817 | |
1818 | fhDeltaPhiDecayCharged = new TH2F | |
babcbc9d | 1819 | ("hDeltaPhiDecayCharged","#phi_{Decay} - #phi_{h^{#pm}} vs p_{T Decay}", |
62f2fe4d | 1820 | nptbins,ptmin,ptmax, ndeltaphibins ,deltaphimin,deltaphimax); |
2bb7ac98 | 1821 | fhDeltaPhiDecayCharged->SetYTitle("#Delta #phi (rad)"); |
e09cf5ef | 1822 | fhDeltaPhiDecayCharged->SetXTitle("p_{T Decay} (GeV/c)"); |
1823 | ||
3f150b4b | 1824 | fhXEDecayCharged = |
1825 | new TH2F("hXEDecayCharged","x_{E} Decay", | |
1826 | nptbins,ptmin,ptmax,200,0.,2.); | |
1827 | fhXEDecayCharged->SetYTitle("x_{E}"); | |
2bb7ac98 | 1828 | fhXEDecayCharged->SetXTitle("p_{T decay} (GeV/c)"); |
3f150b4b | 1829 | |
1830 | fhZTDecayCharged = | |
1831 | new TH2F("hZTDecayCharged","z_{trigger h^{#pm}} = p_{T h^{#pm}} / p_{T Decay}", | |
e09cf5ef | 1832 | nptbins,ptmin,ptmax,200,0.,2.); |
3f150b4b | 1833 | fhZTDecayCharged->SetYTitle("z_{decay h^{#pm}}"); |
2bb7ac98 | 1834 | fhZTDecayCharged->SetXTitle("p_{T decay} (GeV/c)"); |
e09cf5ef | 1835 | |
e09cf5ef | 1836 | outputContainer->Add(fhDeltaPhiDecayCharged) ; |
3f150b4b | 1837 | outputContainer->Add(fhXEDecayCharged) ; |
1838 | outputContainer->Add(fhZTDecayCharged) ; | |
e09cf5ef | 1839 | } |
1840 | ||
547c2f01 | 1841 | if(fMakeSeveralUE) |
1842 | { | |
e09cf5ef | 1843 | fhDeltaPhiUeLeftCharged = new TH2F |
babcbc9d | 1844 | ("hDeltaPhiUeLeftChargedPt","#phi_{trigger} - #phi_{#Ueh^{#pm}} vs p_{T Ueh^{#pm}} with UE left side range of trigger particles", |
62f2fe4d | 1845 | nptbins,ptmin,ptmax, ndeltaphibins ,deltaphimin,deltaphimax); |
2bb7ac98 | 1846 | fhDeltaPhiUeLeftCharged->SetYTitle("#Delta #phi (rad)"); |
e09cf5ef | 1847 | fhDeltaPhiUeLeftCharged->SetXTitle("p_{T h^{#pm}} (GeV/c)"); |
1848 | outputContainer->Add(fhDeltaPhiUeLeftCharged) ; | |
1849 | ||
1850 | fhDeltaPhiUeRightCharged = new TH2F | |
babcbc9d | 1851 | ("hDeltaPhiUeRightChargedPt","#phi_{trigger} - #phi_{#Ueh^{#pm}} vs p_{T Ueh^{#pm}} with UE right side range of trigger particles", |
62f2fe4d | 1852 | nptbins,ptmin,ptmax, ndeltaphibins ,deltaphimin,deltaphimax); |
2bb7ac98 | 1853 | fhDeltaPhiUeRightCharged->SetYTitle("#Delta #phi (rad)"); |
e09cf5ef | 1854 | fhDeltaPhiUeRightCharged->SetXTitle("p_{T h^{#pm}} (GeV/c)"); |
1855 | outputContainer->Add(fhDeltaPhiUeRightCharged) ; | |
1856 | ||
8cc41381 | 1857 | fhDeltaPhiUeLeftUpCharged = new TH2F |
1858 | ("hDeltaPhiUeLeftUpChargedPt","#phi_{trigger} - #phi_{#Ueh^{#pm}} vs p_{T Ueh^{#pm}} with UE left Up side range of trigger particles", | |
1859 | nptbins,ptmin,ptmax, ndeltaphibins ,deltaphimin,deltaphimax); | |
2bb7ac98 | 1860 | fhDeltaPhiUeLeftUpCharged->SetYTitle("#Delta #phi (rad)"); |
8cc41381 | 1861 | fhDeltaPhiUeLeftUpCharged->SetXTitle("p_{T h^{#pm}} (GeV/c)"); |
1862 | outputContainer->Add(fhDeltaPhiUeLeftUpCharged) ; | |
1863 | ||
1864 | fhDeltaPhiUeRightUpCharged = new TH2F | |
1865 | ("hDeltaPhiUeRightUpChargedPt","#phi_{trigger} - #phi_{#Ueh^{#pm}} vs p_{T Ueh^{#pm}} with UE right Up side range of trigger particles", | |
1866 | nptbins,ptmin,ptmax, ndeltaphibins ,deltaphimin,deltaphimax); | |
2bb7ac98 | 1867 | fhDeltaPhiUeRightUpCharged->SetYTitle("#Delta #phi (rad)"); |
8cc41381 | 1868 | fhDeltaPhiUeRightUpCharged->SetXTitle("p_{T h^{#pm}} (GeV/c)"); |
1869 | outputContainer->Add(fhDeltaPhiUeRightUpCharged) ; | |
1870 | ||
1871 | fhDeltaPhiUeLeftDownCharged = new TH2F | |
1872 | ("hDeltaPhiUeLeftDownChargedPt","#phi_{trigger} - #phi_{#Ueh^{#pm}} vs p_{T Ueh^{#pm}} with UE left Down side range of trigger particles", | |
1873 | nptbins,ptmin,ptmax, ndeltaphibins ,deltaphimin,deltaphimax); | |
2bb7ac98 | 1874 | fhDeltaPhiUeLeftDownCharged->SetYTitle("#Delta #phi (rad)"); |
8cc41381 | 1875 | fhDeltaPhiUeLeftDownCharged->SetXTitle("p_{T h^{#pm}} (GeV/c)"); |
1876 | outputContainer->Add(fhDeltaPhiUeLeftDownCharged) ; | |
1877 | ||
1878 | fhDeltaPhiUeRightDownCharged = new TH2F | |
1879 | ("hDeltaPhiUeRightDownChargedPt","#phi_{trigger} - #phi_{#Ueh^{#pm}} vs p_{T Ueh^{#pm}} with UE right Down side range of trigger particles", | |
1880 | nptbins,ptmin,ptmax, ndeltaphibins ,deltaphimin,deltaphimax); | |
2bb7ac98 | 1881 | fhDeltaPhiUeRightDownCharged->SetYTitle("#Delta #phi (rad)"); |
8cc41381 | 1882 | fhDeltaPhiUeRightDownCharged->SetXTitle("p_{T h^{#pm}} (GeV/c)"); |
1883 | outputContainer->Add(fhDeltaPhiUeRightDownCharged) ; | |
1884 | ||
3f150b4b | 1885 | fhXEUeLeftCharged = |
1886 | new TH2F("hXEUeChargedLeft","x_{E} with UE left side of trigger", | |
e09cf5ef | 1887 | nptbins,ptmin,ptmax,200,0.,2.); |
3f150b4b | 1888 | fhXEUeLeftCharged->SetYTitle("x_{E Ueh^{#pm}}"); |
2bb7ac98 | 1889 | fhXEUeLeftCharged->SetXTitle("p_{T trigger} (GeV/c)"); |
3f150b4b | 1890 | outputContainer->Add(fhXEUeLeftCharged) ; |
e09cf5ef | 1891 | |
3f150b4b | 1892 | fhXEUeRightCharged = |
1893 | new TH2F("hXEUeChargedRight","x_{E h^{#pm}} with UE right side of trigger", | |
e09cf5ef | 1894 | nptbins,ptmin,ptmax,200,0.,2.); |
3f150b4b | 1895 | fhXEUeRightCharged->SetYTitle("z_{trigger Ueh^{#pm}}"); |
2bb7ac98 | 1896 | fhXEUeRightCharged->SetXTitle("p_{T trigger} (GeV/c)"); |
3f150b4b | 1897 | outputContainer->Add(fhXEUeRightCharged) ; |
1898 | ||
8cc41381 | 1899 | fhXEUeLeftUpCharged = |
1900 | new TH2F("hXEUeChargedLeftUp","x_{E} with UE left Up side of trigger", | |
1901 | nptbins,ptmin,ptmax,200,0.,2.); | |
1902 | fhXEUeLeftUpCharged->SetYTitle("x_{E Ueh^{#pm}}"); | |
2bb7ac98 | 1903 | fhXEUeLeftUpCharged->SetXTitle("p_{T trigger} (GeV/c)"); |
8cc41381 | 1904 | outputContainer->Add(fhXEUeLeftUpCharged) ; |
1905 | ||
1906 | fhXEUeRightUpCharged = | |
1907 | new TH2F("hXEUeChargedRightUp","x_{E h^{#pm}} with UE right Up side of trigger", | |
1908 | nptbins,ptmin,ptmax,200,0.,2.); | |
1909 | fhXEUeRightUpCharged->SetYTitle("z_{trigger Ueh^{#pm}}"); | |
2bb7ac98 | 1910 | fhXEUeRightUpCharged->SetXTitle("p_{T trigger} (GeV/c)"); |
8cc41381 | 1911 | outputContainer->Add(fhXEUeRightUpCharged) ; |
1912 | ||
1913 | fhXEUeLeftDownCharged = | |
1914 | new TH2F("hXEUeChargedLeftDown","x_{E} with UE left Down side of trigger", | |
1915 | nptbins,ptmin,ptmax,200,0.,2.); | |
1916 | fhXEUeLeftDownCharged->SetYTitle("x_{E Ueh^{#pm}}"); | |
2bb7ac98 | 1917 | fhXEUeLeftDownCharged->SetXTitle("p_{T trigger} (GeV/c)"); |
8cc41381 | 1918 | outputContainer->Add(fhXEUeLeftDownCharged) ; |
1919 | ||
1920 | fhXEUeRightDownCharged = | |
1921 | new TH2F("hXEUeChargedRightDown","x_{E h^{#pm}} with UE right Down side of trigger", | |
1922 | nptbins,ptmin,ptmax,200,0.,2.); | |
1923 | fhXEUeRightDownCharged->SetYTitle("z_{trigger Ueh^{#pm}}"); | |
2bb7ac98 | 1924 | fhXEUeRightDownCharged->SetXTitle("p_{T trigger} (GeV/c)"); |
8cc41381 | 1925 | outputContainer->Add(fhXEUeRightDownCharged) ; |
1926 | ||
3f150b4b | 1927 | fhPtHbpXEUeLeftCharged = |
1928 | new TH2F("hHbpXEUeChargedLeft","#xi = ln(1/x_{E}) with charged UE left side of trigger", | |
1929 | nptbins,ptmin,ptmax,200,0.,10.); | |
1930 | fhPtHbpXEUeLeftCharged->SetYTitle("ln(1/x_{E})"); | |
2bb7ac98 | 1931 | fhPtHbpXEUeLeftCharged->SetXTitle("p_{T trigger} (GeV/c)"); |
3f150b4b | 1932 | outputContainer->Add(fhPtHbpXEUeLeftCharged) ; |
e09cf5ef | 1933 | |
3f150b4b | 1934 | fhPtHbpXEUeRightCharged = |
1935 | new TH2F("hHbpXEUeChargedRight","#xi = ln(1/x_{E}) with charged UE right side of trigger", | |
e09cf5ef | 1936 | nptbins,ptmin,ptmax,200,0.,10.); |
3f150b4b | 1937 | fhPtHbpXEUeRightCharged->SetYTitle("ln(1/x_{E})"); |
2bb7ac98 | 1938 | fhPtHbpXEUeRightCharged->SetXTitle("p_{T trigger} (GeV/c)"); |
3f150b4b | 1939 | outputContainer->Add(fhPtHbpXEUeRightCharged) ; |
1940 | ||
1941 | fhZTUeLeftCharged = | |
1942 | new TH2F("hZTUeChargedLeft","z_{trigger h^{#pm}} = p_{T Ueh^{#pm}} / p_{T trigger} with UE left side of trigger", | |
1943 | nptbins,ptmin,ptmax,200,0.,2.); | |
1944 | fhZTUeLeftCharged->SetYTitle("z_{trigger Ueh^{#pm}}"); | |
2bb7ac98 | 1945 | fhZTUeLeftCharged->SetXTitle("p_{T trigger} (GeV/c)"); |
3f150b4b | 1946 | outputContainer->Add(fhZTUeLeftCharged) ; |
1947 | ||
1948 | fhZTUeRightCharged = | |
1949 | new TH2F("hZTUeChargedRight","z_{trigger h^{#pm}} = p_{T Ueh^{#pm}} / p_{T trigger} with UE right side of trigger", | |
1950 | nptbins,ptmin,ptmax,200,0.,2.); | |
1951 | fhZTUeRightCharged->SetYTitle("z_{trigger Ueh^{#pm}}"); | |
2bb7ac98 | 1952 | fhZTUeRightCharged->SetXTitle("p_{T trigger} (GeV/c)"); |
3f150b4b | 1953 | outputContainer->Add(fhZTUeRightCharged) ; |
e09cf5ef | 1954 | |
3f150b4b | 1955 | fhPtHbpZTUeLeftCharged = |
1956 | new TH2F("hHbpZTUeChargedLeft","#xi = ln(1/z_{T}) with charged UE left side of trigger", | |
e09cf5ef | 1957 | nptbins,ptmin,ptmax,200,0.,10.); |
3f150b4b | 1958 | fhPtHbpZTUeLeftCharged->SetYTitle("ln(1/z_{T})"); |
2bb7ac98 | 1959 | fhPtHbpZTUeLeftCharged->SetXTitle("p_{T trigger} (GeV/c)"); |
3f150b4b | 1960 | outputContainer->Add(fhPtHbpZTUeLeftCharged) ; |
1961 | ||
1962 | fhPtHbpZTUeRightCharged = | |
1963 | new TH2F("hHbpZTUeChargedRight","#xi = ln(1/z_{T}) with charged UE right side of trigger", | |
1964 | nptbins,ptmin,ptmax,200,0.,10.); | |
1965 | fhPtHbpZTUeRightCharged->SetYTitle("ln(1/z_{T})"); | |
2bb7ac98 | 1966 | fhPtHbpZTUeRightCharged->SetXTitle("p_{T trigger} (GeV/c)"); |
3f150b4b | 1967 | outputContainer->Add(fhPtHbpZTUeRightCharged) ; |
e09cf5ef | 1968 | |
8cc41381 | 1969 | } |
e09cf5ef | 1970 | } //Correlation with charged hadrons |
050ad675 | 1971 | |
e09cf5ef | 1972 | //Correlation with neutral hadrons |
547c2f01 | 1973 | if(fNeutralCorr) |
1974 | { | |
e09cf5ef | 1975 | fhDeltaPhiDeltaEtaNeutral = new TH2F |
babcbc9d | 1976 | ("hDeltaPhiDeltaEtaNeutral","#phi_{trigger} - #phi_{h^{0}} vs #eta_{trigger} - #eta_{h^{0}}", |
62f2fe4d | 1977 | ndeltaphibins ,deltaphimin,deltaphimax, ndeltaetabins ,deltaetamin,deltaetamax); |
2bb7ac98 | 1978 | fhDeltaPhiDeltaEtaNeutral->SetXTitle("#Delta #phi (rad)"); |
e09cf5ef | 1979 | fhDeltaPhiDeltaEtaNeutral->SetYTitle("#Delta #eta"); |
1980 | ||
1981 | fhPhiNeutral = new TH2F | |
babcbc9d | 1982 | ("hPhiNeutral","#phi_{#pi^{0}} vs p_{T #pi^{0}}", |
e09cf5ef | 1983 | nptbins,ptmin,ptmax,nphibins,phimin,phimax); |
1984 | fhPhiNeutral->SetYTitle("#phi_{#pi^{0}} (rad)"); | |
1985 | fhPhiNeutral->SetXTitle("p_{T #pi^{0}} (GeV/c)"); | |
1986 | ||
1987 | fhEtaNeutral = new TH2F | |
babcbc9d | 1988 | ("hEtaNeutral","#eta_{#pi^{0}} vs p_{T #pi^{0}}", |
e09cf5ef | 1989 | nptbins,ptmin,ptmax,netabins,etamin,etamax); |
1990 | fhEtaNeutral->SetYTitle("#eta_{#pi^{0}} (rad)"); | |
1991 | fhEtaNeutral->SetXTitle("p_{T #pi^{0}} (GeV/c)"); | |
1992 | ||
1993 | fhDeltaPhiNeutral = new TH2F | |
babcbc9d | 1994 | ("hDeltaPhiNeutral","#phi_{trigger} - #phi_{#pi^{0}} vs p_{T trigger}", |
e09cf5ef | 1995 | nptbins,ptmin,ptmax,nphibins,phimin,phimax); |
2bb7ac98 | 1996 | fhDeltaPhiNeutral->SetYTitle("#Delta #phi (rad)"); |
e09cf5ef | 1997 | fhDeltaPhiNeutral->SetXTitle("p_{T trigger} (GeV/c)"); |
1998 | ||
1999 | fhDeltaPhiNeutralPt = new TH2F | |
babcbc9d | 2000 | ("hDeltaPhiNeutralPt","#phi_{trigger} - #phi_{#pi^{0}} vs p_{T #pi^{0}}}", |
62f2fe4d | 2001 | nptbins,ptmin,ptmax, ndeltaphibins ,deltaphimin,deltaphimax); |
2bb7ac98 | 2002 | fhDeltaPhiNeutralPt->SetYTitle("#Delta #phi (rad)"); |
e09cf5ef | 2003 | fhDeltaPhiNeutralPt->SetXTitle("p_{T h^{0}} (GeV/c)"); |
2004 | ||
2005 | fhDeltaPhiUeNeutralPt = new TH2F | |
babcbc9d | 2006 | ("hDeltaPhiUeNeutralPt","#phi_{trigger} - #phi_{#pi^{0}} vs p_{T #pi^{0}}}", |
62f2fe4d | 2007 | nptbins,ptmin,ptmax, ndeltaphibins ,deltaphimin,deltaphimax); |
2bb7ac98 | 2008 | fhDeltaPhiUeNeutralPt->SetYTitle("#Delta #phi (rad)"); |
e09cf5ef | 2009 | fhDeltaPhiUeNeutralPt->SetXTitle("p_{T h^{0}} (GeV/c)"); |
2010 | ||
2011 | fhDeltaEtaNeutral = new TH2F | |
babcbc9d | 2012 | ("hDeltaEtaNeutral","#eta_{trigger} - #eta_{#pi^{0}} vs p_{T trigger}", |
62f2fe4d | 2013 | nptbins,ptmin,ptmax, ndeltaetabins ,deltaetamin,deltaetamax); |
e09cf5ef | 2014 | fhDeltaEtaNeutral->SetYTitle("#Delta #eta"); |
2015 | fhDeltaEtaNeutral->SetXTitle("p_{T trigger} (GeV/c)"); | |
2016 | ||
3f150b4b | 2017 | fhXENeutral = |
2018 | new TH2F("hXENeutral","x_{E} for #pi^{0} associated", | |
e09cf5ef | 2019 | nptbins,ptmin,ptmax,200,0.,2.); |
3f150b4b | 2020 | fhXENeutral->SetYTitle("x_{E}"); |
2bb7ac98 | 2021 | fhXENeutral->SetXTitle("p_{T trigger} (GeV/c)"); |
e09cf5ef | 2022 | |
3f150b4b | 2023 | fhXEUeNeutral = |
2024 | new TH2F("hXEUeNeutral","x_{E} for #pi^{0} associated", | |
e09cf5ef | 2025 | nptbins,ptmin,ptmax,200,0.,2.); |
3f150b4b | 2026 | fhXEUeNeutral->SetYTitle("x_{E}"); |
2bb7ac98 | 2027 | fhXEUeNeutral->SetXTitle("p_{T trigger} (GeV/c)"); |
e09cf5ef | 2028 | |
3f150b4b | 2029 | fhPtHbpXENeutral = |
2030 | new TH2F("hHbpXENeutral","#xi = ln(1/x_{E})for #pi^{0} associated", | |
e09cf5ef | 2031 | nptbins,ptmin,ptmax,200,0.,10.); |
3f150b4b | 2032 | fhPtHbpXENeutral->SetYTitle("ln(1/x_{E})"); |
2bb7ac98 | 2033 | fhPtHbpXENeutral->SetXTitle("p_{T trigger} (GeV/c)"); |
e09cf5ef | 2034 | |
3f150b4b | 2035 | fhPtHbpXEUeNeutral = |
2036 | new TH2F("hHbpXEUeNeutral","#xi = ln(1/x_{E}) for #pi^{0} associated", | |
e09cf5ef | 2037 | nptbins,ptmin,ptmax,200,0.,10.); |
3f150b4b | 2038 | fhPtHbpXEUeNeutral->SetYTitle("ln(1/x_{E})"); |
2bb7ac98 | 2039 | fhPtHbpXEUeNeutral->SetXTitle("p_{T trigger} (GeV/c)"); |
3f150b4b | 2040 | |
2041 | fhZTNeutral = | |
2042 | new TH2F("hZTNeutral","z_{trigger #pi} = p_{T #pi^{0}} / p_{T trigger} for #pi^{0} associated", | |
2043 | nptbins,ptmin,ptmax,200,0.,2.); | |
2044 | fhZTNeutral->SetYTitle("z_{trigger #pi^{0}}"); | |
2bb7ac98 | 2045 | fhZTNeutral->SetXTitle("p_{T trigger} (GeV/c)"); |
e09cf5ef | 2046 | |
3f150b4b | 2047 | fhZTUeNeutral = |
2048 | new TH2F("hZTUeNeutral","z_{trigger #pi} = p_{T #pi^{0}} / p_{T trigger} for #pi^{0} associated", | |
2049 | nptbins,ptmin,ptmax,200,0.,2.); | |
2050 | fhZTUeNeutral->SetYTitle("z_{trigger #pi^{0}}"); | |
2bb7ac98 | 2051 | fhZTUeNeutral->SetXTitle("p_{T trigger} (GeV/c)"); |
3f150b4b | 2052 | |
2053 | fhPtHbpZTNeutral = | |
2054 | new TH2F("hHbpZTNeutral","#xi = ln(1/x_{E}) for #pi^{0} associated", | |
2055 | nptbins,ptmin,ptmax,200,0.,10.); | |
2056 | fhPtHbpZTNeutral->SetYTitle("ln(1/z_{T})"); | |
2057 | fhPtHbpZTNeutral->SetXTitle("p_{T trigger}"); | |
2058 | ||
2059 | fhPtHbpZTUeNeutral = | |
2060 | new TH2F("hHbpZTUeNeutral","#xi = ln(1/x_{E}) for #pi^{0} associated", | |
2061 | nptbins,ptmin,ptmax,200,0.,10.); | |
2062 | fhPtHbpXEUeNeutral->SetYTitle("ln(1/z_{T})"); | |
2bb7ac98 | 2063 | fhPtHbpXEUeNeutral->SetXTitle("p_{T trigger} (GeV/c)"); |
e09cf5ef | 2064 | |
2065 | outputContainer->Add(fhDeltaPhiDeltaEtaNeutral); | |
2066 | outputContainer->Add(fhPhiNeutral) ; | |
2067 | outputContainer->Add(fhEtaNeutral) ; | |
2068 | outputContainer->Add(fhDeltaPhiNeutral) ; | |
2069 | outputContainer->Add(fhDeltaPhiNeutralPt) ; | |
2070 | outputContainer->Add(fhDeltaPhiUeNeutralPt) ; | |
2071 | outputContainer->Add(fhDeltaEtaNeutral) ; | |
3f150b4b | 2072 | outputContainer->Add(fhXENeutral) ; |
2073 | outputContainer->Add(fhXEUeNeutral) ; | |
2074 | outputContainer->Add(fhPtHbpXENeutral) ; | |
2075 | outputContainer->Add(fhPtHbpXEUeNeutral) ; | |
2076 | outputContainer->Add(fhZTNeutral) ; | |
2077 | outputContainer->Add(fhZTUeNeutral) ; | |
2078 | outputContainer->Add(fhPtHbpZTNeutral) ; | |
2079 | outputContainer->Add(fhPtHbpZTUeNeutral) ; | |
e09cf5ef | 2080 | |
907b38cd | 2081 | if(fPi0Trigger || fDecayTrigger) |
babcbc9d | 2082 | { |
e09cf5ef | 2083 | fhDeltaPhiDecayNeutral = new TH2F |
babcbc9d | 2084 | ("hDeltaPhiDecayNeutral","#phi_{Decay} - #phi_{h^{0}} vs p_{T Decay}", |
62f2fe4d | 2085 | nptbins,ptmin,ptmax, ndeltaphibins ,deltaphimin,deltaphimax); |
2bb7ac98 | 2086 | fhDeltaPhiDecayNeutral->SetYTitle("#Delta #phi (rad)"); |
e09cf5ef | 2087 | fhDeltaPhiDecayNeutral->SetXTitle("p_{T Decay} (GeV/c)"); |
2088 | ||
3f150b4b | 2089 | fhXEDecayNeutral = |
2090 | new TH2F("hXEDecayNeutral","x_{E} for decay trigger", | |
2091 | nptbins,ptmin,ptmax,200,0.,2.); | |
2092 | fhXEDecayNeutral->SetYTitle("x_{E}"); | |
2093 | fhXEDecayNeutral->SetXTitle("p_{T decay}"); | |
2094 | ||
2095 | fhZTDecayNeutral = | |
2096 | new TH2F("hZTDecayNeutral","z_{trigger h^{0}} = p_{T h^{0}} / p_{T Decay}", | |
e09cf5ef | 2097 | nptbins,ptmin,ptmax,200,0.,2.); |
3f150b4b | 2098 | fhZTDecayNeutral->SetYTitle("z_{h^{0}}"); |
2099 | fhZTDecayNeutral->SetXTitle("p_{T decay}"); | |
e09cf5ef | 2100 | |
2101 | outputContainer->Add(fhDeltaPhiDecayNeutral) ; | |
3f150b4b | 2102 | outputContainer->Add(fhXEDecayNeutral) ; |
2103 | outputContainer->Add(fhZTDecayNeutral) ; | |
2104 | ||
e09cf5ef | 2105 | } |
2106 | ||
547c2f01 | 2107 | if(fMakeSeveralUE) |
2108 | { | |
e09cf5ef | 2109 | fhDeltaPhiUeLeftNeutral = new TH2F |
babcbc9d | 2110 | ("hDeltaPhiUeLeftNeutralPt","#phi_{trigger} - #phi_{#Ueh^{0}} vs p_{T h^{0}} with neutral UE left side range of trigger particles", |
62f2fe4d | 2111 | nptbins,ptmin,ptmax, ndeltaphibins ,deltaphimin,deltaphimax); |
2bb7ac98 | 2112 | fhDeltaPhiUeLeftNeutral->SetYTitle("#Delta #phi (rad)"); |
e09cf5ef | 2113 | fhDeltaPhiUeLeftNeutral->SetXTitle("p_{T h^{0}} (GeV/c)"); |
2114 | outputContainer->Add(fhDeltaPhiUeLeftNeutral) ; | |
2115 | ||
2116 | fhDeltaPhiUeRightNeutral = new TH2F | |
babcbc9d | 2117 | ("hDeltaPhiUeRightNeutralPt","#phi_{trigger} - #phi_{#Ueh^{0}} vs p_{T Ueh^{0}} with neutral UE right side range of trigger particles", |
62f2fe4d | 2118 | nptbins,ptmin,ptmax, ndeltaphibins ,deltaphimin,deltaphimax); |
2bb7ac98 | 2119 | fhDeltaPhiUeRightNeutral->SetYTitle("#Delta #phi (rad)"); |
e09cf5ef | 2120 | fhDeltaPhiUeRightNeutral->SetXTitle("p_{T h^{0}} (GeV/c)"); |
2121 | outputContainer->Add(fhDeltaPhiUeRightNeutral) ; | |
2122 | ||
3f150b4b | 2123 | fhXEUeLeftNeutral = |
2124 | new TH2F("hXEUeNeutralLeft","x_{E} = p_{T Ueh^{0}} / p_{T trigger} with neutral UE left side of trigger", | |
2125 | nptbins,ptmin,ptmax,140,0.,2.); | |
2126 | fhXEUeLeftNeutral->SetYTitle("z_{trigger Ueh^{0}}"); | |
2bb7ac98 | 2127 | fhXEUeLeftNeutral->SetXTitle("p_{T trigger} (GeV/c)"); |
3f150b4b | 2128 | outputContainer->Add(fhXEUeLeftNeutral) ; |
2129 | ||
2130 | fhXEUeRightNeutral = | |
2131 | new TH2F("hXEUeNeutralRight","x_{E} = p_{T Ueh^{0}} / p_{T trigger} with neutral UE right side of trigger", | |
2132 | nptbins,ptmin,ptmax,200,0.,2.); | |
2133 | fhXEUeRightNeutral->SetYTitle("z_{trigger Ueh^{0}}"); | |
2bb7ac98 | 2134 | fhXEUeRightNeutral->SetXTitle("p_{T trigger} (GeV/c)"); |
3f150b4b | 2135 | outputContainer->Add(fhXEUeRightNeutral) ; |
2136 | ||
2137 | fhPtHbpXEUeLeftNeutral = | |
2138 | new TH2F("hHbpXEUeNeutralLeft","#xi = ln(1/x_{E}) with neutral UE left side of trigger", | |
2139 | nptbins,ptmin,ptmax,200,0.,10.); | |
2140 | fhPtHbpXEUeLeftNeutral->SetYTitle("ln(1/x_{E})"); | |
2bb7ac98 | 2141 | fhPtHbpXEUeLeftNeutral->SetXTitle("p_{T trigger} (GeV/c)"); |
3f150b4b | 2142 | outputContainer->Add(fhPtHbpXEUeLeftNeutral) ; |
2143 | ||
2144 | fhPtHbpXEUeRightNeutral = | |
2145 | new TH2F("hHbpXEUeNeutralRight","#xi = ln(1/x_{E}) with neutral UE right side of trigger", | |
2146 | nptbins,ptmin,ptmax,200,0.,10.); | |
2147 | fhPtHbpXEUeRightNeutral->SetYTitle("ln(1/x_{E})"); | |
2bb7ac98 | 2148 | fhPtHbpXEUeRightNeutral->SetXTitle("p_{T trigger} (GeV/c)"); |
3f150b4b | 2149 | outputContainer->Add(fhPtHbpXEUeRightNeutral) ; |
2150 | ||
2151 | fhZTUeLeftNeutral = | |
2152 | new TH2F("hZTUeNeutralLeft","z_{trigger h^{0}} = p_{T Ueh^{0}} / p_{T trigger} with neutral UE left side of trigger", | |
e09cf5ef | 2153 | nptbins,ptmin,ptmax,140,0.,2.); |
3f150b4b | 2154 | fhZTUeLeftNeutral->SetYTitle("z_{trigger Ueh^{0}}"); |
2bb7ac98 | 2155 | fhZTUeLeftNeutral->SetXTitle("p_{T trigger} (GeV/c)"); |
3f150b4b | 2156 | outputContainer->Add(fhZTUeLeftNeutral) ; |
e09cf5ef | 2157 | |
3f150b4b | 2158 | fhZTUeRightNeutral = |
2159 | new TH2F("hZTUeNeutralRight","z_{trigger h^{0}} = p_{T Ueh^{0}} / p_{T trigger} with neutral UE right side of trigger", | |
e09cf5ef | 2160 | nptbins,ptmin,ptmax,200,0.,2.); |
3f150b4b | 2161 | fhZTUeRightNeutral->SetYTitle("z_{trigger Ueh^{0}}"); |
2bb7ac98 | 2162 | fhZTUeRightNeutral->SetXTitle("p_{T trigger} (GeV/c)"); |
3f150b4b | 2163 | outputContainer->Add(fhZTUeRightNeutral) ; |
e09cf5ef | 2164 | |
3f150b4b | 2165 | fhPtHbpZTUeLeftNeutral = |
2166 | new TH2F("hHbpZTUeNeutralLeft","#xi = ln(1/z_{T}) with neutral UE left side of trigger", | |
e09cf5ef | 2167 | nptbins,ptmin,ptmax,200,0.,10.); |
3f150b4b | 2168 | fhPtHbpZTUeLeftNeutral->SetYTitle("ln(1/z_{T})"); |
2169 | fhPtHbpZTUeLeftNeutral->SetXTitle("p_{T trigger}"); | |
2170 | outputContainer->Add(fhPtHbpZTUeLeftNeutral) ; | |
e09cf5ef | 2171 | |
3f150b4b | 2172 | fhPtHbpZTUeRightNeutral = |
2173 | new TH2F("hHbpZTUeNeutralRight","#xi = ln(1/z_{T}) with neutral UE right side of trigger", | |
e09cf5ef | 2174 | nptbins,ptmin,ptmax,200,0.,10.); |
3f150b4b | 2175 | fhPtHbpZTUeRightNeutral->SetYTitle("ln(1/z_{T})"); |
2176 | fhPtHbpZTUeRightNeutral->SetXTitle("p_{T trigger}"); | |
2177 | outputContainer->Add(fhPtHbpZTUeRightNeutral) ; | |
e09cf5ef | 2178 | |
2179 | } | |
fe871b21 | 2180 | |
2181 | }//Correlation with neutral hadrons | |
2182 | ||
2183 | //if data is MC, fill more histograms | |
babcbc9d | 2184 | if(IsDataMC()) |
2185 | { | |
2186 | fh2phiLeadingParticle=new TH2F("h2phiLeadingParticle","#phi resolustion for trigger particles",nptbins,ptmin,ptmax,100,-1,1); | |
fe871b21 | 2187 | fh2phiLeadingParticle->GetXaxis()->SetTitle("p_{T gen Leading} (GeV/c)"); |
2188 | fh2phiLeadingParticle->GetYaxis()->SetTitle("(#phi_{rec}-#phi_{gen})/#phi_{gen}"); | |
9623bf34 | 2189 | |
764ab1f4 | 2190 | fhMCPtLeading = new TH1F ("hMCPtLeading","MC : p_{T} distribution of leading particles", nptbins,ptmin,ptmax); |
9623bf34 | 2191 | fhMCPtLeading->SetXTitle("p_{T}^{trig} (GeV/c)"); |
08f220c8 | 2192 | |
2193 | fhMCPhiLeading = new TH2F ("hMCPhiLeading","MC : #phi distribution of leading Particles",nptbins,ptmin,ptmax, nphibins,phimin,phimax); | |
2194 | fhMCPhiLeading->SetYTitle("#phi (rad)"); | |
2195 | ||
2196 | fhMCEtaLeading = new TH2F ("hMCEtaLeading","MC : #eta distribution of leading",nptbins,ptmin,ptmax, netabins,etamin,etamax); | |
2197 | fhMCEtaLeading->SetYTitle("#eta "); | |
2198 | ||
e09cf5ef | 2199 | |
fe871b21 | 2200 | fhMCEtaCharged = new TH2F |
babcbc9d | 2201 | ("hMCEtaCharged","MC #eta_{h^{#pm}} vs p_{T #pm}", |
fe871b21 | 2202 | nptbins,ptmin,ptmax,netabins,etamin,etamax); |
2203 | fhMCEtaCharged->SetYTitle("#eta_{h^{#pm}} (rad)"); | |
2204 | fhMCEtaCharged->SetXTitle("p_{T #pm} (GeV/c)"); | |
2205 | ||
2206 | fhMCPhiCharged = new TH2F | |
babcbc9d | 2207 | ("hMCPhiCharged","#MC phi_{h^{#pm}} vs p_{T #pm}", |
fe871b21 | 2208 | 200,ptmin,ptmax,nphibins,phimin,phimax); |
2209 | fhMCPhiCharged->SetYTitle("MC #phi_{h^{#pm}} (rad)"); | |
2210 | fhMCPhiCharged->SetXTitle("p_{T #pm} (GeV/c)"); | |
2211 | ||
2212 | fhMCDeltaPhiDeltaEtaCharged = new TH2F | |
babcbc9d | 2213 | ("hMCDeltaPhiDeltaEtaCharged","#MC phi_{trigger} - #phi_{h^{#pm}} vs #eta_{trigger} - #eta_{h^{#pm}}", |
fe871b21 | 2214 | 140,-2.,5.,200,-2,2); |
2bb7ac98 | 2215 | fhMCDeltaPhiDeltaEtaCharged->SetXTitle("#Delta #phi (rad)"); |
fe871b21 | 2216 | fhMCDeltaPhiDeltaEtaCharged->SetYTitle("#Delta #eta"); |
2217 | ||
2218 | fhMCDeltaEtaCharged = new TH2F | |
babcbc9d | 2219 | ("hMCDeltaEtaCharged","MC #eta_{trigger} - #eta_{h^{#pm}} vs p_{T trigger} and p_{T assoc}", |
fe871b21 | 2220 | nptbins,ptmin,ptmax,200,-2,2); |
2221 | fhMCDeltaEtaCharged->SetYTitle("#Delta #eta"); | |
2222 | fhMCDeltaEtaCharged->SetXTitle("p_{T trigger} (GeV/c)"); | |
2223 | ||
2224 | fhMCDeltaPhiCharged = new TH2F | |
babcbc9d | 2225 | ("hMCDeltaPhiCharged","#phi_{trigger} - #phi_{h^{#pm}} vs p_{T trigger}", |
62f2fe4d | 2226 | nptbins,ptmin,ptmax,ndeltaphibins ,deltaphimin,deltaphimax); |
2bb7ac98 | 2227 | fhMCDeltaPhiCharged->SetYTitle("#Delta #phi (rad)"); |
fe871b21 | 2228 | fhMCDeltaPhiCharged->SetXTitle("p_{T trigger} (GeV/c)"); |
2229 | ||
2230 | fhMCDeltaPhiChargedPt = new TH2F | |
babcbc9d | 2231 | ("hMCDeltaPhiChargedPt","MC #phi_{trigger} - #phi_{#h^{#pm}} vs p_{T h^{#pm}}", |
62f2fe4d | 2232 | nptbins,ptmin,ptmax,ndeltaphibins ,deltaphimin,deltaphimax); |
2bb7ac98 | 2233 | fhMCDeltaPhiChargedPt->SetYTitle("#Delta #phi (rad)"); |
fe871b21 | 2234 | fhMCDeltaPhiChargedPt->SetXTitle("p_{T h^{#pm}} (GeV/c)"); |
2235 | ||
3f150b4b | 2236 | fhMCPtXECharged = |
2237 | new TH2F("hMCPtXECharged","x_{E}", | |
fe871b21 | 2238 | nptbins,ptmin,ptmax,200,0.,2.); |
3f150b4b | 2239 | fhMCPtXECharged->SetYTitle("x_{E}"); |
2bb7ac98 | 2240 | fhMCPtXECharged->SetXTitle("p_{T trigger} (GeV/c)"); |
9623bf34 | 2241 | |
2242 | fhMCPtXEUeCharged = | |
2243 | new TH2F("hMCPtXEUeCharged","x_{E}", | |
2244 | nptbins,ptmin,ptmax,200,0.,2.); | |
2245 | fhMCPtXEUeCharged->SetYTitle("x_{E}"); | |
2bb7ac98 | 2246 | fhMCPtXEUeCharged->SetXTitle("p_{T trigger} (GeV/c)"); |
fe871b21 | 2247 | |
3f150b4b | 2248 | fhMCPtHbpXECharged = |
2249 | new TH2F("hMCHbpXECharged","MC #xi = ln(1/x_{E}) with charged hadrons", | |
fe871b21 | 2250 | nptbins,ptmin,ptmax,200,0.,10.); |
3f150b4b | 2251 | fhMCPtHbpXECharged->SetYTitle("ln(1/x_{E})"); |
2252 | fhMCPtHbpXECharged->SetXTitle("p_{T trigger}"); | |
9623bf34 | 2253 | |
2254 | fhMCPtHbpXEUeCharged = | |
2255 | new TH2F("hMCPtHbpXEUeCharged","#xi = ln(1/x_{E}) with charged hadrons,Underlying Event", | |
2256 | nptbins,ptmin,ptmax,200,0.,10.); | |
2257 | fhMCPtHbpXEUeCharged->SetYTitle("ln(1/x_{E})"); | |
2bb7ac98 | 2258 | fhMCPtHbpXEUeCharged->SetXTitle("p_{T trigger} (GeV/c)"); |
9623bf34 | 2259 | |
2260 | fhMCUePart = | |
2261 | new TH1F("hMCUePart","MC UE particles distribution vs pt trig", | |
2262 | nptbins,ptmin,ptmax); | |
2263 | fhMCUePart->SetYTitle("dNch"); | |
2bb7ac98 | 2264 | fhMCUePart->SetXTitle("p_{T trigger} (GeV/c)"); |
3f150b4b | 2265 | |
2266 | fhMCPtZTCharged = | |
2267 | new TH2F("hMCPtZTCharged","z_{T}", | |
2268 | nptbins,ptmin,ptmax,200,0.,2.); | |
2269 | fhMCPtZTCharged->SetYTitle("z_{T}"); | |
2bb7ac98 | 2270 | fhMCPtZTCharged->SetXTitle("p_{T trigger} (GeV/c)"); |
3f150b4b | 2271 | |
2272 | fhMCPtHbpZTCharged = | |
2273 | new TH2F("hMCHbpZTCharged","MC #xi = ln(1/z_{T}) with charged hadrons", | |
2274 | nptbins,ptmin,ptmax,200,0.,10.); | |
2275 | fhMCPtHbpZTCharged->SetYTitle("ln(1/z_{T})"); | |
2bb7ac98 | 2276 | fhMCPtHbpZTCharged->SetXTitle("p_{T trigger} (GeV/c)"); |
fe871b21 | 2277 | |
2278 | fhMCPtTrigPout = | |
babcbc9d | 2279 | new TH2F("hMCPtTrigPout","AOD MC Pout with triggers", |
fe871b21 | 2280 | nptbins,ptmin,ptmax,2*nptbins,-ptmax,ptmax); |
2281 | fhMCPtTrigPout->SetYTitle("p_{out} (GeV/c)"); | |
2282 | fhMCPtTrigPout->SetXTitle("p_{T trigger} (GeV/c)"); | |
2283 | ||
2284 | fhMCPtAssocDeltaPhi = | |
babcbc9d | 2285 | new TH2F("hMCPtAssocDeltaPhi","AOD MC delta phi with associated charged hadrons", |
62f2fe4d | 2286 | nptbins,ptmin,ptmax,ndeltaphibins ,deltaphimin,deltaphimax); |
2bb7ac98 | 2287 | fhMCPtAssocDeltaPhi->SetYTitle("#Delta #phi (rad)"); |
fe871b21 | 2288 | fhMCPtAssocDeltaPhi->SetXTitle("p_{T trigger} (GeV/c)"); |
2289 | ||
2290 | outputContainer->Add(fh2phiLeadingParticle); | |
9623bf34 | 2291 | outputContainer->Add(fhMCPtLeading); |
08f220c8 | 2292 | outputContainer->Add(fhMCPhiLeading); |
2293 | outputContainer->Add(fhMCEtaLeading); | |
fe871b21 | 2294 | outputContainer->Add(fhMCDeltaPhiDeltaEtaCharged); |
2295 | outputContainer->Add(fhMCPhiCharged) ; | |
2296 | outputContainer->Add(fhMCEtaCharged) ; | |
2297 | outputContainer->Add(fhMCDeltaEtaCharged) ; | |
2298 | outputContainer->Add(fhMCDeltaPhiCharged) ; | |
2299 | ||
2300 | outputContainer->Add(fhMCDeltaPhiChargedPt) ; | |
3f150b4b | 2301 | outputContainer->Add(fhMCPtXECharged) ; |
9623bf34 | 2302 | outputContainer->Add(fhMCPtXEUeCharged) ; |
3f150b4b | 2303 | outputContainer->Add(fhMCPtZTCharged) ; |
2304 | outputContainer->Add(fhMCPtHbpXECharged) ; | |
9623bf34 | 2305 | outputContainer->Add(fhMCPtHbpXEUeCharged); |
2306 | outputContainer->Add(fhMCUePart); | |
3f150b4b | 2307 | outputContainer->Add(fhMCPtHbpZTCharged) ; |
fe871b21 | 2308 | outputContainer->Add(fhMCPtTrigPout) ; |
2309 | outputContainer->Add(fhMCPtAssocDeltaPhi) ; | |
2310 | } //for MC histogram | |
2311 | ||
2e876d85 | 2312 | if(DoOwnMix()) |
029dea5a | 2313 | { |
2314 | //create event containers | |
029dea5a | 2315 | |
283f989c | 2316 | if(!fUseMixStoredInReader || (fUseMixStoredInReader && !GetReader()->ListWithMixedEventsForTracksExists())) |
2e876d85 | 2317 | { |
d07ffd54 | 2318 | Int_t nvz = GetNZvertBin(); |
2319 | Int_t nrp = GetNRPBin(); | |
2320 | Int_t nce = GetNCentrBin(); | |
283f989c | 2321 | |
d07ffd54 | 2322 | fListMixTrackEvents= new TList*[nvz*nrp*nce] ; |
2323 | ||
2324 | for( Int_t ice = 0 ; ice < nce ; ice++ ) | |
2325 | { | |
2326 | for( Int_t ivz = 0 ; ivz < nvz ; ivz++ ) | |
2327 | { | |
2328 | for( Int_t irp = 0 ; irp < nrp ; irp++ ) | |
2329 | { | |
2330 | Int_t bin = GetEventMixBin(ice,ivz,irp); //ic*nvz*nrp+iz*nrp+irp; | |
2331 | ||
2332 | //printf("GetCreateOutputObjects - Bins : cent %d, vz %d, RP %d, event %d/%d\n", | |
2333 | // ic,iz, irp, bin); | |
2334 | ||
2335 | fListMixTrackEvents[bin] = new TList() ; | |
2336 | fListMixTrackEvents[bin]->SetOwner(kFALSE); | |
2337 | } | |
2338 | } | |
2339 | } | |
2340 | } | |
d0b625bc | 2341 | |
764ab1f4 | 2342 | fhPtLeadingMixed = new TH1F ("hPtLeadingMixed","p_{T} distribution of leading particles, used for mixing", nptbins,ptmin,ptmax); |
d0b625bc | 2343 | fhPtLeadingMixed->SetXTitle("p_{T}^{trig} (GeV/c)"); |
ca17b39f | 2344 | |
7d306daf | 2345 | if(fCorrelVzBin) |
2346 | { | |
764ab1f4 | 2347 | fhPtLeadingMixedVzBin = new TH2F ("hPtLeadingMixedVzBin","p_{T} distribution of leading particles, used for mixing", nptbins,ptmin,ptmax,GetNZvertBin(),0,GetNZvertBin()); |
7d306daf | 2348 | fhPtLeadingMixedVzBin->SetXTitle("p_{T}^{trig} (GeV/c)"); |
2349 | fhPtLeadingMixedVzBin->SetYTitle("v_{z} bin"); | |
2350 | outputContainer->Add(fhPtLeadingMixedVzBin); | |
2351 | } | |
2352 | ||
764ab1f4 | 2353 | fhPtLeadingMixedBin = new TH2F ("hPtLeadingMixedBin","p_{T} distribution of leading particles vs mixing bin", nptbins,ptmin,ptmax,nMixBins,0,nMixBins); |
d0b625bc | 2354 | fhPtLeadingMixedBin->SetXTitle("p_{T}^{trig} (GeV/c)"); |
2355 | fhPtLeadingMixedBin->SetYTitle("Bin"); | |
d07ffd54 | 2356 | |
d0b625bc | 2357 | fhPhiLeadingMixed = new TH2F ("hPhiLeadingMixed","#phi distribution of leading Particles, used for mixing",nptbins,ptmin,ptmax, nphibins,phimin,phimax); |
2358 | fhPhiLeadingMixed->SetYTitle("#phi (rad)"); | |
2359 | ||
2360 | fhEtaLeadingMixed = new TH2F ("hEtaLeadingMixed","#eta distribution of leading, used for mixing",nptbins,ptmin,ptmax, netabins,etamin,etamax); | |
2361 | fhEtaLeadingMixed->SetYTitle("#eta "); | |
2362 | ||
2363 | outputContainer->Add(fhPtLeadingMixed); | |
2364 | outputContainer->Add(fhPtLeadingMixedBin); | |
2365 | outputContainer->Add(fhPhiLeadingMixed); | |
2366 | outputContainer->Add(fhEtaLeadingMixed); | |
2367 | ||
2bb7ac98 | 2368 | // Fill the cluster pool only in isolation analysis or if requested |
2369 | if( ( OnlyIsolated() || fFillNeutralEventMixPool) && | |
2370 | (!fUseMixStoredInReader || (fUseMixStoredInReader && !GetReader()->ListWithMixedEventsForCaloExists()))) | |
d07ffd54 | 2371 | { |
7ed3a248 | 2372 | Int_t nvz = GetNZvertBin(); |
2373 | Int_t nrp = GetNRPBin(); | |
2374 | Int_t nce = GetNCentrBin(); | |
2375 | ||
d07ffd54 | 2376 | fListMixCaloEvents= new TList*[nvz*nrp*nce] ; |
7ed3a248 | 2377 | |
2378 | for( Int_t ice = 0 ; ice < nce ; ice++ ) | |
2e876d85 | 2379 | { |
7ed3a248 | 2380 | for( Int_t ivz = 0 ; ivz < nvz ; ivz++ ) |
2e876d85 | 2381 | { |
7ed3a248 | 2382 | for( Int_t irp = 0 ; irp < nrp ; irp++ ) |
283f989c | 2383 | { |
7ed3a248 | 2384 | Int_t bin = GetEventMixBin(ice,ivz,irp); //ic*nvz*nrp+iz*nrp+irp; |
2385 | ||
da3c40f7 | 2386 | //printf("GetCreateOutputObjects - Bins : cent %d, vz %d, RP %d, event %d/%d\n", |
7ed3a248 | 2387 | // ic,iz, irp, bin); |
2388 | ||
d07ffd54 | 2389 | fListMixCaloEvents[bin] = new TList() ; |
2390 | fListMixCaloEvents[bin]->SetOwner(kFALSE); | |
283f989c | 2391 | } |
2e876d85 | 2392 | } |
283f989c | 2393 | } |
2394 | } | |
2395 | ||
2396 | //Init the list in the reader if not done previously | |
d07ffd54 | 2397 | if(fUseMixStoredInReader) |
283f989c | 2398 | { |
d07ffd54 | 2399 | if( !GetReader()->ListWithMixedEventsForTracksExists() ) |
2400 | GetReader()->SetListWithMixedEventsForTracks(fListMixTrackEvents); | |
2401 | ||
2402 | if( !GetReader()->ListWithMixedEventsForCaloExists() ) | |
2403 | GetReader()->SetListWithMixedEventsForCalo (fListMixCaloEvents ); | |
283f989c | 2404 | } |
029dea5a | 2405 | |
2e876d85 | 2406 | fhEventBin=new TH1I("hEventBin","Number of real events per bin(cen,vz,rp)", |
2407 | GetNCentrBin()*GetNZvertBin()*GetNRPBin()+1,0, | |
2408 | GetNCentrBin()*GetNZvertBin()*GetNRPBin()+1) ; | |
2409 | fhEventBin->SetXTitle("bin"); | |
2410 | outputContainer->Add(fhEventBin) ; | |
283f989c | 2411 | |
2e876d85 | 2412 | fhEventMixBin=new TH1I("hEventMixBin","Number of events per bin(cen,vz,rp)", |
2413 | GetNCentrBin()*GetNZvertBin()*GetNRPBin()+1,0, | |
2414 | GetNCentrBin()*GetNZvertBin()*GetNRPBin()+1) ; | |
2415 | fhEventMixBin->SetXTitle("bin"); | |
2416 | outputContainer->Add(fhEventMixBin) ; | |
283f989c | 2417 | |
2e876d85 | 2418 | fhNtracksMB=new TH1F("hNtracksMBEvent","Number of tracks w/ event trigger kMB",2000,0,2000); |
2419 | outputContainer->Add(fhNtracksMB); | |
029dea5a | 2420 | |
2bb7ac98 | 2421 | if(fFillNeutralEventMixPool || OnlyIsolated()) |
2422 | { | |
2bb7ac98 | 2423 | fhNclustersMB=new TH1F("hNclustersMBEvent","Number of clusters w/ event trigger kMB",2000,0,2000); |
2424 | outputContainer->Add(fhNclustersMB); | |
2425 | } | |
2426 | ||
029dea5a | 2427 | fhMixDeltaPhiCharged = new TH2F |
2428 | ("hMixDeltaPhiCharged","Mixed event : #phi_{trigger} - #phi_{h^{#pm}} vs p_{T trigger}", | |
62f2fe4d | 2429 | nptbins,ptmin,ptmax,ndeltaphibins ,deltaphimin,deltaphimax); |
2bb7ac98 | 2430 | fhMixDeltaPhiCharged->SetYTitle("#Delta #phi (rad)"); |
029dea5a | 2431 | fhMixDeltaPhiCharged->SetXTitle("p_{T trigger} (GeV/c)"); |
2432 | outputContainer->Add(fhMixDeltaPhiCharged); | |
283f989c | 2433 | |
029dea5a | 2434 | fhMixDeltaPhiDeltaEtaCharged = new TH2F |
2435 | ("hMixDeltaPhiDeltaEtaCharged","Mixed event : #phi_{trigger} - #phi_{h^{#pm}} vs #eta_{trigger} - #eta_{h^{#pm}}", | |
62f2fe4d | 2436 | ndeltaphibins ,deltaphimin,deltaphimax,ndeltaetabins ,deltaetamin,deltaetamax); |
2bb7ac98 | 2437 | fhMixDeltaPhiDeltaEtaCharged->SetXTitle("#Delta #phi (rad)"); |
029dea5a | 2438 | fhMixDeltaPhiDeltaEtaCharged->SetYTitle("#Delta #eta"); |
2439 | outputContainer->Add(fhMixDeltaPhiDeltaEtaCharged); | |
283f989c | 2440 | |
08f220c8 | 2441 | fhMixXECharged = |
2442 | new TH2F("hMixXECharged","Mixed event : x_{E} for charged tracks", | |
2443 | nptbins,ptmin,ptmax,200,0.,2.); | |
2444 | fhMixXECharged->SetYTitle("x_{E}"); | |
2bb7ac98 | 2445 | fhMixXECharged->SetXTitle("p_{T trigger} (GeV/c)"); |
08f220c8 | 2446 | outputContainer->Add(fhMixXECharged); |
18838011 | 2447 | |
2448 | fhMixXEUeCharged = | |
2449 | new TH2F("hMixXEUeCharged","Mixed event : x_{E} for charged tracks in Ue region", | |
2450 | nptbins,ptmin,ptmax,200,0.,2.); | |
2451 | fhMixXEUeCharged->SetYTitle("x_{E}"); | |
2452 | fhMixXEUeCharged->SetXTitle("p_{T trigger} (GeV/c)"); | |
2453 | outputContainer->Add(fhMixXEUeCharged); | |
08f220c8 | 2454 | |
18838011 | 2455 | fhMixHbpXECharged = |
08f220c8 | 2456 | new TH2F("hMixHbpXECharged","mixed event : #xi = ln(1/x_{E}) with charged hadrons", |
2457 | nptbins,ptmin,ptmax,200,0.,10.); | |
2458 | fhMixHbpXECharged->SetYTitle("ln(1/x_{E})"); | |
2bb7ac98 | 2459 | fhMixHbpXECharged->SetXTitle("p_{T trigger} (GeV/c)"); |
08f220c8 | 2460 | outputContainer->Add(fhMixHbpXECharged); |
2461 | ||
7d306daf | 2462 | fhMixDeltaPhiChargedAssocPtBin = new TH2F*[fNAssocPtBins*nz]; |
2463 | fhMixDeltaPhiChargedAssocPtBinDEta08 = new TH2F*[fNAssocPtBins*nz]; | |
2464 | fhMixDeltaPhiChargedAssocPtBinDEta0 = new TH2F*[fNAssocPtBins*nz]; | |
2465 | fhMixDeltaPhiDeltaEtaChargedAssocPtBin = new TH2F*[fNAssocPtBins*nz]; | |
283f989c | 2466 | |
029dea5a | 2467 | for(Int_t i = 0 ; i < fNAssocPtBins ; i++) |
8cc41381 | 2468 | { |
7d306daf | 2469 | for(Int_t z = 0 ; z < nz ; z++) |
8cc41381 | 2470 | { |
7d306daf | 2471 | Int_t bin = i*nz+z; |
8cc41381 | 2472 | |
7d306daf | 2473 | if(fCorrelVzBin) |
2474 | { | |
2475 | sz = "_vz%d"+z; | |
2476 | tz = ", v_{z} bin "+z; | |
2477 | } | |
2478 | ||
2479 | //printf("MIX : iAssoc %d, Vz %d, bin %d - sz %s, tz %s \n",i,z,bin,sz.Data(),tz.Data()); | |
2480 | ||
2481 | fhMixDeltaPhiChargedAssocPtBin[bin] = new TH2F(Form("hMixDeltaPhiChargedAssocPtBin%2.1f_%2.1f%s", fAssocPtBinLimit[i], fAssocPtBinLimit[i+1],sz.Data()), | |
2482 | Form("Mixed event #Delta #phi vs p_{T trigger} for associated p_{T} bin [%2.1f,%2.1f]%s", fAssocPtBinLimit[i], fAssocPtBinLimit[i+1],tz.Data()), | |
8cc41381 | 2483 | nptbins, ptmin, ptmax, ndeltaphibins ,deltaphimin,deltaphimax); |
2bb7ac98 | 2484 | fhMixDeltaPhiChargedAssocPtBin[bin]->SetXTitle("p_{T trigger} (GeV/c)"); |
2485 | fhMixDeltaPhiChargedAssocPtBin[bin]->SetYTitle("#Delta #phi (rad)"); | |
8cc41381 | 2486 | |
7d306daf | 2487 | fhMixDeltaPhiChargedAssocPtBinDEta08[bin] = new TH2F(Form("hMixDeltaPhiDeltaEta0.8ChargedAssocPtBin%2.1f_%2.1f%s", fAssocPtBinLimit[i], fAssocPtBinLimit[i+1],sz.Data()), |
2488 | Form("Mixed event #Delta #phi vs p_{T trigger} for associated p_{T} bin [%2.1f,%2.1f]%s, for #Delta #eta > 0.8", fAssocPtBinLimit[i], fAssocPtBinLimit[i+1],tz.Data()), | |
8cc41381 | 2489 | nptbins, ptmin, ptmax, ndeltaphibins ,deltaphimin,deltaphimax); |
2bb7ac98 | 2490 | fhMixDeltaPhiChargedAssocPtBinDEta08[bin]->SetXTitle("p_{T trigger} (GeV/c)"); |
2491 | fhMixDeltaPhiChargedAssocPtBinDEta08[bin]->SetYTitle("#Delta #phi (rad)"); | |
8cc41381 | 2492 | |
7d306daf | 2493 | fhMixDeltaPhiChargedAssocPtBinDEta0[bin] = new TH2F(Form("hMixDeltaPhiDeltaEta0ChargedAssocPtBin%2.1f_%2.1f%s", fAssocPtBinLimit[i], fAssocPtBinLimit[i+1],sz.Data()), |
2494 | Form("Mixed event #Delta #phi vs p_{T trigger} for associated p_{T} bin [%2.1f,%2.1f]%s, for #Delta #eta = 0", fAssocPtBinLimit[i], fAssocPtBinLimit[i+1],tz.Data()), | |
8cc41381 | 2495 | nptbins, ptmin, ptmax, ndeltaphibins ,deltaphimin,deltaphimax); |
2bb7ac98 | 2496 | fhMixDeltaPhiChargedAssocPtBinDEta0[bin]->SetXTitle("p_{T trigger} (GeV/c)"); |
2497 | fhMixDeltaPhiChargedAssocPtBinDEta0[bin]->SetYTitle("#Delta #phi (rad)"); | |
8cc41381 | 2498 | |
7d306daf | 2499 | fhMixDeltaPhiDeltaEtaChargedAssocPtBin[bin] = new TH2F(Form("hMixDeltaPhiDeltaEtaChargedAssocPtBin%2.1f_%2.1f%s", fAssocPtBinLimit[i], fAssocPtBinLimit[i+1],sz.Data()), |
2500 | Form("Mixed event #Delta #phi vs p_{T trigger} for associated p_{T} bin [%2.1f,%2.1f]%s", fAssocPtBinLimit[i], fAssocPtBinLimit[i+1],tz.Data()), | |
8cc41381 | 2501 | ndeltaphibins ,deltaphimin,deltaphimax,ndeltaetabins ,deltaetamin,deltaetamax); |
2bb7ac98 | 2502 | fhMixDeltaPhiDeltaEtaChargedAssocPtBin[bin]->SetXTitle("#Delta #phi (rad)"); |
8cc41381 | 2503 | fhMixDeltaPhiDeltaEtaChargedAssocPtBin[bin]->SetYTitle("#Delta #eta"); |
2504 | ||
2505 | outputContainer->Add(fhMixDeltaPhiChargedAssocPtBin[bin]); | |
2506 | outputContainer->Add(fhMixDeltaPhiChargedAssocPtBinDEta08[bin]); | |
2507 | outputContainer->Add(fhMixDeltaPhiChargedAssocPtBinDEta0[bin]); | |
2508 | outputContainer->Add(fhMixDeltaPhiDeltaEtaChargedAssocPtBin[bin]); | |
2509 | } | |
050ad675 | 2510 | } |
029dea5a | 2511 | } |
7d306daf | 2512 | |
e09cf5ef | 2513 | return outputContainer; |
2514 | ||
2515 | } | |
2516 | ||
907b38cd | 2517 | //_________________________________________________________________________________________________ |
2518 | Bool_t AliAnaParticleHadronCorrelation::GetDecayPhotonMomentum(const AliAODPWG4Particle* trigger, | |
2519 | TLorentzVector & mom1, | |
2520 | TLorentzVector & mom2) | |
2521 | { | |
2522 | // Get the momentum of the pi0/eta assigned decay photons | |
2523 | // In case of pi0/eta trigger, we may want to check their decay correlation, | |
2524 | // get their decay children | |
2525 | ||
2526 | Int_t indexPhoton1 = trigger->GetCaloLabel(0); | |
2527 | Int_t indexPhoton2 = trigger->GetCaloLabel(1); | |
2528 | Float_t ptTrig = trigger->Pt(); | |
2529 | ||
2530 | if(indexPhoton1!=-1 || indexPhoton2!=-1) return kFALSE; | |
2531 | ||
2532 | if(GetDebug() > 1) | |
2533 | printf("AliAnaParticleHadronCorrelation::GetDecayPhotonMomentum() - indexPhoton1 = %d, indexPhoton2 = %d \n", indexPhoton1, indexPhoton2); | |
2534 | ||
2535 | TObjArray * clusters = 0x0 ; | |
2536 | if(trigger->GetDetector()=="EMCAL") clusters = GetEMCALClusters() ; | |
2537 | else clusters = GetPHOSClusters() ; | |
2538 | ||
2539 | for(Int_t iclus = 0; iclus < clusters->GetEntriesFast(); iclus++) | |
2540 | { | |
2541 | AliVCluster * photon = (AliVCluster*) (clusters->At(iclus)); | |
2542 | if(photon->GetID()==indexPhoton1) | |
2543 | { | |
2544 | photon->GetMomentum(mom1,GetVertex(0)) ; | |
2545 | if(ptTrig) fhPtPi0DecayRatio->Fill(ptTrig, mom1.Pt()/ptTrig); | |
2546 | } | |
2547 | if(photon->GetID()==indexPhoton2) | |
2548 | { | |
2549 | photon->GetMomentum(mom1,GetVertex(0)) ; | |
2550 | if(ptTrig > 0) fhPtPi0DecayRatio->Fill(ptTrig, mom2.Pt()/ptTrig); | |
2551 | } | |
2552 | ||
2553 | if(GetDebug() > 1)printf("AliAnaParticleHadronCorrelation::GetDecayPhotonMomentum() - Photon1 = %f, Photon2 = %f \n", mom1.Pt(), mom2.Pt()); | |
2554 | ||
2555 | } //cluster loop | |
2556 | ||
2557 | return kTRUE; | |
2558 | ||
2559 | } | |
2560 | ||
b1f720a7 | 2561 | //_____________________________________________________________ |
22ad7981 | 2562 | Int_t AliAnaParticleHadronCorrelation::GetMCTagHistogramIndex(Int_t mcTag) |
b1f720a7 | 2563 | { |
2564 | // Index of MC histograms depending on MC origin | |
2565 | ||
2566 | if ( GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCPrompt) || | |
2567 | GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCFragmentation)) return 0; | |
2568 | else if( GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCPi0)) return 1; | |
2569 | else if( GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCPi0Decay)) return 2; | |
2570 | else if( GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCEtaDecay)) return 3; | |
2571 | else if( GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCOtherDecay)) return 4; | |
2572 | else if(!GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCElectron)) return 5; | |
2573 | else return 6; | |
2574 | ||
2575 | } | |
2576 | ||
05d0d05d | 2577 | //____________________________________________________ |
e09cf5ef | 2578 | void AliAnaParticleHadronCorrelation::InitParameters() |
2579 | { | |
2580 | ||
2581 | //Initialize the parameters of the analysis. | |
e4c0a0eb | 2582 | SetInputAODName("Particle"); |
e09cf5ef | 2583 | SetAODObjArrayName("Hadrons"); |
2584 | AddToHistogramsName("AnaHadronCorr_"); | |
045396c8 | 2585 | |
e09cf5ef | 2586 | SetPtCutRange(0.,300); |
045396c8 | 2587 | fDeltaPhiMinCut = 1.5 ; |
2588 | fDeltaPhiMaxCut = 4.5 ; | |
2589 | fSelectIsolated = kFALSE; | |
2590 | fMakeSeveralUE = kFALSE; | |
2591 | fUeDeltaPhiMinCut = 1. ; | |
2592 | fUeDeltaPhiMaxCut = 1.5 ; | |
907b38cd | 2593 | |
045396c8 | 2594 | fNeutralCorr = kFALSE ; |
2595 | fPi0Trigger = kFALSE ; | |
907b38cd | 2596 | fDecayTrigger = kFALSE ; |
2597 | fHMPIDCorrelation = kFALSE ; | |
045396c8 | 2598 | |
3f150b4b | 2599 | fMakeAbsoluteLeading = kTRUE; |
2600 | fMakeNearSideLeading = kFALSE; | |
2601 | ||
050ad675 | 2602 | fNAssocPtBins = 9 ; |
2603 | fAssocPtBinLimit[0] = 0.2 ; | |
f85f4afb | 2604 | fAssocPtBinLimit[1] = 0.5 ; |
2605 | fAssocPtBinLimit[2] = 1.0 ; | |
2606 | fAssocPtBinLimit[3] = 2.0 ; | |
2607 | fAssocPtBinLimit[4] = 3.0 ; | |
2608 | fAssocPtBinLimit[5] = 4.0 ; | |
2609 | fAssocPtBinLimit[6] = 5.0 ; | |
2610 | fAssocPtBinLimit[7] = 6.0 ; | |
2611 | fAssocPtBinLimit[8] = 7.0 ; | |
2612 | fAssocPtBinLimit[9] = 8.0 ; | |
2613 | fAssocPtBinLimit[10] = 9.0 ; | |
2614 | fAssocPtBinLimit[11] = 10.0 ; | |
2615 | fAssocPtBinLimit[12] = 12.0 ; | |
2616 | fAssocPtBinLimit[13] = 14.0 ; | |
2617 | fAssocPtBinLimit[14] = 16.0 ; | |
2618 | fAssocPtBinLimit[15] = 20.0 ; | |
2619 | fAssocPtBinLimit[16] = 30.0 ; | |
2620 | fAssocPtBinLimit[17] = 40.0 ; | |
2621 | fAssocPtBinLimit[18] = 50.0 ; | |
2622 | fAssocPtBinLimit[19] = 200.0 ; | |
2623 | ||
045396c8 | 2624 | |
283f989c | 2625 | fUseMixStoredInReader = kTRUE; |
2626 | ||
e4c0a0eb | 2627 | fM02MinCut = -1 ; |
2628 | fM02MaxCut = -1 ; | |
2629 | ||
e09cf5ef | 2630 | } |
2631 | ||
05d0d05d | 2632 | //__________________________________________________________ |
e09cf5ef | 2633 | void AliAnaParticleHadronCorrelation::MakeAnalysisFillAOD() |
2634 | { | |
2635 | //Particle-Hadron Correlation Analysis, fill AODs | |
2636 | ||
547c2f01 | 2637 | if(!GetInputAODBranch()) |
2638 | { | |
e09cf5ef | 2639 | printf("AliAnaParticleHadronCorrelation::MakeAnalysisFillAOD() - No input particles in AOD with name branch < %s >, STOP \n",GetInputAODName().Data()); |
2640 | abort(); | |
2641 | } | |
2642 | ||
547c2f01 | 2643 | if(strcmp(GetInputAODBranch()->GetClass()->GetName(), "AliAODPWG4ParticleCorrelation")) |
2644 | { | |
e09cf5ef | 2645 | printf("AliAnaParticleHadronCorrelation::MakeAnalysisFillAOD() - Wrong type of AOD object, change AOD class name in input AOD: It should be <AliAODPWG4ParticleCorrelation> and not <%s> \n",GetInputAODBranch()->GetClass()->GetName()); |
2646 | abort(); | |
2647 | } | |
2648 | ||
283f989c | 2649 | if(GetDebug() > 1) |
2650 | { | |
e09cf5ef | 2651 | printf("AliAnaParticleHadronCorrelation::MakeAnalysisFillAOD() - Begin hadron correlation analysis, fill AODs \n"); |
2652 | printf("AliAnaParticleHadronCorrelation::MakeAnalysisFillAOD() - In particle branch aod entries %d\n", GetInputAODBranch()->GetEntriesFast()); | |
66e64043 | 2653 | printf("AliAnaParticleHadronCorrelation::MakeAnalysisFillAOD() - In CTS aod entries %d\n", GetCTSTracks() ->GetEntriesFast()); |
e09cf5ef | 2654 | printf("AliAnaParticleHadronCorrelation::MakeAnalysisFillAOD() - In EMCAL aod entries %d\n", GetEMCALClusters()->GetEntriesFast()); |
66e64043 | 2655 | printf("AliAnaParticleHadronCorrelation::MakeAnalysisFillAOD() - In PHOS aod entries %d\n", GetPHOSClusters() ->GetEntriesFast()); |
e09cf5ef | 2656 | } |
2657 | ||
045396c8 | 2658 | //Get the vertex and check it is not too large in z |
2659 | Double_t v[3] = {0,0,0}; //vertex ; | |
2660 | GetReader()->GetVertex(v); | |
2661 | if(!GetMixedEvent() && TMath::Abs(v[2]) > GetZvertexCut()) return ; | |
31864468 | 2662 | |
045396c8 | 2663 | //Loop on stored AOD particles, find leading trigger |
66e64043 | 2664 | Double_t ptTrig = fMinTriggerPt ; |
045396c8 | 2665 | fLeadingTriggerIndex = -1 ; |
2666 | Int_t naod = GetInputAODBranch()->GetEntriesFast() ; | |
04f7a616 | 2667 | for(Int_t iaod = 0; iaod < naod ; iaod++) |
2668 | { | |
e09cf5ef | 2669 | AliAODPWG4ParticleCorrelation* particle = (AliAODPWG4ParticleCorrelation*) (GetInputAODBranch()->At(iaod)); |
045396c8 | 2670 | |
04f7a616 | 2671 | // Vertex cut in case of mixing |
2672 | Int_t check = CheckMixedEventVertex(particle->GetCaloLabel(0), particle->GetTrackLabel(0)); | |
2673 | if(check == 0) continue; | |
2674 | if(check == -1) return; | |
2675 | ||
045396c8 | 2676 | // find the leading particles with highest momentum |
547c2f01 | 2677 | if (particle->Pt() > ptTrig) |
2678 | { | |
045396c8 | 2679 | ptTrig = particle->Pt() ; |
2680 | fLeadingTriggerIndex = iaod ; | |
2681 | } | |
2682 | }// finish search of leading trigger particle | |
e09cf5ef | 2683 | |
66e64043 | 2684 | |
e09cf5ef | 2685 | //Do correlation with leading particle |
547c2f01 | 2686 | if(fLeadingTriggerIndex >= 0) |
2687 | { | |
e09cf5ef | 2688 | |
045396c8 | 2689 | AliAODPWG4ParticleCorrelation* particle = (AliAODPWG4ParticleCorrelation*) (GetInputAODBranch()->At(fLeadingTriggerIndex)); |
2690 | ||
2691 | //check if the particle is isolated or if we want to take the isolation into account | |
2692 | if(OnlyIsolated() && !particle->IsIsolated()) return; | |
2693 | ||
e09cf5ef | 2694 | //Make correlation with charged hadrons |
045396c8 | 2695 | Bool_t okcharged = kTRUE; |
2696 | Bool_t okneutral = kTRUE; | |
e09cf5ef | 2697 | if(GetReader()->IsCTSSwitchedOn() ) |
045396c8 | 2698 | okcharged = MakeChargedCorrelation(particle, GetCTSTracks(),kFALSE); |
e09cf5ef | 2699 | |
2700 | TObjArray * pi0list = (TObjArray*) GetAODBranch(fPi0AODBranchName); //For the future, foresee more possible pi0 lists | |
2701 | if(fNeutralCorr && pi0list && pi0list->GetEntriesFast() > 0) | |
045396c8 | 2702 | okneutral = MakeNeutralCorrelation(particle, pi0list,kFALSE); |
e09cf5ef | 2703 | |
2704 | }//Correlate leading | |
2705 | ||
2706 | if(GetDebug() > 1) printf("AliAnaParticleHadronCorrelation::MakeAnalysisFillAOD() - End fill AODs \n"); | |
2707 | ||
2708 | } | |
2709 | ||
05d0d05d | 2710 | //_________________________________________________________________ |
e09cf5ef | 2711 | void AliAnaParticleHadronCorrelation::MakeAnalysisFillHistograms() |
2712 | { | |
2713 | //Particle-Hadron Correlation Analysis, fill histograms | |
2714 | ||
3f150b4b | 2715 | if(!GetInputAODBranch()) |
2716 | { | |
e09cf5ef | 2717 | printf("AliAnaParticleHadronCorrelation::MakeAnalysisFillHistograms() - No input particles in AOD with name branch < %s >, STOP \n",GetInputAODName().Data()); |
2718 | abort(); | |
2719 | } | |
2720 | ||
3f150b4b | 2721 | if(GetDebug() > 1) |
2722 | { | |
e09cf5ef | 2723 | printf("AliAnaParticleHadronCorrelation::MakeAnalysisFillHistograms() - Begin hadron correlation analysis, fill histograms \n"); |
2724 | printf("AliAnaParticleHadronCorrelation::MakeAnalysisFillHistograms() - In particle branch aod entries %d\n", GetInputAODBranch()->GetEntriesFast()); | |
2725 | } | |
babcbc9d | 2726 | |
e09cf5ef | 2727 | //Get the vertex and check it is not too large in z |
2728 | Double_t v[3] = {0,0,0}; //vertex ; | |
2729 | GetReader()->GetVertex(v); | |
2730 | if(!GetMixedEvent() && TMath::Abs(v[2]) > GetZvertexCut()) return ; | |
2731 | ||
c8710850 | 2732 | Float_t cen = GetEventCentrality(); |
2733 | Float_t ep = GetEventPlaneAngle(); | |
2734 | ||
e09cf5ef | 2735 | //Loop on stored AOD particles, find leading |
66e64043 | 2736 | Double_t ptTrig = fMinTriggerPt; |
04f7a616 | 2737 | if(fLeadingTriggerIndex < 0) |
2738 | { | |
2739 | //Search leading if not done before | |
045396c8 | 2740 | Int_t naod = GetInputAODBranch()->GetEntriesFast() ; |
547c2f01 | 2741 | for(Int_t iaod = 0; iaod < naod ; iaod++) |
2742 | { //loop on input trigger AOD file | |
045396c8 | 2743 | AliAODPWG4ParticleCorrelation* particle = (AliAODPWG4ParticleCorrelation*) (GetInputAODBranch()->At(iaod)); |
04f7a616 | 2744 | |
2745 | // Vertex cut in case of mixing | |
2746 | Int_t check = CheckMixedEventVertex(particle->GetCaloLabel(0), particle->GetTrackLabel(0)); | |
2747 | if(check == 0) continue; | |
2748 | if(check == -1) return; | |
9623bf34 | 2749 | |
045396c8 | 2750 | //check if the particle is isolated or if we want to take the isolation into account |
2751 | if(OnlyIsolated() && !particle->IsIsolated()) continue; | |
e09cf5ef | 2752 | |
045396c8 | 2753 | //find the leading particles with highest momentum |
547c2f01 | 2754 | if (particle->Pt() > ptTrig) |
2755 | { | |
045396c8 | 2756 | ptTrig = particle->Pt() ; |
2757 | fLeadingTriggerIndex = iaod ; | |
e09cf5ef | 2758 | } |
547c2f01 | 2759 | |
2760 | }// Finish search of leading trigger particle | |
2761 | }// Search leading if not done before | |
045396c8 | 2762 | |
547c2f01 | 2763 | if(fLeadingTriggerIndex >= 0 ) |
2764 | { //using trigger particle to do correlations | |
2765 | ||
045396c8 | 2766 | AliAODPWG4ParticleCorrelation* particle = (AliAODPWG4ParticleCorrelation*) (GetInputAODBranch()->At(fLeadingTriggerIndex)); |
06d3bad7 | 2767 | |
e4c0a0eb | 2768 | // check if it was a calorimeter cluster and if the SS cut was requested, if so, apply it |
2769 | Int_t clID1 = particle->GetCaloLabel(0) ; | |
2770 | Int_t clID2 = particle->GetCaloLabel(1) ; // for photon clusters should not be set. | |
2771 | //printf("Leading for for %s: id1 %d, id2 %d, min %f, max %f, det %s\n", | |
2772 | // GetInputAODName().Data(),clID1,clID2,fM02MinCut,fM02MaxCut,(particle->GetDetector()).Data()); | |
2773 | ||
2774 | if(clID1 > 0 && clID2 < 0 && fM02MaxCut > 0 && fM02MinCut > 0) | |
2775 | { | |
2776 | Int_t iclus = -1; | |
2777 | TObjArray* clusters = 0x0; | |
2778 | if (particle->GetDetector() == "EMCAL") clusters = GetEMCALClusters(); | |
2779 | else if(particle->GetDetector() == "PHOS" ) clusters = GetPHOSClusters(); | |
2780 | ||
2781 | if(clusters) | |
2782 | { | |
2783 | AliVCluster *cluster = FindCluster(clusters,clID1,iclus); | |
2784 | Float_t m02 = cluster->GetM02(); | |
2785 | //printf("\t Check m02 = %2.2f\n",m02); | |
2786 | if(m02 > fM02MaxCut || m02 < fM02MinCut) | |
2787 | { | |
2788 | //printf("\t \t Not accepted\n"); | |
2789 | return; | |
2790 | } | |
2791 | } | |
2792 | } | |
2793 | ||
7d306daf | 2794 | // Check if the particle is isolated or if we want to take the isolation into account |
2795 | if(OnlyIsolated() && !particle->IsIsolated()) return; | |
2796 | ||
2797 | Float_t pt = particle->Pt(); | |
2798 | fhPtInput->Fill(pt); | |
2799 | ||
547c2f01 | 2800 | // Check if trigger is in fiducial region |
2801 | if(IsFiducialCutOn()) | |
2802 | { | |
2803 | Bool_t in = GetFiducialCut()->IsInFiducialCut(*particle->Momentum(),particle->GetDetector()) ; | |
2804 | if(! in ) return ; | |
9623bf34 | 2805 | } |
547c2f01 | 2806 | |
7d306daf | 2807 | fhPtFidCut->Fill(pt); |
2808 | ||
547c2f01 | 2809 | // Make correlation with charged hadrons |
045396c8 | 2810 | Bool_t okcharged = kTRUE; |
2811 | Bool_t okneutral = kTRUE; | |
547c2f01 | 2812 | if(GetReader()->IsCTSSwitchedOn() ) |
2813 | { | |
045396c8 | 2814 | okcharged = MakeChargedCorrelation(particle, GetCTSTracks(),kTRUE); |
547c2f01 | 2815 | if(IsDataMC()) |
2816 | { | |
045396c8 | 2817 | MakeMCChargedCorrelation(particle); |
2818 | } | |
a5f1e836 | 2819 | } |
2820 | ||
e09cf5ef | 2821 | TObjArray * pi0list = (TObjArray*) GetAODBranch(fPi0AODBranchName); //For the future, foresee more possible pi0 lists |
547c2f01 | 2822 | if(fNeutralCorr && pi0list) |
2823 | { | |
a5f1e836 | 2824 | if(pi0list->GetEntriesFast() > 0) |
2825 | okneutral = MakeNeutralCorrelation(particle, pi0list,kTRUE); | |
2826 | } | |
e09cf5ef | 2827 | |
045396c8 | 2828 | // Fill leading particle histogram if correlation went well and |
2829 | // no problem was found, like not absolute leading, or bad vertex in mixing. | |
547c2f01 | 2830 | if(okcharged && okneutral) |
2831 | { | |
7d306daf | 2832 | fhPtLeading->Fill(pt); |
d0b625bc | 2833 | fhPtLeadingBin->Fill(pt,GetEventMixBin()); |
7d306daf | 2834 | if(fCorrelVzBin) fhPtLeadingVzBin->Fill(pt,GetEventVzBin()); |
17af6e24 | 2835 | |
2836 | if(fFillPileUpHistograms) | |
2837 | { | |
cc944149 | 2838 | Int_t vtxBC = GetReader()->GetVertexBC(); |
2839 | if(vtxBC == 0 || vtxBC==AliVTrack::kTOFBCNA) fhPtLeadingVtxBC0->Fill(pt); | |
2840 | ||
17af6e24 | 2841 | if(GetReader()->IsPileUpFromSPD()) fhPtLeadingPileUp[0]->Fill(pt); |
2842 | if(GetReader()->IsPileUpFromEMCal()) fhPtLeadingPileUp[1]->Fill(pt); | |
2843 | if(GetReader()->IsPileUpFromSPDOrEMCal()) fhPtLeadingPileUp[2]->Fill(pt); | |
2844 | if(GetReader()->IsPileUpFromSPDAndEMCal()) fhPtLeadingPileUp[3]->Fill(pt); | |
2845 | if(GetReader()->IsPileUpFromSPDAndNotEMCal()) fhPtLeadingPileUp[4]->Fill(pt); | |
2846 | if(GetReader()->IsPileUpFromEMCalAndNotSPD()) fhPtLeadingPileUp[5]->Fill(pt); | |
2847 | if(GetReader()->IsPileUpFromNotSPDAndNotEMCal()) fhPtLeadingPileUp[6]->Fill(pt); | |
2848 | } | |
2849 | ||
045396c8 | 2850 | Float_t phi = particle->Phi(); |
2851 | if(phi<0)phi+=TMath::TwoPi(); | |
68cd2624 | 2852 | fhPhiLeading->Fill(pt, phi); |
2853 | ||
2854 | fhEtaLeading->Fill(pt, particle->Eta()); | |
283f989c | 2855 | //printf("AliAnaParticleHadronCorrelation::MakeAnalysisFillHistograms() - Leading particle : pt %f, eta %f, phi %f\n",particle->Pt(),particle->Eta(),phi); |
68cd2624 | 2856 | |
764ab1f4 | 2857 | if(IsDataMC()) |
2858 | { | |
b1f720a7 | 2859 | Int_t mcIndex = GetMCTagHistogramIndex(particle->GetTag()); |
2860 | fhPtLeadingMC[mcIndex]->Fill(pt); | |
764ab1f4 | 2861 | } |
c8710850 | 2862 | |
68cd2624 | 2863 | fhPtLeadingCentrality ->Fill(pt,cen); |
2864 | fhPtLeadingEventPlane ->Fill(pt,ep); | |
2865 | fhLeadingEventPlaneCentrality->Fill(cen,ep); | |
2866 | ||
045396c8 | 2867 | }//ok charged && neutral |
e09cf5ef | 2868 | }//Aod branch loop |
2869 | ||
045396c8 | 2870 | //Reinit for next event |
2871 | fLeadingTriggerIndex = -1; | |
e09cf5ef | 2872 | |
045396c8 | 2873 | if(GetDebug() > 1) printf("AliAnaParticleHadronCorrelation::MakeAnalysisFillHistograms() - End fill histograms \n"); |
e09cf5ef | 2874 | } |
2875 | ||
c5693f62 | 2876 | //___________________________________________________________________________________________________________ |
045396c8 | 2877 | Bool_t AliAnaParticleHadronCorrelation::MakeChargedCorrelation(AliAODPWG4ParticleCorrelation *aodParticle, |
22ad7981 | 2878 | const TObjArray* pl, Bool_t bFillHisto) |
e09cf5ef | 2879 | { |
2880 | // Charged Hadron Correlation Analysis | |
283f989c | 2881 | if(GetDebug() > 1) |
2882 | printf("AliAnaParticleHadronCorrelation::MakeChargedCorrelation() - Make trigger particle - charged hadron correlation \n"); | |
907b38cd | 2883 | |
2884 | Float_t phiTrig = aodParticle->Phi(); | |
2885 | Float_t etaTrig = aodParticle->Eta(); | |
2886 | Float_t ptTrig = aodParticle->Pt(); | |
2887 | Bool_t decay = aodParticle->IsTagged(); | |
b1f720a7 | 2888 | Int_t mcTag = aodParticle->GetTag(); |
fedea415 | 2889 | Double_t bz = GetReader()->GetInputEvent()->GetMagneticField(); |
2890 | ||
907b38cd | 2891 | Float_t pt = -100. ; |
2892 | Float_t zT = -100. ; | |
2893 | Float_t xE = -100. ; | |
2894 | Float_t hbpXE = -100. ; | |
2895 | Float_t hbpZT = -100. ; | |
2896 | Float_t phi = -100. ; | |
2897 | Float_t eta = -100. ; | |
2898 | Float_t pout = -100. ; | |
2899 | Float_t deltaPhi = -100. ; | |
e09cf5ef | 2900 | |
907b38cd | 2901 | TVector3 p3; |
2902 | TLorentzVector photonMom ; | |
2903 | TObjArray * reftracks = 0x0; | |
2904 | Int_t nrefs = 0; | |
2905 | Int_t nTracks = GetCTSTracks()->GetEntriesFast() ; | |
2906 | ||
2907 | // Mixed event settings | |
2908 | Int_t evtIndex11 = -1 ; // cluster trigger or pi0 trigger | |
045396c8 | 2909 | Int_t evtIndex12 = -1 ; // pi0 trigger |
2910 | Int_t evtIndex13 = -1 ; // charged trigger | |
045396c8 | 2911 | |
2912 | Double_t v[3] = {0,0,0}; //vertex ; | |
e09cf5ef | 2913 | GetReader()->GetVertex(v); |
e09cf5ef | 2914 | |
04f7a616 | 2915 | if (GetMixedEvent()) |
2916 | { | |
e09cf5ef | 2917 | evtIndex11 = GetMixedEvent()->EventIndexForCaloCluster(aodParticle->GetCaloLabel(0)) ; |
2918 | evtIndex12 = GetMixedEvent()->EventIndexForCaloCluster(aodParticle->GetCaloLabel(1)) ; | |
2919 | evtIndex13 = GetMixedEvent()->EventIndex(aodParticle->GetTrackLabel(0)) ; | |
2920 | } | |
2921 | ||
907b38cd | 2922 | // In case of pi0/eta trigger, we may want to check their decay correlation, |
2923 | // get their decay children | |
2924 | TLorentzVector decayMom1; | |
2925 | TLorentzVector decayMom2; | |
2926 | Bool_t decayFound = kFALSE; | |
2927 | if(fPi0Trigger && bFillHisto) decayFound = GetDecayPhotonMomentum(aodParticle,decayMom1, decayMom2); | |
2928 | ||
2929 | //----------------------------------------------------------------------- | |
e09cf5ef | 2930 | //Track loop, select tracks with good pt, phi and fill AODs or histograms |
907b38cd | 2931 | //----------------------------------------------------------------------- |
2932 | ||
547c2f01 | 2933 | for(Int_t ipr = 0;ipr < pl->GetEntriesFast() ; ipr ++ ) |
2934 | { | |
e09cf5ef | 2935 | AliVTrack * track = (AliVTrack *) (pl->At(ipr)) ; |
045396c8 | 2936 | |
e09cf5ef | 2937 | Double_t mom[3] = {track->Px(),track->Py(),track->Pz()}; |
2938 | p3.SetXYZ(mom[0],mom[1],mom[2]); | |
2939 | pt = p3.Pt(); | |
e09cf5ef | 2940 | eta = p3.Eta(); |
2941 | phi = p3.Phi() ; | |
2942 | if(phi < 0) phi+=TMath::TwoPi(); | |
045396c8 | 2943 | |
e09cf5ef | 2944 | //Select only hadrons in pt range |
66e64043 | 2945 | if(pt < fMinAssocPt || pt > fMaxAssocPt) continue ; |
2946 | ||
e09cf5ef | 2947 | //remove trigger itself for correlation when use charged triggers |
2948 | if( track->GetID() == aodParticle->GetTrackLabel(0) || track->GetID() == aodParticle->GetTrackLabel(1) || | |
66e64043 | 2949 | track->GetID() == aodParticle->GetTrackLabel(2) || track->GetID() == aodParticle->GetTrackLabel(3) ) |
045396c8 | 2950 | continue ; |
2951 | ||
045396c8 | 2952 | //jump out this event if near side associated particle pt larger than trigger |
3f150b4b | 2953 | if (fMakeNearSideLeading) |
547c2f01 | 2954 | { |
3f150b4b | 2955 | if(pt > ptTrig && TMath::Abs(phi-phiTrig) < TMath::PiOver2()) return kFALSE; |
2956 | } | |
2957 | //jump out this event if there is any other particle with pt larger than trigger | |
2958 | else if(fMakeAbsoluteLeading) | |
2959 | { | |
2960 | if(pt > ptTrig) return kFALSE; | |
045396c8 | 2961 | } |
2962 | ||
2963 | //Only for mixed event | |
2964 | Int_t evtIndex2 = 0 ; | |
04f7a616 | 2965 | if (GetMixedEvent()) |
2966 | { | |
045396c8 | 2967 | evtIndex2 = GetMixedEvent()->EventIndex(track->GetID()) ; |
2968 | if (evtIndex11 == evtIndex2 || evtIndex12 == evtIndex2 || evtIndex13 == evtIndex2 ) // photon and track from different events | |
2969 | continue ; | |
2970 | //vertex cut | |
2971 | if (TMath::Abs(GetVertex(evtIndex2)[2]) > GetZvertexCut()) | |
2972 | return kFALSE; | |
2973 | } | |
2974 | ||
045396c8 | 2975 | // Fill Histograms |
3f150b4b | 2976 | if(bFillHisto) |
907b38cd | 2977 | { |
66e64043 | 2978 | |
283f989c | 2979 | if(GetDebug() > 2 ) |
2980 | printf("AliAnaParticleHadronCorrelation::MakeChargedCorrelation() - Selected charge for momentum imbalance: pt %2.2f, phi %2.2f, eta %2.2f \n",pt,phi,eta); | |
907b38cd | 2981 | |
2982 | // Set the pt associated bin for the defined bins | |
2983 | Int_t assocBin = -1; | |
2984 | for(Int_t i = 0 ; i < fNAssocPtBins ; i++) | |
547c2f01 | 2985 | { |
907b38cd | 2986 | if(pt > fAssocPtBinLimit[i] && pt < fAssocPtBinLimit[i+1]) assocBin= i; |
2987 | } | |
66e64043 | 2988 | |
8cc41381 | 2989 | // Assign to the histogram array a bin corresponding to a combination of pTa and vz bins |
7d306daf | 2990 | Int_t nz = 1; |
2991 | Int_t vz = 0; | |
2992 | ||
2993 | if(fCorrelVzBin) | |
2994 | { | |
2995 | nz = GetNZvertBin(); | |
2996 | vz = GetEventVzBin(); | |
2997 | } | |
2998 | ||
2999 | Int_t bin = assocBin*nz+vz; | |
3000 | ||
8cc41381 | 3001 | //printf("assoc Bin = %d, vZ bin = %d, bin = %d \n", assocBin,GetEventVzBin(),bin); |
3002 | ||
fedea415 | 3003 | ULong_t status = track->GetStatus(); |
3004 | Bool_t okTOF = ( (status & AliVTrack::kTOFout) == AliVTrack::kTOFout ) ; | |
3005 | //Double32_t tof = track->GetTOFsignal()*1e-3; | |
3006 | Int_t trackBC = track->GetTOFBunchCrossing(bz); | |
3007 | ||
2a9171b5 | 3008 | Int_t outTOF = -1; |
3009 | if (okTOF && trackBC!=0) outTOF = 1; | |
3010 | else if(okTOF && trackBC==0) outTOF = 0; | |
fedea415 | 3011 | |
907b38cd | 3012 | // Azimuthal Angle |
3013 | // calculate deltaPhi for later, shift when needed | |
8cc41381 | 3014 | FillChargedAngularCorrelationHistograms(pt, ptTrig, bin, phi, phiTrig, deltaPhi, |
fedea415 | 3015 | eta, etaTrig, decay, track->GetHMPIDsignal(),outTOF,nTracks,mcTag); |
05d0d05d | 3016 | |
907b38cd | 3017 | // Imbalance zT/xE/pOut |
3018 | zT = pt/ptTrig ; | |
f16872ec | 3019 | if(zT > 0 ) hbpZT = TMath::Log(1./zT); |
907b38cd | 3020 | else hbpZT =-100; |
e09cf5ef | 3021 | |
907b38cd | 3022 | xE =-pt/ptTrig*TMath::Cos(deltaPhi); // -(px*pxTrig+py*pyTrig)/(ptTrig*ptTrig); |
3023 | //if(xE <0.)xE =-xE; | |
f16872ec | 3024 | if(xE > 0 ) hbpXE = TMath::Log(1./xE); |
907b38cd | 3025 | else hbpXE =-100; |
3026 | ||
3027 | pout = pt*TMath::Sin(deltaPhi) ; | |
66e64043 | 3028 | |
907b38cd | 3029 | //delta phi cut for momentum imbalance correlation |
18838011 | 3030 | if ( (deltaPhi > fDeltaPhiMinCut) && (deltaPhi < fDeltaPhiMaxCut) ) |
547c2f01 | 3031 | { |
3f150b4b | 3032 | |
727a309a | 3033 | FillChargedMomentumImbalanceHistograms(ptTrig, pt, xE, hbpXE, zT, hbpZT, pout, deltaPhi, |
fedea415 | 3034 | nTracks, track->Charge(), bin, decay,outTOF,mcTag); |
3f150b4b | 3035 | |
18838011 | 3036 | } |
3037 | ||
fedea415 | 3038 | if ( (deltaPhi > fUeDeltaPhiMinCut) && (deltaPhi < fUeDeltaPhiMaxCut) ) |
547c2f01 | 3039 | { //UE study |
3f150b4b | 3040 | |
fedea415 | 3041 | FillChargedUnderlyingEventHistograms(ptTrig, pt, deltaPhi, nTracks,outTOF); |
9623bf34 | 3042 | |
d0b625bc | 3043 | fhUePart->Fill(ptTrig); |
3f150b4b | 3044 | |
907b38cd | 3045 | } |
e09cf5ef | 3046 | |
907b38cd | 3047 | if(fPi0Trigger && decayFound) |
3048 | FillDecayPhotonCorrelationHistograms(pt, phi, decayMom1,decayMom2, kTRUE) ; | |
e09cf5ef | 3049 | |
3050 | //several UE calculation | |
8cc41381 | 3051 | if(fMakeSeveralUE) FillChargedUnderlyingEventSidesHistograms(ptTrig,pt,deltaPhi); |
907b38cd | 3052 | |
e09cf5ef | 3053 | } //Fill histogram |
547c2f01 | 3054 | else |
3055 | { | |
e09cf5ef | 3056 | nrefs++; |
547c2f01 | 3057 | if(nrefs==1) |
3058 | { | |
e09cf5ef | 3059 | reftracks = new TObjArray(0); |
045396c8 | 3060 | TString trackname = Form("%s+Tracks", GetAODObjArrayName().Data()); |
3061 | reftracks->SetName(trackname.Data()); | |
029dea5a | 3062 | reftracks->SetOwner(kFALSE); |
e09cf5ef | 3063 | } |
029dea5a | 3064 | |
e09cf5ef | 3065 | reftracks->Add(track); |
029dea5a | 3066 | |
e09cf5ef | 3067 | }//aod particle loop |
3068 | }// track loop | |
3069 | ||
3070 | //Fill AOD with reference tracks, if not filling histograms | |
547c2f01 | 3071 | if(!bFillHisto && reftracks) |
3072 | { | |
e09cf5ef | 3073 | aodParticle->AddObjArray(reftracks); |
3074 | } | |
283f989c | 3075 | |
029dea5a | 3076 | //Own mixed event, add event and remove previous or fill the mixed histograms |
2e876d85 | 3077 | if(DoOwnMix() && bFillHisto) |
029dea5a | 3078 | { |
3079 | MakeChargedMixCorrelation(aodParticle); | |
3080 | } | |
3081 | ||
045396c8 | 3082 | return kTRUE; |
e09cf5ef | 3083 | |
3084 | } | |
3085 | ||
029dea5a | 3086 | |
7ed3a248 | 3087 | //_________________________________________________________________________________________________________ |
3088 | void AliAnaParticleHadronCorrelation::MakeChargedMixCorrelation(AliAODPWG4ParticleCorrelation *aodParticle) | |
029dea5a | 3089 | { |
2e876d85 | 3090 | // Mix current trigger with tracks in another MB event |
029dea5a | 3091 | |
2e876d85 | 3092 | if(GetDebug() > 1) printf("AliAnaParticleHadronCorrelationNew::MakeChargedMixCorrelation() - Make trigger particle - charged hadron mixed event correlation \n"); |
029dea5a | 3093 | |
3094 | if(GetMixedEvent()) return; // This is not the mixed event from general mixing frame | |
3095 | ||
029dea5a | 3096 | // Get the event with similar caracteristics |
2e876d85 | 3097 | //printf("MakeChargedMixCorrelation for %s\n",GetInputAODName().Data()); |
3098 | ||
3099 | AliAnalysisManager * manager = AliAnalysisManager::GetAnalysisManager(); | |
c52aeef5 | 3100 | |
2e876d85 | 3101 | AliInputEventHandler * inputHandler = dynamic_cast<AliInputEventHandler*>(manager->GetInputEventHandler()); |
c52aeef5 | 3102 | |
3103 | if(!inputHandler) return; | |
3104 | ||
2e876d85 | 3105 | if(!(inputHandler->IsEventSelected( ) & GetReader()->GetEventTriggerMask())) return; |
7ed3a248 | 3106 | |
029dea5a | 3107 | // Get the pool, check if it exits |
2e876d85 | 3108 | Int_t eventBin = GetEventMixBin(); |
3109 | ||
3110 | fhEventBin->Fill(eventBin); | |
029dea5a | 3111 | |
2e876d85 | 3112 | //Check that the bin exists, if not (bad determination of RP, centrality or vz bin) do nothing |
3113 | if(eventBin < 0) return; | |
029dea5a | 3114 | |
d07ffd54 | 3115 | TList * pool = 0; |
3116 | TList * poolCalo = 0; | |
3117 | if(fUseMixStoredInReader) | |
3118 | { | |
3119 | pool = GetReader()->GetListWithMixedEventsForTracks(eventBin); | |
2bb7ac98 | 3120 | if(OnlyIsolated() || fFillNeutralEventMixPool) poolCalo = GetReader()->GetListWithMixedEventsForCalo (eventBin); |
d07ffd54 | 3121 | } |
3122 | else | |
3123 | { | |
3124 | pool = fListMixTrackEvents[eventBin]; | |
2bb7ac98 | 3125 | if(OnlyIsolated() || fFillNeutralEventMixPool) poolCalo = fListMixCaloEvents [eventBin]; |
d07ffd54 | 3126 | } |
3127 | ||
2e876d85 | 3128 | if(!pool) return ; |
029dea5a | 3129 | |
2bb7ac98 | 3130 | if((OnlyIsolated() || fFillNeutralEventMixPool ) && !poolCalo && |
d07ffd54 | 3131 | (GetIsolationCut()->GetParticleTypeInCone()!=AliIsolationCut::AliIsolationCut::kOnlyCharged)) |
3132 | printf("AliAnaParticleHadronCorrelation::MakeChargedMixCorrelation() - Careful, cluster pool not available\n"); | |
3133 | ||
029dea5a | 3134 | Double_t ptTrig = aodParticle->Pt(); |
3135 | Double_t etaTrig = aodParticle->Eta(); | |
3136 | Double_t phiTrig = aodParticle->Phi(); | |
3137 | if(phiTrig < 0.) phiTrig+=TMath::TwoPi(); | |
3138 | ||
2e876d85 | 3139 | if(GetDebug() > 1) |
283f989c | 3140 | printf("AliAnaParticleHadronCorrelationNew::MakeChargedMixCorrelation() - Pool bin %d size %d, leading trigger pt=%f, phi=%f, eta=%f\n", |
3141 | eventBin,pool->GetSize(), ptTrig,phiTrig,etaTrig); | |
029dea5a | 3142 | |
3143 | Double_t ptAssoc = -999.; | |
2e876d85 | 3144 | Double_t phiAssoc = -999.; |
029dea5a | 3145 | Double_t etaAssoc = -999.; |
3146 | Double_t deltaPhi = -999.; | |
3147 | Double_t deltaEta = -999.; | |
08f220c8 | 3148 | Double_t xE = -999.; |
3149 | Double_t hbpXE = -999.; | |
3150 | ||
2e876d85 | 3151 | //Start from first event in pool except if in this same event the pool was filled |
283f989c | 3152 | Int_t ev0 = 0; |
3153 | if(GetReader()->GetLastTracksMixedEvent() == GetEventNumber()) ev0 = 1; | |
7ed3a248 | 3154 | |
283f989c | 3155 | for(Int_t ev=ev0; ev < pool->GetSize(); ev++) |
029dea5a | 3156 | { |
3157 | TObjArray* bgTracks = static_cast<TObjArray*>(pool->At(ev)); | |
2bb7ac98 | 3158 | TObjArray* bgCalo = 0; |
3159 | ||
7ed3a248 | 3160 | // Check if the particle is isolated in the mixed event, it not, do not fill the histograms |
2bb7ac98 | 3161 | if(OnlyIsolated() || fFillNeutralEventMixPool) |
7ed3a248 | 3162 | { |
d07ffd54 | 3163 | if(pool->GetSize()!=poolCalo->GetSize()) |
3164 | printf("AliAnaParticleHadronCorrelationNew::MakeChargedMixCorrelation() - Different size of calo and track pools\n"); | |
3165 | ||
2bb7ac98 | 3166 | bgCalo = static_cast<TObjArray*>(poolCalo->At(ev)); |
d07ffd54 | 3167 | |
3168 | if(!bgCalo) | |
3169 | printf("AliAnaParticleHadronCorrelationNew::MakeChargedMixCorrelation() - Event %d in calo pool not available?\n",ev); | |
3170 | ||
152c5ca9 | 3171 | if(OnlyIsolated()) |
2bb7ac98 | 3172 | { |
3173 | Int_t n=0; Int_t nfrac = 0; Bool_t isolated = kFALSE; Float_t coneptsum = 0; | |
3174 | GetIsolationCut()->MakeIsolationCut(bgTracks,bgCalo, | |
3175 | GetReader(), GetCaloPID(), | |
3176 | kFALSE, aodParticle, "", | |
3177 | n,nfrac,coneptsum, isolated); | |
3178 | ||
3179 | //printf("AliAnaParticleHadronCorrelation::MakeChargedMixCorrelation() - Isolated? %d - cone %f, ptthres %f", | |
3180 | // isolated,GetIsolationCut()->GetConeSize(),GetIsolationCut()->GetPtThreshold()); | |
3181 | //if(bgTracks)printf(" - n track %d", bgTracks->GetEntriesFast()); | |
3182 | //printf("\n"); | |
3183 | ||
3184 | if(!isolated) continue ; | |
3185 | } | |
7ed3a248 | 3186 | } |
3187 | ||
2e876d85 | 3188 | fhEventMixBin->Fill(eventBin); |
029dea5a | 3189 | |
2e876d85 | 3190 | Int_t nTracks=bgTracks->GetEntriesFast(); |
3191 | //printf("\t Read Pool event %d, nTracks %d\n",ev,nTracks); | |
3192 | ||
d0b625bc | 3193 | //Check if it is leading if mixed event |
3194 | if(fMakeNearSideLeading || fMakeAbsoluteLeading) | |
3195 | { | |
3196 | Bool_t leading = kTRUE; | |
3197 | for(Int_t jlead = 0;jlead <nTracks; jlead++ ) | |
3198 | { | |
3199 | AliAODPWG4Particle *track = (AliAODPWG4Particle*) bgTracks->At(jlead) ; | |
3200 | ||
3201 | ptAssoc = track->Pt(); | |
3202 | phiAssoc = track->Phi() ; | |
3203 | ||
3204 | if(phiAssoc < 0) phiAssoc+=TMath::TwoPi(); | |
d0b625bc | 3205 | if (fMakeNearSideLeading) |
3206 | { | |
3207 | if(ptAssoc > ptTrig && TMath::Abs(phiAssoc-phiTrig) < TMath::PiOver2()) | |
3208 | { | |
3209 | leading = kFALSE; | |
3210 | break; | |
3211 | } | |
3212 | } | |
3213 | //jump out this event if there is any other particle with pt larger than trigger | |
3214 | else if(fMakeAbsoluteLeading) | |
3215 | { | |
3216 | if(ptAssoc > ptTrig) | |
3217 | { | |
3218 | leading = kFALSE; | |
d0b625bc | 3219 | break; |
3220 | } | |
3221 | } | |
3222 | } | |
2bb7ac98 | 3223 | |
3224 | if(fFillNeutralEventMixPool && bgCalo) | |
3225 | { | |
3226 | Int_t nClusters=bgCalo->GetEntriesFast(); | |
3227 | TLorentzVector mom ; | |
3228 | for(Int_t jlead = 0;jlead <nClusters; jlead++ ) | |
3229 | { | |
152c5ca9 | 3230 | AliAODPWG4Particle *cluster= (AliAODPWG4Particle*) bgCalo->At(jlead) ; |
2bb7ac98 | 3231 | |
152c5ca9 | 3232 | ptAssoc = cluster->Pt(); |
3233 | phiAssoc = cluster->Phi() ; | |
2bb7ac98 | 3234 | |
3235 | if(phiAssoc < 0) phiAssoc+=TMath::TwoPi(); | |
3236 | if (fMakeNearSideLeading) | |
3237 | { | |
3238 | if(ptAssoc > ptTrig && TMath::Abs(phiAssoc-phiTrig) < TMath::PiOver2()) | |
3239 | { | |
3240 | leading = kFALSE; | |
3241 | break; | |
3242 | } | |
3243 | } | |
3244 | //jump out this event if there is any other particle with pt larger than trigger | |
3245 | else if(fMakeAbsoluteLeading) | |
3246 | { | |
3247 | if(ptAssoc > ptTrig) | |
3248 | { | |
3249 | leading = kFALSE; | |
3250 | break; | |
3251 | } | |
3252 | } | |
3253 | } | |
3254 | } | |
3255 | ||
d0b625bc | 3256 | if(!leading) continue; // not leading, check the next event in pool |
2bb7ac98 | 3257 | |
d0b625bc | 3258 | } |
3259 | ||
7d306daf | 3260 | fhPtLeadingMixed ->Fill(ptTrig); |
ca17b39f | 3261 | fhPhiLeadingMixed ->Fill(ptTrig, phiTrig); |
3262 | fhEtaLeadingMixed ->Fill(ptTrig, etaTrig); | |
d0b625bc | 3263 | fhPtLeadingMixedBin->Fill(ptTrig,eventBin); |
7d306daf | 3264 | if(fCorrelVzBin)fhPtLeadingMixedVzBin->Fill(ptTrig, GetEventVzBin()); |
d0b625bc | 3265 | |
029dea5a | 3266 | for(Int_t j1 = 0;j1 <nTracks; j1++ ) |
3267 | { | |
3268 | AliAODPWG4Particle *track = (AliAODPWG4Particle*) bgTracks->At(j1) ; | |
3269 | ||
3270 | if(!track) continue; | |
3271 | ||
3272 | ptAssoc = track->Pt(); | |
3273 | etaAssoc = track->Eta(); | |
3274 | phiAssoc = track->Phi() ; | |
3275 | if(phiAssoc < 0) phiAssoc+=TMath::TwoPi(); | |
2e876d85 | 3276 | |
029dea5a | 3277 | if(IsFiducialCutOn()) |
3278 | { | |
3279 | Bool_t in = GetFiducialCut()->IsInFiducialCut(*aodParticle->Momentum(),"CTS") ; | |
3280 | if(!in) continue ; | |
3281 | } | |
3282 | ||
3283 | deltaPhi = phiTrig-phiAssoc; | |
3284 | if(deltaPhi < -TMath::PiOver2()) deltaPhi+=TMath::TwoPi(); | |
3285 | if(deltaPhi > 3*TMath::PiOver2()) deltaPhi-=TMath::TwoPi(); | |
3286 | deltaEta = etaTrig-etaAssoc; | |
3287 | ||
3288 | if(GetDebug()>0) | |
3289 | printf("AliAnaParticleHadronCorrelationNew::MakeChargedMixCorrelation(): deltaPhi= %f, deltaEta=%f\n",deltaPhi, deltaEta); | |
3290 | ||
3291 | // Set the pt associated bin for the defined bins | |
3292 | Int_t assocBin = -1; | |
3293 | for(Int_t i = 0 ; i < fNAssocPtBins ; i++) | |
3294 | { | |
3295 | if(ptAssoc > fAssocPtBinLimit[i] && ptAssoc < fAssocPtBinLimit[i+1]) assocBin= i; | |
3296 | } | |
3297 | ||
8cc41381 | 3298 | // Assign to the histogram array a bin corresponding to a combination of pTa and vz bins |
7d306daf | 3299 | Int_t nz = 1; |
3300 | Int_t vz = 0; | |
3301 | ||
3302 | if(fCorrelVzBin) | |
3303 | { | |
3304 | nz = GetNZvertBin(); | |
3305 | vz = GetEventVzBin(); | |
3306 | } | |
3307 | ||
3308 | Int_t bin = assocBin*nz+vz; | |
8cc41381 | 3309 | |
029dea5a | 3310 | fhMixDeltaPhiCharged ->Fill(ptTrig, deltaPhi); |
3311 | fhMixDeltaPhiDeltaEtaCharged->Fill(deltaPhi, deltaEta); | |
3312 | ||
08f220c8 | 3313 | fhMixDeltaPhiCharged ->Fill(ptTrig, deltaPhi); |
3314 | fhMixDeltaPhiDeltaEtaCharged->Fill(deltaPhi, deltaEta); | |
3315 | ||
3316 | xE =-ptAssoc/ptTrig*TMath::Cos(deltaPhi); // -(px*pxTrig+py*pyTrig)/(ptTrig*ptTrig); | |
3317 | //if(xE <0.)xE =-xE; | |
3318 | if(xE > 0 ) hbpXE = TMath::Log(1./xE); | |
3319 | else hbpXE =-100; | |
3320 | ||
18838011 | 3321 | if ( (deltaPhi > fDeltaPhiMinCut) && (deltaPhi < fDeltaPhiMaxCut) ) |
08f220c8 | 3322 | { |
7d306daf | 3323 | fhMixXECharged->Fill(ptTrig,xE); |
3324 | fhMixHbpXECharged->Fill(ptTrig,hbpXE); | |
08f220c8 | 3325 | } |
18838011 | 3326 | |
3327 | if ( (deltaPhi > fUeDeltaPhiMinCut) && (deltaPhi < fUeDeltaPhiMaxCut) ) | |
3328 | { | |
3329 | //Underlying event region | |
3330 | Double_t randomphi = gRandom->Uniform(fDeltaPhiMinCut,fDeltaPhiMaxCut); | |
3331 | Double_t uexE = -(ptAssoc/ptTrig)*TMath::Cos(randomphi); | |
3332 | ||
3333 | if(uexE < 0.) uexE = -uexE; | |
3334 | ||
3335 | fhMixXEUeCharged->Fill(ptTrig,uexE); | |
3336 | } | |
3337 | ||
8cc41381 | 3338 | if(bin < 0) continue ; // this pt bin was not considered |
029dea5a | 3339 | |
2013f378 | 3340 | if(TMath::Abs(deltaEta) > 0.8) |
8cc41381 | 3341 | fhMixDeltaPhiChargedAssocPtBinDEta08 [bin]->Fill(ptTrig, deltaPhi); |
03a96401 | 3342 | if(TMath::Abs(deltaEta) < 0.01) |
8cc41381 | 3343 | fhMixDeltaPhiChargedAssocPtBinDEta0 [bin]->Fill(ptTrig, deltaPhi); |
2013f378 | 3344 | |
8cc41381 | 3345 | fhMixDeltaPhiChargedAssocPtBin [bin]->Fill(ptTrig, deltaPhi); |
3346 | fhMixDeltaPhiDeltaEtaChargedAssocPtBin[bin]->Fill(deltaPhi, deltaEta); | |
029dea5a | 3347 | |
3348 | } // track loop | |
3349 | } // mixed event loop | |
3350 | } | |
3351 | ||
3352 | ||
05d0d05d | 3353 | //________________________________________________________________________________________________________________ |
045396c8 | 3354 | Bool_t AliAnaParticleHadronCorrelation::MakeNeutralCorrelation(AliAODPWG4ParticleCorrelation * const aodParticle, |
22ad7981 | 3355 | const TObjArray* pi0list, Bool_t bFillHisto) |
e09cf5ef | 3356 | { |
3357 | // Neutral Pion Correlation Analysis | |
907b38cd | 3358 | if(GetDebug() > 1) printf("AliAnaParticleHadronCorrelation::MakeNeutralCorrelation() - Make trigger particle - pi0 correlation, %d pi0's \n", |
3359 | pi0list->GetEntriesFast()); | |
e09cf5ef | 3360 | |
3361 | Int_t evtIndex11 = 0 ; | |
3362 | Int_t evtIndex12 = 0 ; | |
04f7a616 | 3363 | if (GetMixedEvent()) |
3364 | { | |
e09cf5ef | 3365 | evtIndex11 = GetMixedEvent()->EventIndexForCaloCluster(aodParticle->GetCaloLabel(0)) ; |
3366 | evtIndex12 = GetMixedEvent()->EventIndexForCaloCluster(aodParticle->GetCaloLabel(1)) ; | |
3367 | } | |
3368 | ||
907b38cd | 3369 | Float_t pt = -100. ; |
3370 | Float_t zT = -100. ; | |
3371 | Float_t phi = -100. ; | |
3372 | Float_t eta = -100. ; | |
3373 | Float_t xE = -100. ; | |
3374 | Float_t hbpXE= -100. ; | |
3375 | Float_t hbpZT= -100. ; | |
3376 | ||
3377 | Float_t ptTrig = aodParticle->Pt(); | |
3378 | Float_t phiTrig = aodParticle->Phi(); | |
3379 | Float_t etaTrig = aodParticle->Eta(); | |
3380 | Float_t deltaPhi= -100. ; | |
3f150b4b | 3381 | |
045396c8 | 3382 | TLorentzVector photonMom ; |
3383 | ||
907b38cd | 3384 | // In case of pi0/eta trigger, we may want to check their decay correlation, |
3385 | // get their decay children | |
3386 | TLorentzVector decayMom1; | |
3387 | TLorentzVector decayMom2; | |
3388 | Bool_t decayFound = kFALSE; | |
3389 | if(fPi0Trigger && bFillHisto) decayFound = GetDecayPhotonMomentum(aodParticle,decayMom1, decayMom2); | |
e09cf5ef | 3390 | |
907b38cd | 3391 | TObjArray * refpi0 = 0x0; |
3392 | Int_t nrefs = 0; | |
e09cf5ef | 3393 | |
3394 | //Loop on stored AOD pi0 | |
547c2f01 | 3395 | |
e09cf5ef | 3396 | Int_t naod = pi0list->GetEntriesFast(); |
045396c8 | 3397 | if(GetDebug() > 0) |
3398 | printf("AliAnaParticleHadronCorrelation::MakeNeutralCorrelationFillHistograms() - aod branch entries %d\n", naod); | |
547c2f01 | 3399 | |
3400 | for(Int_t iaod = 0; iaod < naod ; iaod++) | |
3401 | { | |
e09cf5ef | 3402 | AliAODPWG4Particle* pi0 = (AliAODPWG4Particle*) (pi0list->At(iaod)); |
3403 | ||
3404 | Int_t evtIndex2 = 0 ; | |
3405 | Int_t evtIndex3 = 0 ; | |
04f7a616 | 3406 | if (GetMixedEvent()) |
3407 | { | |
e09cf5ef | 3408 | evtIndex2 = GetMixedEvent()->EventIndexForCaloCluster(pi0->GetCaloLabel(0)) ; |
3409 | evtIndex3 = GetMixedEvent()->EventIndexForCaloCluster(pi0->GetCaloLabel(1)) ; | |
3410 | ||
045396c8 | 3411 | if (evtIndex11 == evtIndex2 || evtIndex12 == evtIndex2 || |
3412 | evtIndex11 == evtIndex3 || evtIndex12 == evtIndex3) // trigger and pi0 are not from different events | |
e09cf5ef | 3413 | continue ; |
3414 | } | |
907b38cd | 3415 | |
e09cf5ef | 3416 | pt = pi0->Pt(); |
907b38cd | 3417 | |
66e64043 | 3418 | if(pt < fMinAssocPt || pt > fMaxAssocPt) continue ; |
3419 | ||
907b38cd | 3420 | //jump out this event if near side associated particle pt larger than trigger |
3421 | if (fMakeNearSideLeading) | |
3422 | { | |
3423 | if(pt > ptTrig && TMath::Abs(phi-phiTrig) < TMath::PiOver2()) return kFALSE; | |
3424 | } | |
3425 | //jump out this event if there is any other particle with pt larger than trigger | |
3426 | else if(fMakeAbsoluteLeading) | |
3427 | { | |
3428 | if(pt > ptTrig) return kFALSE; | |
3429 | } | |
e09cf5ef | 3430 | |
547c2f01 | 3431 | if(bFillHisto) |
3432 | { | |
e09cf5ef | 3433 | phi = pi0->Phi() ; |
3434 | eta = pi0->Eta() ; | |
907b38cd | 3435 | |
3436 | FillNeutralAngularCorrelationHistograms(pt, ptTrig, phi, phiTrig, deltaPhi, eta, etaTrig); | |
3437 | ||
3f150b4b | 3438 | zT = pt/ptTrig ; |
3439 | xE =-pt/ptTrig*TMath::Cos(deltaPhi); // -(px*pxTrig+py*pyTrig)/(ptTrig*ptTrig); | |
3440 | ||
66e64043 | 3441 | //if(xE <0.)xE =-xE; |
e09cf5ef | 3442 | |
3f150b4b | 3443 | hbpXE = -100; |
3444 | hbpZT = -100; | |
907b38cd | 3445 | |
f16872ec | 3446 | if(xE > 0 ) hbpXE = TMath::Log(1./xE); |
3447 | if(zT > 0 ) hbpZT = TMath::Log(1./zT); | |
e09cf5ef | 3448 | |
907b38cd | 3449 | if(fPi0Trigger && decayFound) |
3450 | FillDecayPhotonCorrelationHistograms(pt, phi, decayMom1,decayMom2,kFALSE) ; | |
e09cf5ef | 3451 | |
3452 | //delta phi cut for correlation | |
547c2f01 | 3453 | if( (deltaPhi > fDeltaPhiMinCut) && ( deltaPhi < fDeltaPhiMaxCut) ) |
3454 | { | |
045396c8 | 3455 | fhDeltaPhiNeutralPt->Fill(pt,deltaPhi); |
3f150b4b | 3456 | fhXENeutral ->Fill(ptTrig,xE); |
3457 | fhPtHbpXENeutral ->Fill(ptTrig,hbpXE); | |
e09cf5ef | 3458 | } |
907b38cd | 3459 | else if ( (deltaPhi > fUeDeltaPhiMinCut) && (deltaPhi < fUeDeltaPhiMaxCut) ) |
547c2f01 | 3460 | { |
045396c8 | 3461 | fhDeltaPhiUeNeutralPt->Fill(pt,deltaPhi); |
3f150b4b | 3462 | fhXEUeNeutral ->Fill(ptTrig,xE); |
3463 | fhPtHbpXEUeNeutral ->Fill(ptTrig,hbpXE); | |
e09cf5ef | 3464 | } |
907b38cd | 3465 | |
e09cf5ef | 3466 | //several UE calculation |
8cc41381 | 3467 | if(fMakeSeveralUE) FillChargedUnderlyingEventSidesHistograms(ptTrig,pt,deltaPhi); |
907b38cd | 3468 | |
e09cf5ef | 3469 | } |
547c2f01 | 3470 | else |
3471 | { | |
e09cf5ef | 3472 | nrefs++; |
547c2f01 | 3473 | if(nrefs==1) |
3474 | { | |
e09cf5ef | 3475 | refpi0 = new TObjArray(0); |
3476 | refpi0->SetName(GetAODObjArrayName()+"Pi0s"); | |
3477 | refpi0->SetOwner(kFALSE); | |
3478 | } | |
3479 | refpi0->Add(pi0); | |
3480 | }//put references in trigger AOD | |
045396c8 | 3481 | |
3482 | if(GetDebug() > 2 ) | |
3483 | printf("AliAnaParticleHadronCorrelation::MakeNeutralCorrelation() - Selected neutral for momentum imbalance: pt %2.2f, phi %2.2f, eta %2.2f \n",pt,phi,eta); | |
3484 | ||
3485 | }//loop | |
3486 | ||
3487 | return kTRUE; | |
3488 | } | |
3489 | ||
05d0d05d | 3490 | //_________________________________________________________________________________________________________ |
045396c8 | 3491 | void AliAnaParticleHadronCorrelation::MakeMCChargedCorrelation(AliAODPWG4ParticleCorrelation *aodParticle) |
3492 | { | |
3493 | // Charged Hadron Correlation Analysis with MC information | |
a426f453 | 3494 | |
045396c8 | 3495 | if(GetDebug()>1) |
3496 | printf("AliAnaParticleHadronCorrelation::MakeMCChargedCorrelation() - Make trigger particle - charged hadron correlation in AOD MC level\n"); | |
3497 | ||
3498 | AliStack * stack = 0x0 ; | |
3499 | TParticle * primary = 0x0 ; | |
3500 | TClonesArray * mcparticles0 = 0x0 ; | |
3501 | TClonesArray * mcparticles = 0x0 ; | |
3502 | AliAODMCParticle * aodprimary = 0x0 ; | |
3503 | ||
3504 | Double_t eprim = 0 ; | |
3505 | Double_t ptprim = 0 ; | |
3506 | Double_t phiprim = 0 ; | |
3507 | Double_t etaprim = 0 ; | |
045396c8 | 3508 | Int_t nTracks = 0 ; |
3509 | Int_t iParticle = 0 ; | |
3510 | Double_t charge = 0.; | |
a9023d3b | 3511 | |
547c2f01 | 3512 | if(GetReader()->ReadStack()) |
3513 | { | |
045396c8 | 3514 | nTracks = GetMCStack()->GetNtrack() ; |
3515 | } | |
547c2f01 | 3516 | else |
3517 | { | |
3518 | nTracks = GetReader()->GetAODMCParticles()->GetEntriesFast() ; | |
3519 | } | |
045396c8 | 3520 | //Int_t trackIndex[nTracks]; |
3521 | ||
3522 | Int_t label= aodParticle->GetLabel(); | |
a426f453 | 3523 | if(label < 0) |
3524 | { | |
3525 | if(GetDebug() > 0) printf("AliAnaParticleHadronCorrelation::MakeMCChargedCorrelation *** bad label ***: label %d \n", label); | |
045396c8 | 3526 | return; |
3527 | } | |
3528 | ||
547c2f01 | 3529 | if(GetReader()->ReadStack()) |
3530 | { | |
045396c8 | 3531 | stack = GetMCStack() ; |
2e876d85 | 3532 | if(!stack) |
3533 | { | |
045396c8 | 3534 | printf(" AliAnaParticleHadronCorrelation::MakeMCChargedCorrelation- Stack not available, is the MC handler called? STOP\n"); |
3535 | abort(); | |
3536 | } | |
3537 | ||
3538 | nTracks=stack->GetNprimary(); | |
547c2f01 | 3539 | if(label >= stack->GetNtrack()) |
3540 | { | |
045396c8 | 3541 | if(GetDebug() > 2) printf("AliAnaParticleHadronCorrelation::MakeMCChargedCorrelation *** large label ***: label %d, n tracks %d \n", label, stack->GetNtrack()); |
3542 | return ; | |
3543 | } | |
547c2f01 | 3544 | |
045396c8 | 3545 | primary = stack->Particle(label); |
547c2f01 | 3546 | if(!primary) |
3547 | { | |
045396c8 | 3548 | printf("AliAnaParticleHadronCorrelation::MakeMCChargedCorrelation *** no primary ***: label %d \n", label); |
3549 | return; | |
3550 | } | |
3551 | ||
547c2f01 | 3552 | if(primary) |
3553 | { | |
2747966a | 3554 | eprim = primary->Energy(); |
3555 | ptprim = primary->Pt(); | |
3556 | phiprim = primary->Phi(); | |
3557 | etaprim = primary->Eta(); | |
2747966a | 3558 | |
3559 | if(ptprim < 0.01 || eprim < 0.01) return ; | |
a9023d3b | 3560 | |
547c2f01 | 3561 | for (iParticle = 0 ; iParticle < nTracks ; iParticle++) |
3562 | { | |
045396c8 | 3563 | TParticle * particle = stack->Particle(iParticle); |
3564 | TLorentzVector momentum; | |
3f150b4b | 3565 | |
045396c8 | 3566 | //keep only final state particles |
3567 | if(particle->GetStatusCode()!=1) continue ; | |
3f150b4b | 3568 | |
3569 | Int_t pdg = particle->GetPdgCode(); | |
3570 | ||
045396c8 | 3571 | charge = TDatabasePDG::Instance()->GetParticle(pdg)->Charge(); |
3f150b4b | 3572 | |
08f220c8 | 3573 | particle->Momentum(momentum); |
045396c8 | 3574 | |
3575 | //---------- Charged particles ---------------------- | |
547c2f01 | 3576 | if(charge != 0) |
3577 | { | |
045396c8 | 3578 | //Particles in CTS acceptance |
3579 | Bool_t inCTS = GetFiducialCut()->IsInFiducialCut(momentum,"CTS"); | |
3f150b4b | 3580 | |
045396c8 | 3581 | if(TMath::Abs(pdg) == 11 && stack->Particle(particle->GetFirstMother())->GetPdgCode()==22) continue ; |
3f150b4b | 3582 | |
66e64043 | 3583 | if(inCTS) |
045396c8 | 3584 | { |
907b38cd | 3585 | if( label!=iParticle) // avoid trigger particle |
3586 | { | |
3587 | if(!FillChargedMCCorrelationHistograms(particle->Pt(),particle->Phi(),particle->Eta(),ptprim,phiprim,etaprim)) return; | |
3588 | } | |
3589 | }// in CTS acceptance | |
3590 | }// charged | |
045396c8 | 3591 | } //track loop |
3592 | } //when the leading particles could trace back to MC | |
3593 | } //ESD MC | |
a9023d3b | 3594 | |
547c2f01 | 3595 | else if(GetReader()->ReadAODMCParticles()) |
3596 | { | |
045396c8 | 3597 | //Get the list of MC particles |
2644ead9 | 3598 | mcparticles0 = GetReader()->GetAODMCParticles(); |
045396c8 | 3599 | if(!mcparticles0) return; |
a9023d3b | 3600 | |
547c2f01 | 3601 | if(label >=mcparticles0->GetEntriesFast()) |
3602 | { | |
045396c8 | 3603 | if(GetDebug() > 2) |
3604 | printf("AliAnaParticleHadronCorrelation::MakeMCChargedCorrelation *** large label ***: label %d, n tracks %d \n", label,mcparticles0->GetEntriesFast()); | |
3605 | return; | |
3606 | } | |
a9023d3b | 3607 | |
045396c8 | 3608 | //Get the particle |
3609 | aodprimary = (AliAODMCParticle*) mcparticles0->At(label); | |
547c2f01 | 3610 | if(!aodprimary) |
3611 | { | |
045396c8 | 3612 | printf("AliAnaParticleHadronCorrelation::MakeMCChargedCorrelation *** no AOD primary ***: label %d \n", label); |
3613 | return; | |
3614 | } | |
a9023d3b | 3615 | |
547c2f01 | 3616 | if(aodprimary) |
3617 | { | |
2747966a | 3618 | ptprim = aodprimary->Pt(); |
3619 | phiprim = aodprimary->Phi(); | |
3620 | etaprim = aodprimary->Eta(); | |
9623bf34 | 3621 | eprim = aodprimary->E(); |
a9023d3b | 3622 | |
9623bf34 | 3623 | Bool_t lead = kFALSE; |
2747966a | 3624 | |
3625 | if(ptprim < 0.01 || eprim < 0.01) return ; | |
a9023d3b | 3626 | |
045396c8 | 3627 | mcparticles= GetReader()->GetAODMCParticles(); |
a9023d3b | 3628 | for (iParticle = 0; iParticle < nTracks; iParticle++) |
547c2f01 | 3629 | { |
a9023d3b | 3630 | AliAODMCParticle *part = (AliAODMCParticle*) mcparticles->At(iParticle); |
3631 | ||
045396c8 | 3632 | if (!part->IsPhysicalPrimary()) continue; |
a9023d3b | 3633 | |
045396c8 | 3634 | Int_t pdg = part->GetPdgCode(); |
3635 | charge = TDatabasePDG::Instance()->GetParticle(pdg)->Charge(); | |
a9023d3b | 3636 | TLorentzVector momentum(part->Px(),part->Py(),part->Pz(),part->E()); |
3637 | ||
547c2f01 | 3638 | if(charge != 0) |
3639 | { | |
3640 | if(part->Pt()> GetReader()->GetCTSPtMin()) | |
3641 | { | |
045396c8 | 3642 | //Particles in CTS acceptance |
3643 | Bool_t inCTS = GetFiducialCut()->IsInFiducialCut(momentum,"CTS"); | |
3644 | Int_t indexmother=part->GetMother(); | |
a9023d3b | 3645 | |
045396c8 | 3646 | if(indexmother>-1) |
3647 | { | |
3648 | Int_t mPdg = ((AliAODMCParticle*) mcparticles->At(indexmother)) ->GetPdgCode(); | |
3649 | if(TMath::Abs(pdg) == 11 && mPdg == 22) continue; | |
3650 | } | |
547c2f01 | 3651 | |
66e64043 | 3652 | if(inCTS) |
045396c8 | 3653 | { |
907b38cd | 3654 | if( label!=iParticle) // avoid trigger particle |
3655 | { | |
3656 | if(!FillChargedMCCorrelationHistograms(part->Pt(),part->Phi(),part->Eta(),ptprim,phiprim,etaprim)) return; | |
a9023d3b | 3657 | else lead = kTRUE; |
907b38cd | 3658 | } |
3659 | } // in acceptance | |
3660 | } // min pt cut | |
045396c8 | 3661 | } //only charged particles |
08f220c8 | 3662 | } //MC particle loop |
3663 | if (lead) | |
a9023d3b | 3664 | { |
3665 | fhMCPtLeading->Fill(ptprim); | |
3666 | fhMCPhiLeading->Fill(ptprim,phiprim); | |
3667 | fhMCEtaLeading->Fill(ptprim,etaprim); | |
3668 | } | |
045396c8 | 3669 | } //when the leading particles could trace back to MC |
3670 | }// AOD MC | |
e09cf5ef | 3671 | } |
045396c8 | 3672 | |
05d0d05d | 3673 | //_____________________________________________________________________ |
3674 | void AliAnaParticleHadronCorrelation::Print(const Option_t * opt) const | |
3675 | { | |
3676 | ||
3677 | //Print some relevant parameters set for the analysis | |
3678 | if(! opt) | |
3679 | return; | |
3680 | ||
3681 | printf("**** Print %s %s ****\n", GetName(), GetTitle() ) ; | |
745913ae | 3682 | AliAnaCaloTrackCorrBaseClass::Print(" "); |
66e64043 | 3683 | printf("Pt trigger > %3.2f\n", fMinTriggerPt) ; |
3684 | printf("Pt associated hadron < %3.2f\n", fMaxAssocPt) ; | |
3685 | printf("Pt associated hadron > %3.2f\n", fMinAssocPt) ; | |
3686 | printf("Phi trigger particle-Hadron < %3.2f\n", fDeltaPhiMaxCut) ; | |
3687 | printf("Phi trigger particle-Hadron > %3.2f\n", fDeltaPhiMinCut) ; | |
3688 | printf("Phi trigger particle-UeHadron < %3.2f\n", fUeDeltaPhiMaxCut) ; | |
3689 | printf("Phi trigger particle-UeHadron > %3.2f\n", fUeDeltaPhiMinCut) ; | |
3690 | printf("Isolated Trigger? %d\n" , fSelectIsolated) ; | |
3691 | printf("Several UE? %d\n" , fMakeSeveralUE) ; | |
3692 | printf("Name of AOD Pi0 Branch %s \n", fPi0AODBranchName.Data()); | |
05d0d05d | 3693 | printf("Do Decay-hadron correlation ? %d\n", fPi0Trigger) ; |
3f150b4b | 3694 | printf("Select absolute leading for cluster triggers ? %d or Near Side %d\n", |
3695 | fMakeAbsoluteLeading, fMakeNearSideLeading) ; | |
05d0d05d | 3696 | printf("Trigger pt bins %d\n", fNAssocPtBins) ; |
3697 | for (Int_t ibin = 0; ibin<fNAssocPtBins; ibin++) { | |
3698 | printf("\t bin %d = [%2.1f,%2.1f]\n", ibin, fAssocPtBinLimit[ibin], fAssocPtBinLimit[ibin+1]) ; | |
3699 | } | |
3700 | ||
3701 | } | |
3702 | ||
3703 | //____________________________________________________________ | |
3704 | void AliAnaParticleHadronCorrelation::SetNAssocPtBins(Int_t n) | |
045396c8 | 3705 | { |
3706 | // Set number of bins | |
e09cf5ef | 3707 | |
05d0d05d | 3708 | fNAssocPtBins = n ; |
3709 | ||
3710 | ||
f85f4afb | 3711 | if(n < 20 && n > 0) |
045396c8 | 3712 | { |
05d0d05d | 3713 | fNAssocPtBins = n ; |
045396c8 | 3714 | } |
3715 | else | |
3716 | { | |
f85f4afb | 3717 | printf("n = larger than 19 or too small, set to 19 \n"); |
3718 | fNAssocPtBins = 19; | |
045396c8 | 3719 | } |
3720 | } | |
e09cf5ef | 3721 | |
05d0d05d | 3722 | //______________________________________________________________________________ |
3723 | void AliAnaParticleHadronCorrelation::SetAssocPtBinLimit(Int_t ibin, Float_t pt) | |
045396c8 | 3724 | { |
3725 | // Set the list of limits for the trigger pt bins | |
3726 | ||
05d0d05d | 3727 | if(ibin <= fNAssocPtBins || ibin >= 0) |
045396c8 | 3728 | { |
05d0d05d | 3729 | fAssocPtBinLimit[ibin] = pt ; |
045396c8 | 3730 | } |
2e876d85 | 3731 | else |
3732 | { | |
05d0d05d | 3733 | printf("AliAnaParticleHadronCorrelation::SetAssocPtBinLimit() - bin number too large %d > %d or small, nothing done\n", ibin, fNAssocPtBins) ; |
045396c8 | 3734 | } |
3735 | } | |
3736 |