6 #include "AliESDEvent.h"
8 #include "AliMCEvent.h"
9 #include "AliESDtrackCuts.h"
10 #include "AliAODEvent.h"
11 #include "AliAODMCParticle.h"
13 #include "AliAnalysisNetParticleEffCont.h"
18 * Class for NetParticle Distributions
19 * -- Efficiency and contaminations for netParticle distributions
20 * Authors: Jochen Thaeder <jochen@thaeder.de>
21 * Michael Weber <m.weber@cern.ch>
24 ClassImp(AliAnalysisNetParticleEffCont)
27 * ---------------------------------------------------------------------------------
28 * Constructor / Destructor
29 * ---------------------------------------------------------------------------------
32 //________________________________________________________________________
33 AliAnalysisNetParticleEffCont::AliAnalysisNetParticleEffCont() :
34 AliAnalysisNetParticleBase("EffCont", "EffCont"),
40 AliLog::SetClassDebugLevel("AliAnalysisNetParticleEffCont",10);
43 //________________________________________________________________________
44 AliAnalysisNetParticleEffCont::~AliAnalysisNetParticleEffCont() {
49 delete[] (fLabelsRec[0]);
51 delete[] (fLabelsRec[1]);
58 * ---------------------------------------------------------------------------------
60 * ---------------------------------------------------------------------------------
63 //________________________________________________________________________
64 void AliAnalysisNetParticleEffCont::Process() {
67 // -- Setup (clean, create and fill) MC labels
70 // -- Fill MC histograms for efficiency studies
77 * ---------------------------------------------------------------------------------
79 * ---------------------------------------------------------------------------------
82 //________________________________________________________________________
83 void AliAnalysisNetParticleEffCont::Init() {
86 // -- MC Labels for efficiency
87 fLabelsRec = new Int_t*[2];
88 for (Int_t ii = 0; ii < 2 ; ++ii)
89 fLabelsRec[ii] = NULL;
92 //________________________________________________________________________
93 void AliAnalysisNetParticleEffCont::CreateHistograms() {
94 // -- Create histograms
96 // ------------------------------------------------------------------
97 // -- Create THnSparse - Eff
98 // ------------------------------------------------------------------
100 Int_t binHnEff[19] = {AliAnalysisNetParticleHelper::fgkfHistNBinsCent, AliAnalysisNetParticleHelper::fgkfHistNBinsEta, // cent | etaMC
101 AliAnalysisNetParticleHelper::fgkfHistNBinsRap, AliAnalysisNetParticleHelper::fgkfHistNBinsPhi, // yMC | phiMC
102 AliAnalysisNetParticleHelper::fgkfHistNBinsPt, AliAnalysisNetParticleHelper::fgkfHistNBinsSign, // ptMC | signMC
103 2, 2 , 2 , // findable | recStatus | pidStatus
104 AliAnalysisNetParticleHelper::fgkfHistNBinsEta, AliAnalysisNetParticleHelper::fgkfHistNBinsRap, // etaRec | yRec
105 AliAnalysisNetParticleHelper::fgkfHistNBinsPhi, AliAnalysisNetParticleHelper::fgkfHistNBinsPt, // phiRec | ptRec
106 AliAnalysisNetParticleHelper::fgkfHistNBinsSign, // signRec
107 AliAnalysisNetParticleHelper::fgkfHistNBinsEta, AliAnalysisNetParticleHelper::fgkfHistNBinsRap, // deltaEta | deltaY
108 2*AliAnalysisNetParticleHelper::fgkfHistNBinsPhi+1, 2*AliAnalysisNetParticleHelper::fgkfHistNBinsPt+1, // deltaPhi | deltaPt
109 AliAnalysisNetParticleHelper::fgkfHistNBinsSign+2}; // deltaSign
112 Double_t minHnEff[19] = {AliAnalysisNetParticleHelper::fgkfHistRangeCent[0], AliAnalysisNetParticleHelper::fgkfHistRangeEta[0],
113 AliAnalysisNetParticleHelper::fgkfHistRangeRap[0], AliAnalysisNetParticleHelper::fgkfHistRangePhi[0],
114 AliAnalysisNetParticleHelper::fgkfHistRangePt[0], AliAnalysisNetParticleHelper::fgkfHistRangeSign[0],
116 AliAnalysisNetParticleHelper::fgkfHistRangeEta[0], AliAnalysisNetParticleHelper::fgkfHistRangeRap[0],
117 AliAnalysisNetParticleHelper::fgkfHistRangePhi[0], AliAnalysisNetParticleHelper::fgkfHistRangePt[0],
118 AliAnalysisNetParticleHelper::fgkfHistRangeSign[0],
119 AliAnalysisNetParticleHelper::fgkfHistRangeEta[0], AliAnalysisNetParticleHelper::fgkfHistRangeRap[0],
120 -1.*AliAnalysisNetParticleHelper::fgkfHistRangePhi[1], -1.*AliAnalysisNetParticleHelper::fgkfHistRangePt[1],
121 AliAnalysisNetParticleHelper::fgkfHistRangeSign[0]-1.};
123 Double_t maxHnEff[19] = {AliAnalysisNetParticleHelper::fgkfHistRangeCent[1], AliAnalysisNetParticleHelper::fgkfHistRangeEta[1],
124 AliAnalysisNetParticleHelper::fgkfHistRangeRap[1], AliAnalysisNetParticleHelper::fgkfHistRangePhi[1],
125 AliAnalysisNetParticleHelper::fgkfHistRangePt[1], AliAnalysisNetParticleHelper::fgkfHistRangeSign[1],
127 AliAnalysisNetParticleHelper::fgkfHistRangeEta[1], AliAnalysisNetParticleHelper::fgkfHistRangeRap[1],
128 AliAnalysisNetParticleHelper::fgkfHistRangePhi[1], AliAnalysisNetParticleHelper::fgkfHistRangePt[1],
129 AliAnalysisNetParticleHelper::fgkfHistRangeSign[1],
130 AliAnalysisNetParticleHelper::fgkfHistRangeEta[1], AliAnalysisNetParticleHelper::fgkfHistRangeRap[1],
131 AliAnalysisNetParticleHelper::fgkfHistRangePhi[1], AliAnalysisNetParticleHelper::fgkfHistRangePt[1],
132 AliAnalysisNetParticleHelper::fgkfHistRangeSign[1]+1.};
134 fHnEff = new THnSparseF("hnEff", "cent:etaMC:yMC:phiMC:ptMC:signMC:findable:recStatus:pidStatus:etaRec:yRec:phiRec:ptRec:signRec:deltaEta:deltaY:deltaPhi:deltaPt:deltaSign",
135 19, binHnEff, minHnEff, maxHnEff);
138 fHnEff->GetAxis(0)->SetTitle("centrality"); // 0-5|5-10|10-20|20-30|30-40|40-50|50-60|60-70|70-80|80-90 --> 10 bins
139 fHnEff->GetAxis(1)->SetTitle("#eta_{MC}"); // eta [-0.9, 0.9]
140 fHnEff->GetAxis(2)->SetTitle("#it{y}_{MC}"); // rapidity [-0.5, 0.5]
141 fHnEff->GetAxis(3)->SetTitle("#varphi_{MC} (rad)"); // phi [ 0. , 2Pi]
142 fHnEff->GetAxis(4)->SetTitle("#it{p}_{T,MC} (GeV/#it{c})"); // pT [ 0.2, 2.3]
144 fHnEff->GetAxis(5)->SetTitle("sign"); // -1 | 0 | +1
145 fHnEff->GetAxis(6)->SetTitle("findable"); // 0 not findable | 1 findable
146 fHnEff->GetAxis(7)->SetTitle("recStatus"); // 0 not reconstructed | 1 reconstructed
147 fHnEff->GetAxis(8)->SetTitle("recPid"); // 0 not accepted | 1 accepted
149 fHnEff->GetAxis(9)->SetTitle("#eta_{Rec}"); // eta [-0.9, 0.9]
150 fHnEff->GetAxis(10)->SetTitle("#it{y}_{Rec}"); // rapidity [-0.5, 0.5]
151 fHnEff->GetAxis(11)->SetTitle("#varphi_{Rec} (rad)"); // phi [ 0. , 2Pi]
152 fHnEff->GetAxis(12)->SetTitle("#it{p}_{T,Rec} (GeV/#it{c})"); // pt [ 0.2, 2.3]
153 fHnEff->GetAxis(13)->SetTitle("sign"); // -1 | 0 | +1
155 fHnEff->GetAxis(14)->SetTitle("#eta_{MC}-#eta_{Rec}"); // eta [-0.9, 0.9]
156 fHnEff->GetAxis(15)->SetTitle("#it{y}_{MC}-#it{y}_{Rec}"); // rapidity [-0.5, 0.5]
157 fHnEff->GetAxis(16)->SetTitle("#varphi_{MC}-#varphi_{Rec} (rad)"); // phi [ -2Pi , 2Pi]
158 fHnEff->GetAxis(17)->SetTitle("#it{p}_{T,MC}-#it{p}_{T,Rec} (GeV/#it{c})"); // pt [ -2.3, 2.3]
159 fHnEff->GetAxis(18)->SetTitle("sign_{MC}-sign_{Rec}"); // -2 | 0 | +2
161 fHelper->BinLogAxis(fHnEff, 4);
162 fHelper->BinLogAxis(fHnEff, 12);
165 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
167 creation -> findable -> reconstructed -> pid_TPC+TOF
169 || findable | recStatus | recPid
170 1) all primary probeParticles_MC || - - -
171 2) all findable primary probeParticles_MC || x - -
172 3) all reconstructed primary probeParticles_MC || x x -
173 4) all reconstructed primary probeParticles_MC & recPid_TPC+TOF || x x x
175 <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
178 // ------------------------------------------------------------------
179 // -- Create THnSparse - Cont
180 // ------------------------------------------------------------------
182 Int_t binHnCont[17] = {AliAnalysisNetParticleHelper::fgkfHistNBinsCent, AliAnalysisNetParticleHelper::fgkfHistNBinsEta, // cent | etaMC
183 AliAnalysisNetParticleHelper::fgkfHistNBinsRap, AliAnalysisNetParticleHelper::fgkfHistNBinsPhi, // yMC | phiMC
184 AliAnalysisNetParticleHelper::fgkfHistNBinsPt, AliAnalysisNetParticleHelper::fgkfHistNBinsSign, // ptMC | signMC=contSign
186 AliAnalysisNetParticleHelper::fgkfHistNBinsEta, AliAnalysisNetParticleHelper::fgkfHistNBinsRap, // etaRec | yRec
187 AliAnalysisNetParticleHelper::fgkfHistNBinsPhi, AliAnalysisNetParticleHelper::fgkfHistNBinsPt, // phiRec | ptRec
188 AliAnalysisNetParticleHelper::fgkfHistNBinsSign, // signRec
189 AliAnalysisNetParticleHelper::fgkfHistNBinsEta, AliAnalysisNetParticleHelper::fgkfHistNBinsRap, // deltaEta | deltaY
190 2*AliAnalysisNetParticleHelper::fgkfHistNBinsPhi+1, 2*AliAnalysisNetParticleHelper::fgkfHistNBinsPt+1, // deltaPhi | deltaPt
191 AliAnalysisNetParticleHelper::fgkfHistNBinsSign+2}; // deltaSign
193 Double_t minHnCont[17] = {AliAnalysisNetParticleHelper::fgkfHistRangeCent[0], AliAnalysisNetParticleHelper::fgkfHistRangeEta[0],
194 AliAnalysisNetParticleHelper::fgkfHistRangeRap[0], AliAnalysisNetParticleHelper::fgkfHistRangePhi[0],
195 AliAnalysisNetParticleHelper::fgkfHistRangePt[0], AliAnalysisNetParticleHelper::fgkfHistRangeSign[0],
197 AliAnalysisNetParticleHelper::fgkfHistRangeEta[0], AliAnalysisNetParticleHelper::fgkfHistRangeRap[0],
198 AliAnalysisNetParticleHelper::fgkfHistRangePhi[0], AliAnalysisNetParticleHelper::fgkfHistRangePt[0],
199 AliAnalysisNetParticleHelper::fgkfHistRangeSign[0],
200 AliAnalysisNetParticleHelper::fgkfHistRangeEta[0], AliAnalysisNetParticleHelper::fgkfHistRangeRap[0],
201 -1.*AliAnalysisNetParticleHelper::fgkfHistRangePhi[1], -1.*AliAnalysisNetParticleHelper::fgkfHistRangePt[1],
202 AliAnalysisNetParticleHelper::fgkfHistRangeSign[0]-1.};
205 Double_t maxHnCont[17] = {AliAnalysisNetParticleHelper::fgkfHistRangeCent[1], AliAnalysisNetParticleHelper::fgkfHistRangeEta[1],
206 AliAnalysisNetParticleHelper::fgkfHistRangeRap[1], AliAnalysisNetParticleHelper::fgkfHistRangePhi[1],
207 AliAnalysisNetParticleHelper::fgkfHistRangePt[1], AliAnalysisNetParticleHelper::fgkfHistRangeSign[1],
209 AliAnalysisNetParticleHelper::fgkfHistRangeEta[1], AliAnalysisNetParticleHelper::fgkfHistRangeRap[1],
210 AliAnalysisNetParticleHelper::fgkfHistRangePhi[1], AliAnalysisNetParticleHelper::fgkfHistRangePt[1],
211 AliAnalysisNetParticleHelper::fgkfHistRangeSign[1],
212 AliAnalysisNetParticleHelper::fgkfHistRangeEta[1], AliAnalysisNetParticleHelper::fgkfHistRangeRap[1],
213 AliAnalysisNetParticleHelper::fgkfHistRangePhi[1], AliAnalysisNetParticleHelper::fgkfHistRangePt[1],
214 AliAnalysisNetParticleHelper::fgkfHistRangeSign[1]+1.};
216 fHnCont = new THnSparseF("hnCont", "cent:etaMC:yMC:phiMC:ptMC:signMC:contPart:etaRec:yRec:phiRec:ptRec:signRec:deltaEta:deltaY:deltaPhi:deltaPt:deltaSign",
217 17, binHnCont, minHnCont, maxHnCont);
220 fHnCont->GetAxis(0)->SetTitle("centrality"); // 0-5|5-10|10-20|20-30|30-40|40-50|50-60|60-70|70-80|80-90 --> 10 bins
221 fHnCont->GetAxis(1)->SetTitle("#eta_{MC}"); // eta [-0.9,0.9]
222 fHnCont->GetAxis(2)->SetTitle("#it{y}_{MC}"); // rapidity [-0.5, 0.5]
223 fHnCont->GetAxis(3)->SetTitle("#varphi_{MC} (rad)"); // phi [ 0. ,2Pi]
224 fHnCont->GetAxis(4)->SetTitle("#it{p}_{T,MC} (GeV/#it{c})"); // pT [ 0.2,2.3]
225 fHnCont->GetAxis(5)->SetTitle("sign"); // -1 | 0 | +1
227 fHnCont->GetAxis(6)->SetTitle("contPart"); // 1 pi | 2 K | 3 p | 4 e | 5 mu | 6 other | 7 p from WeakDecay | 8 p from Material
229 fHnCont->GetAxis(7)->SetTitle("#eta_{Rec}"); // eta [-0.9, 0.9]
230 fHnCont->GetAxis(8)->SetTitle("#it{y}_{Rec}"); // rapidity [-0.5, 0.5]
231 fHnCont->GetAxis(9)->SetTitle("#varphi_{Rec} (rad)"); // phi [ 0. , 2Pi]
232 fHnCont->GetAxis(10)->SetTitle("#it{p}_{T,Rec} (GeV/#it{c})"); // pt [ 0.2, 2.3]
233 fHnCont->GetAxis(11)->SetTitle("sign"); // -1 | 0 | +1
235 fHnCont->GetAxis(12)->SetTitle("#eta_{MC}-#eta_{Rec}"); // eta [-0.9, 0.9]
236 fHnCont->GetAxis(13)->SetTitle("#it{y}_{MC}-#it{y}_{Rec}"); // rapidity [-0.5, 0.5]
237 fHnCont->GetAxis(14)->SetTitle("#varphi_{MC}-#varphi_{Rec} (rad)"); // phi [ -2Pi , 2Pi]
238 fHnCont->GetAxis(15)->SetTitle("#it{p}_{T,MC}-#it{p}_{T,Rec} (GeV/#it{c})"); // pt [ -2.3, 2.3]
239 fHnCont->GetAxis(16)->SetTitle("sign_{MC}-sign_{Rec}"); // -2 | 0 | +2
241 fHelper->BinLogAxis(fHnCont, 4);
242 fHelper->BinLogAxis(fHnCont, 10);
247 //________________________________________________________________________
248 Int_t AliAnalysisNetParticleEffCont::Setup() {
249 // -- Setup eventwise
251 // -- Create label arrays
252 fLabelsRec[0] = new Int_t[fNTracks];
254 AliError("Cannot create fLabelsRec[0]");
258 fLabelsRec[1] = new Int_t[fNTracks];
260 AliError("Cannot create fLabelsRec[1] for PID");
264 for(Int_t ii = 0; ii < fNTracks; ++ii) {
265 fLabelsRec[0][ii] = 0;
266 fLabelsRec[1][ii] = 0;
272 //________________________________________________________________________
273 void AliAnalysisNetParticleEffCont::Reset() {
274 // -- Reset eventwise
276 for (Int_t ii = 0; ii < 2 ; ++ii) {
278 delete[] fLabelsRec[ii];
279 fLabelsRec[ii] = NULL;
284 * ---------------------------------------------------------------------------------
286 * ---------------------------------------------------------------------------------
289 //________________________________________________________________________
290 void AliAnalysisNetParticleEffCont::FillMCLabels() {
292 // Loop over ESD tracks and fill arrays with MC lables
293 // fLabelsRec[0] : all Tracks
294 // fLabelsRec[1] : all Tracks accepted by PID of TPC
295 // Check every accepted track if correctly identified
296 // otherwise check for contamination
298 // -- Get ranges for AOD particles
300 fESDTrackCuts->GetEtaRange(etaRange[0],etaRange[1]);
303 fESDTrackCuts->GetPtRange(ptRange[0],ptRange[1]);
306 for (Int_t idxTrack = 0; idxTrack < fNTracks; ++idxTrack) {
308 AliVTrack *track = (fESD) ? static_cast<AliVTrack*>(fESD->GetTrack(idxTrack)) : static_cast<AliVTrack*>(fAOD->GetTrack(idxTrack));
310 // -- Check if track is accepted for basic parameters
311 if (!fHelper->IsTrackAcceptedBasicCharged(track))
314 // -- Check if accepted - ESD
315 if (fESD && !fESDTrackCuts->AcceptTrack(dynamic_cast<AliESDtrack*>(track)))
318 // -- Check if accepted - AOD
320 AliAODTrack * trackAOD = dynamic_cast<AliAODTrack*>(track);
323 AliError("Pointer to dynamic_cast<AliAODTrack*>(track) = ZERO");
326 if (!trackAOD->TestFilterBit(fAODtrackCutBit))
329 // -- Check if in pT and eta range (is done in ESDTrackCuts for ESDs)
330 if(!(track->Pt() > ptRange[0] && track->Pt() <= ptRange[1] && TMath::Abs(track->Eta()) <= etaRange[1]))
334 // -- Check if accepted in rapidity window -- for identified particles
335 // for charged particles -- eta check is done in the trackcuts
337 if (fHelper->GetUsePID() && !fHelper->IsTrackAcceptedRapidity(track, yP))
340 // -- Check if accepted with thighter DCA cuts
341 // -- returns kTRUE for AODs for now : MW
342 if (!fHelper->IsTrackAcceptedDCA(track))
345 Int_t label = TMath::Abs(track->GetLabel());
347 // -- Fill Label of all reconstructed
348 fLabelsRec[0][idxTrack] = label;
350 // -- Check if accepted by PID from TPC or TPC+TOF
352 if (!fHelper->IsTrackAcceptedPID(track, pid))
355 // -- Fill Label of all reconstructed && recPid_TPC+TOF
356 fLabelsRec[1][idxTrack] = label;
358 // -- Check for contamination and fill contamination THnSparse
359 CheckContTrack(track);
361 } // for (Int_t idxTrack = 0; idxTrack < fNTracks; ++idxTrack) {
366 //________________________________________________________________________
367 void AliAnalysisNetParticleEffCont::CheckContTrack(AliVTrack *track) {
368 // Check if particle is contamination or correctly identified for ESDs and AODs
369 // Check for missidentified primaries and secondaries
370 // Fill contamination THnSparse
372 Int_t label = TMath::Abs(track->GetLabel());
373 Float_t signRec = track->Charge();
376 AliVParticle* particle = (fESD) ? fMCEvent->GetTrack(label) : static_cast<AliVParticle*>(fArrayMC->At(label));
380 Bool_t isPhysicalPrimary = (fESD) ? fStack->IsPhysicalPrimary(label): (static_cast<AliAODMCParticle*>(particle))->IsPhysicalPrimary();
382 // -- Check if correctly identified
383 // > return if correctly identified -> all ok, no action neededin this method
384 // > if PID required check -> for the correct (signed pdgcode) particle
385 // > no PID just check for primary
386 if (fHelper->GetUsePID()) {
387 if (particle->PdgCode() == (signRec*fPdgCode))
388 if (isPhysicalPrimary)
392 if (isPhysicalPrimary)
396 // -- Check if secondaries from material or weak decay
397 Bool_t isSecondaryFromWeakDecay = (fESD) ? fStack->IsSecondaryFromWeakDecay(label) : (static_cast<AliAODMCParticle*>(particle))->IsSecondaryFromWeakDecay();
398 Bool_t isSecondaryFromMaterial = (fESD) ? fStack->IsSecondaryFromMaterial(label) : (static_cast<AliAODMCParticle*>(particle))->IsSecondaryFromMaterial();
400 // -- Get PDG Charge of contaminating particle
402 if (particle->Charge() == 0.) signMC = 0.;
403 else if (particle->Charge() < 0.) signMC = -1.;
404 else if (particle->Charge() > 0.) signMC = 1.;
406 // -- Get contaminating particle
407 Float_t contPart = 0;
408 if (isSecondaryFromWeakDecay) contPart = 7; // probeParticle from WeakDecay
409 else if (isSecondaryFromMaterial) contPart = 8; // probeParticle from Material
411 if (TMath::Abs(particle->PdgCode()) == 211) contPart = 1; // pion
412 else if (TMath::Abs(particle->PdgCode()) == 321) contPart = 2; // kaon
413 else if (TMath::Abs(particle->PdgCode()) == 2212) contPart = 3; // proton
414 else if (TMath::Abs(particle->PdgCode()) == 11) contPart = 4; // electron
415 else if (TMath::Abs(particle->PdgCode()) == 13) contPart = 5; // muon
416 else contPart = 6; // other
419 // -- Get Reconstructed y
420 // yRec = y for identified particles | yRec = eta for charged particles
422 fHelper->IsTrackAcceptedRapidity(track, yRec);
424 Double_t deltaPhi = particle->Phi()-track->Phi();
425 if (TMath::Abs(deltaPhi) > TMath::TwoPi()) {
427 deltaPhi += TMath::TwoPi();
429 deltaPhi -= TMath::TwoPi();
433 Double_t hnCont[17] = {fCentralityBin, particle->Eta(), particle->Y(), particle->Phi(), particle->Pt(), signMC,
434 contPart, track->Eta(), yRec, track->Phi(), track->Pt(), signRec,
435 particle->Eta()-track->Eta(), particle->Y()-yRec, deltaPhi, particle->Pt()-track->Pt(), signMC-signRec};
436 fHnCont->Fill(hnCont);
439 //________________________________________________________________________
440 void AliAnalysisNetParticleEffCont::FillMCEffHist() {
441 // Fill efficiency THnSparse for ESDs
444 fESDTrackCuts->GetEtaRange(etaRange[0],etaRange[1]);
446 Int_t nPart = (fESD) ? fStack->GetNprimary() : fArrayMC->GetEntriesFast();
448 for (Int_t idxMC = 0; idxMC < nPart; ++idxMC) {
449 AliVParticle* particle = (fESD) ? fMCEvent->GetTrack(idxMC) : static_cast<AliVParticle*>(fArrayMC->At(idxMC));
451 // -- Check basic MC properties -> charged physical primary
452 if (!fHelper->IsParticleAcceptedBasicCharged(particle, idxMC))
455 // -- Check if accepted in rapidity window -- for identified particles
457 if (fHelper->GetUsePID() && !fHelper->IsParticleAcceptedRapidity(particle, yMC))
460 // -- Check if accepted in eta window -- for charged particles
461 if (!fHelper->GetUsePID() && TMath::Abs(particle->Eta()) > etaRange[1])
464 // -- Check if probeParticle / anti-probeParticle
465 // > skip check if PID is not required
466 if (fHelper->GetUsePID() && TMath::Abs(particle->PdgCode()) != fPdgCode)
469 // -- Get sign of particle
470 Float_t signMC = (particle->PdgCode() < 0) ? -1. : 1.;
472 // -- Get if particle is findable --- not availible for AODs yet
473 Float_t findable = (fESD) ? Float_t(fHelper->IsParticleFindable(idxMC)) : 1.;
475 // -- Get recStatus and pidStatus
476 Float_t recStatus = 0.;
479 // -- Get Reconstructed values
484 Float_t signRec = 0.;
486 // -- Loop over all labels
487 for (Int_t idxRec=0; idxRec < fNTracks; ++idxRec) {
488 if (idxMC == fLabelsRec[0][idxRec]) {
491 if (idxMC == fLabelsRec[1][idxRec])
494 AliVTrack *track = NULL;
496 track = fESD->GetTrack(idxRec);
498 track = fAOD->GetTrack(idxRec);
501 // if no track present (which should not happen)
502 // -> pt = 0. , which is not in the looked at range
504 // -- Get Reconstructed values
505 etaRec = track->Eta();
506 phiRec = track->Phi();
508 signRec = track->Charge();
509 fHelper->IsTrackAcceptedRapidity(track, yRec); // yRec = y for identified particles | yRec = eta for charged particles
513 } // for (Int_t idxRec=0; idxRec < fNTracks; ++idxRec) {
515 Double_t deltaPhi = particle->Phi()-phiRec;
516 if (TMath::Abs(deltaPhi) > TMath::TwoPi()) {
518 deltaPhi += TMath::TwoPi();
520 deltaPhi -= TMath::TwoPi();
524 Double_t hnEff[19] = {fCentralityBin, particle->Eta(), particle->Y(), particle->Phi(), particle->Pt(), signMC,
525 findable, recStatus, recPid, etaRec, yRec, phiRec, ptRec, signRec,
526 particle->Eta()-etaRec, particle->Y()-yRec, deltaPhi, particle->Pt()-ptRec, signMC-signRec};
529 } // for (Int_t idxMC = 0; idxMC < nPart; ++idxMC) {