AliAODpidUtil(Bool_t isMC = kFALSE): AliPIDResponse(isMC) {;}
virtual ~AliAODpidUtil() {;}
- Int_t MakePID(const AliAODTrack *track,Double_t *p) const;
- void MakeTPCPID(const AliAODTrack *track,Double_t *p) const;
- void MakeITSPID(const AliAODTrack *track,Double_t *p) const;
- void MakeTOFPID(const AliAODTrack *track,Double_t *p) const;
- // void MakeHMPIDPID(AliESDtrack *track);
- void MakeTRDPID(const AliAODTrack *track,Double_t *p) const;
- virtual Float_t NumberOfSigmasTOF(const AliVParticle *vtrack, AliPID::EParticleType type) const;
+ Float_t GetTPCsignalTunedOnData(const AliVTrack *t) const;
+ Float_t GetTOFsignalTunedOnData(const AliVTrack *t) const;
+
+protected:
+ virtual Float_t GetSignalDeltaTOFold(const AliVParticle *track, AliPID::EParticleType type, Bool_t ratio=kFALSE) const;
+ virtual Float_t GetNumberOfSigmasTOFold(const AliVParticle *vtrack, AliPID::EParticleType type) const;
private:
ClassDef(AliAODpidUtil,3) // PID calculation class
};
-inline Float_t AliAODpidUtil::NumberOfSigmasTOF(const AliVParticle *vtrack, AliPID::EParticleType type) const {
- AliAODTrack *track=(AliAODTrack*)vtrack;
- Bool_t oldAod=kTRUE;
- Double_t sigTOF;
- AliAODPid *pidObj = track->GetDetPid();
- if (!pidObj) return -999.;
- Double_t tofTime=pidObj->GetTOFsignal();
- Double_t expTime=fTOFResponse.GetExpectedSignal((AliVTrack*)vtrack,type);
- Double_t sigmaTOFPid[AliPID::kSPECIES];
- pidObj->GetTOFpidResolution(sigmaTOFPid);
- AliAODEvent *event=(AliAODEvent*)track->GetAODEvent();
- if (event) { // protection if the user didn't call GetTrack, which sets the internal pointer
- AliTOFHeader* tofH=(AliTOFHeader*)event->GetTOFHeader();
- if (tofH && (TMath::Abs(sigmaTOFPid[0]) <= 1.E-16) ) { // new AOD
- sigTOF=fTOFResponse.GetExpectedSigma(track->P(),expTime,AliPID::ParticleMassZ(type)); //fTOFResponse is set in InitialiseEvent
- tofTime -= fTOFResponse.GetStartTime(vtrack->P());
- oldAod=kFALSE;
- }
- } else {
- AliError("pointer to AliAODEvent not found, please call GetTrack to set it");
- return -996.;
- }
- if (oldAod) { // old AOD
- if (type <= AliPID::kProton) {
- sigTOF=sigmaTOFPid[type];
- } else return -998.; // light nuclei cannot be supported on old AOD because we don't have timeZero resolution
- }
- if (sigTOF>0) return (tofTime - expTime)/sigTOF;
- else return -997.;
-}
#endif