]>
Commit | Line | Data |
---|---|---|
1423bac9 | 1 | #ifndef ALIAODPIDUTIL_H |
2 | #define ALIAODPIDUTIL_H | |
3 | /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. * | |
4 | * See cxx source for full Copyright notice */ | |
5 | ||
6 | /* $Id: AliAODpidUtil.h 38493 2010-01-26 16:33:03Z hristov $ */ | |
7 | ||
8 | //------------------------------------------------------- | |
9 | // Combined PID class | |
10 | // for the AOD class | |
11 | // Origin: Rosa Romita, GSI, r.romita@gsi.de | |
12 | //------------------------------------------------------- | |
13 | #include <Rtypes.h> | |
14 | #include <TMatrixD.h> | |
15 | #include "AliAODTrack.h" // Needed for inline functions | |
16 | #include "AliAODPid.h" // Needed for inline functions | |
17 | #include "AliTPCPIDResponse.h" | |
18 | #include "AliITSPIDResponse.h" | |
19 | #include "AliTOFPIDResponse.h" | |
20 | #include "AliTRDPIDResponse.h" | |
21 | //#include "HMPID/AliHMPID.h" | |
22 | ||
23 | class AliAODEvent; | |
24 | ||
25 | class AliAODpidUtil { | |
26 | public: | |
ab4b50b4 | 27 | |
28 | AliAODpidUtil(Bool_t isMC = kFALSE): fRange(5.), fTPCResponse(), fITSResponse(isMC), fTOFResponse(), fTRDResponse() {;} | |
1423bac9 | 29 | virtual ~AliAODpidUtil() {;} |
30 | ||
31 | ||
1c2fc6e0 | 32 | Int_t MakePID(AliAODTrack *track,Double_t *p) const; |
1423bac9 | 33 | void MakeTPCPID(AliAODTrack *track,Double_t *p) const; |
34 | void MakeITSPID(AliAODTrack *track,Double_t *p) const; | |
1c2fc6e0 | 35 | void MakeTOFPID(AliAODTrack *track,Double_t *p) const; |
1423bac9 | 36 | // void MakeHMPIDPID(AliESDtrack *track); |
37 | void MakeTRDPID(AliAODTrack *track,Double_t *p) const; | |
38 | ||
39 | Float_t NumberOfSigmasTPC(const AliAODTrack *track, AliPID::EParticleType type) const; | |
1c2fc6e0 | 40 | Float_t NumberOfSigmasTOF(const AliAODTrack *track, AliPID::EParticleType type) const; |
1423bac9 | 41 | Float_t NumberOfSigmasITS(const AliAODTrack *track, AliPID::EParticleType type) const; |
42 | ||
43 | AliITSPIDResponse &GetITSResponse() {return fITSResponse;} | |
44 | AliTPCPIDResponse &GetTPCResponse() {return fTPCResponse;} | |
45 | AliTOFPIDResponse &GetTOFResponse() {return fTOFResponse;} | |
46 | ||
47 | private: | |
48 | Float_t fRange; // nSigma max in likelihood | |
49 | AliTPCPIDResponse fTPCResponse; | |
50 | AliITSPIDResponse fITSResponse; | |
51 | AliTOFPIDResponse fTOFResponse; | |
30d69fa9 | 52 | AliTRDPIDResponse fTRDResponse; |
01f931c1 | 53 | |
1423bac9 | 54 | ClassDef(AliAODpidUtil,1) // PID calculation class |
55 | }; | |
56 | ||
57 | inline Float_t AliAODpidUtil::NumberOfSigmasTPC(const AliAODTrack *track, AliPID::EParticleType type) const { | |
58 | ||
59 | Double_t mom = track->P(); | |
60 | AliAODPid *pidObj = track->GetDetPid(); | |
597b16d8 | 61 | UShort_t nTPCClus=pidObj->GetTPCsignalN(); |
1423bac9 | 62 | if (pidObj) |
63 | mom = pidObj->GetTPCmomentum(); | |
bd4d5059 | 64 | return fTPCResponse.GetNumberOfSigmas(mom,pidObj->GetTPCsignal(),nTPCClus,type); |
1423bac9 | 65 | } |
66 | ||
1c2fc6e0 | 67 | inline Float_t AliAODpidUtil::NumberOfSigmasTOF(const AliAODTrack *track, AliPID::EParticleType type) const { |
1423bac9 | 68 | Double_t times[AliPID::kSPECIES]; |
0bb3b396 | 69 | Double_t sigmaTOFPid[AliPID::kSPECIES]; |
1423bac9 | 70 | AliAODPid *pidObj = track->GetDetPid(); |
71 | pidObj->GetIntegratedTimes(times); | |
0bb3b396 | 72 | pidObj->GetTOFpidResolution(sigmaTOFPid); |
73 | if (sigmaTOFPid[type]>0) return (pidObj->GetTOFsignal() - times[type])/sigmaTOFPid[type]; | |
74 | else return (pidObj->GetTOFsignal() - times[type])/fTOFResponse.GetExpectedSigma(track->P(),times[type],AliPID::ParticleMass(type)); | |
1423bac9 | 75 | } |
76 | ||
77 | inline Float_t AliAODpidUtil::NumberOfSigmasITS(const AliAODTrack *track, AliPID::EParticleType type) const { | |
78 | AliAODPid *pidObj = track->GetDetPid(); | |
15e979c9 | 79 | Float_t dEdx=pidObj->GetITSsignal(); |
80 | UChar_t clumap=track->GetITSClusterMap(); | |
81 | Int_t nPointsForPid=0; | |
82 | for(Int_t i=2; i<6; i++){ | |
83 | if(clumap&(1<<i)) ++nPointsForPid; | |
84 | } | |
99daa709 | 85 | Float_t mom=track->P(); |
86 | Bool_t isSA=kTRUE; | |
87 | if(track->GetTPCNcls()>0) isSA=kFALSE; | |
88 | return fITSResponse.GetNumberOfSigmas(mom,dEdx,type,nPointsForPid,isSA); | |
1423bac9 | 89 | } |
90 | #endif | |
91 | ||
92 |