X-Git-Url: http://git.uio.no/git/?a=blobdiff_plain;f=STEER%2FSTEERBase%2FAliPIDResponse.h;h=9dffe8c37281483108d418052c28cdd25ba421b7;hb=e905f1e1783fc52473c359a6a6879bcc420050be;hp=55441e6a7bb2bcdadcdbb3c048c2dd5c6034bcc7;hpb=1c9d11bef80a7c9a2f3c617638d2ec9668b5e76b;p=u%2Fmrichter%2FAliRoot.git diff --git a/STEER/STEERBase/AliPIDResponse.h b/STEER/STEERBase/AliPIDResponse.h index 55441e6a7bb..9dffe8c3728 100644 --- a/STEER/STEERBase/AliPIDResponse.h +++ b/STEER/STEERBase/AliPIDResponse.h @@ -11,24 +11,27 @@ // 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" class TF1; class TObjArray; +class TLinearFitter; class AliVEvent; class AliTRDPIDResponseObject; class AliTOFPIDParams; +class AliHMPIDPIDParams; class AliOADBContainer; class AliPIDResponse : public TNamed { @@ -64,39 +67,59 @@ public: enum EDetPidStatus { kDetNoSignal=0, kDetPidOk=1, - kDetMismatch=2 + kDetMismatch=2, + kDetNoParams=3 }; - + AliITSPIDResponse &GetITSResponse() {return fITSResponse;} AliTPCPIDResponse &GetTPCResponse() {return fTPCResponse;} AliTOFPIDResponse &GetTOFResponse() {return fTOFResponse;} AliTRDPIDResponse &GetTRDResponse() {return fTRDResponse;} AliEMCALPIDResponse &GetEMCALResponse() {return fEMCALResponse;} + + // ----------------------------------------- + // buffered getters + // + + // Number of sigmas + EDetPidStatus NumberOfSigmas(EDetector detCode, const AliVParticle *track, AliPID::EParticleType type, Double_t &val) const; - //buffered PID calculation Float_t NumberOfSigmas(EDetector detCode, const AliVParticle *track, AliPID::EParticleType type) const; - 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 NumberOfSigmasTPC (const AliVParticle *track, AliPID::EParticleType type, AliTPCPIDResponse::ETPCdEdxSource dedxSource); + virtual Float_t NumberOfSigmasTPC (const AliVParticle *track, AliPID::EParticleType type, AliTPCPIDResponse::ETPCdEdxSource dedxSource) 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 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; - EDetPidStatus ComputePIDProbability (EDetector detCode, const AliVTrack *track, Int_t nSpecies, Double_t p[]) 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; virtual EDetPidStatus ComputeITSProbability (const AliVTrack *track, Int_t nSpecies, Double_t p[]) const; virtual EDetPidStatus ComputeTPCProbability (const AliVTrack *track, Int_t nSpecies, Double_t p[]) const; virtual EDetPidStatus ComputeTOFProbability (const AliVTrack *track, Int_t nSpecies, Double_t p[]) const; - virtual EDetPidStatus ComputeTRDProbability (const AliVTrack *track, Int_t nSpecies, Double_t p[],AliTRDPIDResponse::ETRDPIDMethod PIDmethod=AliTRDPIDResponse::kLQ1D) const; + virtual EDetPidStatus ComputeTRDProbability (const AliVTrack *track, Int_t nSpecies, Double_t p[]) const; virtual EDetPidStatus ComputeEMCALProbability(const AliVTrack *track, Int_t nSpecies, Double_t p[]) const; virtual EDetPidStatus ComputePHOSProbability (const AliVTrack *track, Int_t nSpecies, Double_t p[]) const; virtual EDetPidStatus ComputeHMPIDProbability(const AliVTrack *track, Int_t nSpecies, Double_t p[]) const; + virtual EDetPidStatus ComputeTRDProbability (const AliVTrack *track, Int_t nSpecies, Double_t p[],AliTRDPIDResponse::ETRDPIDMethod PIDmethod) const; + + // pid status + EDetPidStatus CheckPIDStatus(EDetector detCode, const AliVTrack *track) const; + + Float_t GetTOFMismatchProbability(const AliVTrack *track) const; + void SetITSPIDmethod(ITSPIDmethod pmeth) { fITSPIDmethod = pmeth; } void SetOADBPath(const char* path) {fOADBPath=path;} @@ -107,6 +130,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; } @@ -123,32 +149,53 @@ public: // event info Float_t GetCurrentCentrality() const {return 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 ITSPIDmethod fITSPIDmethod; // 0 = trunc mean; 1 = likelihood //unbuffered PID calculation - virtual Float_t GetNumberOfSigmasTOF (const AliVParticle */*track*/, AliPID::EParticleType /*type*/) const {return 0;} - EDetPidStatus GetComputeTRDProbability (const AliVTrack *track, Int_t nSpecies, Double_t p[],AliTRDPIDResponse::ETRDPIDMethod PIDmethod=AliTRDPIDResponse::kLQ1D) const; + 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.;} + 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: Bool_t fIsMC; // If we run on MC data Bool_t fCachePID; @@ -161,6 +208,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 @@ -169,14 +217,18 @@ 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 - + 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 @@ -184,8 +236,7 @@ private: Float_t fCurrCentrality; //! current centrality - Bool_t fTuneMConData; // switch to force the MC to be similar to data (dE/dx) - + void ExecNewRun(); // @@ -196,9 +247,15 @@ private: void SetITSParametrisation(); //TPC + void SetTPCEtaMaps(Double_t refineFactorMapX = 6.0, Double_t refineFactorMapY = 6.0, Double_t refineFactorSigmaMapX = 6.0, + Double_t refineFactorSigmaMapY = 6.0); void SetTPCPidResponseMaster(); void SetTPCParametrisation(); Double_t GetTPCMultiplicityBin(const AliVEvent * const event); + + // TPC helpers for the eta maps + void AddPointToHyperplane(TH2D* h, TLinearFitter* linExtrapolation, Int_t binX, Int_t binY); + TH2D* RefineHistoViaLinearInterpolation(TH2D* h, Double_t refineFactorX = 6.0, Double_t refineFactorY = 6.0); //TRD void SetTRDPidResponseMaster(); @@ -209,6 +266,10 @@ private: void SetTOFPidResponseMaster(); void InitializeTOFResponse(); + //HMPID + void SetHMPIDPidResponseMaster(); + void InitializeHMPIDResponse(); + //EMCAL void SetEMCALPidResponseMaster(); void InitializeEMCALResponse(); @@ -216,13 +277,28 @@ private: // void SetRecoInfo(); + //------------------------------------------------- //unbuffered PID calculation + // + + // Number of sigmas 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 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 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; EDetPidStatus GetComputeITSProbability (const AliVTrack *track, Int_t nSpecies, Double_t p[]) const; EDetPidStatus GetComputeTPCProbability (const AliVTrack *track, Int_t nSpecies, Double_t p[]) const; @@ -230,8 +306,17 @@ private: EDetPidStatus GetComputeEMCALProbability(const AliVTrack *track, Int_t nSpecies, Double_t p[]) const; EDetPidStatus GetComputePHOSProbability (const AliVTrack *track, Int_t nSpecies, Double_t p[]) const; EDetPidStatus GetComputeHMPIDProbability(const AliVTrack *track, Int_t nSpecies, Double_t p[]) const; - - ClassDef(AliPIDResponse, 10); //PID response handling + + // pid status + EDetPidStatus GetPIDStatus(EDetector det, const AliVTrack *track) const; + EDetPidStatus GetITSPIDStatus(const AliVTrack *track) const; + EDetPidStatus GetTPCPIDStatus(const AliVTrack *track) const; + EDetPidStatus GetTRDPIDStatus(const AliVTrack *track) const; + EDetPidStatus GetHMPIDPIDStatus(const AliVTrack *track) const; + EDetPidStatus GetPHOSPIDStatus(const AliVTrack *track) const; + EDetPidStatus GetEMCALPIDStatus(const AliVTrack *track) const; + + ClassDef(AliPIDResponse, 12); //PID response handling }; #endif