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() {;}
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);
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 {