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 "HMPID/AliHMPID.h"
19 //#include "TRD/AliTRDpidESD.h"
25 AliESDpid(): fRange(5.), fITSPIDmethod(kITSTruncMean), fTPCResponse(), fITSResponse(), fTOFResponse() {;}
26 virtual ~AliESDpid() {}
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;
34 Float_t NumberOfSigmasTPC(const AliESDtrack *track, AliPID::EParticleType type) const;
35 Float_t NumberOfSigmasTOF(const AliESDtrack *track, AliPID::EParticleType type, const Float_t TimeZeroTOF) const;
36 Float_t NumberOfSigmasITS(const AliESDtrack *track, AliPID::EParticleType type) const;
38 AliITSPIDResponse &GetITSResponse() {return fITSResponse;}
39 AliTPCPIDResponse &GetTPCResponse() {return fTPCResponse;}
40 AliTOFPIDResponse &GetTOFResponse() {return fTOFResponse;}
42 enum ITSPIDmethod { kITSTruncMean, kITSLikelihood };
45 Float_t fRange; // nSigma max in likelihood
46 ITSPIDmethod fITSPIDmethod; // 0 = trunc mean; 1 = likelihood
47 AliTPCPIDResponse fTPCResponse;
48 AliITSPIDResponse fITSResponse;
49 AliTOFPIDResponse fTOFResponse;
50 // AliHMPIDPIDResponse fHMPIDResponse;
51 // AliTRDPIDResponse fTRDResponse;
53 ClassDef(AliESDpid,3) // PID calculation class
56 inline Float_t AliESDpid::NumberOfSigmasTPC(const AliESDtrack *track, AliPID::EParticleType type) const {
57 Double_t mom = track->GetP();
58 const AliExternalTrackParam *in = track->GetTPCInnerParam();
61 return fTPCResponse.GetNumberOfSigmas(mom,track->GetTPCsignal(),track->GetTPCsignalN(),type);
64 inline Float_t AliESDpid::NumberOfSigmasTOF(const AliESDtrack *track, AliPID::EParticleType type, const Float_t TimeZeroTOF) const {
65 Double_t times[AliPID::kSPECIES];
66 track->GetIntegratedTimes(times);
67 return (track->GetTOFsignal() - TimeZeroTOF - times[type])/fTOFResponse.GetExpectedSigma(track->GetP(),times[type],AliPID::ParticleMass(type));
70 inline Float_t AliESDpid::NumberOfSigmasITS(const AliESDtrack *track, AliPID::EParticleType type) const {
71 return fITSResponse.GetNumberOfSigmas(track->GetP(),track->GetITSsignal(),type);