]> git.uio.no Git - u/mrichter/AliRoot.git/blame - STEER/AliAODpidUtil.h
Update TPCCEda to write output file in parts (to avoid too big files produced in...
[u/mrichter/AliRoot.git] / STEER / AliAODpidUtil.h
CommitLineData
1423bac9 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//-------------------------------------------------------
13#include <Rtypes.h>
14#include <TMatrixD.h>
15#include "AliAODTrack.h" // Needed for inline functions
16#include "AliAODPid.h" // Needed for inline functions
17#include "AliTPCPIDResponse.h"
18#include "AliITSPIDResponse.h"
19#include "AliTOFPIDResponse.h"
20#include "AliTRDPIDResponse.h"
21//#include "HMPID/AliHMPID.h"
22
23class AliAODEvent;
24
25class AliAODpidUtil {
26public:
ab4b50b4 27
28 AliAODpidUtil(Bool_t isMC = kFALSE): fRange(5.), fTPCResponse(), fITSResponse(isMC), fTOFResponse(), fTRDResponse() {;}
1423bac9 29 virtual ~AliAODpidUtil() {;}
30
31
1c2fc6e0 32 Int_t MakePID(AliAODTrack *track,Double_t *p) const;
1423bac9 33 void MakeTPCPID(AliAODTrack *track,Double_t *p) const;
34 void MakeITSPID(AliAODTrack *track,Double_t *p) const;
1c2fc6e0 35 void MakeTOFPID(AliAODTrack *track,Double_t *p) const;
1423bac9 36 // void MakeHMPIDPID(AliESDtrack *track);
37 void MakeTRDPID(AliAODTrack *track,Double_t *p) const;
38
39 Float_t NumberOfSigmasTPC(const AliAODTrack *track, AliPID::EParticleType type) const;
1c2fc6e0 40 Float_t NumberOfSigmasTOF(const AliAODTrack *track, AliPID::EParticleType type) const;
1423bac9 41 Float_t NumberOfSigmasITS(const AliAODTrack *track, AliPID::EParticleType type) const;
42
43 AliITSPIDResponse &GetITSResponse() {return fITSResponse;}
44 AliTPCPIDResponse &GetTPCResponse() {return fTPCResponse;}
45 AliTOFPIDResponse &GetTOFResponse() {return fTOFResponse;}
46
47private:
48 Float_t fRange; // nSigma max in likelihood
49 AliTPCPIDResponse fTPCResponse;
50 AliITSPIDResponse fITSResponse;
51 AliTOFPIDResponse fTOFResponse;
30d69fa9 52 AliTRDPIDResponse fTRDResponse;
01f931c1 53
1423bac9 54 ClassDef(AliAODpidUtil,1) // PID calculation class
55};
56
57inline Float_t AliAODpidUtil::NumberOfSigmasTPC(const AliAODTrack *track, AliPID::EParticleType type) const {
58
59 Double_t mom = track->P();
60 AliAODPid *pidObj = track->GetDetPid();
597b16d8 61 UShort_t nTPCClus=pidObj->GetTPCsignalN();
1423bac9 62 if (pidObj)
63 mom = pidObj->GetTPCmomentum();
bd4d5059 64 return fTPCResponse.GetNumberOfSigmas(mom,pidObj->GetTPCsignal(),nTPCClus,type);
1423bac9 65}
66
1c2fc6e0 67inline Float_t AliAODpidUtil::NumberOfSigmasTOF(const AliAODTrack *track, AliPID::EParticleType type) const {
1423bac9 68 Double_t times[AliPID::kSPECIES];
69 AliAODPid *pidObj = track->GetDetPid();
70 pidObj->GetIntegratedTimes(times);
1c2fc6e0 71 return (pidObj->GetTOFsignal() - times[type])/fTOFResponse.GetExpectedSigma(track->P(),times[type],AliPID::ParticleMass(type));
1423bac9 72}
73
74inline Float_t AliAODpidUtil::NumberOfSigmasITS(const AliAODTrack *track, AliPID::EParticleType type) const {
75 AliAODPid *pidObj = track->GetDetPid();
15e979c9 76 Float_t dEdx=pidObj->GetITSsignal();
77 UChar_t clumap=track->GetITSClusterMap();
78 Int_t nPointsForPid=0;
79 for(Int_t i=2; i<6; i++){
80 if(clumap&(1<<i)) ++nPointsForPid;
81 }
99daa709 82 Float_t mom=track->P();
83 Bool_t isSA=kTRUE;
84 if(track->GetTPCNcls()>0) isSA=kFALSE;
85 return fITSResponse.GetNumberOfSigmas(mom,dEdx,type,nPointsForPid,isSA);
1423bac9 86}
87#endif
88
89