]> git.uio.no Git - u/mrichter/AliRoot.git/blame - PWGCF/Correlations/DPhi/PidPid/AliAnalysisTaskPidPidCorrelations.h
Merge branch 'feature-movesplit'
[u/mrichter/AliRoot.git] / PWGCF / Correlations / DPhi / PidPid / AliAnalysisTaskPidPidCorrelations.h
CommitLineData
eaf380ae 1#ifndef ALIANALYSISTASKPIDPIDCORRELATION_H
2#define ALIANALYSISTASKPIDPIDCORRELATION_H
3
4/* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
5 * See cxx source for full Copyright notice */
6
7#include "TROOT.h"
8#include "TSystem.h"
9#include "TFile.h"
10#include "TString.h"
11#include "TAxis.h"
12#include "TClonesArray.h"
13#include "TList.h"
14#include "TObjArray.h"
15
16#ifndef ALIANALYSISTASKSE_H
17#include "AliAnalysisTaskSE.h"
18#endif
19
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"
32#include "AliPID.h"
33#include "AliPIDResponse.h"
34#include "AliPIDCombined.h"
35#include "AliInputEventHandler.h" // event mixing
36#include "AliEventPoolManager.h" // event mixing
37#include "AliLog.h"
38#include "AliPIDResponse.h"
39#include "AliPIDCombined.h"
40
41#include "AliCFContainer.h"
42// #include "AliCFGridSparse.h"
43// #include "AliCFEffGrid.h"
44// #include "AliCFManager.h"
45// #include "AliCFCutBase.h"
46
47#include "TH1F.h"
48#include "TH2F.h"
49
50#include "THnSparse.h"
51// #include "AliTHn.h"
52
53class TList;
54class TH1F;
55class TH2F;
56// class AliTHn;
57class AliCFContainer;
58// class AliCFGridSparse;
59// class AliCFEffGrid;
60// class AliCFCutBase;
61// class AliCFManager;
62class AliPIDResponse;
63
64#include <vector>
65using std::vector;
66
67// const Int_t kTrackVariablesSingle = 4+1; // track variables in histogram (particle type, pTtrig, vertexZ, centrality)
68const Int_t kTrackVariablesPair = 5; // track variables in histogram (particle type trig, particle type assoc, pTtrig, ptAssociated, dPhi, dEta, vertexZ, centrality)
69
70namespace myAliPID {
71
acb677e4 72 //enum PIDType { kMyNSigmaITS=0, kMyNSigmaTPC, kMyNSigmaTOF, kMyNSigmaHMP, kMyNSigmaTPCTOF, kMyNSigmaPIDType = kMyNSigmaTPCTOF };
73 enum PIDType { kMyNSigmaITS=0, kMyNSigmaTPC, kMyNSigmaTOF, kMyNSigmaHMP, kMyNSigmaPIDType };
eaf380ae 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 };
76}
77
78using namespace myAliPID;
79
80class AliAnalysisTaskPidPidCorrelations : public AliAnalysisTaskSE { //
81
82 public:
83
84 AliAnalysisTaskPidPidCorrelations();
85 AliAnalysisTaskPidPidCorrelations(const Char_t* name/* = "AliAnalysisTaskPidPidCorrelations"*/);
86 virtual ~AliAnalysisTaskPidPidCorrelations();
87
88 //___ Implementation of interface methods
89 virtual void UserCreateOutputObjects();
90 virtual void UserExec(Option_t* option);
91 virtual void Terminate(Option_t* option);
92
93 // Setters/Getters
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;}
103
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; }
118
119 void SetPIDsToCorrelate(Int_t triggerPID, Int_t assocPID) { fPIDtrigType = triggerPID; fPIDassocType = assocPID; }
120
121 void SetMC(Bool_t isMC) {fUseMC = isMC;}
122 Bool_t GetMC() const {return fUseMC;}
123
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);
132
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)
137/*
138 //_______ AliTHn
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();}
145*/
146 //AliTHn* MakeHistCorr(const Char_t* name) const;
147
148 void UseMomentumDifferenceCut(Bool_t fqcut = kFALSE,Double_t gDeltaPtCutMin = 0.01) { fQCut = fqcut; fDeltaPtMin = fqcut ? gDeltaPtCutMin : 0.; }
149 void SetupForMixing();
150 void AddSettingsTree();
151 void Analyse();
152
acb677e4 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);
eaf380ae 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);
acb677e4 160 TObjArray* AcceptTracks(Int_t centBin, TObject* arrayMC, /*Bool_t onlyprimaries,*/ Bool_t useCuts);
eaf380ae 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;
184
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*/);
191
192 private:
193
194 AliAnalysisTaskPidPidCorrelations(const AliAnalysisTaskPidPidCorrelations&); // not implemented
195 AliAnalysisTaskPidPidCorrelations& operator=(const AliAnalysisTaskPidPidCorrelations&); // not implemented
196
197 Bool_t fUseMC;
198
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; //!
209
210 TObjArray* fMyprimRecoTracksPID; //!
211 TObjArray* fMyprimMCParticlesPID; //!
212 TObjArray* fMyprimRecoTracksMatchedPID; //!
213
214
215// Bool_t fWriteCorrTree;
216// TTree* fVariablesTreeCorr;
217// Float_t* fCorrVariables;
218
219 Int_t fTriggerType; // sets trigger -> AliVEvent::kMB, AliVEvent::kHighMult
220 Int_t fMyMcType ;//
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;
226 Int_t fNbinsCent;
227 TAxis* fCentAxis; //
228 Int_t fNbinsZvtx;
229 TAxis* fZvtxAxis; //
230 Int_t fNbinsPt;
231 TAxis* fPtAxis; //
232 Int_t fNbinsEta;
233 TAxis* fEtaAxis; //
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)
242 Double_t fEtaCut;
243 Double_t fVxMax;
244 Double_t fVyMax;
245 Double_t fVzMax;
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)
248
249 Double_t fDeltaEtaMax; // maximum delta eta for output THnSparse
250
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
263
264 Int_t fPIDtrigType; // PID trigger type to correlate
265 Int_t fPIDassocType; // PID assoc type to correlate
266
267 TString fCustomBinning;//for setting customized binning
268 TString fBinningString;//final binning string
269
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; //
273
274 Bool_t fFillpT;
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)
280
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;
285
286 TList* fList; //
287
288 TH1F* fHistQA[fNMaxBinsCentrality][14]; //!
289 TH1I* fHistNev;//!
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
299 TH2F* fHistV0M; //!
300
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]; //!
311
312 //____ MC
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; //!
324
325 //____ Correlation
326// AliTHn* fHistCorrSingle;
327// AliTHn* fHistCorrPairSame;
328// AliTHn* fHistCorrPairMixed;
329// THnSparseD* fHistCorrSingle;
330 THnSparseD* fHistCorrPair[2]; //!
331
332// THnSparseD* fHistPoolMgrQA;
333
334
335 TH2F* fHistControlConvResoncances; //!
336
337 TH1D* fHistTriggerWeighting; //!
338 TAxis* fTriggerWeighting;
339
340 TH2F* fHistTwoTrackDistancePt[fNMaxBinsPt][2];
341
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
353
354
355 TH2F* fHistoNSigma[fNMaxBinsCentrality]; //!
356 Double_t nsigmaITS[fPartNSpeciesQA];
357 Double_t nsigmaTPC[fPartNSpeciesQA];
358 Double_t nsigmaTOF[fPartNSpeciesQA];
359 Double_t nsigmaHMPID[fPartNSpeciesQA];
360
acb677e4 361 Double_t fnsigmas[fPartNSpeciesQA][kMyNSigmaPIDType]; // nsigma values
eaf380ae 362
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
367
368 TH2F* fHistNSigmaTPC[fNMaxBinsCentrality][AliPID::kSPECIES]; //! nsigma TPC
369 TH2F* fHistNSigmaTOF[fNMaxBinsCentrality][AliPID::kSPECIES]; //! nsigma TOF
370
371 ClassDef(AliAnalysisTaskPidPidCorrelations, 1);
372};
373
374//_____ Reduced Tracks -- contains only quantities requires for this analysis to reduce memory consumption for event mixing
375class AliPidPidCorrelationReducedTrack : public AliVParticle // TObject
376{
377 public:
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)
380 {
381 }
382 ~AliPidPidCorrelationReducedTrack() {}
383
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; }
403
404 // void Print() { Printf(Form("Reduced track, eta: %lf phi: %lf pt: %lf p: %lf", fEtaReduced, fPhiReduced, fPtReduced, fPReduced)); }
405
406 //________ PID
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; }
412
413 private:
414
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
420
421 ClassDef(AliPidPidCorrelationReducedTrack, 1); // reduced track class which contains only quantities requires for this analysis to reduce memory consumption for event mixing
422};
423
424#endif