Update from Prabhat and Debojit
[u/mrichter/AliRoot.git] / PWGCF / Correlations / DPhi / TriggerPID / AliTwoParticlePIDCorr.h
CommitLineData
59bf0a70 1#ifndef ALITWOPARTICLEPIDCORR_H
2#define ALITWOPARTICLEPIDCORR_H
3
4#include "THn.h" // in cxx file causes .../THn.h:257: error: conflicting declaration ‘typedef class THnT<float> THnF’
5
349d46ce 6
59bf0a70 7class TH1F;
8class TH2F;
9class TH3F;
10class THnSparse;
11class TString;
12class TList;
13//class AliESDtrackCuts;
14class TSeqCollection;
15class AliPIDResponse;
16class AliAODEvent;
17class AliAODTrack;
18class AliAODVertex;
19class AliEventPoolManager;
20class TFormula;
e09e26cf 21class AliAnalysisUtils;
59bf0a70 22class LRCParticlePID;
23class AliVParticle;
83cdcf92 24class AliCFContainer;
25class AliCFGridSparse;
26class THnBase;
27class AliTHn;
59bf0a70 28
29
30#include <TObject.h> //LRCParticlePID is a derived class from"TObject"
31#include "TMath.h"
32#include "TNamed.h"
33#include "AliUEHist.h"
34#include "AliPID.h"
35#include "AliAnalysisTask.h"
36#include "AliUEHist.h"
37#include "TString.h"
38#include "AliVParticle.h"
39#include "TParticle.h"
40#include "AliLog.h"
83cdcf92 41#include "AliTHn.h"
42
59bf0a70 43
44
45#ifndef ALIANALYSISTASKSE_H
46#include "AliAnalysisTaskSE.h"
47#endif
48
49namespace AliPIDNameSpace {
50
51 enum PIDType
52 {
53 NSigmaTPC = 0,
54 NSigmaTOF,
55 NSigmaTPCTOF, // squared sum
56 NSigmaPIDType=NSigmaTPCTOF
57 };
58
59 enum AliDetectorType
60 {
83cdcf92 61 fITS = 0,
62 fTPC,
63 fTOF,
64 fNDetectors
59bf0a70 65 };
66
67
68 enum AliParticleSpecies
69 {
70 SpPion = 0,
71 SpKaon,
72 SpProton,
f2fc55fd 73 unidentified,
74 NSpecies=unidentified,
59bf0a70 75 SpUndefined=999
76 }; // Particle species used in plotting
77
78
79 enum AliCharge
80 {
81 Posch = 0,
82 Negch,
83 NCharge
84 };
85}
86
87
88using namespace AliPIDNameSpace;
89
90class AliTwoParticlePIDCorr : public AliAnalysisTaskSE {
91 public:
92 AliTwoParticlePIDCorr();
93 AliTwoParticlePIDCorr(const char *name);
94 virtual ~AliTwoParticlePIDCorr();
95
96 virtual void UserCreateOutputObjects();
97 virtual void UserExec(Option_t *option);
98 virtual void doAODevent();
99 virtual void doMCAODevent();
100 virtual void Terminate(Option_t *);
349d46ce 101 void SetSharedClusterCut(Double_t value) { fSharedClusterCut = value; }
ef349d3c 102
349d46ce 103 void SettwoTrackEfficiencyCutDataReco(Bool_t twoTrackEfficiencyCutDataReco,Float_t twoTrackEfficiencyCutValue1)
104 {
105 ftwoTrackEfficiencyCutDataReco=twoTrackEfficiencyCutDataReco;
106 twoTrackEfficiencyCutValue=twoTrackEfficiencyCutValue1;
107 }
bb0bbd58 108 void SetVertextype(Int_t Vertextype){fVertextype=Vertextype;} //Check it every time
ef349d3c 109 void SetZvtxcut(Double_t zvtxcut) {fzvtxcut=zvtxcut;}
f2fc55fd 110 void SetCustomBinning(TString receivedCustomBinning) { fCustomBinning = receivedCustomBinning; }
bb0bbd58 111 void SetMaxNofMixingTracks(Int_t MaxNofMixingTracks) {fMaxNofMixingTracks=MaxNofMixingTracks;} //Check it every time
f2fc55fd 112 void SetCentralityEstimator(TString CentralityMethod) { fCentralityMethod = CentralityMethod;}
113 void SetSampleType(TString SampleType) {fSampleType=SampleType;}
114 void SetAnalysisType(TString AnalysisType){fAnalysisType=AnalysisType;}
115 void SetFilterBit(Int_t FilterBit) {fFilterBit=FilterBit;}
e09e26cf 116 void SetTrackStatus(UInt_t status) { fTrackStatus = status; }
f2fc55fd 117 void SetfilltrigassoUNID(Bool_t filltrigassoUNID){ffilltrigassoUNID=filltrigassoUNID;}
118 void SetfilltrigUNIDassoID(Bool_t filltrigUNIDassoID){ffilltrigUNIDassoID=filltrigUNIDassoID;}
119 void SetfilltrigIDassoUNID(Bool_t filltrigIDassoUNID){ffilltrigIDassoUNID=filltrigIDassoUNID;}
120 void SetfilltrigIDassoID(Bool_t filltrigIDassoID){ ffilltrigIDassoID=filltrigIDassoID;}
121 void SetfilltrigIDassoIDMCTRUTH(Bool_t filltrigIDassoIDMCTRUTH){ffilltrigIDassoIDMCTRUTH=filltrigIDassoIDMCTRUTH;}
ef349d3c 122 void SetSelectHighestPtTrig(Bool_t SelectHighestPtTrig){fSelectHighestPtTrig=SelectHighestPtTrig;}
f2fc55fd 123 void SetTriggerSpeciesSelection(Bool_t TriggerSpeciesSelection,Int_t TriggerSpecies,Bool_t containPIDtrig){
124 fTriggerSpeciesSelection=TriggerSpeciesSelection;//if it is KTRUE then Set containPIDtrig=kFALSE
125 fTriggerSpecies=TriggerSpecies;
126 fcontainPIDtrig=containPIDtrig;
127 }
128 void SetAssociatedSpeciesSelection(Bool_t AssociatedSpeciesSelection,Int_t AssociatedSpecies, Bool_t containPIDasso)
129 {
130 fAssociatedSpeciesSelection=AssociatedSpeciesSelection;//if it is KTRUE then Set containPIDasso=kFALSE
131 fAssociatedSpecies=AssociatedSpecies;
132 fcontainPIDasso=containPIDasso;
133 }
83cdcf92 134
135 void SetFIllPIDQAHistos(Bool_t FIllPIDQAHistos){fFIllPIDQAHistos=FIllPIDQAHistos;}
e09e26cf 136 void SetRejectPileUp(Bool_t rejectPileUp) {frejectPileUp=rejectPileUp;}
f2fc55fd 137 void SetKinematicCuts(Float_t minPt, Float_t maxPt,Float_t mineta,Float_t maxeta)
138 {
139 fminPt=minPt;
140 fmaxPt=maxPt;
141 fmineta=mineta;
142 fmaxeta=maxeta;
143 }
144 void SetAsymmetricnSigmaCut( Float_t minprotonsigmacut,Float_t maxprotonsigmacut,Float_t minpionsigmacut,Float_t maxpionsigmacut)
145 {
146 fminprotonsigmacut=minprotonsigmacut;
147 fmaxprotonsigmacut=maxprotonsigmacut;
148 fminpionsigmacut=minpionsigmacut;
149 fmaxpionsigmacut=maxpionsigmacut;
150 }
151 void SetDcaCut(Bool_t dcacut,Double_t dcacutvalue)
152 {
153 fdcacut=dcacut;
154 fdcacutvalue=dcacutvalue;
155 }
63818f52
MW
156 void SetfillHistQA(Bool_t fillhistQAReco,Bool_t fillhistQATruth)
157 {
158 ffillhistQAReco=fillhistQAReco;
159 ffillhistQATruth=fillhistQATruth;
160 }
0684fc6a 161 void SetPtordering(Bool_t PtOrderDataReco,Bool_t PtOrderMCTruth)
162 {
163 fPtOrderDataReco=PtOrderDataReco;
164 fPtOrderMCTruth=PtOrderMCTruth;
165 }
e09e26cf 166 void SetWeightPerEvent(Bool_t flag) { fWeightPerEvent = flag;}
c2c6819a
MW
167 void Setselectprimarydatareco(Bool_t onlyprimarydatareco) {fonlyprimarydatareco=onlyprimarydatareco;}
168 void SetselectprimaryTruth(Bool_t selectprimaryTruth) {fselectprimaryTruth=selectprimaryTruth;}
f2fc55fd 169 void SetCombinedNSigmaCut(Double_t NSigmaPID) {fNSigmaPID=NSigmaPID;}
349d46ce 170 void SetHighPtKaonNSigmaPID(Float_t HighPtKaonSigma,Float_t HighPtKaonNSigmaPID)
171 {
172 fHighPtKaonSigma=HighPtKaonSigma;
173 fHighPtKaonNSigmaPID=HighPtKaonNSigmaPID;
174 }
f2fc55fd 175 void IgnoreoverlappedTracks(Bool_t UseExclusiveNSigma){fUseExclusiveNSigma=UseExclusiveNSigma;}
176 void SetRemoveTracksT0Fill( Bool_t RemoveTracksT0Fill){fRemoveTracksT0Fill=RemoveTracksT0Fill;}
177 void SetPairSelectCharge(Int_t SelectCharge){fSelectCharge=SelectCharge;}
178 void SetTrigAssoSelectcharge( Int_t TriggerSelectCharge,Int_t AssociatedSelectCharge)
179 {
180 fTriggerSelectCharge=TriggerSelectCharge;
181 fAssociatedSelectCharge=AssociatedSelectCharge;
182 }
183 void SetEtaOrdering(Bool_t EtaOrdering){fEtaOrdering=EtaOrdering;}
184 void SetCutConversionsResonances( Bool_t CutConversions,Bool_t CutResonances)
185 {
186 fCutConversions=CutConversions;
187 fCutResonances=CutResonances;
188 }
189 void SetCleanUp(Bool_t InjectedSignals,Bool_t RemoveWeakDecays,Bool_t RemoveDuplicates)
190 {
191 fInjectedSignals=InjectedSignals;
192 fRemoveWeakDecays=RemoveWeakDecays;
193 fRemoveDuplicates=RemoveDuplicates;
194 }
c2c6819a 195 void SetEfficiency(Bool_t fillefficiency,Bool_t applyTrigefficiency,Bool_t applyAssoefficiency)
f2fc55fd 196 {
197 ffillefficiency=fillefficiency;
c2c6819a
MW
198 fapplyTrigefficiency=applyTrigefficiency;
199 fapplyAssoefficiency=applyAssoefficiency;
200
f2fc55fd 201 }
c2c6819a
MW
202 void SetComboeffPtRange(Double_t minPtComboeff,Double_t maxPtComboeff) {
203 fminPtComboeff=minPtComboeff;
204 fmaxPtComboeff=maxPtComboeff;}
205 //only one can be kTRUE at a time(for the next two Setters)
206 void Setmesoneffrequired(Bool_t mesoneffrequired) {fmesoneffrequired=mesoneffrequired;}
207 void Setkaonprotoneffrequired(Bool_t kaonprotoneffrequired){fkaonprotoneffrequired=kaonprotoneffrequired;}
f2fc55fd 208 void SetOnlyOneEtaSide(Int_t OnlyOneEtaSide){fOnlyOneEtaSide=OnlyOneEtaSide;}
209 void SetRejectResonanceDaughters(Int_t RejectResonanceDaughters){fRejectResonanceDaughters=RejectResonanceDaughters;}
210
211void SetTOFPIDVal(Bool_t RequestTOFPID,Float_t PtTOFPIDmin,Float_t PtTOFPIDmax)
212 {
213fRequestTOFPID=RequestTOFPID;
214fPtTOFPIDmin=PtTOFPIDmin;
215fPtTOFPIDmax=PtTOFPIDmax;
216}
59bf0a70 217
970080e0 218 void SetEffcorectionfilePathName(TString efffilename) {fefffilename=efffilename;}
219
59bf0a70 220 private:
221 //histograms
222 TList *fOutput; //! Output list
83cdcf92 223 TList *fOutputList; //! Output list
224
f2fc55fd 225 TString fCentralityMethod; // Method to determine centrality
226 TString fSampleType; // pp,p-Pb,Pb-Pb
227 Int_t fnTracksVertex; // QA tracks pointing to principal vertex
91a5dc10 228 AliAODVertex* trkVtx;//!
f2fc55fd 229 Float_t zvtx;
230 Int_t fFilterBit; // track selection cuts
e09e26cf 231 UInt_t fTrackStatus; // if non-0, the bits set in this variable are required for each track
ef349d3c 232 Double_t fSharedClusterCut; // cut on shared clusters (only for AOD)
233 Int_t fVertextype;
f2fc55fd 234 Double_t fzvtxcut;
235 Bool_t ffilltrigassoUNID;
236 Bool_t ffilltrigUNIDassoID;
237 Bool_t ffilltrigIDassoUNID;
238 Bool_t ffilltrigIDassoID;
239 Bool_t ffilltrigIDassoIDMCTRUTH;
ef349d3c 240 Int_t fMaxNofMixingTracks;
f2fc55fd 241 Bool_t fPtOrderMCTruth;
0684fc6a 242 Bool_t fPtOrderDataReco;
e09e26cf 243 Bool_t fWeightPerEvent;
f2fc55fd 244 Bool_t fTriggerSpeciesSelection;
245 Bool_t fAssociatedSpeciesSelection;
246 Int_t fTriggerSpecies;
247 Int_t fAssociatedSpecies;
c2c6819a
MW
248 TString fCustomBinning;//for setting customized binning
249 TString fBinningString;//final binning string
ef349d3c 250 Bool_t fSelectHighestPtTrig;
c2c6819a
MW
251 Bool_t fcontainPIDtrig;
252 Bool_t fcontainPIDasso;
e09e26cf 253 Bool_t frejectPileUp;
f2fc55fd 254 Float_t fminPt;
255 Float_t fmaxPt;
256 Float_t fmineta;
257 Float_t fmaxeta;
258 Float_t fminprotonsigmacut;
259 Float_t fmaxprotonsigmacut;
260 Float_t fminpionsigmacut;
261 Float_t fmaxpionsigmacut;
262 Bool_t fselectprimaryTruth;
c2c6819a 263 Bool_t fonlyprimarydatareco;
f2fc55fd 264 Bool_t fdcacut;
265 Double_t fdcacutvalue;
63818f52
MW
266 Bool_t ffillhistQAReco;
267 Bool_t ffillhistQATruth;
f2fc55fd 268 Int_t kTrackVariablesPair ;
269 Double_t fminPtTrig;
270 Double_t fmaxPtTrig;
c2c6819a
MW
271 Double_t fminPtComboeff;
272 Double_t fmaxPtComboeff;
f2fc55fd 273 Double_t fminPtAsso;
274 Double_t fmaxPtAsso;
59bf0a70 275 TH1F *fhistcentrality;//!
276 TH1F *fEventCounter; //!
277 TH2F *fEtaSpectrasso;//!
278 TH2F *fphiSpectraasso;//!
f2fc55fd 279 TH1F *MCtruthpt;//!
280 TH1F *MCtrutheta;//!
281 TH1F *MCtruthphi;//!
282 TH1F *MCtruthpionpt;//!
283 TH1F *MCtruthpioneta;//!
284 TH1F *MCtruthpionphi;//!
285 TH1F *MCtruthkaonpt;//!
286 TH1F *MCtruthkaoneta;//!
287 TH1F *MCtruthkaonphi;//!
288 TH1F *MCtruthprotonpt;//!
289 TH1F *MCtruthprotoneta;//!
290 TH1F *MCtruthprotonphi;//!
291 TH2F *fPioncont;//!
292 TH2F *fKaoncont;//!
293 TH2F *fProtoncont;//!
83cdcf92 294 TH2F *fEventno;//!
295 TH2F *fEventnobaryon;//!
296 TH2F *fEventnomeson;//!
0684fc6a 297 TH2F *fhistJetTrigestimate;//!
f2fc55fd 298
299 TH2D* fCentralityCorrelation; //! centrality vs multiplicity
349d46ce 300 TH2F* fControlConvResoncances; //! control histograms for cuts on conversions and resonances
59bf0a70 301
302 TH2F *fHistoTPCdEdx;//!
303 TH2F *fHistoTOFbeta;//!
c2c6819a
MW
304 TH3F *fTPCTOFPion3d;//!
305 TH3F *fTPCTOFKaon3d;//!
306 TH3F *fTPCTOFProton3d;//!
91a5dc10
LM
307 TH1F *fPionPt;//!
308 TH1F *fPionEta;//!
309 TH1F *fPionPhi;//!
310 TH1F *fKaonPt;//!
311 TH1F *fKaonEta;//!
312 TH1F *fKaonPhi;//!
313 TH1F *fProtonPt;//!
314 TH1F *fProtonEta;//!
315 TH1F *fProtonPhi;//!
59bf0a70 316 // TH3F *fHistocentNSigmaTPC;//! nsigma TPC
317 // TH3F *fHistocentNSigmaTOF;//! nsigma TOF
f2fc55fd 318
83cdcf92 319 AliTHn *fCorrelatonTruthPrimary;//!
320 AliTHn *fCorrelatonTruthPrimarymix;//!
321 AliTHn *fTHnCorrUNID;//!
322 AliTHn *fTHnCorrUNIDmix;//!
323 AliTHn *fTHnCorrID;//!
324 AliTHn *fTHnCorrIDmix;//!
325 AliTHn *fTHnCorrIDUNID;//!
326 AliTHn *fTHnCorrIDUNIDmix;//!
327 AliTHn *fTHnTrigcount;//!
328 AliTHn *fTHnTrigcountMCTruthPrim;//!
e09e26cf 329 AliTHn* fTrackHistEfficiency[6]; //! container for tracking efficiency and contamination (all particles filled including leading one): axes: eta, pT, particle species:::::::::0 pion, 1 kaon,2 proton,3 mesons,4 kaons+protons,5 all
330
59bf0a70 331
f2fc55fd 332 TH1F *fHistQA[16]; //!
333
e09e26cf 334
91a5dc10 335 THnSparse *effcorection[6];//!
f2fc55fd 336 // THnF *effmap[6];
59bf0a70 337
c2c6819a 338 Int_t ClassifyTrack(AliAODTrack* track,AliAODVertex* vertex,Float_t magfield);
f2fc55fd 339 Double_t* GetBinning(const char* configuration, const char* tag, Int_t& nBins);
59bf0a70 340
59bf0a70 341
e09e26cf 342 void Fillcorrelation(TObjArray *trackstrig,TObjArray *tracksasso,Double_t cent,Float_t vtx,Float_t weight,Bool_t firstTime,Float_t bSign,Bool_t fPtOrder,Bool_t twoTrackEfficiencyCut,Bool_t mixcase,TString fillup);//mixcase=kTRUE in case of mixing;
c2c6819a 343 Float_t GetTrackbyTrackeffvalue(AliAODTrack* track,Double_t cent,Float_t evzvtx, Int_t parpid);
59bf0a70 344
345//Mixing functions
346 void DefineEventPool();
59bf0a70 347 AliEventPoolManager *fPoolMgr;//!
348 TClonesArray *fArrayMC;//!
91a5dc10
LM
349 TString fAnalysisType; // "MC", "ESD", "AOD"
350 TString fefffilename;
59bf0a70 351
352 //PID part histograms
353
354 //PID functions
355 Bool_t HasTPCPID(AliAODTrack *track) const; // has TPC PID
356 Bool_t HasTOFPID(AliAODTrack *track) const; // has TOF PID
bb0bbd58 357 Double_t GetBeta(AliAODTrack *track);
83cdcf92 358 void CalculateNSigmas(AliAODTrack *track, Bool_t FIllQAHistos);
359 Int_t FindMinNSigma(AliAODTrack *track, Bool_t FIllQAHistos);
360 Bool_t* GetDoubleCounting(AliAODTrack * trk, Bool_t FIllQAHistos);
361 Int_t GetParticle(AliAODTrack * trk, Bool_t FIllQAHistos);
362
363 TH2F* GetHistogram2D(const char * name);//return histogram "name" from fOutputList
364
349d46ce 365 Bool_t ftwoTrackEfficiencyCutDataReco;
59bf0a70 366 Float_t twoTrackEfficiencyCutValue;
367 //Pid objects
368 AliPIDResponse *fPID; //! PID
369 Int_t eventno;
f2fc55fd 370 Float_t fPtTOFPIDmin; //lower pt bound for the TOCTOF combined circular pid
371 Float_t fPtTOFPIDmax; //uper pt bound for the TOCTOF combined circular pid
59bf0a70 372 Bool_t fRequestTOFPID;//if true returns kSpUndefined if the TOF signal is missing
373 PIDType fPIDType; // PID type Double_t fNSigmaPID; // number of sigma for PID cut
83cdcf92 374 Bool_t fFIllPIDQAHistos; //Switch for filling the nSigma histos
59bf0a70 375 Double_t fNSigmaPID; // number of sigma for PID cut
349d46ce 376 Float_t fHighPtKaonNSigmaPID;// number of sigma for PID cut for Kaons above fHighPtKaonSigma(-1 default, no cut applied)
377 Float_t fHighPtKaonSigma;//lower pt bound for the fHighPtKaonNSigmaPID to be set >0(i.e. to make it applicable)
59bf0a70 378 Bool_t fUseExclusiveNSigma;//if true returns the identity only if no double counting(i.e not in the overlap area)
379 Bool_t fRemoveTracksT0Fill;//if true remove tracks for which only StartTime from To-Fill is available (worst resolution)
380 Int_t fSelectCharge; // (un)like sign selection when building correlations: 0: no selection; 1: unlike sign; 2: like sign
381 Int_t fTriggerSelectCharge; // select charge of trigger particle: 1: positive; -1 negative
382 Int_t fAssociatedSelectCharge; // select charge of associated particle: 1: positive; -1 negative
383 Float_t fTriggerRestrictEta; // restrict eta range for trigger particle (default: -1 [off])
384 Bool_t fEtaOrdering; // eta ordering, see AliUEHistograms.h for documentation
385 Bool_t fCutConversions; // cut on conversions (inv mass)
386 Bool_t fCutResonances; // cut on resonances (inv mass)
387 Int_t fRejectResonanceDaughters; // reject all daughters of all resonance candidates (1: test method (cut at m_inv=0.9); 2: k0; 3: lambda)
f2fc55fd 388 Int_t fOnlyOneEtaSide; // decides that only trigger particle from one eta side are considered (0 = all; -1 = negative, 1 = positive)
389 Bool_t fInjectedSignals; // check header to skip injected signals in MC
59bf0a70 390 Bool_t fRemoveWeakDecays; // remove secondaries from weak decays from tracks and particles
391 Bool_t fRemoveDuplicates;// remove particles with the same label (double reconstruction)
c2c6819a
MW
392 Bool_t fapplyTrigefficiency;//if kTRUE then eff correction calculation starts
393 Bool_t fapplyAssoefficiency;//if kTRUE then eff correction calculation starts
0684fc6a 394 Bool_t ffillefficiency; //if kTRUE then THNsparses used for eff. calculation are filled up
c2c6819a
MW
395 Bool_t fmesoneffrequired;
396 Bool_t fkaonprotoneffrequired;
e09e26cf 397 AliAnalysisUtils* fAnalysisUtils; // points to class with common analysis utilities
59bf0a70 398 TFormula* fDCAXYCut; // additional pt dependent cut on DCA XY (only for AOD)
399
400
401 Float_t fnsigmas[NSpecies][NSigmaPIDType+1]; //nsigma values
402 Bool_t fHasDoubleCounting[NSpecies];//array with compatible identities
403
404 //Int_t fPIDMethod; // PID method
405
406 //functions
e09e26cf 407 Bool_t CheckTrack(AliAODTrack * part);
59bf0a70 408 Float_t PhiRange(Float_t DPhi);
409 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);
410Float_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);
411 Float_t GetDPhiStar(Float_t phi1, Float_t pt1, Float_t charge1, Float_t phi2, Float_t pt2, Float_t charge2, Float_t radius, Float_t bSign);
f2fc55fd 412 TObjArray* CloneAndReduceTrackList(TObjArray* tracks);
59bf0a70 413
414
415 AliTwoParticlePIDCorr(const AliTwoParticlePIDCorr&); // not implemented
416 AliTwoParticlePIDCorr& operator=(const AliTwoParticlePIDCorr&); // not implemented
417
418 ClassDef(AliTwoParticlePIDCorr, 1); // example of analysis
419};
420class LRCParticlePID : public TObject {
421public:
f2fc55fd 422 LRCParticlePID(Int_t par,Short_t icharge,Float_t pt,Float_t eta, Float_t phi,Float_t effcorrectionval)
423 :fparticle(par),fcharge(icharge),fPt(pt), fEta(eta), fPhi(phi),feffcorrectionval(effcorrectionval) {}
59bf0a70 424 virtual ~LRCParticlePID() {}
425
426
427 virtual Float_t Eta() const { return fEta; }
428 virtual Float_t Phi() const { return fPhi; }
59bf0a70 429 virtual Float_t Pt() const { return fPt; }
430 Int_t getparticle() const {return fparticle;}
431 virtual Short_t Charge() const { return fcharge; }
432 Float_t geteffcorrectionval() const {return feffcorrectionval;}
433 virtual Bool_t IsEqual(const TObject* obj) const { return (obj->GetUniqueID() == GetUniqueID()); }
434
435
436private:
437 LRCParticlePID(const LRCParticlePID&); // not implemented
438 LRCParticlePID& operator=(const LRCParticlePID&); // not implemented
f2fc55fd 439
59bf0a70 440 Int_t fparticle;
441 Short_t fcharge;
442 Float_t fPt;
443 Float_t fEta;
444 Float_t fPhi;
59bf0a70 445 Float_t feffcorrectionval;
446 ClassDef(LRCParticlePID, 1);
447} ;
448
449#endif
450