]>
Commit | Line | Data |
---|---|---|
8c6a71ab | 1 | #ifndef ALIESDPID_H |
2 | #define ALIESDPID_H | |
3 | /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. * | |
4 | * See cxx source for full Copyright notice */ | |
5 | ||
4f679a16 | 6 | /* $Id$ */ |
7 | ||
8c6a71ab | 8 | //------------------------------------------------------- |
9 | // Combined PID class | |
4f679a16 | 10 | // for the Event Summary Data class |
8c6a71ab | 11 | // Origin: Iouri Belikov, CERN, Jouri.Belikov@cern.ch |
12 | //------------------------------------------------------- | |
13 | #include <Rtypes.h> | |
10d100d4 | 14 | #include "AliESDtrack.h" // Needed for inline functions |
15 | #include "AliTPCPIDResponse.h" | |
16 | #include "AliITSPIDResponse.h" | |
17 | #include "AliTOFPIDResponse.h" | |
18 | //#include "HMPID/AliHMPID.h" | |
19 | //#include "TRD/AliTRDpidESD.h" | |
8c6a71ab | 20 | |
af885e0f | 21 | class AliESDEvent; |
8c6a71ab | 22 | |
23 | class AliESDpid { | |
24 | public: | |
10d100d4 | 25 | AliESDpid(): fRange(5.), fITSPIDmethod(kITSTruncMean), fTPCResponse(), fITSResponse(), fTOFResponse() {;} |
44ce6bbe | 26 | virtual ~AliESDpid() {} |
10d100d4 | 27 | Int_t MakePID(AliESDEvent *event, Bool_t TPCOnly = kFALSE, Float_t TimeZeroTOF=0) const; |
28 | void MakeTPCPID(AliESDtrack *track) const; | |
29 | void MakeITSPID(AliESDtrack *track) const; | |
30 | void MakeTOFPID(AliESDtrack *track, Float_t TimeZeroTOF) const; | |
31 | // void MakeHMPIDPID(AliESDtrack *track); | |
32 | // void MakeTRDPID(AliESDtrack *track); | |
33 | void CombinePID(AliESDtrack *track) const; | |
7ef60110 | 34 | |
35 | enum ITSPIDmethod { kITSTruncMean, kITSLikelihood }; | |
36 | void SetITSPIDmethod(ITSPIDmethod pmeth) { fITSPIDmethod = pmeth; } | |
37 | ||
10d100d4 | 38 | Float_t NumberOfSigmasTPC(const AliESDtrack *track, AliPID::EParticleType type) const; |
39 | Float_t NumberOfSigmasTOF(const AliESDtrack *track, AliPID::EParticleType type, const Float_t TimeZeroTOF) const; | |
40 | Float_t NumberOfSigmasITS(const AliESDtrack *track, AliPID::EParticleType type) const; | |
41 | ||
42 | AliITSPIDResponse &GetITSResponse() {return fITSResponse;} | |
43 | AliTPCPIDResponse &GetTPCResponse() {return fTPCResponse;} | |
44 | AliTOFPIDResponse &GetTOFResponse() {return fTOFResponse;} | |
45 | ||
10d100d4 | 46 | |
8c6a71ab | 47 | private: |
10d100d4 | 48 | Float_t fRange; // nSigma max in likelihood |
49 | ITSPIDmethod fITSPIDmethod; // 0 = trunc mean; 1 = likelihood | |
50 | AliTPCPIDResponse fTPCResponse; | |
51 | AliITSPIDResponse fITSResponse; | |
52 | AliTOFPIDResponse fTOFResponse; | |
53 | // AliHMPIDPIDResponse fHMPIDResponse; | |
54 | // AliTRDPIDResponse fTRDResponse; | |
55 | ||
56 | ClassDef(AliESDpid,3) // PID calculation class | |
8c6a71ab | 57 | }; |
58 | ||
10d100d4 | 59 | inline Float_t AliESDpid::NumberOfSigmasTPC(const AliESDtrack *track, AliPID::EParticleType type) const { |
60 | Double_t mom = track->GetP(); | |
61 | const AliExternalTrackParam *in = track->GetTPCInnerParam(); | |
62 | if (in) | |
63 | mom = in->GetP(); | |
64 | return fTPCResponse.GetNumberOfSigmas(mom,track->GetTPCsignal(),track->GetTPCsignalN(),type); | |
65 | } | |
66 | ||
67 | inline Float_t AliESDpid::NumberOfSigmasTOF(const AliESDtrack *track, AliPID::EParticleType type, const Float_t TimeZeroTOF) const { | |
68 | Double_t times[AliPID::kSPECIES]; | |
69 | track->GetIntegratedTimes(times); | |
70 | return (track->GetTOFsignal() - TimeZeroTOF - times[type])/fTOFResponse.GetExpectedSigma(track->GetP(),times[type],AliPID::ParticleMass(type)); | |
71 | } | |
72 | ||
73 | inline Float_t AliESDpid::NumberOfSigmasITS(const AliESDtrack *track, AliPID::EParticleType type) const { | |
74 | return fITSResponse.GetNumberOfSigmas(track->GetP(),track->GetITSsignal(),type); | |
75 | } | |
8c6a71ab | 76 | #endif |
77 | ||
78 |