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 // Modified: Jens Wiechula, Uni Tuebingen, jens.wiechula@cern.ch
13 //-------------------------------------------------------
15 #include "AliESDtrack.h" // Needed for inline functions
17 //#include "HMPID/AliHMPID.h"
18 //#include "TRD/AliTRDpidESD.h"
20 #include "AliPIDResponse.h"
26 class AliESDpid : public AliPIDResponse {
28 AliESDpid(Bool_t forMC=kFALSE): AliPIDResponse(forMC), fRange(5.), fRangeTOFMismatch(5.), fITSPIDmethod(kITSTruncMean) {;}
29 virtual ~AliESDpid() {}
31 Int_t MakePID(AliESDEvent *event, Bool_t TPCOnly = kFALSE, Float_t timeZeroTOF=9999) const;
32 void MakeTPCPID(AliESDtrack *track) const;
33 void MakeITSPID(AliESDtrack *track) const;
34 void MakeTOFPID(AliESDtrack *track, Float_t /*timeZeroTOF*/) const;
35 Bool_t CheckTOFMatching(AliESDtrack *track) const;
36 // void MakeHMPIDPID(AliESDtrack *track);
37 void MakeTRDPID(AliESDtrack *track) const;
38 void CombinePID(AliESDtrack *track) const;
40 enum ITSPIDmethod { kITSTruncMean, kITSLikelihood };
41 void SetITSPIDmethod(ITSPIDmethod pmeth) { fITSPIDmethod = pmeth; }
43 virtual Float_t NumberOfSigmasTOF(const AliVParticle *vtrack, AliPID::EParticleType type, const Float_t timeZeroTOF) const;
44 virtual Float_t NumberOfSigmasTOF(const AliVParticle *vtrack, AliPID::EParticleType type) const {return NumberOfSigmasTOF(vtrack,type,0); }
46 void SetTOFResponse(AliVEvent *vevent,EStartTimeType_t option);
48 void SetNMaxSigmaTOFTPCMismatch(Float_t range) {fRangeTOFMismatch=range;}
49 Float_t GetNMaxSigmaTOFTPCMismatch() const {return fRangeTOFMismatch;}
52 Float_t fRange; // nSigma max in likelihood
53 Float_t fRangeTOFMismatch; // nSigma max for TOF matching with TPC
54 ITSPIDmethod fITSPIDmethod; // 0 = trunc mean; 1 = likelihood
56 ClassDef(AliESDpid,6) // PID calculation class
60 inline Float_t AliESDpid::NumberOfSigmasTOF(const AliVParticle *vtrack, AliPID::EParticleType type, const Float_t /*timeZeroTOF*/) const {
61 AliESDtrack *track=(AliESDtrack*)vtrack;
62 Double_t times[AliPID::kSPECIES];
63 track->GetIntegratedTimes(times);
64 return (track->GetTOFsignal() - fTOFResponse.GetStartTime(track->GetP()) - times[type])/fTOFResponse.GetExpectedSigma(track->GetP(),times[type],AliPID::ParticleMass(type));