]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - STEER/AOD/AliAODPid.h
add common abstract interface classes for flat and fat ESDs
[u/mrichter/AliRoot.git] / STEER / AOD / AliAODPid.h
index 9d80df9df2a255d34608c20a5c8ad2fc5bd63407..2016db581abebc5313c470e1b061fadaa18ad6e9 100644 (file)
@@ -11,6 +11,7 @@
 //-------------------------------------------------------------------------
 
 #include <TObject.h>
+#include "AliPID.h"
 
 class AliTPCdEdxInfo;
 
@@ -22,26 +23,25 @@ class AliAODPid : public TObject {
   AliAODPid(const AliAODPid& pid); 
   AliAODPid& operator=(const AliAODPid& pid);
   
-  enum{kSPECIES=5, kTRDnPlanes=6};
+  enum{kTRDnPlanes=6};
 
  //setters
   void      SetITSsignal(Double_t its)                         {fITSsignal=its;}
   void      SetITSdEdxSamples(const Double_t s[4]);
   void      SetTPCsignal(Double_t tpc)                         {fTPCsignal=tpc;}
-  void      SetTPCsignalN(UShort_t tpcN)                       {fTPCsignalN=tpcN;}
+  void      SetTPCsignalN(UShort_t tpcN)                       {fTPCsignalN=(UChar_t)((tpcN<160)?tpcN:160);}
   void      SetTPCmomentum(Double_t tpcMom)                    {fTPCmomentum=tpcMom;}
-  void      SetTPCdEdxInfo(AliTPCdEdxInfo * dEdxInfo); 
-  inline void  SetTRDsignal(Int_t nslices, const Double_t * const trdslices);  
+  void      SetTPCTgl(Double_t tpcTgl)                         {fTPCTgl=tpcTgl;}
+  void      SetTPCdEdxInfo(AliTPCdEdxInfo * dEdxInfo);
+  void      SetTRDslices(Int_t nslices, const Double_t * const trdslices);  
+  void      SetTRDsignal(Double_t sig)                         {fTRDsignal = sig;}
   void      SetTRDmomentum(Int_t nplane, Float_t trdMom)       {fTRDmomentum[nplane]=trdMom;}
-  inline void  SetTRDncls(UChar_t ncls, Int_t layer = -1);
+  void      SetTRDncls(UChar_t ncls, Int_t layer = -1);
   void      SetTRDntrackletsPID(UChar_t ntls) {fTRDntls = ntls;}
+  void      SetTRDChi2(Double_t chi2)          {fTRDChi2 = chi2;}
   void      SetTOFsignal(Double_t tof)                         {fTOFesdsignal=tof;}
   void      SetTOFpidResolution(Double_t tofPIDres[5]);
   void      SetIntegratedTimes(Double_t timeint[5]);
-  void      SetHMPIDsignal(Double_t hmpid)                     {fHMPIDsignal=hmpid;}
-  void      SetHMPIDprobs(Double_t hmpPid[5]);
-  void      SetEMCALPosition(Double_t emcalpos[3]);
-  void      SetEMCALMomentum(Double_t emcalmom[3]);
 
   Double_t  GetITSsignal()       const {return  fITSsignal;}
   void      GetITSdEdxSamples(Double_t *s) const;
@@ -50,52 +50,52 @@ class AliAODPid : public TObject {
     else return 0.;
   }
   Double_t  GetTPCsignal()       const {return  fTPCsignal;}
-  UShort_t  GetTPCsignalN()      const {return  fTPCsignalN;}
+  UShort_t  GetTPCsignalN()      const {return  (UShort_t)fTPCsignalN;}
   AliTPCdEdxInfo * GetTPCdEdxInfo()const{return fTPCdEdxInfo;}
 
   Double_t  GetTPCmomentum()     const {return  fTPCmomentum;}
-  Int_t     GetTRDnSlices()      const {return  fTRDnSlices;}
-  Double_t* GetTRDsignal()       const {return  fTRDslices;}
-  const Float_t*  GetTRDmomentum() const {return  fTRDmomentum;}
+  Double_t  GetTPCTgl()          const {return  fTPCTgl;}
+  Int_t     GetTRDnSlices()      const {return  fTRDnSlices/6;}
+  Double_t  GetTRDsignal()       const {return  fTRDsignal;}
+  Double_t* GetTRDslices()       const {return  fTRDslices;}
+  Double_t  GetTRDChi2()         const {return fTRDChi2;}
+  const Double_t*  GetTRDmomentum() const {return  fTRDmomentum;}
   UChar_t   GetTRDncls(UChar_t layer) const { if(layer > 5) return 0; return fTRDncls[layer];}
-  inline UChar_t GetTRDncls() const;
+  UChar_t   GetTRDncls() const;
   UChar_t   GetTRDntrackletsPID() const {return fTRDntls;}
   Double_t  GetTOFsignal()       const {return  fTOFesdsignal;}
-  Double_t  GetHMPIDsignal()     const {return  fHMPIDsignal;}
-  void      GetHMPIDprobs(Double_t *p) const;
 
-  void      GetIntegratedTimes(Double_t timeint[5])  const; 
-  void      GetEMCALPosition  (Double_t emcalpos[3]) const;
-  void      GetEMCALMomentum  (Double_t emcalmom[3]) const;
+  void      GetIntegratedTimes(Double_t *timeint, Int_t nspec=AliPID::kSPECIES)  const; 
   void      GetTOFpidResolution (Double_t tofRes[5]) const;
 
  private :
   Double32_t  fITSsignal;        //[0.,0.,10] detector raw signal
   Double32_t  fITSdEdxSamples[4];//[0.,0.,10] ITS dE/dx samples
+
   Double32_t  fTPCsignal;        //[0.,0.,10] detector raw signal
-  UShort_t    fTPCsignalN;       // number of points used for TPC dE/dx
-  Double_t    fTPCmomentum;      // momentum at the inner wall of TPC;
-  Int_t       fTRDnSlices;       // N slices used for PID in the TRD
+  UChar_t     fTPCsignalN;       // number of points used for TPC dE/dx
+  Double32_t  fTPCmomentum;      //[0.,0.,20] momentum at the inner wall of TPC;
+  Double32_t  fTPCTgl;           //[0.,0.,10] track momentum dip angle at the inner wall of TPC;
+  
+  Int_t       fTRDnSlices;       // N slices used for PID in the TRD (as number of slices per tracklet * number of layers)
   UChar_t     fTRDntls;          // number of tracklets used for PID calculation
   UChar_t     fTRDncls[6];       // number of clusters used for dE/dx calculation
-  Double32_t* fTRDslices;        //[fTRDnSlices]
-  Float_t     fTRDmomentum[6];   // momentum at the TRD layers
-  Double32_t  fTOFesdsignal;     // TOF signal - t0 (T0 interaction time)
-  Double32_t  fTOFpidResolution[5]; // TOF pid resolution for each mass hypotesys 
-  Double32_t  fIntTime[5];       // track time hypothesis
-  Double32_t  fHMPIDsignal;      // detector raw signal
-  Double32_t  fHMPIDprobs[5];    // detector pid probabilities
-  Double32_t  fEMCALPosition[3]; // global position of track
-                                // extrapolated to EMCAL surface
-  Double32_t  fEMCALMomentum[3]; // momentum of track
-                                // extrapolated to EMCAL surface
+  Double32_t* fTRDslices;        //[fTRDnSlices][0.,0.,10]
+  Double32_t  fTRDsignal;        //[0.,0.,10]  TRD signal
+  Double32_t  fTRDmomentum[6];   //[0.,0.,10]  momentum at the TRD layers
+  Double32_t  fTRDChi2;          //[0.,0.,10]  TRD chi2
+
+  Double32_t  fTOFesdsignal;     //[0.,0.,20] TOF signal - t0 (T0 interaction time)
+  Double32_t  fTOFpidResolution[5]; //[0.,0.,20] TOF pid resolution for each mass hypotesys 
+  Double32_t  fIntTime[5];       //[0.,0.,20] track time hypothesis
   AliTPCdEdxInfo * fTPCdEdxInfo; // object containing dE/dx information for different pad regions
 
-  ClassDef(AliAODPid, 9);
+  ClassDef(AliAODPid, 15);
 };
 
 //_____________________________________________________________
-void AliAODPid::SetTRDsignal(Int_t nslices, const Double_t * const trdslices) {
+inline void AliAODPid::SetTRDslices(Int_t nslices, const Double_t * const trdslices) {
   //
   // Set TRD dE/dx slices and the number of dE/dx slices per track
   //
@@ -108,7 +108,7 @@ void AliAODPid::SetTRDsignal(Int_t nslices, const Double_t * const trdslices) {
 }
 
 //_____________________________________________________________
-void AliAODPid::SetTRDncls(UChar_t ncls, Int_t layer) { 
+inline void AliAODPid::SetTRDncls(UChar_t ncls, Int_t layer) { 
   //
   // Set the number of clusters / tracklet
   // If no layer is specified the full number of clusters will be put in layer 0
@@ -119,7 +119,7 @@ void AliAODPid::SetTRDncls(UChar_t ncls, Int_t layer) {
 }
 
 //_____________________________________________________________
-UChar_t AliAODPid::GetTRDncls() const{
+inline UChar_t AliAODPid::GetTRDncls() const {
   //
   // Get number of clusters per track
   // Calculated as sum of the number of clusters per tracklet