1 #ifndef ALIANALYSISTASKPIDPIDCORRELATION_H
2 #define ALIANALYSISTASKPIDPIDCORRELATION_H
4 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
5 * See cxx source for full Copyright notice */
12 #include "TClonesArray.h"
14 #include "TObjArray.h"
16 #ifndef ALIANALYSISTASKSE_H
17 #include "AliAnalysisTaskSE.h"
20 #include "AliAODEvent.h"
21 #include "AliVTrack.h"
22 #include "AliAODTrack.h"
23 #include "AliAODMCHeader.h"
24 #include "AliAODMCParticle.h"
25 #include "AliMCEvent.h"
26 #include "AliMCEventHandler.h"
27 #include "AliAODVertex.h"
28 #include "AliCentrality.h"
29 #include "AliAODHeader.h"
30 #include "AliVParticle.h"
31 #include "AliVVertex.h"
33 #include "AliPIDResponse.h"
34 #include "AliPIDCombined.h"
35 #include "AliInputEventHandler.h" // event mixing
36 #include "AliEventPoolManager.h" // event mixing
38 #include "AliPIDResponse.h"
39 #include "AliPIDCombined.h"
41 #include "AliCFContainer.h"
42 // #include "AliCFGridSparse.h"
43 // #include "AliCFEffGrid.h"
44 // #include "AliCFManager.h"
45 // #include "AliCFCutBase.h"
50 #include "THnSparse.h"
51 // #include "AliTHn.h"
58 // class AliCFGridSparse;
59 // class AliCFEffGrid;
60 // class AliCFCutBase;
61 // class AliCFManager;
67 // const Int_t kTrackVariablesSingle = 4+1; // track variables in histogram (particle type, pTtrig, vertexZ, centrality)
68 const Int_t kTrackVariablesPair = 5; // track variables in histogram (particle type trig, particle type assoc, pTtrig, ptAssociated, dPhi, dEta, vertexZ, centrality)
72 //enum PIDType { kMyNSigmaITS=0, kMyNSigmaTPC, kMyNSigmaTOF, kMyNSigmaHMP, kMyNSigmaTPCTOF, kMyNSigmaPIDType = kMyNSigmaTPCTOF };
73 enum PIDType { kMyNSigmaITS=0, kMyNSigmaTPC, kMyNSigmaTOF, kMyNSigmaHMP, kMyNSigmaPIDType };
74 enum AliParticleSpeciesQA { fPartElectronQA=0, fPartMuonQA, fPartPionQA, fPartKaonQA, fPartProtonQA, fPartNSpeciesQA, fPartUndefinedQA = 999 };
75 enum AliParticleSpecies { fPartPionMinus=1, fPartPionPlus, fPartKaonMinus, fPartKaonPlus, fPartProtonMinus, fPartProtonPlus, fPartHadronMinus, fPartHadronPlus, fPartNSpecies, fPartUndefined = 999 };
78 using namespace myAliPID;
80 class AliAnalysisTaskPidPidCorrelations : public AliAnalysisTaskSE { //
84 AliAnalysisTaskPidPidCorrelations();
85 AliAnalysisTaskPidPidCorrelations(const Char_t* name/* = "AliAnalysisTaskPidPidCorrelations"*/);
86 virtual ~AliAnalysisTaskPidPidCorrelations();
88 //___ Implementation of interface methods
89 virtual void UserCreateOutputObjects();
90 virtual void UserExec(Option_t* option);
91 virtual void Terminate(Option_t* option);
94 void SetMaxVertexZ(Double_t maxVertexZ) { fVzMax = maxVertexZ; }
95 void SetTriggerMask(Int_t triggerType) { fTriggerType = triggerType; }
96 // void SetFilterBit(Int_t fbit) { fFilterBit = fbit; }
97 void SetCentralityEstimator(const Char_t* centralityestimator) { fCentralityEstimator = centralityestimator; }
98 void SetCentralityRange(Float_t min, Float_t max) { fCentralityPercentileMin = min; fCentralityPercentileMax = max; }
99 // void SetEtaRange(Double_t etaMin, Double_t etaMax) { fTrackEtaMin = etaMin; fTrackEtaMax = etaMax; }
100 void SetVertexDiamond(Double_t vx, Double_t vy, Double_t vz) { fVxMax = vx; fVyMax = vy; fVzMax = vz;}
101 void SetKinematicsCutsAOD(Double_t ptmin, Double_t ptmax, Double_t etamin, Double_t etamax) { fTrackPtMin = ptmin; fTrackPtMax = ptmax; fTrackEtaMin = etamin; fTrackEtaMax = etamax; }
102 //void SetFilterMask(UInt_t i,Int_t iType = 0){fFilterMask = i;fFilterType = iType;}
104 void SetMixingTracks(Int_t tracks, Int_t poolsize) { fMinNumTrack = tracks; fPoolSize = poolsize;}
105 void SetFillpT(Bool_t flag) { fFillpT = flag; }
106 void SetTwoTrackEfficiencyCut(Float_t value = 0.02, Float_t min = 0.8) { twoTrackEfficiencyCutValue = value; fTwoTrackCutMinRadius = min; }
107 void SetPairCuts(Bool_t conversions, Bool_t resonances) { fCutConversions = conversions; fCutResonances = resonances; }
108 void SetWeightPerEvent(Bool_t flag = kTRUE) { fWeightPerEvent = flag; }
109 void SetPtOrder(Bool_t flag) { fPtOrder = flag; }
110 void SetEtaOrdering(Bool_t flag) { fEtaOrdering = flag; }
111 void SetEventMixing(Bool_t flag) { fFillMixed = flag; }
112 void SetRejectResonanceDaughters(Int_t value) { fRejectResonanceDaughters = value; }
113 void SetSelectCharge(Int_t selectCharge) { fSelectCharge = selectCharge; }
114 void SetSelectTriggerCharge(Int_t selectCharge) { fTriggerSelectCharge = selectCharge; }
115 void SetSelectAssociatedCharge(Int_t selectCharge) { fAssociatedSelectCharge = selectCharge; }
116 void SetTriggerRestrictEta(Float_t eta) { fTriggerRestrictEta = eta; }
117 void SetOnlyOneEtaSide(Int_t flag) { fOnlyOneEtaSide = flag; }
119 void SetPIDsToCorrelate(Int_t triggerPID, Int_t assocPID) { fPIDtrigType = triggerPID; fPIDassocType = assocPID; }
121 void SetMC(Bool_t isMC) {fUseMC = isMC;}
122 Bool_t GetMC() const {return fUseMC;}
124 void SetCentBinning(Int_t nBins, Double_t* limits);
125 Int_t GetCentBin(Double_t centrality);
126 void SetZvtxBinning(Int_t nBins, Double_t* limits);
127 Int_t GetZvtxBin(Double_t zvtx);
128 void SetPtBinning(Int_t nBins, Double_t* limits);
129 Int_t GetPtBin(Double_t valPt);
130 void SetEtaBinning(Int_t nBins, Double_t *limits);
131 Int_t GetEtaBin(Double_t valEta);
133 TString GetCentralityEstimator() const { return fCentralityEstimator; }
134 Double_t GetMaxVertexZ() const { return fVzMax; }
135 // Int_t GetMyFilterBit() { return fFilterBit; }
136 // Double_t* GetNSigmas(AliParticleSpecies species) { return fnsigmas[species]; } // get nsigma[ipart][idet], calculated in CalculateNSigmas(trk)
139 AliTHn* GetHistCorrSingle() {return fHistCorrSingle;}
140 void SetHistCorrSingle(AliTHn *gHist) { fHistCorrSingle = gHist; }//fHistP->FillParent(); fHistP->DeleteContainers();}
141 AliTHn* GetHistCorrPairSame() {return fHistCorrPairSame;}
142 void SetHistCorrPairSame(AliTHn *gHist) { fHistCorrPairSame = gHist; }//fHistN->FillParent(); fHistN->DeleteContainers();}
143 AliTHn* GetHistCorrPairMixed() {return fHistCorrPairMixed;}
144 void SetHistCorrPairMixed(AliTHn *gHist) { fHistCorrPairMixed = gHist; }//fHistN->FillParent(); fHistN->DeleteContainers();}
146 //AliTHn* MakeHistCorr(const Char_t* name) const;
148 void UseMomentumDifferenceCut(Bool_t fqcut = kFALSE,Double_t gDeltaPtCutMin = 0.01) { fQCut = fqcut; fDeltaPtMin = fqcut ? gDeltaPtCutMin : 0.; }
149 void SetupForMixing();
150 void AddSettingsTree();
153 void FillCorrelations(TObjArray* particles, TObjArray* particlesMixed, Double_t centrality, Double_t zVtx, Double_t bSign, Bool_t twoTrackEfficiencyCut, Double_t twoTrackEfficiencyCutValue, /*Int_t step,*/ Double_t weight);
154 Bool_t CheckMcDistributions(TClonesArray* arrayMC, AliAODMCHeader* mcHeader);
155 TString GetGenerator(Int_t label, AliAODMCHeader* MCheader);
156 Bool_t IsFromHijingBg(Int_t mcTrackLabel);
157 void FillMcGeneratorHistos(TString genLabel);
158 Bool_t VertexSelection(TObject* obj, Int_t ntracks, Int_t centBin, Double_t gVxMax, Double_t gVyMax, Double_t gVzMax);
159 void CleanUp(TObjArray* tracks, TObject* mcObj);
160 TObjArray* AcceptTracks(Int_t centBin, TObject* arrayMC, /*Bool_t onlyprimaries,*/ Bool_t useCuts);
161 TObjArray* AcceptMcTracks(Int_t centBin, Bool_t onlyprimaries, Bool_t useCuts);
162 TObjArray* AcceptMcRecoMachedTracks(Int_t centBin, Bool_t onlyprimaries, Bool_t useCuts);
163 Double_t* GetBinning(const Char_t* configuration, const Char_t* tag, Int_t& nBins);
164 Bool_t CheckTrack(AliAODTrack* track);
165 void CalculateNSigmas(AliAODTrack* track, Int_t centBin, Bool_t* pidFlag, Bool_t fillQA);
166 Int_t FindNSigma(AliAODTrack* track);
167 Int_t GetParticleID(AliVTrack* trk, Int_t centbin, Bool_t fillQA); // DATA and MC-reco
168 Int_t GetParticleIDMC(AliVTrack* trk, Int_t centbin, Bool_t fillQA); // MC-truth
169 Double_t MakeTPCPID(AliAODTrack* track, Double_t* nSigma);
170 Double_t MakeTOFPID(AliAODTrack* track, Double_t* nSigma);
171 Bool_t HasTPCPID(AliAODTrack* track) const;
172 Bool_t HasTOFPID(AliAODTrack* track) const;
173 Double_t GetBeta(AliAODTrack* track);
174 void RemoveDuplicates(TObjArray* tracks);
175 void RemoveWeakDecays(TObjArray* tracks, TObject* mcObj);
176 Double_t DeltaPhi(Double_t Dphi) const;
177 TH2F* GetHisto2D(const Char_t* name);
178 Double_t GetDPhiStar(Double_t phi1, Double_t pt1, Double_t charge1, Double_t phi2, Double_t pt2, Double_t charge2, Double_t radius, Double_t bSign);
179 Float_t GetInvMassSquared(Float_t pt1, Float_t eta1, Float_t phi1, Float_t pt2, Float_t eta2, Float_t phi2, Float_t m0_1, Float_t m0_2);
180 Float_t GetInvMassSquaredCheap(Float_t pt1, Float_t eta1, Float_t phi1, Float_t pt2, Float_t eta2, Float_t phi2, Float_t m0_1, Float_t m0_2);
181 void PrintPoolManagerContents();
182 TObjArray* CloneAndReduceTrackList(TObjArray* tracks);
183 TString GetOutputListName() const;
185 //___________ Correction
186 enum ECorrStep { kStepGen = 0, kStepRec, kStepRecMatch, kNsteps };
187 // enum ECorrVars { kVarEta, kVarPhi, kVarPt, kVarPID, kVarCent, kVarZvtx, kNvars };
188 // enum ECorrVars { kVarEta, kVarPhi, kVarPt, kVarZvtx, kNvars };
189 enum ECorrVars { kVarEta, kVarPt, kVarPID, kVarCent, kVarZvtx, kNvars };
190 void FillCFcontainers(TObjArray* mca, TObjArray* rec, TObjArray* recmatch, Double_t cent/*, Double_t zvtx*/);
194 AliAnalysisTaskPidPidCorrelations(const AliAnalysisTaskPidPidCorrelations&); // not implemented
195 AliAnalysisTaskPidPidCorrelations& operator=(const AliAnalysisTaskPidPidCorrelations&); // not implemented
199 AliAODEvent* fMyAODEvent; //!
200 AliAODHeader* fMyAODHeader; //!
201 AliAODTrack* fMyAODTrack; //!
202 AliPIDResponse* fPIDResponse; //! PID response object
203 AliAODVertex* fMyPrimVtx; //!
204 TClonesArray* fMyMcArray; //!
205 AliAODMCHeader* fMyMcHeader; //!
206 AliMCEventHandler* fMyMcHandler; //!
207 AliEventPoolManager* fPoolMgr; //!
208 AliCFContainer* fMyCFCont; //!
210 TObjArray* fMyprimRecoTracksPID; //!
211 TObjArray* fMyprimMCParticlesPID; //!
212 TObjArray* fMyprimRecoTracksMatchedPID; //!
215 // Bool_t fWriteCorrTree;
216 // TTree* fVariablesTreeCorr;
217 // Float_t* fCorrVariables;
219 Int_t fTriggerType; // sets trigger -> AliVEvent::kMB, AliVEvent::kHighMult
221 // Int_t fFilterBit; // track selection cuts
222 UInt_t fFilterType; // filter type 0 = all, 1 = ITSTPC, 2 = TPC
223 Double_t fCentrality;//
224 Double_t fCentralityPercentileMin;
225 Double_t fCentralityPercentileMax;
234 TString fCentralityEstimator; // Method to determine the centrality, e.g. "V0M","TRK","TKL","ZDC","FMD", "CL0", "CL1"
235 Double_t fTrackEtaMin;
236 Double_t fTrackEtaMax;
237 Double_t fTrackPtMin;
238 Double_t fTrackPtMax;
239 UInt_t fTrackStatus; // if non-0, the bits set in this variable are required for each track
240 Int_t fnTracksVertex; // QA tracks pointing to principal vertex
241 Bool_t fRejectZeroTrackEvents; // reject events which have no tracks (using the eta, pT cuts defined)
246 Bool_t fRemoveWeakDecays; // remove secondaries from weak decays from tracks and particles
247 Bool_t fRemoveDuplicates; // remove particles with the same label (double reconstruction)
249 Double_t fDeltaEtaMax; // maximum delta eta for output THnSparse
251 Int_t fSelectCharge; // (un)like sign selection when building correlations: 0: no selection; 1: unlike sign; 2: like sign
252 Int_t fTriggerSelectCharge; // select charge of trigger particle: 1: positive; -1 negative
253 Int_t fAssociatedSelectCharge; // select charge of associated particle: 1: positive; -1 negative
254 Float_t fTriggerRestrictEta; // restrict eta range for trigger particle (default: -1 [off])
255 Bool_t fCutConversions; // cut on conversions (inv mass)
256 Bool_t fCutResonances; // cut on resonances (inv mass)
257 Int_t fRejectResonanceDaughters; // reject all daughters of all resonance candidates (1: test method (cut at m_inv=0.9); 2: k0; 3: lambda)
258 Int_t fOnlyOneEtaSide; // decides that only trigger particle from one eta side are considered (0 = all; -1 = negative, 1 = positive)
259 Bool_t fWeightPerEvent; // weight with the number of trigger particles per event
260 Bool_t fPtOrder; // apply pT,a < pt,t condition; default: kTRUE
261 Bool_t fQCut; //cut on momentum difference to suppress femtoscopic effect correlations
262 Double_t fDeltaPtMin; //delta pt cut: minimum value
264 Int_t fPIDtrigType; // PID trigger type to correlate
265 Int_t fPIDassocType; // PID assoc type to correlate
267 TString fCustomBinning;//for setting customized binning
268 TString fBinningString;//final binning string
270 Int_t fMinNumTrack; // AliEventPoolManager(), Size of track buffer for event mixing (number of tracks to fill the pool)
271 Int_t fPoolSize; // AliEventPoolManager(), max number of event to mix
272 Int_t fMinNEventsToMix; //
275 Float_t fTwoTrackEfficiencyCut; // enable two-track efficiency cut
276 Float_t twoTrackEfficiencyCutValue; // set it 0.02 as default in dphicorrelations
277 Float_t fTwoTrackCutMinRadius; // minimum radius for two-track efficiency cut
278 Bool_t fEtaOrdering; // eta ordering, see AliUEHistograms.h for documentation
279 Bool_t fFillMixed; // enable event mixing (default: ON)
281 static const Int_t fNMaxBinsCentrality = 1;
282 static const Int_t fNMaxBinsZvtx = 15;
283 static const Int_t fNMaxBinsPt = 9;
284 static const Int_t fNMaxBinsEta = 25;
288 TH1F* fHistQA[fNMaxBinsCentrality][14]; //!
290 TH1F* fHistTriggerStats; //!
291 TH1F* fHistTriggerRun; //!
292 TH1F* fHistEventStat; //!
293 TH2F* fHistRefTracks; //!
294 TH2F* fHistRefTracksCent[fNMaxBinsCentrality][6];//!
295 TH2F* fHistCentStats; //!
296 TH1F* fHistCentralityPercentile; //! centrality class
297 TH1F* fHistCentralityClass10; //! centrality class by 10
298 TH1F* fHistCentralityClass5; //! centrality class by 5
301 // TH1F* fHistDeltaPhi[fNMaxBinsCentrality][fNMaxBinsPt][fNMaxBinsPt]; //!
302 // TH1F* fHistDeltaPhiMix[fNMaxBinsCentrality][fNMaxBinsPt][fNMaxBinsPt]; //!
303 // TH2F* fHistDphiDeta[fNMaxBinsCentrality][fNMaxBinsPt][fNMaxBinsPt]; //!
304 // TH2F* fHistDphiDetaMix[fNMaxBinsCentrality][fNMaxBinsPt][fNMaxBinsPt]; //!
305 TH2F* fHistTracksEtaTrigVsEtaAssoc[fNMaxBinsCentrality]; //!
306 TH2F* fHistTracksEtaTrigVsEtaAssocMixed[fNMaxBinsCentrality]; //!
307 TH1F* fHistSingleHadronsPt[fNMaxBinsCentrality]; //!
308 // TH1F* fHistSingleHadronsPt_Mixed[fNMaxBinsCentrality]; //!
309 TH2F* fHistSingleHadronsEtaPt[fNMaxBinsCentrality]; //!
310 // TH2F* fHistSingleHadronsEtaPt_Mixed[fNMaxBinsCentrality]; //!
313 TH1F* fHistMcGenerator; //!
314 TH1F* fHist_HijingBg; //!
315 TH1F* fHistNumOfPartPerEvt; //!
316 TH1F* fHistMcStats; //!
317 TH1F* fHistMcAllPt; //!
318 TH1F* fHistMcAllPt_Hijing; //!
319 TH1F* fHistMcAllPt_Dec; //!
320 TH1F* fHistMcAllPt_Inj; //!
321 TH1F* fHistMcAllEta_NotHijing; //!
322 TH1F* fHistMcAllEta_Hijing; //!
323 TH1F* fHistMcAllEta; //!
326 // AliTHn* fHistCorrSingle;
327 // AliTHn* fHistCorrPairSame;
328 // AliTHn* fHistCorrPairMixed;
329 // THnSparseD* fHistCorrSingle;
330 THnSparseD* fHistCorrPair[2]; //!
332 // THnSparseD* fHistPoolMgrQA;
335 TH2F* fHistControlConvResoncances; //!
337 TH1D* fHistTriggerWeighting; //!
338 TAxis* fTriggerWeighting;
340 TH2F* fHistTwoTrackDistancePt[fNMaxBinsPt][2];
342 TH2F* fHistHBTbefore; //! Delta Eta vs. Delta Phi before HBT inspired cuts
343 TH2F* fHistHBTafter; //! Delta Eta vs. Delta Phi after HBT inspired cuts
344 // TH2F* fHistConversionbefore; //! Delta Eta vs. Delta Phi before Conversion cuts
345 // TH2F* fHistConversionafter; //! Delta Eta vs. Delta Phi before Conversion cuts
346 // TH2F* fHistPsiMinusPhi;//! psi - phi QA histogram
347 // TH3D* fHistResonancesBefore; //! 3D histogram (Deta,Dphi,Invmass) before resonance cuts
348 // TH3D* fHistResonancesRho; //! 3D histogram (Deta,Dphi,Invmass) after removing rho
349 // TH3D* fHistResonancesK0; //! 3D histogram (Deta,Dphi,Invmass) after removing rho, K0
350 // TH3D* fHistResonancesLambda; //! 3D histogram (Deta,Dphi,Invmass) after removing rho, K0, and Lambda
351 // TH3D* fHistQbefore; //! Delta Eta vs. Delta Phi before cut on momentum difference
352 // TH3D* fHistQafter; //! Delta Eta vs. Delta Phi after cut on momentum difference
355 TH2F* fHistoNSigma[fNMaxBinsCentrality]; //!
356 Double_t nsigmaITS[fPartNSpeciesQA];
357 Double_t nsigmaTPC[fPartNSpeciesQA];
358 Double_t nsigmaTOF[fPartNSpeciesQA];
359 Double_t nsigmaHMPID[fPartNSpeciesQA];
361 Double_t fnsigmas[fPartNSpeciesQA][kMyNSigmaPIDType]; // nsigma values
363 TH2F* fHistTPCdEdx[fNMaxBinsCentrality]; //! TPC dEdx
364 TH2F* fHistTOFbeta[fNMaxBinsCentrality]; //! TOF beta
365 TH2F* fHistTPCdEdx_selected[fNMaxBinsCentrality]; //! TPC dEdx
366 TH2F* fHistTOFbeta_selected[fNMaxBinsCentrality]; //! TOF beta
368 TH2F* fHistNSigmaTPC[fNMaxBinsCentrality][AliPID::kSPECIES]; //! nsigma TPC
369 TH2F* fHistNSigmaTOF[fNMaxBinsCentrality][AliPID::kSPECIES]; //! nsigma TOF
371 ClassDef(AliAnalysisTaskPidPidCorrelations, 1);
374 //_____ Reduced Tracks -- contains only quantities requires for this analysis to reduce memory consumption for event mixing
375 class AliPidPidCorrelationReducedTrack : public AliVParticle // TObject
378 AliPidPidCorrelationReducedTrack(Int_t partID, Double_t eta, Double_t phi, Double_t pt, Short_t charge)
379 : fParticleIDReduced(partID), fEtaReduced(eta), fPhiReduced(phi), fPtReduced(pt), fChargeReduced(charge)
382 ~AliPidPidCorrelationReducedTrack() {}
384 // AliVParticle functions
385 virtual Double_t Px() const { AliFatal("Not implemented"); return 0; }
386 virtual Double_t Py() const { AliFatal("Not implemented"); return 0; }
387 virtual Double_t Pz() const { AliFatal("Not implemented"); return 0; }
388 virtual Double_t Pt() const { return fPtReduced; }
389 virtual Double_t P() const { AliFatal("Not implemented"); return 0; }
390 virtual Bool_t PxPyPz(Double_t[3]) const { AliFatal("Not implemented"); return 0; }
391 virtual Double_t Xv() const { AliFatal("Not implemented"); return 0; }
392 virtual Double_t Yv() const { AliFatal("Not implemented"); return 0; }
393 virtual Double_t Zv() const { AliFatal("Not implemented"); return 0; }
394 virtual Bool_t XvYvZv(Double_t[3]) const { AliFatal("Not implemented"); return 0; }
395 virtual Double_t OneOverPt() const { AliFatal("Not implemented"); return 0; }
396 virtual Double_t Phi() const { return fPhiReduced; }
397 virtual Double_t Theta() const { AliFatal("Not implemented"); return 0; }
398 virtual Double_t E() const { AliFatal("Not implemented"); return 0; }
399 virtual Double_t M() const { AliFatal("Not implemented"); return 0; }
400 virtual Double_t Eta() const { return fEtaReduced; }
401 virtual Double_t Y() const { AliFatal("Not implemented"); return 0; }
402 virtual Short_t Charge() const { return fChargeReduced; }
404 // void Print() { Printf(Form("Reduced track, eta: %lf phi: %lf pt: %lf p: %lf", fEtaReduced, fPhiReduced, fPtReduced, fPReduced)); }
407 Int_t GetMyPartID() const { return fParticleIDReduced; }
408 virtual Bool_t IsEqual(const TObject* obj) const { return (obj->GetUniqueID() == GetUniqueID()); }
409 virtual Int_t GetLabel() const { AliFatal("Not implemented"); return 0; }
410 virtual Int_t PdgCode() const { AliFatal("Not implemented"); return 0; }
411 virtual const Double_t* PID() const { AliFatal("Not implemented"); return 0; }
415 Int_t fParticleIDReduced; // particle ID
416 Double_t fEtaReduced; // eta
417 Double_t fPhiReduced; // phi
418 Double_t fPtReduced; // pT
419 Short_t fChargeReduced; // charge
421 ClassDef(AliPidPidCorrelationReducedTrack, 1); // reduced track class which contains only quantities requires for this analysis to reduce memory consumption for event mixing