AliPIDResponse(Bool_t isMC=kFALSE);
virtual ~AliPIDResponse();
+ enum EDetCode {
+ kDetITS = 0x1,
+ kDetTPC = 0x2,
+ kDetTRD = 0x4,
+ kDetTOF = 0x8,
+ kDetHMPID = 0x10,
+ kDetEMCAL = 0x20,
+ kDetPHOS = 0x40
+ };
+
enum EStartTimeType_t {kFILL_T0,kTOF_T0, kT0_T0, kBest_T0};
+
+ enum ITSPIDmethod { kITSTruncMean, kITSLikelihood };
+
+ enum EDetPidStatus {
+ kDetNoSignal=0,
+ kDetPidOk=1,
+ kDetMismatch=2
+ };
AliITSPIDResponse &GetITSResponse() {return fITSResponse;}
AliTPCPIDResponse &GetTPCResponse() {return fTPCResponse;}
AliTOFPIDResponse &GetTOFResponse() {return fTOFResponse;}
AliTRDPIDResponse &GetTRDResponse() {return fTRDResponse;}
+
+ Float_t NumberOfSigmas(EDetCode detCode, const AliVParticle *track, AliPID::EParticleType type) const;
virtual Float_t NumberOfSigmasITS(const AliVParticle *track, AliPID::EParticleType type) const;
virtual Float_t NumberOfSigmasTPC(const AliVParticle *track, AliPID::EParticleType type) const;
virtual Float_t NumberOfSigmasTOF(const AliVParticle *track, AliPID::EParticleType type) const = 0;
+ EDetPidStatus ComputePIDProbability (EDetCode detCode, const AliVTrack *track, Int_t nSpecies, Double_t p[]) const;
+
+ EDetPidStatus ComputeITSProbability (const AliVTrack *track, Int_t nSpecies, Double_t p[]) const;
+ EDetPidStatus ComputeTPCProbability (const AliVTrack *track, Int_t nSpecies, Double_t p[]) const;
+ EDetPidStatus ComputeTOFProbability (const AliVTrack *track, Int_t nSpecies, Double_t p[]) const;
+ EDetPidStatus ComputeTRDProbability (const AliVTrack *track, Int_t nSpecies, Double_t p[]) const;
+ EDetPidStatus ComputeEMCALProbability(const AliVTrack *track, Int_t nSpecies, Double_t p[]) const;
+ EDetPidStatus ComputePHOSProbability (const AliVTrack *track, Int_t nSpecies, Double_t p[]) const;
+ EDetPidStatus ComputeHMPIDProbability(const AliVTrack *track, Int_t nSpecies, Double_t p[]) const;
+
+
+ void SetITSPIDmethod(ITSPIDmethod pmeth) { fITSPIDmethod = pmeth; }
virtual void SetTOFResponse(AliVEvent */*event*/,EStartTimeType_t /*option*/) {;}
void SetOADBPath(const char* path) {fOADBPath=path;}
void InitialiseEvent(AliVEvent *event, Int_t pass);
+ // User settings for the MC period and reco pass
+ void SetMCperiod(const char *mcPeriod) {fMCperiodUser=mcPeriod;}
+ void SetRecoPass(Int_t recoPass) {fRecoPassUser=recoPass;}
+
AliPIDResponse(const AliPIDResponse &other);
AliPIDResponse& operator=(const AliPIDResponse &other);
AliTRDPIDResponse fTRDResponse; //PID response function of the TRD
AliTOFPIDResponse fTOFResponse; //PID response function of the TOF
+ Float_t fRange; // nSigma max in likelihood
+ ITSPIDmethod fITSPIDmethod; // 0 = trunc mean; 1 = likelihood
+
private:
Bool_t fIsMC; // If we run on MC data
TString fBeamType; //! beam type (PP) or (PBPB)
TString fLHCperiod; //! LHC period
TString fMCperiodTPC; //! corresponding MC period to use for the TPC splines
+ TString fMCperiodUser; // MC prodution requested by the user
Int_t fRecoPass; //! reconstruction pass
+ Int_t fRecoPassUser; // reconstruction pass explicitly set by the user
Int_t fRun; //! current run number
Int_t fOldRun; //! current run number
-
+
TObjArray *fArrPidResponseMaster; //! TPC pid splines
TF1 *fResolutionCorrection; //! TPC resolution correction