]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - STEER/AliPIDResponse.h
As part of the efforts of the combined PID subgroup we are continuing to develop...
[u/mrichter/AliRoot.git] / STEER / AliPIDResponse.h
index 7d89deeffce82e2aeb878132e72c1d5bc431bc9c..c769da07c9a52dc2feb036ffc4b541c7487c3132 100644 (file)
@@ -29,22 +29,58 @@ public:
   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);
   
@@ -54,6 +90,9 @@ protected:
   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
 
@@ -62,10 +101,12 @@ private:
   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