]> git.uio.no Git - u/mrichter/AliRoot.git/blob - STEER/AliESDpid.h
Adding extra checks to protect from fatal aborts.
[u/mrichter/AliRoot.git] / STEER / AliESDpid.h
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
6 /* $Id$ */
7
8 //-------------------------------------------------------
9 //                    Combined PID class
10 //           for the Event Summary Data class
11 //   Origin: Iouri Belikov, CERN, Jouri.Belikov@cern.ch 
12 //-------------------------------------------------------
13 #include <Rtypes.h>
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"
20
21 class AliESDEvent;
22
23 class AliESDpid {
24 public:
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
35   enum ITSPIDmethod { kITSTruncMean, kITSLikelihood };
36   void SetITSPIDmethod(ITSPIDmethod pmeth) { fITSPIDmethod = pmeth; }
37
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
46
47 private:
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
57 };
58
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 }
76 #endif
77
78