]> git.uio.no Git - u/mrichter/AliRoot.git/blame - STEER/AliESDpid.h
Fix for:
[u/mrichter/AliRoot.git] / STEER / AliESDpid.h
CommitLineData
8c6a71ab 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
4f679a16 6/* $Id$ */
7
8c6a71ab 8//-------------------------------------------------------
9// Combined PID class
4f679a16 10// for the Event Summary Data class
8c6a71ab 11// Origin: Iouri Belikov, CERN, Jouri.Belikov@cern.ch
12//-------------------------------------------------------
13#include <Rtypes.h>
10d100d4 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"
8c6a71ab 20
af885e0f 21class AliESDEvent;
8c6a71ab 22
23class AliESDpid {
24public:
10d100d4 25 AliESDpid(): fRange(5.), fITSPIDmethod(kITSTruncMean), fTPCResponse(), fITSResponse(), fTOFResponse() {;}
44ce6bbe 26 virtual ~AliESDpid() {}
10d100d4 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;
7ef60110 34
35 enum ITSPIDmethod { kITSTruncMean, kITSLikelihood };
36 void SetITSPIDmethod(ITSPIDmethod pmeth) { fITSPIDmethod = pmeth; }
37
10d100d4 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
10d100d4 46
8c6a71ab 47private:
10d100d4 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
8c6a71ab 57};
58
10d100d4 59inline 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
67inline 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
73inline Float_t AliESDpid::NumberOfSigmasITS(const AliESDtrack *track, AliPID::EParticleType type) const {
74 return fITSResponse.GetNumberOfSigmas(track->GetP(),track->GetITSsignal(),type);
75}
8c6a71ab 76#endif
77
78