X-Git-Url: http://git.uio.no/git/?a=blobdiff_plain;f=STEER%2FSTEERBase%2FAliPIDResponse.h;h=280c68e72f437c72da080d02313b53a70bf08756;hb=ac9870144bd00e3584aeec1996659f27441b5ad4;hp=1ecf0aaf5d87a1d446f8db0d97adac4e84486568;hpb=97d1753003409fa2952f9a89a10f3e2a3c32f311;p=u%2Fmrichter%2FAliRoot.git diff --git a/STEER/STEERBase/AliPIDResponse.h b/STEER/STEERBase/AliPIDResponse.h index 1ecf0aaf5d8..280c68e72f4 100644 --- a/STEER/STEERBase/AliPIDResponse.h +++ b/STEER/STEERBase/AliPIDResponse.h @@ -11,15 +11,16 @@ // Origin: Jens Wiechula, Uni Tuebingen, jens.wiechula@cern.ch // //---------------------------------------------------------------// +#include "AliVParticle.h" +#include "AliVTrack.h" + #include "AliITSPIDResponse.h" #include "AliTPCPIDResponse.h" #include "AliTRDPIDResponse.h" #include "AliTOFPIDResponse.h" +#include "AliHMPIDPIDResponse.h" #include "AliEMCALPIDResponse.h" - - -#include "AliVParticle.h" -#include "AliVTrack.h" +#include "AliPID.h" #include "TNamed.h" @@ -30,6 +31,7 @@ class TLinearFitter; class AliVEvent; class AliTRDPIDResponseObject; class AliTOFPIDParams; +class AliHMPIDPIDParams; class AliOADBContainer; class AliPIDResponse : public TNamed { @@ -58,6 +60,12 @@ public: kDetPHOS = 0x40 }; + enum EBeamType { + kPP = 0, + kPPB, + kPBPB + }; + enum EStartTimeType_t {kFILL_T0,kTOF_T0, kT0_T0, kBest_T0}; enum ITSPIDmethod { kITSTruncMean, kITSLikelihood }; @@ -87,13 +95,21 @@ public: 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 NumberOfSigmasTPC (const AliVParticle *track, AliPID::EParticleType type, AliTPCPIDResponse::ETPCdEdxSource dedxSource) const; + virtual Float_t NumberOfSigmasTRD (const AliVParticle *track, AliPID::EParticleType type) const; virtual Float_t NumberOfSigmasEMCAL(const AliVParticle *track, AliPID::EParticleType type, Double_t &eop, Double_t showershape[4]) const; virtual Float_t NumberOfSigmasTOF (const AliVParticle *track, AliPID::EParticleType type) const; - virtual Float_t NumberOfSigmasTOF (const AliVParticle *track, AliPID::EParticleType type, const Float_t /*timeZeroTOF*/) const { return NumberOfSigmasTOF(track,type); } + virtual Float_t NumberOfSigmasTOF (const AliVParticle *track, AliPID::EParticleType type, Float_t /*timeZeroTOF*/) const { return NumberOfSigmasTOF(track,type); } + virtual Float_t NumberOfSigmasHMPID(const AliVParticle *track, AliPID::EParticleType type) const; virtual Float_t NumberOfSigmasEMCAL(const AliVParticle *track, AliPID::EParticleType type) const; Bool_t IdentifiedAsElectronTRD(const AliVTrack *track, Double_t efficiencyLevel,Double_t centrality=-1,AliTRDPIDResponse::ETRDPIDMethod PIDmethod=AliTRDPIDResponse::kLQ1D) const; + Bool_t IdentifiedAsElectronTRD(const AliVTrack *track, Int_t &ntracklets, Double_t efficiencyLevel,Double_t centrality=-1,AliTRDPIDResponse::ETRDPIDMethod PIDmethod=AliTRDPIDResponse::kLQ1D) const; + + // Signal delta + EDetPidStatus GetSignalDelta(EDetector detCode, const AliVParticle *track, AliPID::EParticleType type, Double_t &val, Bool_t ratio=kFALSE) const; + Double_t GetSignalDelta(EDetector detCode, const AliVParticle *track, AliPID::EParticleType type, Bool_t ratio=kFALSE) const; + // Probabilities EDetPidStatus ComputePIDProbability (EDetCode detCode, const AliVTrack *track, Int_t nSpecies, Double_t p[]) const; EDetPidStatus ComputePIDProbability (EDetector detCode, const AliVTrack *track, Int_t nSpecies, Double_t p[]) const; @@ -111,8 +127,9 @@ public: // pid status EDetPidStatus CheckPIDStatus(EDetector detCode, const AliVTrack *track) const; - Float_t GetTOFMismatchProbability(const AliVTrack *track) const; - + AliTOFPIDParams *GetTOFPIDParams() const {return fTOFPIDParams;} + Float_t GetTOFMismatchProbability(const AliVTrack *track = NULL) const; // if empty argument return the value stored during TOF probability computation + void SetITSPIDmethod(ITSPIDmethod pmeth) { fITSPIDmethod = pmeth; } void SetOADBPath(const char* path) {fOADBPath=path;} @@ -123,6 +140,9 @@ public: void InitialiseEvent(AliVEvent *event, Int_t pass, Int_t run=-1); void SetCurrentFile(const char* file) { fCurrentFile=file; } + + void SetCurrentAliRootRev(Int_t alirootRev) { fCurrentAliRootRev = alirootRev; } + Int_t GetCurrentAliRootRev() const { return fCurrentAliRootRev; } // cache PID in the track void SetCachePID(Bool_t cache) { fCachePID=cache; } @@ -138,28 +158,38 @@ public: // event info Float_t GetCurrentCentrality() const {return fCurrCentrality;}; - + void SetCurrentCentrality(Float_t centrality) {fCurrCentrality=centrality;fEMCALResponse.SetCentrality(fCurrCentrality);}; // TPC setting void SetUseTPCEtaCorrection(Bool_t useEtaCorrection = kTRUE) { fUseTPCEtaCorrection = useEtaCorrection; }; Bool_t UseTPCEtaCorrection() const { return fUseTPCEtaCorrection; }; + void SetUseTPCMultiplicityCorrection(Bool_t useMultiplicityCorrection = kTRUE) { fUseTPCMultiplicityCorrection = useMultiplicityCorrection; }; + Bool_t UseTPCMultiplicityCorrection() const { return fUseTPCMultiplicityCorrection; }; + // TOF setting - void SetTOFtail(Float_t tail=1.1){if(tail > 0) fTOFtail=tail; else printf("TOF tail should be greater than 0 (nothing done)\n");}; + void SetTOFtail(Float_t tail=0.9){if(tail > 0) fTOFtail=tail; else printf("TOF tail should be greater than 0 (nothing done)\n");}; void SetTOFResponse(AliVEvent *vevent,EStartTimeType_t option); virtual Float_t GetTPCsignalTunedOnData(const AliVTrack *t) const {return t->GetTPCsignal();}; + virtual Float_t GetTOFsignalTunedOnData(const AliVTrack *t) const {return t->GetTOFsignal();}; Bool_t IsTunedOnData() const {return fTuneMConData;}; void SetTunedOnData(Bool_t flag=kTRUE,Int_t recoPass=0){fTuneMConData = flag; if(recoPass>0) fRecoPassUser = recoPass;}; + Int_t GetTunedOnDataMask() const {return fTuneMConDataMask;}; + void SetTunedOnDataMask(Int_t detMask) {fTuneMConDataMask = detMask;} + // Utilities + TString GetChecksum(const TObject* obj) const; + AliPIDResponse(const AliPIDResponse &other); AliPIDResponse& operator=(const AliPIDResponse &other); - + protected: - AliITSPIDResponse fITSResponse; //PID response function of the ITS - AliTPCPIDResponse fTPCResponse; //PID response function of the TPC - AliTRDPIDResponse fTRDResponse; //PID response function of the TRD - AliTOFPIDResponse fTOFResponse; //PID response function of the TOF + AliITSPIDResponse fITSResponse; //PID response function of the ITS + AliTPCPIDResponse fTPCResponse; //PID response function of the TPC + AliTRDPIDResponse fTRDResponse; //PID response function of the TRD + AliTOFPIDResponse fTOFResponse; //PID response function of the TOF + AliHMPIDPIDResponse fHMPIDResponse; //PID response function of the HMPID AliEMCALPIDResponse fEMCALResponse; //PID response function of the EMCAL Float_t fRange; // nSigma max in likelihood @@ -167,10 +197,19 @@ protected: //unbuffered PID calculation virtual Float_t GetNumberOfSigmasTOFold (const AliVParticle */*track*/, AliPID::EParticleType /*type*/) const {return 0;} + virtual Float_t GetSignalDeltaTOFold(const AliVParticle */*track*/, AliPID::EParticleType /*type*/, Bool_t /*ratio*/=kFALSE) const {return -9999.;} + + Int_t CalculateTRDResponse(const AliVTrack *track, Double_t p[],AliTRDPIDResponse::ETRDPIDMethod PIDmethod) const; EDetPidStatus GetComputeTRDProbability (const AliVTrack *track, Int_t nSpecies, Double_t p[],AliTRDPIDResponse::ETRDPIDMethod PIDmethod=AliTRDPIDResponse::kLQ1D) const; EDetPidStatus GetTOFPIDStatus(const AliVTrack *track) const; + Bool_t fTuneMConData; // switch to force the MC to be similar to data + Int_t fTuneMConDataMask; // select for which detectors enable MC tuning on data + + private: + static Float_t fgTOFmismatchProb; // TOF mismatch probability (Bayesian) + Bool_t fIsMC; // If we run on MC data Bool_t fCachePID; @@ -182,6 +221,7 @@ private: TString fMCperiodTPC; //! corresponding MC period to use for the TPC splines TString fMCperiodUser; // MC prodution requested by the user TString fCurrentFile; //! name of currently processed file + Int_t fCurrentAliRootRev; //! Aliroot rev. used to reconstruct the data Int_t fRecoPass; //! reconstruction pass Int_t fRecoPassUser; // reconstruction pass explicitly set by the user Int_t fRun; //! current run number @@ -190,23 +230,26 @@ private: Float_t fResT0C; //! T0C resolution in current run Float_t fResT0AC; //! T0A.and.T0C resolution in current run - TObjArray *fArrPidResponseMaster; //! TPC pid splines - TF1 *fResolutionCorrection; //! TPC resolution correction - AliOADBContainer* fOADBvoltageMaps; //! container with the voltage maps - Bool_t fUseTPCEtaCorrection; // Use TPC eta correction + TObjArray *fArrPidResponseMaster; //! TPC pid splines + TF1 *fResolutionCorrection; //! TPC resolution correction + AliOADBContainer* fOADBvoltageMaps; //! container with the voltage maps + Bool_t fUseTPCEtaCorrection; // Use TPC eta correction + Bool_t fUseTPCMultiplicityCorrection; // Use TPC multiplicity correction AliTRDPIDResponseObject *fTRDPIDResponseObject; //! TRD PID Response Object Float_t fTOFtail; //! TOF tail effect used in TOF probability AliTOFPIDParams *fTOFPIDParams; //! TOF PID Params - period depending (OADB loaded) + + AliHMPIDPIDParams *fHMPIDPIDParams; //! HMPID PID Params (OADB loaded) TObjArray *fEMCALPIDParams; //! EMCAL PID Params AliVEvent *fCurrentEvent; //! event currently being processed Float_t fCurrCentrality; //! current centrality - - Bool_t fTuneMConData; // switch to force the MC to be similar to data (dE/dx) + + EBeamType fBeamTypeNum; //! beam type enum void ExecNewRun(); @@ -237,6 +280,10 @@ private: void SetTOFPidResponseMaster(); void InitializeTOFResponse(); + //HMPID + void SetHMPIDPidResponseMaster(); + void InitializeHMPIDResponse(); + //EMCAL void SetEMCALPidResponseMaster(); void InitializeEMCALResponse(); @@ -252,11 +299,20 @@ private: Float_t GetNumberOfSigmas(EDetector detCode, const AliVParticle *track, AliPID::EParticleType type) const; Float_t GetNumberOfSigmasITS (const AliVParticle *track, AliPID::EParticleType type) const; Float_t GetNumberOfSigmasTPC (const AliVParticle *track, AliPID::EParticleType type) const; + Float_t GetNumberOfSigmasTRD (const AliVParticle *track, AliPID::EParticleType type) const; Float_t GetNumberOfSigmasTOF (const AliVParticle *track, AliPID::EParticleType type) const; + Float_t GetNumberOfSigmasHMPID(const AliVParticle *track, AliPID::EParticleType type) const; Float_t GetNumberOfSigmasEMCAL(const AliVParticle *track, AliPID::EParticleType type, Double_t &eop, Double_t showershape[4]) const; Float_t GetNumberOfSigmasEMCAL(const AliVParticle *track, AliPID::EParticleType type) const; Float_t GetBufferedNumberOfSigmas(EDetector detCode, const AliVParticle *track, AliPID::EParticleType type) const; + + // Signal deltas + EDetPidStatus GetSignalDeltaITS(const AliVParticle *track, AliPID::EParticleType type, Double_t &val, Bool_t ratio=kFALSE) const; + EDetPidStatus GetSignalDeltaTPC(const AliVParticle *track, AliPID::EParticleType type, Double_t &val, Bool_t ratio=kFALSE) const; + EDetPidStatus GetSignalDeltaTRD(const AliVParticle *track, AliPID::EParticleType type, Double_t &val, Bool_t ratio=kFALSE) const; + EDetPidStatus GetSignalDeltaTOF(const AliVParticle *track, AliPID::EParticleType type, Double_t &val, Bool_t ratio=kFALSE) const; + EDetPidStatus GetSignalDeltaHMPID(const AliVParticle *vtrack, AliPID::EParticleType type, Double_t &val, Bool_t ratio=kFALSE) const; // Probabilities EDetPidStatus GetComputePIDProbability (EDetector detCode, const AliVTrack *track, Int_t nSpecies, Double_t p[]) const; @@ -276,7 +332,7 @@ private: EDetPidStatus GetPHOSPIDStatus(const AliVTrack *track) const; EDetPidStatus GetEMCALPIDStatus(const AliVTrack *track) const; - ClassDef(AliPIDResponse, 11); //PID response handling + ClassDef(AliPIDResponse, 13); //PID response handling }; #endif