]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - STEER/AliESDpid.h
More fixes for running on the grid
[u/mrichter/AliRoot.git] / STEER / AliESDpid.h
index 72071e4dd647c001e710291dd8fc6a7427c170c5..e1f15d6c7cd473b0b3d4c2255ec61a6c8f7576ac 100644 (file)
@@ -3,23 +3,67 @@
 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
  * See cxx source for full Copyright notice                               */
 
+/* $Id$ */
+
 //-------------------------------------------------------
 //                    Combined PID class
-//
+//           for the Event Summary Data class
 //   Origin: Iouri Belikov, CERN, Jouri.Belikov@cern.ch 
+//   Modified: Jens Wiechula, Uni Tuebingen, jens.wiechula@cern.ch
 //-------------------------------------------------------
 #include <Rtypes.h>
+#include "AliESDtrack.h" // Needed for inline functions
+
+//#include "HMPID/AliHMPID.h"
+//#include "TRD/AliTRDpidESD.h"
+
+#include "AliPIDResponse.h"
 
-class AliESD;
+class AliESDEvent;
+class AliVEvent;
+class AliVParticle;
 
-class AliESDpid {
+class AliESDpid : public AliPIDResponse  {
 public:
-  AliESDpid(){}
-  static Int_t MakePID(AliESD *event);
+  AliESDpid(Bool_t forMC=kFALSE): AliPIDResponse(forMC), fRange(5.), fRangeTOFMismatch(5.), fITSPIDmethod(kITSTruncMean) {;}
+  virtual ~AliESDpid() {}
+  
+  Int_t MakePID(AliESDEvent *event, Bool_t TPCOnly = kFALSE, Float_t timeZeroTOF=9999) const;
+  void MakeTPCPID(AliESDtrack *track) const;
+  void MakeITSPID(AliESDtrack *track) const;
+  void MakeTOFPID(AliESDtrack *track, Float_t /*timeZeroTOF*/) const;
+  Bool_t CheckTOFMatching(AliESDtrack *track) const;
+  //  void MakeHMPIDPID(AliESDtrack *track);
+  void MakeTRDPID(AliESDtrack *track) const;
+  void CombinePID(AliESDtrack *track) const;
+
+  enum ITSPIDmethod { kITSTruncMean, kITSLikelihood };
+  void SetITSPIDmethod(ITSPIDmethod pmeth) { fITSPIDmethod = pmeth; }
+  
+  virtual Float_t NumberOfSigmasTOF(const AliVParticle *vtrack, AliPID::EParticleType type, const Float_t timeZeroTOF) const;
+  virtual Float_t NumberOfSigmasTOF(const AliVParticle *vtrack, AliPID::EParticleType type) const {return NumberOfSigmasTOF(vtrack,type,0); }
+  
+  void SetTOFResponse(AliVEvent *vevent,EStartTimeType_t option);
+
+  void SetNMaxSigmaTOFTPCMismatch(Float_t range) {fRangeTOFMismatch=range;}
+  Float_t GetNMaxSigmaTOFTPCMismatch() const {return fRangeTOFMismatch;}
+
 private:
-  ClassDef(AliESDpid,1)   // TPC PID class
+  Float_t           fRange;          // nSigma max in likelihood
+  Float_t           fRangeTOFMismatch; // nSigma max for TOF matching with TPC
+  ITSPIDmethod      fITSPIDmethod;   // 0 = trunc mean; 1 = likelihood 
+
+  ClassDef(AliESDpid,6)  // PID calculation class
 };
 
+
+inline Float_t AliESDpid::NumberOfSigmasTOF(const AliVParticle *vtrack, AliPID::EParticleType type, const Float_t /*timeZeroTOF*/) const {
+  AliESDtrack *track=(AliESDtrack*)vtrack;
+  Double_t times[AliPID::kSPECIES];
+  track->GetIntegratedTimes(times);
+  return (track->GetTOFsignal() - fTOFResponse.GetStartTime(track->GetP()) - times[type])/fTOFResponse.GetExpectedSigma(track->GetP(),times[type],AliPID::ParticleMass(type));
+}
+
 #endif