3 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
4 * See cxx source for full Copyright notice */
8 //-------------------------------------------------------
10 // for the Event Summary Data class
11 // Origin: Iouri Belikov, CERN, Jouri.Belikov@cern.ch
12 //-------------------------------------------------------
14 #include "AliESDtrack.h" // Needed for inline functions
15 #include "AliTPCPIDResponse.h"
16 #include "AliITSPIDResponse.h"
17 #include "AliTOFPIDResponse.h"
18 #include "AliTRDPIDResponse.h"
19 //#include "HMPID/AliHMPID.h"
20 //#include "TRD/AliTRDpidESD.h"
26 AliESDpid(): fRange(5.), fITSPIDmethod(kITSTruncMean), fTPCResponse(), fITSResponse(), fTOFResponse(), fTRDResponse(){;}
27 virtual ~AliESDpid() {}
28 Int_t MakePID(AliESDEvent *event, Bool_t TPCOnly = kFALSE, Float_t timeZeroTOF=9999) const;
29 void MakeTPCPID(AliESDtrack *track) const;
30 void MakeITSPID(AliESDtrack *track) const;
31 void MakeTOFPID(AliESDtrack *track, Float_t /*timeZeroTOF*/) const;
32 Bool_t CheckTOFMatching(AliESDtrack *track) const;
33 // void MakeHMPIDPID(AliESDtrack *track);
34 void MakeTRDPID(AliESDtrack *track) const;
35 void CombinePID(AliESDtrack *track) const;
37 enum ITSPIDmethod { kITSTruncMean, kITSLikelihood };
38 void SetITSPIDmethod(ITSPIDmethod pmeth) { fITSPIDmethod = pmeth; }
40 Float_t NumberOfSigmasTPC(const AliESDtrack *track, AliPID::EParticleType type) const;
41 Float_t NumberOfSigmasTOF(const AliESDtrack *track, AliPID::EParticleType type, const Float_t timeZeroTOF) const;
42 Float_t NumberOfSigmasITS(const AliESDtrack *track, AliPID::EParticleType type) const;
44 AliITSPIDResponse &GetITSResponse() {return fITSResponse;}
45 AliTPCPIDResponse &GetTPCResponse() {return fTPCResponse;}
46 AliTOFPIDResponse &GetTOFResponse() {return fTOFResponse;}
47 AliTRDPIDResponse &GetTRDResponse() {return fTRDResponse;}
49 enum EStartTimeType_t {kFILL_T0,kTOF_T0, kT0_T0, kBest_T0};
50 void SetTOFResponse(AliESDEvent *event,EStartTimeType_t option);
53 Float_t fRange; // nSigma max in likelihood
54 ITSPIDmethod fITSPIDmethod; // 0 = trunc mean; 1 = likelihood
55 AliTPCPIDResponse fTPCResponse;
56 AliITSPIDResponse fITSResponse;
57 AliTOFPIDResponse fTOFResponse;
58 // AliHMPIDPIDResponse fHMPIDResponse;
59 AliTRDPIDResponse fTRDResponse;
61 ClassDef(AliESDpid,4) // PID calculation class
64 inline Float_t AliESDpid::NumberOfSigmasTPC(const AliESDtrack *track, AliPID::EParticleType type) const {
65 Double_t mom = track->GetP();
66 const AliExternalTrackParam *in = track->GetInnerParam();
69 return fTPCResponse.GetNumberOfSigmas(mom,track->GetTPCsignal(),track->GetTPCsignalN(),type);
72 inline Float_t AliESDpid::NumberOfSigmasTOF(const AliESDtrack *track, AliPID::EParticleType type, const Float_t timeZeroTOF) const {
73 Double_t times[AliPID::kSPECIES];
74 track->GetIntegratedTimes(times);
75 return (track->GetTOFsignal() - timeZeroTOF - times[type])/fTOFResponse.GetExpectedSigma(track->GetP(),times[type],AliPID::ParticleMass(type));
78 inline Float_t AliESDpid::NumberOfSigmasITS(const AliESDtrack *track, AliPID::EParticleType type) const {
79 ULong_t trStatus=track->GetStatus();
80 Float_t dEdx=track->GetITSsignal();
81 UChar_t clumap=track->GetITSClusterMap();
82 Int_t nPointsForPid=0;
83 for(Int_t i=2; i<6; i++){
84 if(clumap&(1<<i)) ++nPointsForPid;
86 Float_t mom=track->P();
88 if(trStatus&AliESDtrack::kTPCin) isSA=kFALSE;
89 return fITSResponse.GetNumberOfSigmas(mom,dEdx,type,nPointsForPid,isSA);