]> git.uio.no Git - u/mrichter/AliRoot.git/blob - STEER/AliAODpidUtil.h
Adding support for CINT7, CMSH7, CMUL7, CMUU7, CEMC7 triggers
[u/mrichter/AliRoot.git] / STEER / AliAODpidUtil.h
1 #ifndef ALIAODPIDUTIL_H
2 #define ALIAODPIDUTIL_H
3 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
4  * See cxx source for full Copyright notice                               */
5
6 /* $Id: AliAODpidUtil.h 38493 2010-01-26 16:33:03Z hristov $ */
7
8 //-------------------------------------------------------
9 //                    Combined PID class
10 //                    for the AOD class
11 //   Origin: Rosa Romita, GSI, r.romita@gsi.de 
12 //   Modified: Jens Wiechula, Uni Tuebingen, jens.wiechula@cern.ch
13 //-------------------------------------------------------
14 #include <Rtypes.h>
15 #include <TMatrixD.h>
16 #include "AliAODTrack.h" // Needed for inline functions
17 #include "AliAODPid.h" // Needed for inline functions
18 //#include "HMPID/AliHMPID.h"
19
20 #include "AliPIDResponse.h"
21
22 class AliAODEvent;
23 class AliVParticle;
24
25 class AliAODpidUtil : public AliPIDResponse  {
26 public:
27   //TODO: isMC???
28   AliAODpidUtil(Bool_t isMC = kFALSE): AliPIDResponse(isMC), fRange(5.) {;}
29   virtual ~AliAODpidUtil() {;}
30
31   Int_t MakePID(const AliAODTrack *track,Double_t *p) const;
32   void MakeTPCPID(const AliAODTrack *track,Double_t *p) const;
33   void MakeITSPID(const AliAODTrack *track,Double_t *p) const;
34   void MakeTOFPID(const AliAODTrack *track,Double_t *p) const;
35   //  void MakeHMPIDPID(AliESDtrack *track);
36   void MakeTRDPID(const AliAODTrack *track,Double_t *p) const;
37
38   virtual Float_t NumberOfSigmasTOF(const AliVParticle *vtrack, AliPID::EParticleType type) const;
39   
40 private:
41   Float_t           fRange;          // nSigma max in likelihood
42   
43   ClassDef(AliAODpidUtil,2)  // PID calculation class
44 };
45
46 inline Float_t AliAODpidUtil::NumberOfSigmasTOF(const AliVParticle *vtrack, AliPID::EParticleType type) const {
47   AliAODTrack *track=(AliAODTrack*)vtrack;
48   Double_t times[AliPID::kSPECIES];
49   Double_t sigmaTOFPid[AliPID::kSPECIES];
50   AliAODPid *pidObj = track->GetDetPid();
51   if (!pidObj) return -999.;
52   pidObj->GetIntegratedTimes(times);
53   pidObj->GetTOFpidResolution(sigmaTOFPid);
54   if (sigmaTOFPid[type]>0) return (pidObj->GetTOFsignal() - times[type])/sigmaTOFPid[type];
55   else return (pidObj->GetTOFsignal() - times[type])/fTOFResponse.GetExpectedSigma(track->P(),times[type],AliPID::ParticleMass(type));
56 }
57
58 #endif
59
60