]>
Commit | Line | Data |
---|---|---|
57189f04 | 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 | **************************************************************************/ | |
15 | ||
16 | ||
17 | //////////////////////////////////////////////////////////////////////// | |
18 | // // | |
19 | // Task for Heavy Flavour Electron-Hadron DeltaPhi Correlation // | |
20 | // Non-Photonic Electron identified with Invariant mass // | |
21 | // analysis methos in function SelectPhotonicElectron // | |
22 | // DeltaPhi calculated in function ElectronHadCorrel // | |
23 | // // | |
24 | // Author: Deepa Thomas (Utrecht University) // | |
25 | // // | |
26 | //////////////////////////////////////////////////////////////////////// | |
27 | ||
28 | #include "TChain.h" | |
29 | #include "TTree.h" | |
30 | #include "TH2F.h" | |
31 | #include "TMath.h" | |
32 | #include "TCanvas.h" | |
33 | #include "THnSparse.h" | |
34 | #include "TLorentzVector.h" | |
35 | #include "TString.h" | |
36 | #include "TFile.h" | |
37 | ||
38 | #include "AliAnalysisTask.h" | |
39 | #include "AliAnalysisManager.h" | |
40 | ||
41 | #include "AliESDEvent.h" | |
42 | #include "AliESDHandler.h" | |
43 | #include "AliAODEvent.h" | |
44 | #include "AliAODHandler.h" | |
45 | ||
46 | #include "AliAnalysisTaskElecHadronCorrel.h" | |
47 | #include "TGeoGlobalMagField.h" | |
48 | #include "AliLog.h" | |
49 | #include "AliAnalysisTaskSE.h" | |
50 | #include "TRefArray.h" | |
51 | #include "TVector.h" | |
987053ce | 52 | |
57189f04 | 53 | #include "AliESDInputHandler.h" |
987053ce | 54 | #include "AliAODInputHandler.h" |
57189f04 | 55 | #include "AliESDpid.h" |
987053ce | 56 | #include "AliAODPid.h" |
57189f04 | 57 | #include "AliESDtrackCuts.h" |
58 | #include "AliPhysicsSelection.h" | |
987053ce | 59 | #include "AliCentralitySelectionTask.h" |
57189f04 | 60 | #include "AliESDCaloCluster.h" |
61 | #include "AliAODCaloCluster.h" | |
520a29a8 | 62 | #include "AliESDCaloTrigger.h" |
57189f04 | 63 | #include "AliEMCALRecoUtils.h" |
64 | #include "AliEMCALGeometry.h" | |
65 | #include "AliGeomManager.h" | |
66 | #include "stdio.h" | |
67 | #include "TGeoManager.h" | |
68 | #include "iostream" | |
69 | #include "fstream" | |
3c56855b | 70 | |
71 | //#include "AliEventPoolManager.h" | |
72 | ||
520a29a8 | 73 | #include "AliCentrality.h" |
57189f04 | 74 | #include "AliMagF.h" |
75 | ||
76 | #include "AliKFParticle.h" | |
77 | #include "AliKFVertex.h" | |
78 | ||
79 | #include "AliPID.h" | |
80 | #include "AliPIDResponse.h" | |
81 | #include "AliHFEcontainer.h" | |
82 | #include "AliHFEcuts.h" | |
83 | #include "AliHFEpid.h" | |
84 | #include "AliHFEpidBase.h" | |
85 | #include "AliHFEpidQAmanager.h" | |
86 | #include "AliHFEtools.h" | |
87 | #include "AliCFContainer.h" | |
88 | #include "AliCFManager.h" | |
987053ce | 89 | #include "AliVEvent.h" |
90 | #include "AliStack.h" | |
91 | #include "AliMCEvent.h" | |
92 | #include "TProfile.h" | |
93 | #include "AliESDVZERO.h" | |
94 | #include "AliAODVZERO.h" | |
95 | #include "TVector3.h" | |
96 | #include "TRandom2.h" | |
57189f04 | 97 | |
98 | ClassImp(AliAnalysisTaskElecHadronCorrel) | |
3c56855b | 99 | //ClassImp(AliehDPhiBasicParticle) |
57189f04 | 100 | //________________________________________________________________________ |
520a29a8 | 101 | AliAnalysisTaskElecHadronCorrel::AliAnalysisTaskElecHadronCorrel(const char *name) |
57189f04 | 102 | : AliAnalysisTaskSE(name) |
987053ce | 103 | ,fVevent(0) |
57189f04 | 104 | ,fESD(0) |
987053ce | 105 | ,fAOD(0) |
57189f04 | 106 | ,fGeom(0) |
107 | ,fOutputList(0) | |
520a29a8 | 108 | ,fTrackCuts1(new AliESDtrackCuts) |
109 | ,fTrackCuts2(new AliESDtrackCuts) | |
57189f04 | 110 | ,fCuts(0) |
111 | ,fIdentifiedAsOutInz(kFALSE) | |
112 | ,fPassTheEventCut(kFALSE) | |
113 | ,fRejectKinkMother(kFALSE) | |
114 | ,fVz(0.0) | |
115 | ,fCFM(0) | |
116 | ,fPID(0) | |
117 | ,fPIDqa(0) | |
57189f04 | 118 | ,fInvmassCut(0.01) |
3c56855b | 119 | ,fCentrality(0) |
120 | ,fCentralityMin(0) | |
121 | ,fCentralityMax(0) | |
122 | ,fkCentralityMethod(0) | |
4e01b68c | 123 | // ,fPoolMgr(0x0) |
57189f04 | 124 | ,fNoEvents(0) |
3c56855b | 125 | // ,fTrkpt(0) |
57189f04 | 126 | ,fTrkEovPBef(0) |
520a29a8 | 127 | ,fTrkEovPBefHad(0) |
987053ce | 128 | // ,fdEdxBef(0) |
129 | ,fSemiIncElecDphi(0) | |
487ae960 | 130 | ,fSemiIncElecDphi1(0) |
131 | ,fSemiIncElecDphi2(0) | |
132 | ,fSemiIncElecDphi3(0) | |
133 | ,fSemiIncElecDphi4(0) | |
57189f04 | 134 | ,fPhotElecDphi(0) |
487ae960 | 135 | ,fPhotElecDphi1(0) |
136 | ,fPhotElecDphi2(0) | |
137 | ,fPhotElecDphi3(0) | |
138 | ,fPhotElecDphi4(0) | |
57189f04 | 139 | ,fInclusiveElecDphi(0) |
487ae960 | 140 | ,fInclusiveElecDphi1(0) |
141 | ,fInclusiveElecDphi2(0) | |
142 | ,fInclusiveElecDphi3(0) | |
143 | ,fInclusiveElecDphi4(0) | |
57189f04 | 144 | ,fDphiULSMassLow(0) |
487ae960 | 145 | ,fDphiULSMassLow1(0) |
146 | ,fDphiULSMassLow2(0) | |
147 | ,fDphiULSMassLow3(0) | |
148 | ,fDphiULSMassLow4(0) | |
57189f04 | 149 | ,fDphiLSMassLow(0) |
487ae960 | 150 | ,fDphiLSMassLow1(0) |
151 | ,fDphiLSMassLow2(0) | |
152 | ,fDphiLSMassLow3(0) | |
153 | ,fDphiLSMassLow4(0) | |
520a29a8 | 154 | ,fDphiULSMassLowNoPartner(0) |
487ae960 | 155 | ,fDphiULSMassLowNoPartner1(0) |
156 | ,fDphiULSMassLowNoPartner2(0) | |
157 | ,fDphiULSMassLowNoPartner3(0) | |
158 | ,fDphiULSMassLowNoPartner4(0) | |
520a29a8 | 159 | ,fDphiLSMassLowNoPartner(0) |
487ae960 | 160 | ,fDphiLSMassLowNoPartner1(0) |
161 | ,fDphiLSMassLowNoPartner2(0) | |
162 | ,fDphiLSMassLowNoPartner3(0) | |
163 | ,fDphiLSMassLowNoPartner4(0) | |
57189f04 | 164 | ,fPhotoElecPt(0) |
165 | ,fSemiInclElecPt(0) | |
520a29a8 | 166 | ,fInclusiveElecPt(0) |
167 | ,fULSElecPt(0) | |
168 | ,fLSElecPt(0) | |
987053ce | 169 | ,fTrackPtBefTrkCuts(0) |
170 | ,fTrackPtAftTrkCuts(0) | |
520a29a8 | 171 | ,fTPCnsigma(0) |
520a29a8 | 172 | ,fNCellv1(0) |
173 | ,fClsEv1(0) | |
174 | ,fNClusv1(0) | |
987053ce | 175 | ,fInvmassLS1(0) |
487ae960 | 176 | ,fInvmassLS2(0) |
177 | ,fInvmassLS3(0) | |
178 | ,fInvmassLS4(0) | |
179 | ,fInvmassLS5(0) | |
520a29a8 | 180 | ,fInvmassULS1(0) |
487ae960 | 181 | ,fInvmassULS2(0) |
182 | ,fInvmassULS3(0) | |
183 | ,fInvmassULS4(0) | |
184 | ,fInvmassULS5(0) | |
520a29a8 | 185 | ,fcentrality(0) |
186 | ,fElecPhi(0) | |
3c56855b | 187 | ,fElecPhiTPChalf(0) |
188 | ,fElecPhiPt(0) | |
189 | // ,fElecPhiTPC(0) | |
190 | // ,fElecPhiTPCEovP(0) | |
520a29a8 | 191 | ,fHadronPhi(0) |
3c56855b | 192 | ,fHadronPhiTPChalf(0) |
193 | ,fHadronPhiPt(0) | |
194 | /* ,fTrackHFEcuts(0) | |
4e01b68c | 195 | ,fTrakPhiSPD1(0) |
196 | ,fTrakPhiSPD2(0) | |
197 | ,fTrakPhiSPDOr(0) | |
198 | ,fTrakPhiSPDAnd(0) | |
199 | ,fTrackHFEcutsITS(0) | |
3c56855b | 200 | */ |
4e01b68c | 201 | /* ,fNoMixedEvents(0) |
202 | ,fMixStat(0) | |
203 | ,fMixStat1(0) | |
204 | ,fMixedIncElecDphi(0) | |
3c56855b | 205 | ,fMixedIncElecDphi1(0) |
206 | ,fMixedIncElecDphi2(0) | |
4e01b68c | 207 | ,fMixedPhotElecDphi(0) |
3c56855b | 208 | ,fMixedPhotElecDphi1(0) |
209 | ,fMixedPhotElecDphi2(0) | |
4e01b68c | 210 | ,fMixedSemiIncElecDphi(0) |
3c56855b | 211 | ,fMixedSemiIncElecDphi1(0) |
212 | ,fMixedSemiIncElecDphi2(0) | |
4e01b68c | 213 | ,fMixedDphiULSMassLow(0) |
3c56855b | 214 | ,fMixedDphiULSMassLow1(0) |
215 | ,fMixedDphiULSMassLow2(0) | |
4e01b68c | 216 | ,fMixedDphiLSMassLow(0) |
3c56855b | 217 | ,fMixedDphiLSMassLow1(0) |
218 | ,fMixedDphiLSMassLow2(0) | |
987053ce | 219 | */ |
3c56855b | 220 | ,fHadronPt(0) |
221 | ,fCentralityPass(0) | |
222 | ,fCentralityNoPass(0) | |
0841d73f | 223 | ,fHadronDphi(0) |
224 | ,fHadronDphi1(0) | |
225 | ,fHadronDphi2(0) | |
226 | ,fHadronDphi3(0) | |
227 | ,fHadronDphi4(0) | |
228 | ,fPiPt(0) | |
229 | // ,fSparseElectron(0) | |
230 | // ,fvalueElectron(0) | |
57189f04 | 231 | { |
232 | //Named constructor | |
520a29a8 | 233 | |
57189f04 | 234 | fPID = new AliHFEpid("hfePid"); |
520a29a8 | 235 | // fvalueElectron = new Double_t[8]; |
57189f04 | 236 | |
237 | // Define input and output slots here | |
238 | // Input slot #0 works with a TChain | |
239 | DefineInput(0, TChain::Class()); | |
240 | // Output slot #0 id reserved by the base class for AOD | |
241 | // Output slot #1 writes into a TH1 container | |
242 | // DefineOutput(1, TH1I::Class()); | |
243 | DefineOutput(1, TList::Class()); | |
244 | // DefineOutput(3, TTree::Class()); | |
245 | } | |
246 | ||
247 | //________________________________________________________________________ | |
248 | AliAnalysisTaskElecHadronCorrel::AliAnalysisTaskElecHadronCorrel() | |
249 | : AliAnalysisTaskSE("DefaultAnalysis_AliAnalysisElecHadCorrel") | |
987053ce | 250 | ,fVevent(0) |
57189f04 | 251 | ,fESD(0) |
987053ce | 252 | ,fAOD(0) |
57189f04 | 253 | ,fGeom(0) |
254 | ,fOutputList(0) | |
520a29a8 | 255 | ,fTrackCuts1(new AliESDtrackCuts) |
256 | ,fTrackCuts2(new AliESDtrackCuts) | |
57189f04 | 257 | ,fCuts(0) |
258 | ,fIdentifiedAsOutInz(kFALSE) | |
259 | ,fPassTheEventCut(kFALSE) | |
260 | ,fRejectKinkMother(kFALSE) | |
4e01b68c | 261 | ,fVz(0.0) |
262 | ,fCFM(0) | |
263 | ,fPID(0) | |
264 | ,fPIDqa(0) | |
57189f04 | 265 | ,fInvmassCut(0.01) |
3c56855b | 266 | ,fCentrality(0) |
267 | ,fCentralityMin(0) | |
268 | ,fCentralityMax(0) | |
269 | ,fkCentralityMethod(0) | |
4e01b68c | 270 | // ,fPoolMgr(0x0) |
57189f04 | 271 | ,fNoEvents(0) |
3c56855b | 272 | // ,fTrkpt(0) |
57189f04 | 273 | ,fTrkEovPBef(0) |
520a29a8 | 274 | ,fTrkEovPBefHad(0) |
987053ce | 275 | // ,fdEdxBef(0) |
276 | ,fSemiIncElecDphi(0) | |
487ae960 | 277 | ,fSemiIncElecDphi1(0) |
278 | ,fSemiIncElecDphi2(0) | |
279 | ,fSemiIncElecDphi3(0) | |
280 | ,fSemiIncElecDphi4(0) | |
57189f04 | 281 | ,fPhotElecDphi(0) |
487ae960 | 282 | ,fPhotElecDphi1(0) |
283 | ,fPhotElecDphi2(0) | |
284 | ,fPhotElecDphi3(0) | |
285 | ,fPhotElecDphi4(0) | |
57189f04 | 286 | ,fInclusiveElecDphi(0) |
487ae960 | 287 | ,fInclusiveElecDphi1(0) |
288 | ,fInclusiveElecDphi2(0) | |
289 | ,fInclusiveElecDphi3(0) | |
290 | ,fInclusiveElecDphi4(0) | |
57189f04 | 291 | ,fDphiULSMassLow(0) |
487ae960 | 292 | ,fDphiULSMassLow1(0) |
293 | ,fDphiULSMassLow2(0) | |
294 | ,fDphiULSMassLow3(0) | |
295 | ,fDphiULSMassLow4(0) | |
57189f04 | 296 | ,fDphiLSMassLow(0) |
487ae960 | 297 | ,fDphiLSMassLow1(0) |
298 | ,fDphiLSMassLow2(0) | |
299 | ,fDphiLSMassLow3(0) | |
300 | ,fDphiLSMassLow4(0) | |
520a29a8 | 301 | ,fDphiULSMassLowNoPartner(0) |
487ae960 | 302 | ,fDphiULSMassLowNoPartner1(0) |
303 | ,fDphiULSMassLowNoPartner2(0) | |
304 | ,fDphiULSMassLowNoPartner3(0) | |
305 | ,fDphiULSMassLowNoPartner4(0) | |
520a29a8 | 306 | ,fDphiLSMassLowNoPartner(0) |
487ae960 | 307 | ,fDphiLSMassLowNoPartner1(0) |
308 | ,fDphiLSMassLowNoPartner2(0) | |
309 | ,fDphiLSMassLowNoPartner3(0) | |
310 | ,fDphiLSMassLowNoPartner4(0) | |
57189f04 | 311 | ,fPhotoElecPt(0) |
312 | ,fSemiInclElecPt(0) | |
520a29a8 | 313 | ,fInclusiveElecPt(0) |
314 | ,fULSElecPt(0) | |
315 | ,fLSElecPt(0) | |
987053ce | 316 | ,fTrackPtBefTrkCuts(0) |
317 | ,fTrackPtAftTrkCuts(0) | |
520a29a8 | 318 | ,fTPCnsigma(0) |
520a29a8 | 319 | ,fNCellv1(0) |
320 | ,fClsEv1(0) | |
321 | ,fNClusv1(0) | |
987053ce | 322 | ,fInvmassLS1(0) |
487ae960 | 323 | ,fInvmassLS2(0) |
324 | ,fInvmassLS3(0) | |
325 | ,fInvmassLS4(0) | |
326 | ,fInvmassLS5(0) | |
520a29a8 | 327 | ,fInvmassULS1(0) |
487ae960 | 328 | ,fInvmassULS2(0) |
329 | ,fInvmassULS3(0) | |
330 | ,fInvmassULS4(0) | |
331 | ,fInvmassULS5(0) | |
520a29a8 | 332 | ,fcentrality(0) |
333 | ,fElecPhi(0) | |
3c56855b | 334 | ,fElecPhiTPChalf(0) |
335 | ,fElecPhiPt(0) | |
336 | // ,fElecPhiTPC(0) | |
337 | // ,fElecPhiTPCEovP(0) | |
520a29a8 | 338 | ,fHadronPhi(0) |
3c56855b | 339 | ,fHadronPhiTPChalf(0) |
340 | ,fHadronPhiPt(0) | |
341 | /* ,fTrackHFEcuts(0) | |
4e01b68c | 342 | ,fTrakPhiSPD1(0) |
343 | ,fTrakPhiSPD2(0) | |
344 | ,fTrakPhiSPDOr(0) | |
345 | ,fTrakPhiSPDAnd(0) | |
346 | ,fTrackHFEcutsITS(0) | |
3c56855b | 347 | */ |
4e01b68c | 348 | /* ,fNoMixedEvents(0) |
349 | ,fMixStat(0) | |
350 | ,fMixStat1(0) | |
351 | ,fMixedIncElecDphi(0) | |
3c56855b | 352 | ,fMixedIncElecDphi1(0) |
353 | ,fMixedIncElecDphi2(0) | |
4e01b68c | 354 | ,fMixedPhotElecDphi(0) |
3c56855b | 355 | ,fMixedPhotElecDphi1(0) |
356 | ,fMixedPhotElecDphi2(0) | |
4e01b68c | 357 | ,fMixedSemiIncElecDphi(0) |
3c56855b | 358 | ,fMixedSemiIncElecDphi1(0) |
359 | ,fMixedSemiIncElecDphi2(0) | |
4e01b68c | 360 | ,fMixedDphiULSMassLow(0) |
3c56855b | 361 | ,fMixedDphiULSMassLow1(0) |
362 | ,fMixedDphiULSMassLow2(0) | |
4e01b68c | 363 | ,fMixedDphiLSMassLow(0) |
3c56855b | 364 | ,fMixedDphiLSMassLow1(0) |
365 | ,fMixedDphiLSMassLow2(0) | |
366 | */ | |
3c56855b | 367 | ,fHadronPt(0) |
368 | ,fCentralityPass(0) | |
369 | ,fCentralityNoPass(0) | |
0841d73f | 370 | ,fHadronDphi(0) |
371 | ,fHadronDphi1(0) | |
372 | ,fHadronDphi2(0) | |
373 | ,fHadronDphi3(0) | |
374 | ,fHadronDphi4(0) | |
375 | ,fPiPt(0) | |
4e01b68c | 376 | // ,fSparseElectron(0) |
377 | // ,fvalueElectron(0) | |
57189f04 | 378 | { |
520a29a8 | 379 | //Default constructor |
380 | fPID = new AliHFEpid("hfePid"); | |
4e01b68c | 381 | // fvalueElectron = new Double_t[8]; |
57189f04 | 382 | |
520a29a8 | 383 | // Constructor |
4e01b68c | 384 | // Define input and output slots here |
385 | // Input slot #0 works with a TChain | |
386 | DefineInput(0, TChain::Class()); | |
387 | // Output slot #0 id reserved by the base class for AOD | |
388 | // Output slot #1 writes into a TH1 container | |
389 | // DefineOutput(1, TH1I::Class()); | |
390 | DefineOutput(1, TList::Class()); | |
391 | //DefineOutput(3, TTree::Class()); | |
57189f04 | 392 | } |
393 | //_________________________________________ | |
394 | ||
395 | AliAnalysisTaskElecHadronCorrel::~AliAnalysisTaskElecHadronCorrel() | |
396 | { | |
4e01b68c | 397 | //Destructor |
398 | ||
399 | delete fOutputList; | |
400 | delete fGeom; | |
401 | delete fPID; | |
402 | delete fCFM; | |
403 | delete fPIDqa; | |
404 | delete fTrackCuts1; | |
405 | delete fTrackCuts2; | |
406 | // delete fSparseElectron; | |
407 | // delete []fvalueElectron; | |
57189f04 | 408 | } |
409 | //_________________________________________ | |
410 | ||
411 | void AliAnalysisTaskElecHadronCorrel::UserExec(Option_t*) | |
412 | { | |
4e01b68c | 413 | //Main loop |
414 | //Called for each event | |
415 | ||
416 | // create pointer to event | |
987053ce | 417 | fAOD = dynamic_cast<AliAODEvent*>(InputEvent()); |
4e01b68c | 418 | fESD = dynamic_cast<AliESDEvent*>(InputEvent()); |
987053ce | 419 | |
420 | if(!(fESD || fAOD)){ | |
421 | printf("ERROR: fESD & fAOD not available\n"); | |
422 | return; | |
423 | } | |
424 | fVevent = dynamic_cast<AliVEvent*>(InputEvent()); | |
425 | if (!fVevent) { | |
426 | printf("ERROR: fVEvent not available\n"); | |
4e01b68c | 427 | return; |
428 | } | |
520a29a8 | 429 | |
4e01b68c | 430 | if(!fCuts){ |
431 | AliError("HFE cuts not available"); | |
432 | return; | |
433 | } | |
434 | ||
435 | if(!fPID->IsInitialized()){ | |
436 | // Initialize PID with the given run number | |
437 | AliWarning("PID not initialised, get from Run no"); | |
987053ce | 438 | |
439 | if(IsAODanalysis())fPID->InitializePID(fAOD->GetRunNumber()); | |
440 | else fPID->InitializePID(fESD->GetRunNumber()); | |
4e01b68c | 441 | } |
442 | ||
987053ce | 443 | // trigger selection |
4e01b68c | 444 | if(!(((AliInputEventHandler*)(AliAnalysisManager::GetAnalysisManager()->GetInputEventHandler()))->IsEventSelected() & (AliVEvent::kCentral))) return; |
520a29a8 | 445 | |
987053ce | 446 | // centrality selection |
0841d73f | 447 | SetCentralityParameters(0., 7., "V0M"); |
987053ce | 448 | Bool_t pass = kFALSE; |
449 | CheckCentrality(fVevent,pass); | |
e4b0faf2 | 450 | if(!pass)return; |
451 | ||
987053ce | 452 | Int_t fNOtrks = fVevent->GetNumberOfTracks(); |
453 | const AliVVertex *pVtx = fVevent->GetPrimaryVertex(); | |
520a29a8 | 454 | |
4e01b68c | 455 | Double_t pVtxZ = -999; |
456 | pVtxZ = pVtx->GetZ(); | |
520a29a8 | 457 | |
4e01b68c | 458 | if(TMath::Abs(pVtxZ)>10) return; |
459 | fNoEvents->Fill(0); | |
460 | ||
461 | if(fNOtrks<2) return; | |
462 | ||
463 | AliPIDResponse *pidResponse = fInputHandler->GetPIDResponse(); | |
464 | if(!pidResponse){ | |
465 | AliDebug(1, "Using default PID Response"); | |
520a29a8 | 466 | pidResponse = AliHFEtools::GetDefaultPID(kFALSE, fInputEvent->IsA() == AliAODEvent::Class()); |
467 | } | |
468 | ||
469 | fPID->SetPIDResponse(pidResponse); | |
470 | ||
987053ce | 471 | fCFM->SetRecEventInfo(fVevent); |
472 | ||
473 | /* | |
4e01b68c | 474 | //Event mixing |
475 | AliEventPool* pool = fPoolMgr->GetEventPool(centvalue, pVtxZ); // Get the buffer associated with the current centrality and z-vtx | |
476 | if (!pool) | |
987053ce | 477 | AliFatal(Form("No pool found for centrality = %f, zVtx = %f", centvalue, pVtxZ)); |
478 | */ | |
479 | ||
480 | // Look for kink mother for AOD | |
481 | Double_t *listofmotherkink =0; | |
482 | Int_t numberofvertices = 0, numberofmotherkink = 0; | |
483 | if(IsAODanalysis()){ | |
484 | numberofvertices = fAOD->GetNumberOfVertices(); | |
485 | listofmotherkink = new Double_t[numberofvertices]; | |
486 | for(Int_t ivertex=0; ivertex < numberofvertices; ivertex++) { | |
487 | AliAODVertex *aodvertex = fAOD->GetVertex(ivertex); | |
488 | if(!aodvertex) continue; | |
489 | if(aodvertex->GetType()==AliAODVertex::kKink) { | |
490 | AliAODTrack *mother = (AliAODTrack *) aodvertex->GetParent(); | |
491 | if(!mother) continue; | |
492 | Int_t idmother = mother->GetID(); | |
493 | listofmotherkink[numberofmotherkink] = idmother; | |
494 | numberofmotherkink++; | |
495 | } | |
496 | } | |
497 | } | |
4e01b68c | 498 | |
520a29a8 | 499 | // Track loop |
987053ce | 500 | for (Int_t iTracks = 0; iTracks < fVevent->GetNumberOfTracks(); iTracks++) { |
501 | AliVParticle* Vtrack = fVevent->GetTrack(iTracks); | |
502 | if (!Vtrack) { | |
520a29a8 | 503 | printf("ERROR: Could not receive track %d\n", iTracks); |
504 | continue; | |
505 | } | |
987053ce | 506 | AliVTrack *track = dynamic_cast<AliVTrack*>(Vtrack); |
507 | AliESDtrack *etrack = dynamic_cast<AliESDtrack*>(Vtrack); | |
508 | AliAODTrack *atrack = dynamic_cast<AliAODTrack*>(Vtrack); | |
509 | ||
510 | if(IsAODanalysis()) | |
511 | if(!atrack->TestFilterMask(AliAODTrack::kTrkGlobalNoDCA)) continue; | |
4e01b68c | 512 | |
513 | if(track->Pt()<1) continue; | |
520a29a8 | 514 | |
987053ce | 515 | fTrackPtBefTrkCuts->Fill(track->Pt()); |
4e01b68c | 516 | |
520a29a8 | 517 | // RecKine: ITSTPC cuts |
518 | if(!ProcessCutStep(AliHFEcuts::kStepRecKineITSTPC, track)) continue; | |
519 | ||
987053ce | 520 | // Reject kink mother |
520a29a8 | 521 | if(fRejectKinkMother) { // Quick and dirty fix to reject both kink mothers and daughters |
987053ce | 522 | if(IsAODanalysis()){ |
523 | Bool_t kinkmotherpass = kTRUE; | |
524 | for(Int_t kinkmother = 0; kinkmother < numberofmotherkink; kinkmother++) { | |
525 | if(track->GetID() == listofmotherkink[kinkmother]) { | |
526 | kinkmotherpass = kFALSE; | |
527 | continue; | |
528 | } | |
529 | } | |
530 | if(!kinkmotherpass) continue; | |
531 | } | |
532 | else{ | |
533 | if(etrack->GetKinkIndex(0) != 0) continue; | |
534 | } | |
535 | } | |
520a29a8 | 536 | // RecPrim |
987053ce | 537 | // if(!ProcessCutStep(AliHFEcuts::kStepRecPrim, track)) continue; //gives warning for AOD, so not using |
520a29a8 | 538 | |
4e01b68c | 539 | // HFE cuts: TPC PID cleanup |
540 | if(!ProcessCutStep(AliHFEcuts::kStepHFEcutsTPC, track)) continue; | |
541 | ||
987053ce | 542 | // fTrackHFEcuts->Fill(track->Phi()); |
4e01b68c | 543 | |
520a29a8 | 544 | // HFEcuts: ITS layers cuts |
545 | if(!ProcessCutStep(AliHFEcuts::kStepHFEcutsITS, track)) continue; | |
546 | ||
987053ce | 547 | // fTrackHFEcutsITS->Fill(track->Phi()); |
548 | fTrackPtAftTrkCuts->Fill(track->Pt()); | |
4e01b68c | 549 | |
520a29a8 | 550 | Double_t fClsE = -999, p = -999, fEovP=-999, pt = -999, dEdx=-999, fTPCnSigma=0; |
4e01b68c | 551 | pt = track->Pt(); |
552 | p = track->P(); | |
553 | dEdx = track->GetTPCsignal(); | |
554 | fTPCnSigma = fPID->GetPIDResponse() ? fPID->GetPIDResponse()->NumberOfSigmasTPC(track, AliPID::kElectron) : 1000; | |
555 | ||
556 | //TPC electron phi | |
987053ce | 557 | // if(fTPCnSigma >= -2 && fTPCnSigma <= 2){ |
558 | // fElecPhiTPC->Fill(track->Phi()); | |
559 | // } | |
4e01b68c | 560 | |
561 | //eta cut (-0.7,0.7) | |
562 | if(track->Eta() < -0.7 || track->Eta() > 0.7) continue; | |
563 | ||
564 | // Track extrapolation to EMCAL | |
520a29a8 | 565 | Int_t fClsId = track->GetEMCALcluster(); |
566 | if(fClsId <0) continue; | |
987053ce | 567 | AliVCluster *cluster = fVevent->GetCaloCluster(fClsId); |
568 | if(!cluster->IsEMCAL()) continue; | |
520a29a8 | 569 | if(TMath::Abs(cluster->GetTrackDx())>0.05 || TMath::Abs(cluster->GetTrackDz())>0.05) continue; |
987053ce | 570 | // fdEdxBef->Fill(p,dEdx); |
4e01b68c | 571 | fTPCnsigma->Fill(p,fTPCnSigma); |
520a29a8 | 572 | |
987053ce | 573 | // fTrkpt->Fill(pt); |
520a29a8 | 574 | fClsE = cluster->E(); |
520a29a8 | 575 | fEovP = fClsE/p; |
4e01b68c | 576 | /* |
577 | fvalueElectron[0] = pt; | |
578 | fvalueElectron[1] = p; | |
579 | fvalueElectron[2] = fTPCnSigma; | |
580 | fvalueElectron[3] = dEdx; | |
581 | fvalueElectron[4] = fEovP; | |
582 | fvalueElectron[5] = cluster->GetM20(); | |
583 | fvalueElectron[6] = cluster->GetM02(); | |
584 | fvalueElectron[7] = cluster->GetDispersion(); | |
585 | ||
586 | fSparseElectron->Fill(fvalueElectron); | |
587 | */ | |
0841d73f | 588 | if(fTPCnSigma >= -2 && fTPCnSigma <= 2 && cluster->GetM20()>0.03 && cluster->GetM20()<0.3 && cluster->GetM02()>0.03 && cluster->GetM02()<0.5 && cluster->GetDispersion()<1) |
4e01b68c | 589 | fTrkEovPBef->Fill(pt,fEovP); |
4e01b68c | 590 | |
0841d73f | 591 | //hadron E/p and Dphi distribution |
592 | if(fTPCnSigma < -3.5){ | |
593 | fTrkEovPBefHad->Fill(pt,fEovP); | |
594 | ElectronHadCorrel(iTracks, track, fHadronDphi, fHadronDphi1,fHadronDphi2,fHadronDphi3,fHadronDphi4); | |
595 | fPiPt->Fill(pt); | |
596 | } | |
4e01b68c | 597 | //Electron id with TPC and E/p |
598 | if(fTPCnSigma >= -2 && fTPCnSigma <= 2 && fEovP >= 0.8 && fEovP <=1.2) { | |
987053ce | 599 | // fElecPhiTPCEovP->Fill(track->Phi()); |
4e01b68c | 600 | |
601 | //Electron id with shower shape | |
0841d73f | 602 | if(cluster->GetM20()>0.03 && cluster->GetM20()<0.3 && cluster->GetM02()>0.03 && cluster->GetM02()< 0.5 && cluster->GetDispersion()<1){ |
987053ce | 603 | |
3db00c72 | 604 | fElecPhi->Fill(track->Phi()); |
3c56855b | 605 | fElecPhiPt->Fill(track->Phi(),track->Pt()); |
606 | if (track->Eta() >0 && track->Eta() <0.7) fElecPhiTPChalf->Fill(track->Phi()); | |
987053ce | 607 | |
3c56855b | 608 | HadronInfo(iTracks); |
3db00c72 | 609 | |
610 | Bool_t fFlagPhotonicElec = kFALSE; | |
611 | // select photonic electron | |
612 | SelectPhotonicElectron(iTracks,track,fFlagPhotonicElec); | |
987053ce | 613 | |
3db00c72 | 614 | //Inclusive electron-hadron correlation |
487ae960 | 615 | ElectronHadCorrel(iTracks, track, fInclusiveElecDphi, fInclusiveElecDphi1,fInclusiveElecDphi2,fInclusiveElecDphi3,fInclusiveElecDphi4); |
3db00c72 | 616 | fInclusiveElecPt->Fill(pt); |
987053ce | 617 | // MixedEvent(track,fMixedIncElecDphi, fMixedIncElecDphi1,fMixedIncElecDphi2); |
618 | ||
3db00c72 | 619 | // photonic electron |
620 | if(fFlagPhotonicElec){ | |
987053ce | 621 | //Electron hadron correlation |
622 | ElectronHadCorrel(iTracks, track, fPhotElecDphi,fPhotElecDphi1,fPhotElecDphi2,fPhotElecDphi3,fPhotElecDphi4); | |
623 | fPhotoElecPt->Fill(pt); | |
624 | // MixedEvent(track,fMixedPhotElecDphi, fMixedPhotElecDphi1,fMixedPhotElecDphi2); | |
3db00c72 | 625 | } |
626 | ||
627 | // Semi inclusive electron | |
628 | if(!fFlagPhotonicElec){ | |
629 | //Electron hadron correlation | |
487ae960 | 630 | ElectronHadCorrel(iTracks, track, fSemiIncElecDphi, fSemiIncElecDphi1,fSemiIncElecDphi2,fSemiIncElecDphi3,fSemiIncElecDphi4); |
3db00c72 | 631 | fSemiInclElecPt->Fill(pt); |
987053ce | 632 | // MixedEvent(track,fMixedSemiIncElecDphi,fMixedSemiIncElecDphi1,fMixedSemiIncElecDphi2); |
3db00c72 | 633 | } |
4e01b68c | 634 | |
520a29a8 | 635 | } |
636 | } | |
637 | } | |
987053ce | 638 | |
520a29a8 | 639 | //EMC clusters |
987053ce | 640 | Int_t clsNo = fVevent->GetNumberOfCaloClusters(); |
520a29a8 | 641 | fNClusv1->Fill(clsNo); |
642 | for(Int_t iclus=0; iclus<clsNo ; iclus++){ | |
987053ce | 643 | AliVCluster* clus = fVevent->GetCaloCluster(iclus); |
520a29a8 | 644 | if(!clus->IsEMCAL()) continue; |
645 | fNCellv1->Fill(clus->GetNCells()); | |
646 | fClsEv1->Fill(clus->E()); | |
647 | } | |
987053ce | 648 | |
3c56855b | 649 | /* |
650 | TObjArray* tracksClone = CloneAndReduceTrackList(); | |
651 | tracksClone->SetOwner(); | |
652 | pool->UpdatePool(tracksClone); | |
987053ce | 653 | */ |
654 | delete listofmotherkink; | |
520a29a8 | 655 | PostData(1, fOutputList); |
57189f04 | 656 | } |
657 | //_________________________________________ | |
658 | void AliAnalysisTaskElecHadronCorrel::UserCreateOutputObjects() | |
659 | { | |
660 | //Create histograms | |
987053ce | 661 | |
662 | AliDebug(3, "Creating Output Objects"); | |
663 | // Automatic determination of the analysis mode | |
664 | AliVEventHandler *inputHandler = dynamic_cast<AliVEventHandler *>(AliAnalysisManager::GetAnalysisManager()->GetInputEventHandler()); | |
665 | if(!TString(inputHandler->IsA()->GetName()).CompareTo("AliAODInputHandler")){ | |
666 | SetAODAnalysis(); | |
667 | } else { | |
668 | SetESDAnalysis(); | |
669 | } | |
670 | printf("Analysis Mode: %s Analysis\n", IsAODanalysis() ? "AOD" : "ESD"); | |
520a29a8 | 671 | |
57189f04 | 672 | //--------Initialize PID |
673 | fPID->SetHasMCData(kFALSE); | |
674 | if(!fPID->GetNumberOfPIDdetectors()) | |
520a29a8 | 675 | { |
676 | fPID->AddDetector("TPC", 0); | |
677 | fPID->AddDetector("EMCAL", 1); | |
678 | } | |
679 | ||
57189f04 | 680 | fPID->SortDetectors(); |
681 | fPIDqa = new AliHFEpidQAmanager(); | |
682 | fPIDqa->Initialize(fPID); | |
520a29a8 | 683 | |
57189f04 | 684 | //--------Initialize correction Framework and Cuts |
685 | fCFM = new AliCFManager; | |
686 | const Int_t kNcutSteps = AliHFEcuts::kNcutStepsMCTrack + AliHFEcuts::kNcutStepsRecTrack + AliHFEcuts::kNcutStepsDETrack; | |
687 | fCFM->SetNStepParticle(kNcutSteps); | |
688 | for(Int_t istep = 0; istep < kNcutSteps; istep++) | |
689 | fCFM->SetParticleCutsList(istep, NULL); | |
520a29a8 | 690 | |
57189f04 | 691 | if(!fCuts){ |
692 | AliWarning("Cuts not available. Default cuts will be used"); | |
693 | fCuts = new AliHFEcuts; | |
694 | fCuts->CreateStandardCuts(); | |
695 | } | |
987053ce | 696 | |
697 | if(IsAODanalysis()) fCuts->SetAOD(); | |
57189f04 | 698 | fCuts->Initialize(fCFM); |
987053ce | 699 | /* |
4e01b68c | 700 | //Mixed event initialising |
701 | Int_t trackDepth = 2000; | |
702 | Int_t poolsize = 1000; | |
703 | ||
704 | Int_t nCentralityBins = 5; | |
705 | Double_t CentralityBins[] = {0,2,4,6,8,10}; | |
520a29a8 | 706 | |
487ae960 | 707 | Int_t nZvtxBins = 4; |
708 | Double_t vertexBins[] = {-10,-5,0,5,10}; | |
4e01b68c | 709 | |
710 | fPoolMgr = new AliEventPoolManager(poolsize, trackDepth, nCentralityBins, (Double_t*) CentralityBins, nZvtxBins, (Double_t*) vertexBins); | |
711 | */ | |
57189f04 | 712 | //---------Output Tlist |
713 | fOutputList = new TList(); | |
714 | fOutputList->SetOwner(); | |
715 | fOutputList->Add(fPIDqa->MakeList("PIDQA")); | |
520a29a8 | 716 | |
57189f04 | 717 | fNoEvents = new TH1F("fNoEvents","",1,0,1) ; |
718 | fOutputList->Add(fNoEvents); | |
520a29a8 | 719 | |
720 | fcentrality = new TH1F("fcentrality","centrality", 100,0,100); | |
721 | fOutputList->Add(fcentrality); | |
987053ce | 722 | |
723 | // fTrkpt = new TH1F("fTrkpt","track pt",1000,0,50); | |
724 | // fOutputList->Add(fTrkpt); | |
520a29a8 | 725 | |
57189f04 | 726 | fTrackPtBefTrkCuts = new TH1F("fTrackPtBefTrkCuts","track pt before track cuts",1000,0,50); |
727 | fOutputList->Add(fTrackPtBefTrkCuts); | |
520a29a8 | 728 | |
57189f04 | 729 | fTrackPtAftTrkCuts = new TH1F("fTrackPtAftTrkCuts","track pt after track cuts",1000,0,50); |
730 | fOutputList->Add(fTrackPtAftTrkCuts); | |
987053ce | 731 | |
57189f04 | 732 | fTPCnsigma = new TH2F("fTPCnsigma", "TPC - n sigma",1000,0,50,200,-10,10); |
733 | fOutputList->Add(fTPCnsigma); | |
987053ce | 734 | |
57189f04 | 735 | fTrkEovPBef = new TH2F("fTrkEovPBef","track E/p before HFE pid",1000,0,50,100,0,2); |
736 | fOutputList->Add(fTrkEovPBef); | |
520a29a8 | 737 | |
738 | fTrkEovPBefHad = new TH2F("fTrkEovPBefHad","track E/p for TPCnsig < 3.5",1000,0,50,100,0,2); | |
739 | fOutputList->Add(fTrkEovPBefHad); | |
520a29a8 | 740 | |
987053ce | 741 | // fdEdxBef = new TH2F("fdEdxBef","track dEdx vs p before HFE pid",1000,0,50,150,0,150); |
742 | // fOutputList->Add(fdEdxBef); | |
520a29a8 | 743 | |
520a29a8 | 744 | fElecPhi = new TH1F("fElecPhi", "Electron phi",1000,0,6.28); |
745 | fOutputList->Add(fElecPhi); | |
746 | ||
3c56855b | 747 | fElecPhiPt = new TH2F("fElecPhiPt", "Electron phi vs pt; Electron phi; pt (GeV/c)",1000,0,6.28,1000,0,100); |
748 | fOutputList->Add(fElecPhiPt); | |
749 | ||
750 | fElecPhiTPChalf = new TH1F("fElecPhiTPChalf", "Electron phi for 0<eta<0.7",1000,0,6.28); | |
751 | fOutputList->Add(fElecPhiTPChalf); | |
752 | ||
753 | /* fElecPhiTPC = new TH1F("fElecPhiTPC", "Electron phi after TPC cut",1000,0,6.28); | |
4e01b68c | 754 | fOutputList->Add(fElecPhiTPC); |
755 | ||
756 | fElecPhiTPCEovP = new TH1F("fElecPhiTPCEovP", "Electron phi after TPC and E/p cut",1000,0,6.28); | |
757 | fOutputList->Add(fElecPhiTPCEovP); | |
3c56855b | 758 | */ |
520a29a8 | 759 | fHadronPhi = new TH1F("fHadronPhi", "Hadron phi",1000,0,6.28); |
760 | fOutputList->Add(fHadronPhi); | |
761 | ||
3c56855b | 762 | fHadronPhiTPChalf = new TH1F("fHadronPhiTPChalf", "Hadron phi for 0<eta<0.9",1000,0,6.28); |
763 | fOutputList->Add(fHadronPhiTPChalf); | |
764 | ||
765 | fHadronPhiPt = new TH2F("fHadronPhiPt", "Hadron phi vs pt; hadron phi; pt (GeV/c)",1000,0,6.28,1000,0,100); | |
766 | fOutputList->Add(fHadronPhiPt); | |
767 | ||
768 | /* | |
4e01b68c | 769 | fTrackHFEcuts = new TH1F("fTrackHFEcuts","Track phi for HFE cuts",1000,0,6.28); |
770 | fOutputList->Add(fTrackHFEcuts); | |
771 | ||
772 | fTrakPhiSPD1 = new TH1F("fTrakPhiSPD1","Track phi for hit in SPD layer 1",1000,0,6.28); | |
773 | fOutputList->Add(fTrakPhiSPD1); | |
774 | ||
775 | fTrakPhiSPD2 = new TH1F("fTrakPhiSPD2","Track phi for hit in SPD layer 2",1000,0,6.28); | |
776 | fOutputList->Add(fTrakPhiSPD2); | |
777 | ||
778 | fTrakPhiSPDOr = new TH1F("fTrakPhiSPDOr","Track phi for hit in any SPD layer",1000,0,6.28); | |
779 | fOutputList->Add(fTrakPhiSPDOr); | |
780 | ||
781 | fTrakPhiSPDAnd = new TH1F("fTrakPhiSPDAnd","Track phi for hit in both SPD layer",1000,0,6.28); | |
782 | fOutputList->Add(fTrakPhiSPDAnd); | |
783 | ||
784 | fTrackHFEcutsITS = new TH1F("fTrackHFEcutsITS","Track phi for HFE cuts + ITS HFE cuts",1000,0,6.28); | |
785 | fOutputList->Add(fTrackHFEcutsITS); | |
3c56855b | 786 | */ |
0523ddd5 | 787 | fSemiIncElecDphi = new TH2F("fSemiIncElecDphi", "Semi Inclusive elec-had Dphi correlation",200,0,20,64,-1.57,4.71); |
57189f04 | 788 | fOutputList->Add(fSemiIncElecDphi); |
520a29a8 | 789 | |
0523ddd5 | 790 | fSemiIncElecDphi1 = new TH2F("fSemiIncElecDphi1", "Semi Inclusive elec-had Dphi correlation for 1<pt^{asso}<3",200,0,20,64,-1.57,4.71); |
487ae960 | 791 | fOutputList->Add(fSemiIncElecDphi1); |
792 | ||
0523ddd5 | 793 | fSemiIncElecDphi2 = new TH2F("fSemiIncElecDphi2", "Semi Inclusive elec-had Dphi correlation for 3<pt^{asso}<5",200,0,20,64,-1.57,4.71); |
487ae960 | 794 | fOutputList->Add(fSemiIncElecDphi2); |
795 | ||
0523ddd5 | 796 | fSemiIncElecDphi3 = new TH2F("fSemiIncElecDphi3", "Semi Inclusive elec-had Dphi correlation for 5<pt^{asso}<7",200,0,20,64,-1.57,4.71); |
487ae960 | 797 | fOutputList->Add(fSemiIncElecDphi3); |
798 | ||
0523ddd5 | 799 | fSemiIncElecDphi4 = new TH2F("fSemiIncElecDphi4", "Semi Inclusive elec-had Dphi correlation for 7<pt^{asso}<9",200,0,20,64,-1.57,4.71); |
487ae960 | 800 | fOutputList->Add(fSemiIncElecDphi4); |
801 | ||
0523ddd5 | 802 | fPhotElecDphi = new TH2F("fPhotElecDphi", "Photon elec-had Dphi correlation",200,0,20,64,-1.57,4.71); |
57189f04 | 803 | fOutputList->Add(fPhotElecDphi); |
520a29a8 | 804 | |
0523ddd5 | 805 | fPhotElecDphi1 = new TH2F("fPhotElecDphi1", "Photon elec-had Dphi correlation for 1<pt^{asso}<3",200,0,20,64,-1.57,4.71); |
487ae960 | 806 | fOutputList->Add(fPhotElecDphi1); |
807 | ||
0523ddd5 | 808 | fPhotElecDphi2 = new TH2F("fPhotElecDphi2", "Photon elec-had Dphi correlation for 3<pt^{asso}<5",200,0,20,64,-1.57,4.71); |
487ae960 | 809 | fOutputList->Add(fPhotElecDphi2); |
810 | ||
0523ddd5 | 811 | fPhotElecDphi3 = new TH2F("fPhotElecDphi3", "Photon elec-had Dphi correlation for 5<pt^{asso}<7",200,0,20,64,-1.57,4.71); |
487ae960 | 812 | fOutputList->Add(fPhotElecDphi3); |
813 | ||
0523ddd5 | 814 | fPhotElecDphi4 = new TH2F("fPhotElecDphi4", "Photon elec-had Dphi correlation for 7<pt^{asso}<9",200,0,20,64,-1.57,4.71); |
487ae960 | 815 | fOutputList->Add(fPhotElecDphi4); |
816 | ||
0523ddd5 | 817 | fInclusiveElecDphi = new TH2F("fInclusiveElecDphi", "Inclusive elec-had Dphi correlation",200,0,20,64,-1.57,4.71); |
57189f04 | 818 | fOutputList->Add(fInclusiveElecDphi); |
520a29a8 | 819 | |
0523ddd5 | 820 | fInclusiveElecDphi1 = new TH2F("fInclusiveElecDphi1", "Inclusive elec-had Dphi correlation for 1<pt^{asso}<3",200,0,20,64,-1.57,4.71); |
487ae960 | 821 | fOutputList->Add(fInclusiveElecDphi1); |
822 | ||
0523ddd5 | 823 | fInclusiveElecDphi2 = new TH2F("fInclusiveElecDphi2", "Inclusive elec-had Dphi correlation for 3<pt^{asso}<5",200,0,20,64,-1.57,4.71); |
487ae960 | 824 | fOutputList->Add(fInclusiveElecDphi2); |
825 | ||
0523ddd5 | 826 | fInclusiveElecDphi3 = new TH2F("fInclusiveElecDphi3", "Inclusive elec-had Dphi correlation for 5<pt^{asso}<7",200,0,20,64,-1.57,4.71); |
487ae960 | 827 | fOutputList->Add(fInclusiveElecDphi3); |
828 | ||
0523ddd5 | 829 | fInclusiveElecDphi4 = new TH2F("fInclusiveElecDphi4", "Inclusive elec-had Dphi correlation for 7<pt^{asso}<9",200,0,20,64,-1.57,4.71); |
487ae960 | 830 | fOutputList->Add(fInclusiveElecDphi4); |
831 | ||
0523ddd5 | 832 | fDphiULSMassLow = new TH2F("fDphiULSMassLow", "e-h Dphi ULS, mass<cut",200,0,20,64,-1.57,4.71); |
57189f04 | 833 | fOutputList->Add(fDphiULSMassLow); |
520a29a8 | 834 | |
0523ddd5 | 835 | fDphiULSMassLow1 = new TH2F("fDphiULSMassLow1", "e-h Dphi ULS, mass<cut for 1<pt^{asso}<3",200,0,20,64,-1.57,4.71); |
487ae960 | 836 | fOutputList->Add(fDphiULSMassLow1); |
837 | ||
0523ddd5 | 838 | fDphiULSMassLow2 = new TH2F("fDphiULSMassLow2", "e-h Dphi ULS, mass<cut for 3<pt^{asso}<5",200,0,20,64,-1.57,4.71); |
487ae960 | 839 | fOutputList->Add(fDphiULSMassLow2); |
840 | ||
0523ddd5 | 841 | fDphiULSMassLow3 = new TH2F("fDphiULSMassLow3", "e-h Dphi ULS, mass<cut for 5<pt^{asso}<7",200,0,20,64,-1.57,4.71); |
487ae960 | 842 | fOutputList->Add(fDphiULSMassLow3); |
843 | ||
0523ddd5 | 844 | fDphiULSMassLow4 = new TH2F("fDphiULSMassLow4", "e-h Dphi ULS, mass<cut for 7<pt^{asso}<9",200,0,20,64,-1.57,4.71); |
487ae960 | 845 | fOutputList->Add(fDphiULSMassLow4); |
846 | ||
0523ddd5 | 847 | fDphiLSMassLow = new TH2F("fDphiLSMassLow", "e-h Dphi LS, mass<cut",200,0,20,64,-1.57,4.71); |
57189f04 | 848 | fOutputList->Add(fDphiLSMassLow); |
520a29a8 | 849 | |
0523ddd5 | 850 | fDphiLSMassLow1 = new TH2F("fDphiLSMassLow1", "e-h Dphi LS, mass<cut for 1<pt^{asso}<3",200,0,20,64,-1.57,4.71); |
487ae960 | 851 | fOutputList->Add(fDphiLSMassLow1); |
852 | ||
0523ddd5 | 853 | fDphiLSMassLow2 = new TH2F("fDphiLSMassLow2", "e-h Dphi LS, mass<cut for 3<pt^{asso}<5",200,0,20,64,-1.57,4.71); |
487ae960 | 854 | fOutputList->Add(fDphiLSMassLow2); |
855 | ||
0523ddd5 | 856 | fDphiLSMassLow3 = new TH2F("fDphiLSMassLow3", "e-h Dphi LS, mass<cut for 5<pt^{asso}<7",200,0,20,64,-1.57,4.71); |
487ae960 | 857 | fOutputList->Add(fDphiLSMassLow3); |
858 | ||
0523ddd5 | 859 | fDphiLSMassLow4 = new TH2F("fDphiLSMassLow4", "e-h Dphi LS, mass<cut for 7<pt^{asso}<9",200,0,20,64,-1.57,4.71); |
487ae960 | 860 | fOutputList->Add(fDphiLSMassLow4); |
861 | ||
0523ddd5 | 862 | fDphiULSMassLowNoPartner = new TH2F("fDphiULSMassLowNoPartner", "e-h Dphi ULS with no partner, mass<mass cut,",200,0,20,64,-1.57,4.71); |
520a29a8 | 863 | fOutputList->Add(fDphiULSMassLowNoPartner); |
864 | ||
0523ddd5 | 865 | fDphiULSMassLowNoPartner1 = new TH2F("fDphiULSMassLowNoPartner1", "e-h Dphi ULS with no partner, mass<mass cut for 1<pt^{asso}<3,",200,0,20,64,-1.57,4.71); |
487ae960 | 866 | fOutputList->Add(fDphiULSMassLowNoPartner1); |
867 | ||
0523ddd5 | 868 | fDphiULSMassLowNoPartner2 = new TH2F("fDphiULSMassLowNoPartner2", "e-h Dphi ULS with no partner, mass<mass cut for 3<pt^{asso}<5,",200,0,20,64,-1.57,4.71); |
487ae960 | 869 | fOutputList->Add(fDphiULSMassLowNoPartner2); |
870 | ||
0523ddd5 | 871 | fDphiULSMassLowNoPartner3 = new TH2F("fDphiULSMassLowNoPartner3", "e-h Dphi ULS with no partner, mass<mass cut for 5<pt^{asso}<7,",200,0,20,64,-1.57,4.71); |
487ae960 | 872 | fOutputList->Add(fDphiULSMassLowNoPartner3); |
873 | ||
0523ddd5 | 874 | fDphiULSMassLowNoPartner4 = new TH2F("fDphiULSMassLowNoPartner4", "e-h Dphi ULS with no partner, mass<mass cut for 7<pt^{asso}<9,",200,0,20,64,-1.57,4.71); |
487ae960 | 875 | fOutputList->Add(fDphiULSMassLowNoPartner4); |
876 | ||
0523ddd5 | 877 | fDphiLSMassLowNoPartner = new TH2F("fDphiLSMassLowNoPartner", "e-h Dphi LS with no partner, mass<mass cut",200,0,20,64,-1.57,4.71); |
520a29a8 | 878 | fOutputList->Add(fDphiLSMassLowNoPartner); |
879 | ||
0523ddd5 | 880 | fDphiLSMassLowNoPartner1 = new TH2F("fDphiLSMassLowNoPartner1", "e-h Dphi LS with no partner, mass<mass cut for 1<pt^{asso}<3,",200,0,20,64,-1.57,4.71); |
487ae960 | 881 | fOutputList->Add(fDphiLSMassLowNoPartner1); |
882 | ||
0523ddd5 | 883 | fDphiLSMassLowNoPartner2 = new TH2F("fDphiLSMassLowNoPartner2", "e-h Dphi LS with no partner, mass<mass cut for 3<pt^{asso}<5,",200,0,20,64,-1.57,4.71); |
487ae960 | 884 | fOutputList->Add(fDphiLSMassLowNoPartner2); |
885 | ||
0523ddd5 | 886 | fDphiLSMassLowNoPartner3 = new TH2F("fDphiLSMassLowNoPartner3", "e-h Dphi LS with no partner, mass<mass cut for 5<pt^{asso}<7,",200,0,20,64,-1.57,4.71); |
487ae960 | 887 | fOutputList->Add(fDphiLSMassLowNoPartner3); |
888 | ||
0523ddd5 | 889 | fDphiLSMassLowNoPartner4 = new TH2F("fDphiLSMassLowNoPartner4", "e-h Dphi LS with no partner, mass<mass cut for 7<pt^{asso}<9,",200,0,20,64,-1.57,4.71); |
487ae960 | 890 | fOutputList->Add(fDphiLSMassLowNoPartner4); |
891 | ||
57189f04 | 892 | fPhotoElecPt = new TH1F("fPhotoElecPt", "photonic electron pt",1000,0,100); |
893 | fOutputList->Add(fPhotoElecPt); | |
520a29a8 | 894 | |
57189f04 | 895 | fSemiInclElecPt = new TH1F("fSemiInclElecPt", "Semi-inclusive electron pt",1000,0,100); |
896 | fOutputList->Add(fSemiInclElecPt); | |
520a29a8 | 897 | |
898 | fInclusiveElecPt = new TH1F("fInclElecPt", "Inclusive electron pt",1000,0,100); | |
899 | fOutputList->Add(fInclusiveElecPt); | |
900 | ||
901 | fULSElecPt = new TH1F("fULSElecPt", "ULS electron pt",1000,0,100); | |
902 | fOutputList->Add(fULSElecPt); | |
903 | ||
904 | fLSElecPt = new TH1F("fLSElecPt", "LS electron pt",1000,0,100); | |
905 | fOutputList->Add(fLSElecPt); | |
987053ce | 906 | |
520a29a8 | 907 | fNCellv1 = new TH1F("fNCellv1","Ncell in clus (v1); NCell; count",100,0,100) ; |
908 | fOutputList->Add(fNCellv1); | |
909 | ||
910 | fClsEv1 = new TH1F("fClsEv1", "Clus E(v1); Cls E; count",1000,0,100); | |
911 | fOutputList->Add(fClsEv1); | |
912 | ||
913 | fNClusv1 = new TH1F("fNClusv1","Nclus in event (v1); NClus; count",500,0,500) ; | |
914 | fOutputList->Add(fNClusv1); | |
915 | ||
520a29a8 | 916 | fInvmassLS1 = new TH1F("fInvmassLS1", "Inv mass of LS (e,e); mass(GeV/c^2); counts;", 1000,0,1.0); |
917 | fOutputList->Add(fInvmassLS1); | |
918 | ||
919 | fInvmassULS1 = new TH1F("fInvmassULS1", "Inv mass of ULS (e,e); mass(GeV/c^2); counts;", 1000,0,1.0); | |
920 | fOutputList->Add(fInvmassULS1); | |
487ae960 | 921 | |
922 | fInvmassLS2 = new TH1F("fInvmassLS2", "Inv mass of LS (e,e) for pt^{e}>1; mass(GeV/c^2); counts;", 1000,0,1.0); | |
923 | fOutputList->Add(fInvmassLS2); | |
924 | ||
925 | fInvmassULS2 = new TH1F("fInvmassULS2", "Inv mass of ULS (e,e) for pt^{e}>1; mass(GeV/c^2); counts;", 1000,0,1.0); | |
926 | fOutputList->Add(fInvmassULS2); | |
927 | ||
928 | fInvmassLS3 = new TH1F("fInvmassLS3", "Inv mass of LS (e,e) for pt^{e}>2; mass(GeV/c^2); counts;", 1000,0,1.0); | |
929 | fOutputList->Add(fInvmassLS3); | |
930 | ||
931 | fInvmassULS3 = new TH1F("fInvmassULS3", "Inv mass of ULS (e,e) for pt^{e}>2; mass(GeV/c^2); counts;", 1000,0,1.0); | |
932 | fOutputList->Add(fInvmassULS3); | |
933 | ||
934 | fInvmassLS4 = new TH1F("fInvmassLS4", "Inv mass of LS (e,e) for pt^{e}>3; mass(GeV/c^2); counts;", 1000,0,1.0); | |
935 | fOutputList->Add(fInvmassLS4); | |
936 | ||
937 | fInvmassULS4 = new TH1F("fInvmassULS4", "Inv mass of ULS (e,e) for pt^{e}>3; mass(GeV/c^2); counts;", 1000,0,1.0); | |
938 | fOutputList->Add(fInvmassULS4); | |
939 | ||
940 | fInvmassLS5 = new TH1F("fInvmassLS5", "Inv mass of LS (e,e) for pt^{e}>4; mass(GeV/c^2); counts;", 1000,0,1.0); | |
941 | fOutputList->Add(fInvmassLS5); | |
942 | ||
943 | fInvmassULS5 = new TH1F("fInvmassULS5", "Inv mass of ULS (e,e) for pt^{e}>4; mass(GeV/c^2); counts;", 1000,0,1.0); | |
944 | fOutputList->Add(fInvmassULS5); | |
987053ce | 945 | |
946 | /* fNoMixedEvents = new TH1F("fNoMixedEvents","",1,0,1) ; | |
4e01b68c | 947 | fOutputList->Add(fNoMixedEvents); |
948 | ||
3c56855b | 949 | fMixStat = new TH2F("fMixStat","no of events in pool vs Centrality;Nevent in pool;Centrality",200,0,200,5,0,10); |
4e01b68c | 950 | fOutputList->Add(fMixStat); |
951 | ||
3c56855b | 952 | fMixStat1 = new TH2F("fMixStat1","no of events in pool vs zvtx;Nevents in pool;zvtx",200,0,200,4,-10,10); |
4e01b68c | 953 | fOutputList->Add(fMixStat1); |
954 | ||
487ae960 | 955 | fMixedIncElecDphi = new TH2F("fMixedIncElecDphi", "Mixed event - Inclusive elec-had Dphi correlation",200,0,20,100,-1.57,4.71); |
4e01b68c | 956 | fOutputList->Add(fMixedIncElecDphi); |
957 | ||
3c56855b | 958 | fMixedIncElecDphi1 = new TH2F("fMixedIncElecDphi1", "Mixed event - Inclusive elec-had Dphi correlation 1<pt<3",200,0,20,100,-1.57,4.71); |
959 | fOutputList->Add(fMixedIncElecDphi1); | |
960 | ||
961 | fMixedIncElecDphi2 = new TH2F("fMixedIncElecDphi2", "Mixed event - Inclusive elec-had Dphi correlation 3<pt<5",200,0,20,100,-1.57,4.71); | |
962 | fOutputList->Add(fMixedIncElecDphi2); | |
963 | ||
487ae960 | 964 | fMixedSemiIncElecDphi = new TH2F("fMixedSemiIncElecDphi", "Mixed event - Semi Inclusive elec-had Dphi correlation",200,0,20,100,-1.57,4.71); |
4e01b68c | 965 | fOutputList->Add(fMixedSemiIncElecDphi); |
966 | ||
3c56855b | 967 | fMixedSemiIncElecDphi1 = new TH2F("fMixedSemiIncElecDphi1", "Mixed event - Semi Inclusive elec-had Dphi correlation 1<pt<3",200,0,20,100,-1.57,4.71); |
968 | fOutputList->Add(fMixedSemiIncElecDphi1); | |
969 | ||
970 | fMixedSemiIncElecDphi2 = new TH2F("fMixedSemiIncElecDphi2", "Mixed event - Semi Inclusive elec-had Dphi correlation 3<pt<5",200,0,20,100,-1.57,4.71); | |
971 | fOutputList->Add(fMixedSemiIncElecDphi2); | |
972 | ||
487ae960 | 973 | fMixedPhotElecDphi = new TH2F("fMixedPhotElecDphi", "Mixed event - Photo elec-had Dphi correlation",200,0,20,100,-1.57,4.71); |
4e01b68c | 974 | fOutputList->Add(fMixedPhotElecDphi); |
975 | ||
3c56855b | 976 | fMixedPhotElecDphi1 = new TH2F("fMixedPhotElecDphi1", "Mixed event - Photo elec-had Dphi correlation 1<pt<3",200,0,20,100,-1.57,4.71); |
977 | fOutputList->Add(fMixedPhotElecDphi1); | |
978 | ||
979 | fMixedPhotElecDphi2 = new TH2F("fMixedPhotElecDphi2", "Mixed event - Photo elec-had Dphi correlation 3<pt<5",200,0,20,100,-1.57,4.71); | |
980 | fOutputList->Add(fMixedPhotElecDphi2); | |
981 | ||
487ae960 | 982 | fMixedDphiULSMassLow = new TH2F("fMixedDphiULSMassLow", "Mixed event - ULS mass < cut elec-had Dphi correlation",200,0,20,100,-1.57,4.71); |
4e01b68c | 983 | fOutputList->Add(fMixedDphiULSMassLow); |
984 | ||
3c56855b | 985 | fMixedDphiULSMassLow1 = new TH2F("fMixedDphiULSMassLow1", "Mixed event - ULS mass < cut elec-had Dphi correlation 1<pt<3",200,0,20,100,-1.57,4.71); |
986 | fOutputList->Add(fMixedDphiULSMassLow1); | |
987 | ||
988 | fMixedDphiULSMassLow2 = new TH2F("fMixedDphiULSMassLow2", "Mixed event - ULS mass < cut elec-had Dphi correlation 3<pt<5",200,0,20,100,-1.57,4.71); | |
989 | fOutputList->Add(fMixedDphiULSMassLow2); | |
990 | ||
487ae960 | 991 | fMixedDphiLSMassLow = new TH2F("fMixedDphiLSMassLow", "Mixed event - LS mass < cut elec-had Dphi correlation",200,0,20,100,-1.57,4.71); |
4e01b68c | 992 | fOutputList->Add(fMixedDphiLSMassLow); |
3c56855b | 993 | |
994 | fMixedDphiLSMassLow1 = new TH2F("fMixedDphiLSMassLow1", "Mixed event - LS mass < cut elec-had Dphi correlation 1<pt<3",200,0,20,100,-1.57,4.71); | |
995 | fOutputList->Add(fMixedDphiLSMassLow1); | |
996 | ||
997 | fMixedDphiLSMassLow2 = new TH2F("fMixedDphiLSMassLow2", "Mixed event - LS mass < cut elec-had Dphi correlation 3<pt<5",200,0,20,100,-1.57,4.71); | |
998 | fOutputList->Add(fMixedDphiLSMassLow2); | |
487ae960 | 999 | */ |
3c56855b | 1000 | fHadronPt = new TH1F("fHadronPt","hadron pt distribution",1000,0,100); |
1001 | fOutputList->Add(fHadronPt); | |
1002 | ||
1003 | fCentralityPass = new TH1F("fCentralityPass", "Centrality Pass", 101, -1, 100); | |
1004 | fOutputList->Add(fCentralityPass); | |
1005 | ||
1006 | fCentralityNoPass = new TH1F("fCentralityNoPass", "Centrality No Pass", 101, -1, 100); | |
1007 | fOutputList->Add(fCentralityNoPass); | |
1008 | ||
0841d73f | 1009 | fHadronDphi = new TH2F("fHadronDphi", "Hadron-had Dphi correlation",200,0,20,64,-1.57,4.71); |
1010 | fOutputList->Add(fHadronDphi); | |
1011 | ||
1012 | fHadronDphi1 = new TH2F("fHadronDphi1", "Hadron-had Dphi correlation for 1<pt^{asso}<3",200,0,20,64,-1.57,4.71); | |
1013 | fOutputList->Add(fHadronDphi1); | |
1014 | ||
1015 | fHadronDphi2 = new TH2F("fHadronDphi2", "Hadron-had Dphi correlation for 3<pt^{asso}<5",200,0,20,64,-1.57,4.71); | |
1016 | fOutputList->Add(fHadronDphi2); | |
1017 | ||
1018 | fHadronDphi3 = new TH2F("fHadronDphi3", "Hadron-had Dphi correlation for 5<pt^{asso}<7",200,0,20,64,-1.57,4.71); | |
1019 | fOutputList->Add(fHadronDphi3); | |
1020 | ||
1021 | fHadronDphi4 = new TH2F("fHadronDphi4", "Hadron-had Dphi correlation for 7<pt^{asso}<9",200,0,20,64,-1.57,4.71); | |
1022 | fOutputList->Add(fHadronDphi4); | |
1023 | ||
1024 | fPiPt = new TH1F("fPiPt","Pi (TPC nsig < 3.5) pt distribution",1000,0,100); | |
1025 | fOutputList->Add(fPiPt); | |
1026 | ||
520a29a8 | 1027 | /* |
1028 | Int_t binsv1[8]={1000,1000,200,150,100,100,100,100}; //pt, p, TPCnsig, dEdx, E/p, M20, M02, dispersion | |
1029 | Double_t xminv1[8]={0,0,-10,0,0,0,0,0}; | |
1030 | Double_t xmaxv1[8]={50,50,10,150,2,2,2,2}; | |
1031 | fSparseElectron = new THnSparseD ("Electron","Electron",8,binsv1,xminv1,xmaxv1); | |
1032 | fOutputList->Add(fSparseElectron); | |
1033 | */ | |
57189f04 | 1034 | PostData(1,fOutputList); |
1035 | } | |
1036 | ||
1037 | //________________________________________________________________________ | |
1038 | void AliAnalysisTaskElecHadronCorrel::Terminate(Option_t *) | |
1039 | { | |
1040 | // Info("Terminate"); | |
520a29a8 | 1041 | AliAnalysisTaskSE::Terminate(); |
57189f04 | 1042 | } |
1043 | ||
1044 | //________________________________________________________________________ | |
1045 | Bool_t AliAnalysisTaskElecHadronCorrel::ProcessCutStep(Int_t cutStep, AliVParticle *track) | |
1046 | { | |
1047 | // Check single track cuts for a given cut step | |
1048 | const Int_t kMCOffset = AliHFEcuts::kNcutStepsMCTrack; | |
1049 | if(!fCFM->CheckParticleCuts(cutStep + kMCOffset, track)) return kFALSE; | |
1050 | return kTRUE; | |
1051 | } | |
987053ce | 1052 | |
57189f04 | 1053 | //_________________________________________ |
987053ce | 1054 | void AliAnalysisTaskElecHadronCorrel::SelectPhotonicElectron(Int_t itrack, AliVTrack *track, Bool_t &fFlagPhotonicElec) |
57189f04 | 1055 | { |
1056 | //Identify non-heavy flavour electrons using Invariant mass method | |
520a29a8 | 1057 | |
57189f04 | 1058 | fTrackCuts1->SetAcceptKinkDaughters(kFALSE); |
1059 | fTrackCuts1->SetRequireTPCRefit(kTRUE); | |
e4b0faf2 | 1060 | fTrackCuts1->SetRequireITSRefit(kTRUE); |
57189f04 | 1061 | fTrackCuts1->SetEtaRange(-0.9,0.9); |
1062 | fTrackCuts1->SetRequireSigmaToVertex(kTRUE); | |
e4b0faf2 | 1063 | fTrackCuts1->SetMaxChi2PerClusterTPC(4); |
57189f04 | 1064 | fTrackCuts1->SetMinNClustersTPC(80); |
987053ce | 1065 | fTrackCuts1->SetMaxDCAToVertexZ(3.2); |
1066 | fTrackCuts1->SetMaxDCAToVertexXY(2.4); | |
1067 | fTrackCuts1->SetDCAToVertex2D(kTRUE); | |
520a29a8 | 1068 | |
57189f04 | 1069 | Bool_t flagPhotonicElec = kFALSE; |
520a29a8 | 1070 | |
987053ce | 1071 | for(Int_t jTracks = 0; jTracks<fVevent->GetNumberOfTracks(); jTracks++){ |
1072 | AliVParticle* VtrackAsso = fVevent->GetTrack(jTracks); | |
1073 | if (!VtrackAsso) { | |
57189f04 | 1074 | printf("ERROR: Could not receive track %d\n", jTracks); |
1075 | continue; | |
1076 | } | |
987053ce | 1077 | |
1078 | AliVTrack *trackAsso = dynamic_cast<AliVTrack*>(VtrackAsso); | |
1079 | ||
1080 | //track cuts applied | |
1081 | if(IsAODanalysis()) { | |
1082 | AliAODTrack *atrackAsso = dynamic_cast<AliAODTrack*>(VtrackAsso); | |
1083 | if(!atrackAsso->TestFilterMask(AliAODTrack::kTrkTPCOnly)) continue; | |
1084 | if(atrackAsso->GetTPCNcls() < 80) continue; | |
1085 | if((!(atrackAsso->GetStatus()&AliESDtrack::kITSrefit)|| (!(atrackAsso->GetStatus()&AliESDtrack::kTPCrefit)))) continue; | |
1086 | } | |
1087 | else{ | |
1088 | AliESDtrack *etrackAsso = dynamic_cast<AliESDtrack*>(VtrackAsso); | |
1089 | if(!fTrackCuts1->AcceptTrack(etrackAsso)) continue; | |
1090 | } | |
1091 | ||
e4b0faf2 | 1092 | if(jTracks==itrack) continue; |
520a29a8 | 1093 | |
987053ce | 1094 | Double_t dEdxAsso = -999., ptAsso=-999., nsigma=-999.0; |
520a29a8 | 1095 | Double_t mass=-999., width = -999; |
57189f04 | 1096 | Bool_t fFlagLS=kFALSE, fFlagULS=kFALSE; |
520a29a8 | 1097 | |
57189f04 | 1098 | dEdxAsso = trackAsso->GetTPCsignal(); |
487ae960 | 1099 | nsigma = fPID->GetPIDResponse() ? fPID->GetPIDResponse()->NumberOfSigmasTPC(trackAsso, AliPID::kElectron) : 1000; |
57189f04 | 1100 | ptAsso = trackAsso->Pt(); |
1101 | Int_t chargeAsso = trackAsso->Charge(); | |
1102 | Int_t charge = track->Charge(); | |
520a29a8 | 1103 | |
57189f04 | 1104 | if(ptAsso <0.3) continue; |
3c56855b | 1105 | if(trackAsso->Eta()<-0.9 || trackAsso->Eta()>0.9) continue; |
487ae960 | 1106 | if(nsigma < -3 || nsigma > 3) continue; |
520a29a8 | 1107 | |
57189f04 | 1108 | Int_t fPDGe1 = 11; Int_t fPDGe2 = 11; |
1109 | if(charge>0) fPDGe1 = -11; | |
1110 | if(chargeAsso>0) fPDGe2 = -11; | |
520a29a8 | 1111 | |
57189f04 | 1112 | if(charge == chargeAsso) fFlagLS = kTRUE; |
1113 | if(charge != chargeAsso) fFlagULS = kTRUE; | |
520a29a8 | 1114 | |
1115 | AliKFParticle ge1 = AliKFParticle(*track, fPDGe1); | |
1116 | AliKFParticle ge2 = AliKFParticle(*trackAsso, fPDGe2); | |
57189f04 | 1117 | AliKFParticle recg(ge1, ge2); |
3c56855b | 1118 | |
57189f04 | 1119 | if(recg.GetNDF()<1) continue; |
1120 | Double_t chi2recg = recg.GetChi2()/recg.GetNDF(); | |
1121 | if(TMath::Sqrt(TMath::Abs(chi2recg))>3.) continue; | |
520a29a8 | 1122 | |
3c56855b | 1123 | Int_t MassCorrect; |
1124 | MassCorrect = recg.GetMass(mass,width); | |
520a29a8 | 1125 | |
487ae960 | 1126 | if(fFlagLS) { |
1127 | fInvmassLS1->Fill(mass); | |
1128 | if(track->Pt()> 1) fInvmassLS2->Fill(mass); | |
1129 | if(track->Pt()>2) fInvmassLS3->Fill(mass); | |
1130 | if(track->Pt()>3) fInvmassLS4->Fill(mass); | |
1131 | if(track->Pt()>4) fInvmassLS5->Fill(mass); | |
1132 | } | |
1133 | if(fFlagULS) { | |
1134 | fInvmassULS1->Fill(mass); | |
1135 | if(track->Pt() >1) fInvmassULS2->Fill(mass); | |
1136 | if(track->Pt() >2) fInvmassULS3->Fill(mass); | |
1137 | if(track->Pt() >3) fInvmassULS4->Fill(mass); | |
1138 | if(track->Pt() >4) fInvmassULS5->Fill(mass); | |
1139 | } | |
520a29a8 | 1140 | |
520a29a8 | 1141 | if(mass<fInvmassCut){ |
1142 | if(fFlagULS) | |
1143 | { | |
487ae960 | 1144 | ElectronHadCorrel(itrack,track,fDphiULSMassLow, fDphiULSMassLow1,fDphiULSMassLow2,fDphiULSMassLow3,fDphiULSMassLow4); |
520a29a8 | 1145 | fULSElecPt->Fill(track->Pt()); |
987053ce | 1146 | // MixedEvent(track,fMixedDphiULSMassLow,fMixedDphiULSMassLow1,fMixedDphiULSMassLow2); |
520a29a8 | 1147 | } |
1148 | if(fFlagLS) | |
1149 | { | |
487ae960 | 1150 | ElectronHadCorrel(itrack,track,fDphiLSMassLow,fDphiLSMassLow1,fDphiLSMassLow2,fDphiLSMassLow3,fDphiLSMassLow4); |
520a29a8 | 1151 | fLSElecPt->Fill(track->Pt()); |
987053ce | 1152 | // MixedEvent(track,fMixedDphiLSMassLow,fMixedDphiLSMassLow1,fMixedDphiLSMassLow2); |
520a29a8 | 1153 | } |
487ae960 | 1154 | if(fFlagLS) ElectronHadCorrelNoPartner(itrack,jTracks,track,fDphiLSMassLowNoPartner, fDphiLSMassLowNoPartner1,fDphiLSMassLowNoPartner2,fDphiLSMassLowNoPartner3,fDphiLSMassLowNoPartner4); |
1155 | if(fFlagULS) ElectronHadCorrelNoPartner(itrack,jTracks,track,fDphiULSMassLowNoPartner, fDphiULSMassLowNoPartner1,fDphiULSMassLowNoPartner2,fDphiULSMassLowNoPartner3,fDphiULSMassLowNoPartner4); | |
57189f04 | 1156 | } |
520a29a8 | 1157 | |
57189f04 | 1158 | if(mass<fInvmassCut && fFlagULS && !flagPhotonicElec){ |
1159 | flagPhotonicElec = kTRUE; | |
1160 | } | |
520a29a8 | 1161 | // } |
1162 | ||
987053ce | 1163 | } |
1164 | fFlagPhotonicElec = flagPhotonicElec; | |
57189f04 | 1165 | } |
1166 | //_________________________________________ | |
987053ce | 1167 | void AliAnalysisTaskElecHadronCorrel::ElectronHadCorrel(Int_t itrack, AliVTrack *track, TH2F *DphiPt, TH2F *DphiPt1,TH2F *DphiPt2,TH2F *DphiPt3,TH2F *DphiPt4) |
57189f04 | 1168 | { |
1169 | //Construct Delta Phi between electrons and hadrons | |
520a29a8 | 1170 | |
57189f04 | 1171 | fTrackCuts2->SetAcceptKinkDaughters(kFALSE); |
1172 | fTrackCuts2->SetRequireTPCRefit(kTRUE); | |
1173 | fTrackCuts2->SetRequireITSRefit(kTRUE); | |
1174 | fTrackCuts2->SetEtaRange(-0.9,0.9); | |
1175 | fTrackCuts2->SetRequireSigmaToVertex(kTRUE); | |
e4b0faf2 | 1176 | fTrackCuts2->SetMaxChi2PerClusterTPC(4); |
57189f04 | 1177 | fTrackCuts2->SetMinNClustersTPC(80); |
987053ce | 1178 | fTrackCuts2->SetMaxDCAToVertexZ(3.2); |
1179 | fTrackCuts2->SetMaxDCAToVertexXY(2.4); | |
1180 | fTrackCuts2->SetDCAToVertex2D(kTRUE); | |
520a29a8 | 1181 | |
987053ce | 1182 | for(Int_t ktracks = 0; ktracks<fVevent->GetNumberOfTracks(); ktracks++){ |
1183 | AliVParticle* VtrackHad = fVevent->GetTrack(ktracks); | |
1184 | if (!VtrackHad) { | |
57189f04 | 1185 | printf("ERROR: Could not receive track %d\n", ktracks); |
1186 | continue; | |
1187 | } | |
987053ce | 1188 | |
1189 | AliVTrack *trackHad = dynamic_cast<AliVTrack*>(VtrackHad); | |
1190 | ||
1191 | if(IsAODanalysis()) { | |
1192 | AliAODTrack *atrackHad = dynamic_cast<AliAODTrack*>(VtrackHad); | |
1193 | if(!atrackHad->TestFilterMask(AliAODTrack::kTrkTPCOnly)) continue; | |
1194 | if((!(atrackHad->GetStatus()&AliESDtrack::kITSrefit)|| (!(atrackHad->GetStatus()&AliESDtrack::kTPCrefit)))) continue; | |
1195 | if(atrackHad->GetTPCNcls() < 80) continue; | |
1196 | } | |
1197 | else{ | |
1198 | AliESDtrack *etrackHad = dynamic_cast<AliESDtrack*>(VtrackHad); | |
1199 | if(!fTrackCuts2->AcceptTrack(etrackHad)) continue; | |
1200 | } | |
1201 | ||
57189f04 | 1202 | if(ktracks == itrack) continue; //do not select the same electron |
520a29a8 | 1203 | |
57189f04 | 1204 | Double_t ptHad= -999, pHad=-999., dEdxHad = -999; |
1205 | Double_t ptEle = -999; | |
1206 | Double_t phiEle = -999, phiHad = -999, Dphi = -999; | |
1207 | Double_t pi = 3.14; | |
520a29a8 | 1208 | |
57189f04 | 1209 | dEdxHad = trackHad->GetTPCsignal(); |
1210 | ptHad = trackHad->Pt(); | |
1211 | pHad = trackHad->P(); | |
4e01b68c | 1212 | ptEle = track->Pt(); |
520a29a8 | 1213 | |
987053ce | 1214 | // if(ptHad <2) continue; |
4e01b68c | 1215 | if(ptHad > ptEle) continue; |
3c56855b | 1216 | if(trackHad->Eta()<-0.9 || trackHad->Eta()>0.9) continue; |
3c56855b | 1217 | |
57189f04 | 1218 | phiEle = track->Phi(); |
1219 | phiHad = trackHad->Phi(); | |
1220 | Dphi = phiEle - phiHad; | |
520a29a8 | 1221 | if (Dphi > 3*pi/2) |
57189f04 | 1222 | Dphi = Dphi - 2*pi; |
520a29a8 | 1223 | if (Dphi < -pi/2) |
57189f04 | 1224 | Dphi = Dphi + 2*pi; |
520a29a8 | 1225 | |
487ae960 | 1226 | if(ptHad>2) DphiPt->Fill(ptEle,Dphi); |
1227 | if(ptHad>2 && ptHad<4) DphiPt1->Fill(ptEle,Dphi); | |
1228 | if(ptHad>4 && ptHad<6) DphiPt2->Fill(ptEle,Dphi); | |
1229 | if(ptHad>6 && ptHad<8) DphiPt3->Fill(ptEle,Dphi); | |
1230 | if(ptHad>8 && ptHad<10) DphiPt4->Fill(ptEle,Dphi); | |
4e01b68c | 1231 | |
57189f04 | 1232 | } |
1233 | } | |
1234 | //_________________________________________ | |
987053ce | 1235 | void AliAnalysisTaskElecHadronCorrel::ElectronHadCorrelNoPartner(Int_t itrack,Int_t jtrack, AliVTrack *track, TH2F *DphiPtNew, TH2F *DphiPtNew1,TH2F *DphiPtNew2,TH2F *DphiPtNew3,TH2F *DphiPtNew4) |
57189f04 | 1236 | { |
520a29a8 | 1237 | //Construct Delta Phi between electrons and hadrons for electrons from invariant mass calculation excluding associated track |
57189f04 | 1238 | |
520a29a8 | 1239 | fTrackCuts2->SetAcceptKinkDaughters(kFALSE); |
1240 | fTrackCuts2->SetRequireTPCRefit(kTRUE); | |
1241 | fTrackCuts2->SetRequireITSRefit(kTRUE); | |
1242 | fTrackCuts2->SetEtaRange(-0.9,0.9); | |
1243 | fTrackCuts2->SetRequireSigmaToVertex(kTRUE); | |
e4b0faf2 | 1244 | fTrackCuts2->SetMaxChi2PerClusterTPC(4); |
520a29a8 | 1245 | fTrackCuts2->SetMinNClustersTPC(80); |
987053ce | 1246 | fTrackCuts2->SetMaxDCAToVertexZ(3.2); |
1247 | fTrackCuts2->SetMaxDCAToVertexXY(2.4); | |
1248 | fTrackCuts2->SetDCAToVertex2D(kTRUE); | |
520a29a8 | 1249 | |
987053ce | 1250 | for(Int_t ktracks = 0; ktracks<fVevent->GetNumberOfTracks(); ktracks++){ |
1251 | AliVParticle* VtrackHad = fVevent->GetTrack(ktracks); | |
1252 | if (!VtrackHad) { | |
520a29a8 | 1253 | printf("ERROR: Could not receive track %d\n", ktracks); |
1254 | continue; | |
1255 | } | |
987053ce | 1256 | |
1257 | AliVTrack *trackHad = dynamic_cast<AliVTrack*>(VtrackHad); | |
520a29a8 | 1258 | |
987053ce | 1259 | if(IsAODanalysis()) { |
1260 | AliAODTrack *atrackHad = dynamic_cast<AliAODTrack*>(VtrackHad); | |
1261 | if(!atrackHad->TestFilterMask(AliAODTrack::kTrkTPCOnly)) continue; | |
1262 | if((!(atrackHad->GetStatus()&AliESDtrack::kITSrefit)|| (!(atrackHad->GetStatus()&AliESDtrack::kTPCrefit)))) continue; | |
1263 | if(atrackHad->GetTPCNcls() < 80) continue; | |
1264 | } | |
1265 | else{ | |
1266 | AliESDtrack *etrackHad = dynamic_cast<AliESDtrack*>(VtrackHad); | |
1267 | if(!fTrackCuts2->AcceptTrack(etrackHad)) continue; | |
1268 | } | |
1269 | ||
1270 | if(ktracks == itrack || ktracks == jtrack) continue; //do not select the same electron and associated track from inv mass cal | |
520a29a8 | 1271 | |
1272 | Double_t ptHad= -999, pHad=-999., dEdxHad = -999; | |
1273 | Double_t ptEle = -999; | |
1274 | Double_t phiEle = -999, phiHad = -999, Dphi = -999; | |
1275 | Double_t pi = 3.14; | |
1276 | ||
1277 | dEdxHad = trackHad->GetTPCsignal(); | |
1278 | ptHad = trackHad->Pt(); | |
1279 | pHad = trackHad->P(); | |
4e01b68c | 1280 | ptEle = track->Pt(); |
520a29a8 | 1281 | |
3c56855b | 1282 | // if(ptHad <2) continue; |
4e01b68c | 1283 | if(ptHad > ptEle) continue; |
3c56855b | 1284 | if(trackHad->Eta()<-0.9 || trackHad->Eta()>0.9) continue; |
520a29a8 | 1285 | |
1286 | phiEle = track->Phi(); | |
1287 | phiHad = trackHad->Phi(); | |
1288 | Dphi = phiEle - phiHad; | |
1289 | if (Dphi > 3*pi/2) | |
1290 | Dphi = Dphi - 2*pi; | |
1291 | if (Dphi < -pi/2) | |
1292 | Dphi = Dphi + 2*pi; | |
57189f04 | 1293 | |
487ae960 | 1294 | if(ptHad>2) DphiPtNew->Fill(ptEle,Dphi); |
1295 | if(ptHad>2 && ptHad<4) DphiPtNew1->Fill(ptEle,Dphi); | |
1296 | if(ptHad>4 && ptHad<6) DphiPtNew2->Fill(ptEle,Dphi); | |
1297 | if(ptHad>6 && ptHad<8) DphiPtNew3->Fill(ptEle,Dphi); | |
1298 | if(ptHad>8 && ptHad<10) DphiPtNew4->Fill(ptEle,Dphi); | |
520a29a8 | 1299 | } |
1300 | } | |
987053ce | 1301 | |
4e01b68c | 1302 | /* |
1303 | //_________________________________________ | |
987053ce | 1304 | void AliAnalysisTaskElecHadronCorrel::MixedEvent(AliAODTrack *track, TH2F *DphiPt, TH2F *DphiPt1,TH2F *DphiPt2) |
4e01b68c | 1305 | { |
1306 | ||
987053ce | 1307 | const AliAODVertex *pVtx = fAOD->GetPrimaryVertex(); |
4e01b68c | 1308 | Double_t zVtx; |
1309 | zVtx = pVtx->GetZ(); | |
1310 | ||
1311 | ||
987053ce | 1312 | AliCentrality *fCentrality = (AliCentrality*)fAOD->GetCentrality(); |
4e01b68c | 1313 | Double_t centvalue = fCentrality->GetCentralityPercentile("V0M"); |
1314 | ||
1315 | AliEventPool* pool = fPoolMgr->GetEventPool(centvalue, zVtx); // Get the buffer associated with the current centrality and z-vtx | |
1316 | if (!pool) | |
1317 | AliFatal(Form("No pool found for centrality = %f, zVtx = %f", centvalue, zVtx)); | |
1318 | ||
1319 | // pool->PrintInfo(); | |
1320 | if (pool->GetCurrentNEvents() >= 5) // start mixing when 5 events are in the buffer | |
1321 | { | |
1322 | Int_t nMix = pool->GetCurrentNEvents(); | |
1323 | fNoMixedEvents->Fill(0); | |
1324 | fMixStat->Fill(pool->GetCurrentNEvents(),centvalue); | |
1325 | fMixStat1->Fill(pool->GetCurrentNEvents(),zVtx); | |
1326 | ||
487ae960 | 1327 | // cout << "nMix = " << nMix << " tracks in pool = " << pool->NTracksInPool() << endl; |
3c56855b | 1328 | for (Int_t jMix=0; jMix<nMix; jMix++) // mix with each event in the buffer |
4e01b68c | 1329 | { |
1330 | TObjArray* bgTracks = pool->GetEvent(jMix); | |
1331 | for (Int_t i=0;i<bgTracks->GetEntriesFast(); i++) | |
1332 | { | |
1333 | AliVParticle* mixtrk = (AliVParticle*) bgTracks->At(i); | |
1334 | ||
1335 | Double_t mixtrkPhi = -999; | |
1336 | Double_t ptEle = -999; | |
1337 | Double_t phiEle = -999, Dphi = -999; | |
1338 | Double_t pi = 3.14; | |
1339 | Double_t ptmixtrk = -999; | |
1340 | ||
1341 | ptEle = track->Pt(); | |
3c56855b | 1342 | ptmixtrk = mixtrk->Pt(); |
4e01b68c | 1343 | if(ptmixtrk > ptEle) continue; |
1344 | ||
1345 | mixtrkPhi = mixtrk->Phi(); | |
1346 | phiEle = track->Phi(); | |
1347 | Dphi = phiEle - mixtrkPhi; | |
1348 | ||
1349 | if (Dphi > 3*pi/2) | |
1350 | Dphi = Dphi - 2*pi; | |
1351 | if (Dphi < -pi/2) | |
1352 | Dphi = Dphi + 2*pi; | |
987053ce | 1353 | if(ptmixtrk>2) DphiPt->Fill(ptEle,Dphi); |
3c56855b | 1354 | if(ptmixtrk>2 && ptmixtrk<4) DphiPt1->Fill(ptEle,Dphi); |
1355 | if(ptmixtrk>4 && ptmixtrk<6) DphiPt2->Fill(ptEle,Dphi); | |
4e01b68c | 1356 | } |
1357 | } | |
1358 | ||
1359 | } | |
1360 | ||
1361 | } | |
1362 | //___________________________________________ | |
1363 | TObjArray* AliAnalysisTaskElecHadronCorrel::CloneAndReduceTrackList() | |
1364 | { | |
3c56855b | 1365 | // clones a track list by using AliehDPhiBasicParticle which uses much less memory (used for event mixing) |
4e01b68c | 1366 | |
1367 | fTrackCuts2->SetAcceptKinkDaughters(kFALSE); | |
1368 | fTrackCuts2->SetRequireTPCRefit(kTRUE); | |
1369 | fTrackCuts2->SetRequireITSRefit(kTRUE); | |
1370 | fTrackCuts2->SetEtaRange(-0.9,0.9); | |
1371 | fTrackCuts2->SetRequireSigmaToVertex(kTRUE); | |
1372 | fTrackCuts2->SetMaxChi2PerClusterTPC(3.5); | |
1373 | fTrackCuts2->SetMinNClustersTPC(80); | |
1374 | ||
1375 | TObjArray* tracksClone = new TObjArray; | |
1376 | tracksClone->SetOwner(kTRUE); | |
1377 | ||
987053ce | 1378 | for(Int_t ktracks = 0; ktracks<fAOD->GetNumberOfTracks(); ktracks++){ |
1379 | AliAODTrack* track = fAOD->GetTrack(ktracks); | |
4e01b68c | 1380 | if (!track) { |
1381 | printf("ERROR: Could not receive track %d\n", ktracks); | |
1382 | continue; | |
1383 | } | |
987053ce | 1384 | if(!track->TestFilterMask(AliAODTrack::kTrkGlobalNoDCA)) continue; |
4e01b68c | 1385 | |
1386 | // if(ktracks == iTrack) continue; | |
3c56855b | 1387 | Double_t eta=-999,ptHad= -999, pHad=-999., phi=-999.0; |
1388 | Int_t label=-9999, id=-999; | |
1389 | eta = track->Eta(); | |
4e01b68c | 1390 | ptHad = track->Pt(); |
1391 | pHad = track->P(); | |
3c56855b | 1392 | phi= track->Phi(); |
1393 | label= track->GetLabel(); | |
1394 | id=track->GetID(); | |
4e01b68c | 1395 | |
987053ce | 1396 | if(track->Eta()<-0.9 || track->Eta()>0.9) continue; |
1397 | if(!ProcessCutStep(AliHFEcuts::kStepRecKineITSTPC, track)) continue; | |
1398 | if(!ProcessCutStep(AliHFEcuts::kStepHFEcutsTPC, track)) continue; | |
4e01b68c | 1399 | if(ptHad <2) continue; |
987053ce | 1400 | // if(!fTrackCuts2->AcceptTrack(track)) continue; |
4e01b68c | 1401 | |
987053ce | 1402 | AliVParticle* particle = (AliVParticle*) fAOD->GetTrack(ktracks); |
3c56855b | 1403 | tracksClone->Add(new AliehDPhiBasicParticle(particle->Eta(), particle->Phi(), particle->Pt(), particle->Charge())); |
1404 | ||
4e01b68c | 1405 | } |
1406 | ||
1407 | return tracksClone; | |
1408 | } | |
1409 | */ | |
3c56855b | 1410 | //___________________________________________ |
1411 | void AliAnalysisTaskElecHadronCorrel::HadronInfo(Int_t itrack) | |
1412 | { | |
1413 | //Hadron information | |
987053ce | 1414 | |
3c56855b | 1415 | fTrackCuts2->SetAcceptKinkDaughters(kFALSE); |
1416 | fTrackCuts2->SetRequireTPCRefit(kTRUE); | |
1417 | fTrackCuts2->SetRequireITSRefit(kTRUE); | |
1418 | fTrackCuts2->SetEtaRange(-0.9,0.9); | |
1419 | fTrackCuts2->SetRequireSigmaToVertex(kTRUE); | |
e4b0faf2 | 1420 | fTrackCuts2->SetMaxChi2PerClusterTPC(4); |
3c56855b | 1421 | fTrackCuts2->SetMinNClustersTPC(80); |
987053ce | 1422 | fTrackCuts2->SetMaxDCAToVertexZ(3.2); |
1423 | fTrackCuts2->SetMaxDCAToVertexXY(2.4); | |
1424 | fTrackCuts2->SetDCAToVertex2D(kTRUE); | |
3c56855b | 1425 | |
987053ce | 1426 | for(Int_t ktracks = 0; ktracks<fVevent->GetNumberOfTracks(); ktracks++){ |
1427 | AliVParticle* VtrackHad = fVevent->GetTrack(ktracks); | |
1428 | if (!VtrackHad) { | |
3c56855b | 1429 | printf("ERROR: Could not receive track %d\n", ktracks); |
1430 | continue; | |
1431 | } | |
987053ce | 1432 | |
1433 | AliVTrack *trackHad = dynamic_cast<AliVTrack*>(VtrackHad); | |
1434 | ||
1435 | if(IsAODanalysis()) { | |
1436 | AliAODTrack *atrackHad = dynamic_cast<AliAODTrack*>(VtrackHad); | |
1437 | if(!atrackHad->TestFilterMask(AliAODTrack::kTrkTPCOnly)) continue; | |
1438 | if((!(atrackHad->GetStatus()&AliESDtrack::kITSrefit)|| (!(atrackHad->GetStatus()&AliESDtrack::kTPCrefit)))) continue; | |
1439 | if(atrackHad->GetTPCNcls() < 80) continue; | |
1440 | } | |
1441 | else{ | |
1442 | AliESDtrack *etrackHad = dynamic_cast<AliESDtrack*>(VtrackHad); | |
1443 | if(!fTrackCuts2->AcceptTrack(etrackHad)) continue; | |
1444 | } | |
1445 | ||
3c56855b | 1446 | if(ktracks == itrack) continue; //do not select the same electron |
1447 | ||
1448 | Double_t ptHad= -999; | |
3c56855b | 1449 | ptHad = trackHad->Pt(); |
3c56855b | 1450 | |
1451 | if(trackHad->Eta()<-0.9 || trackHad->Eta()>0.9) continue; | |
987053ce | 1452 | // cout << "pt had = " << ptHad <<endl; |
3c56855b | 1453 | |
3c56855b | 1454 | if(ptHad<2) continue; |
1455 | ||
1456 | fHadronPhi->Fill(trackHad->Phi()); | |
1457 | fHadronPhiPt->Fill(trackHad->Phi(),ptHad); | |
1458 | if (trackHad->Eta() >0 && trackHad->Eta() <0.9) fHadronPhiTPChalf->Fill(trackHad->Phi()); | |
1459 | ||
3c56855b | 1460 | fHadronPt->Fill(ptHad); |
1461 | } | |
1462 | } | |
1463 | //_________________________________________ | |
987053ce | 1464 | void AliAnalysisTaskElecHadronCorrel::CheckCentrality(AliVEvent* event, Bool_t ¢ralitypass) |
3c56855b | 1465 | { |
1466 | // Check if event is within the set centrality range. Falls back to V0 centrality determination if no method is set | |
1467 | if (!fkCentralityMethod) AliFatal("No centrality method set! FATAL ERROR!"); | |
1468 | fCentrality = event->GetCentrality()->GetCentralityPercentile(fkCentralityMethod); | |
987053ce | 1469 | // cout << "Centrality evaluated-------------------------: " << fCentrality <<endl; |
3c56855b | 1470 | |
1471 | if ((fCentrality <= fCentralityMin) || (fCentrality > fCentralityMax)) | |
1472 | { | |
1473 | fCentralityNoPass->Fill(fCentrality); | |
987053ce | 1474 | // cout << "--------------Fill no pass-------------------------"<<endl; |
3c56855b | 1475 | centralitypass = kFALSE; |
1476 | }else | |
1477 | { | |
1478 | fCentralityPass->Fill(fCentrality); | |
987053ce | 1479 | // cout << "--------------Fill pass-------------------------"<<endl; |
3c56855b | 1480 | centralitypass = kTRUE; |
1481 | } | |
1482 | ||
1483 | } | |
1484 | //_____________________________________________________________________________ | |
1485 | void AliAnalysisTaskElecHadronCorrel::SetCentralityParameters(Double_t CentralityMin, Double_t CentralityMax, const char* CentralityMethod) | |
1486 | { | |
1487 | // Set a centrality range ]min, max] and define the method to use for centrality selection | |
1488 | fCentralityMin = CentralityMin; | |
1489 | fCentralityMax = CentralityMax; | |
1490 | fkCentralityMethod = CentralityMethod; | |
1491 | } |