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