track->SetTOFpid(p);
if (heavy) track->ResetStatus(AliESDtrack::kTOFpid);
- if (!CheckTOFMatching(track)) track->SetStatus(AliESDtrack::kTOFmismatch);
+ if (!CheckTOFMatching(track)) track->SetStatus(AliESDtrack::kTOFmismatch);
}
//_________________________________________________________________________
Double_t exptimes[5];
track->GetIntegratedTimes(exptimes);
- Float_t dedx = track->GetTPCsignal();
- Float_t time = track->GetTOFsignal();
-
Float_t p = track->P();
+ Float_t dedx = track->GetTPCsignal();
+ Float_t time = track->GetTOFsignal() - fTOFResponse.GetStartTime(p);
+
Double_t ptpc[3];
track->GetInnerPxPyPz(ptpc);
Float_t momtpc=TMath::Sqrt(ptpc[0]*ptpc[0] + ptpc[1]*ptpc[1] + ptpc[2]*ptpc[2]);
Float_t dedxExp = fTPCResponse.GetExpectedSignal(momtpc,type);
Float_t resolutionTPC = fTPCResponse.GetExpectedSigma(momtpc,track->GetTPCsignalN(),type);
- if(TMath::Abs(dedx - dedxExp) < fRange * resolutionTPC){
+ if(TMath::Abs(dedx - dedxExp) < fRangeTOFMismatch * resolutionTPC){
status = kTRUE;
}
}
class AliESDpid {
public:
- AliESDpid(): fRange(5.), fITSPIDmethod(kITSTruncMean), fTPCResponse(), fITSResponse(), fTOFResponse(), fTRDResponse(){;}
+ AliESDpid(): fRange(5.), fRangeTOFMismatch(5.), fITSPIDmethod(kITSTruncMean), fTPCResponse(), fITSResponse(), fTOFResponse(), fTRDResponse(){;}
virtual ~AliESDpid() {}
Int_t MakePID(AliESDEvent *event, Bool_t TPCOnly = kFALSE, Float_t timeZeroTOF=9999) const;
void MakeTPCPID(AliESDtrack *track) const;
enum EStartTimeType_t {kFILL_T0,kTOF_T0, kT0_T0, kBest_T0};
void SetTOFResponse(AliESDEvent *event,EStartTimeType_t option);
+ void SetNMaxSigmaTOFTPCMismatch(Float_t range) {fRangeTOFMismatch=range;}
+ Float_t GetNMaxSigmaTOFTPCMismatch() const {return fRangeTOFMismatch;}
+
private:
Float_t fRange; // nSigma max in likelihood
+ Float_t fRangeTOFMismatch; // nSigma max for TOF matching with TPC
ITSPIDmethod fITSPIDmethod; // 0 = trunc mean; 1 = likelihood
AliTPCPIDResponse fTPCResponse;
AliITSPIDResponse fITSResponse;
// AliHMPIDPIDResponse fHMPIDResponse;
AliTRDPIDResponse fTRDResponse;
- ClassDef(AliESDpid,4) // PID calculation class
+ ClassDef(AliESDpid,5) // PID calculation class
};
inline Float_t AliESDpid::NumberOfSigmasTPC(const AliESDtrack *track, AliPID::EParticleType type) const {
fPCutMin[10] = 3;
}
//_________________________________________________________________________
-Float_t AliTOFPIDResponse::GetStartTime(Float_t mom) {
+Float_t AliTOFPIDResponse::GetStartTime(Float_t mom) const {
//
// Returns event_time value as estimated by TOF combinatorial algorithm
//
}
//_________________________________________________________________________
-Float_t AliTOFPIDResponse::GetStartTimeRes(Float_t mom) {
+Float_t AliTOFPIDResponse::GetStartTimeRes(Float_t mom) const {
//
// Returns event_time resolution as estimated by TOF combinatorial algorithm
//
Float_t GetT0binRes(Int_t ibin) const {if(ibin >=0 && ibin <= fNmomBins) return fT0resolution[ibin]; else return 0.0;};
// Get Start Time for a track
- Float_t GetStartTime(Float_t mom);
- Float_t GetStartTimeRes(Float_t mom);
+ Float_t GetStartTime(Float_t mom) const;
+ Float_t GetStartTimeRes(Float_t mom) const;
private:
Double_t fSigma; // intrinsic TOF resolution