]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - STEER/AliAODpidUtil.h
fix saving dEdx on ESD tracks (Markus)
[u/mrichter/AliRoot.git] / STEER / AliAODpidUtil.h
index 4884c53081f846694a2d5f4d6113a640a99af579..ed36528154d006be7afcd57a6b7c07f9f21a96e9 100644 (file)
@@ -24,7 +24,8 @@ class AliAODEvent;
 
 class AliAODpidUtil {
 public:
-  AliAODpidUtil(Bool_t isMC = kFALSE): fRange(5.), fTPCResponse(), fITSResponse(isMC), fTOFResponse(), fTRDResponse(), fIsMC(isMC) {;}
+
+  AliAODpidUtil(Bool_t isMC = kFALSE): fRange(5.), fTPCResponse(), fITSResponse(isMC), fTOFResponse(), fTRDResponse() {;}
   virtual ~AliAODpidUtil() {;}
 
 
@@ -43,25 +44,21 @@ public:
   AliTPCPIDResponse &GetTPCResponse() {return fTPCResponse;}
   AliTOFPIDResponse &GetTOFResponse() {return fTOFResponse;}
 
-  Bool_t IsMC() {return fIsMC;}
-  
-
 private:
   Float_t           fRange;          // nSigma max in likelihood
   AliTPCPIDResponse fTPCResponse;
   AliITSPIDResponse fITSResponse;
   AliTOFPIDResponse fTOFResponse;
   AliTRDPIDResponse fTRDResponse;
-  Bool_t            fIsMC;
   
   ClassDef(AliAODpidUtil,1)  // PID calculation class
 };
 
 inline Float_t AliAODpidUtil::NumberOfSigmasTPC(const AliAODTrack *track, AliPID::EParticleType type) const {
   
-  UShort_t nTPCClus=track->GetTPCNcls();
   Double_t mom = track->P();
   AliAODPid *pidObj = track->GetDetPid();
+  UShort_t nTPCClus=pidObj->GetTPCsignalN();
   if (pidObj)
     mom = pidObj->GetTPCmomentum();
   return fTPCResponse.GetNumberOfSigmas(mom,pidObj->GetTPCsignal(),nTPCClus,type); 
@@ -69,9 +66,12 @@ inline Float_t AliAODpidUtil::NumberOfSigmasTPC(const AliAODTrack *track, AliPID
 
 inline Float_t AliAODpidUtil::NumberOfSigmasTOF(const AliAODTrack *track, AliPID::EParticleType type) const {
   Double_t times[AliPID::kSPECIES];
+  Double_t sigmaTOFPid[AliPID::kSPECIES];
   AliAODPid *pidObj = track->GetDetPid();
   pidObj->GetIntegratedTimes(times);
-  return (pidObj->GetTOFsignal() - times[type])/fTOFResponse.GetExpectedSigma(track->P(),times[type],AliPID::ParticleMass(type));
+  pidObj->GetTOFpidResolution(sigmaTOFPid);
+  if (sigmaTOFPid[type]>0) return (pidObj->GetTOFsignal() - times[type])/sigmaTOFPid[type];
+  else return (pidObj->GetTOFsignal() - times[type])/fTOFResponse.GetExpectedSigma(track->P(),times[type],AliPID::ParticleMass(type));
 }
 
 inline Float_t AliAODpidUtil::NumberOfSigmasITS(const AliAODTrack *track, AliPID::EParticleType type) const {