]> git.uio.no Git - u/mrichter/AliRoot.git/blob - STEER/AOD/AliAODPid.h
Update timestamp for new data points simulation
[u/mrichter/AliRoot.git] / STEER / AOD / AliAODPid.h
1 #ifndef AliAODPID_H
2 #define AliAODPID_H
3 /* Copyright(c) 1998-2007, ALICE Experiment at CERN, All rights reserved. *
4  * See cxx source for full Copyright notice                               */
5
6 /* $Id$ */
7
8 //-------------------------------------------------------------------------
9 //     AOD Pid object for additional pid information
10 //     Author: Annalisa Mastroserio, CERN
11 //-------------------------------------------------------------------------
12
13 #include <TObject.h>
14 #include "AliPID.h"
15
16 class AliTPCdEdxInfo;
17
18 class AliAODPid : public TObject {
19
20  public:
21   AliAODPid();
22   virtual ~AliAODPid();
23   AliAODPid(const AliAODPid& pid); 
24   AliAODPid& operator=(const AliAODPid& pid);
25   
26   enum{kTRDnPlanes=6};
27
28  //setters
29   void      SetITSsignal(Double_t its)                         {fITSsignal=its;}
30   void      SetITSdEdxSamples(const Double_t s[4]);
31   void      SetTPCsignal(Double_t tpc)                         {fTPCsignal=tpc;}
32   void      SetTPCsignalN(UShort_t tpcN)                       {fTPCsignalN=(UChar_t)((tpcN<160)?tpcN:160);}
33   void      SetTPCmomentum(Double_t tpcMom)                    {fTPCmomentum=tpcMom;}
34   void      SetTPCTgl(Double_t tpcTgl)                         {fTPCTgl=tpcTgl;}
35   void      SetTPCdEdxInfo(AliTPCdEdxInfo * dEdxInfo);
36   void      SetTRDslices(Int_t nslices, const Double_t * const trdslices);  
37   void      SetTRDsignal(Double_t sig)                         {fTRDsignal = sig;}
38   void      SetTRDmomentum(Int_t nplane, Float_t trdMom)       {fTRDmomentum[nplane]=trdMom;}
39   void      SetTRDncls(UChar_t ncls, Int_t layer = -1);
40   void      SetTRDntrackletsPID(UChar_t ntls) {fTRDntls = ntls;}
41   void      SetTRDChi2(Double_t chi2)          {fTRDChi2 = chi2;}
42   void      SetTOFsignal(Double_t tof)                         {fTOFesdsignal=tof;}
43   void      SetTOFpidResolution(Double_t tofPIDres[5]);
44   void      SetIntegratedTimes(Double_t timeint[5]);
45
46   Double_t  GetITSsignal()       const {return  fITSsignal;}
47   void      GetITSdEdxSamples(Double_t *s) const;
48   Double_t  GetITSdEdxSample(Int_t i) const {
49     if(i>=0 && i<4) return fITSdEdxSamples[i];
50     else return 0.;
51   }
52   Double_t  GetTPCsignal()       const {return  fTPCsignal;}
53   UShort_t  GetTPCsignalN()      const {return  (UShort_t)fTPCsignalN;}
54   AliTPCdEdxInfo * GetTPCdEdxInfo()const{return fTPCdEdxInfo;}
55
56   Double_t  GetTPCmomentum()     const {return  fTPCmomentum;}
57   Double_t  GetTPCTgl()          const {return  fTPCTgl;}
58   Int_t     GetTRDnSlices()      const {return  fTRDnSlices/6;}
59   Double_t  GetTRDsignal()       const {return  fTRDsignal;}
60   Double_t* GetTRDslices()       const {return  fTRDslices;}
61   Double_t  GetTRDChi2()         const {return fTRDChi2;}
62   const Double_t*  GetTRDmomentum() const {return  fTRDmomentum;}
63   UChar_t   GetTRDncls(UChar_t layer) const { if(layer > 5) return 0; return fTRDncls[layer];}
64   UChar_t   GetTRDncls() const;
65   UChar_t   GetTRDntrackletsPID() const {return fTRDntls;}
66   Double_t  GetTOFsignal()       const {return  fTOFesdsignal;}
67
68   void      GetIntegratedTimes(Double_t *timeint, Int_t nspec=AliPID::kSPECIES)  const; 
69   void      GetTOFpidResolution (Double_t tofRes[5]) const;
70
71  private :
72   Double32_t  fITSsignal;        //[0.,0.,10] detector raw signal
73   Double32_t  fITSdEdxSamples[4];//[0.,0.,10] ITS dE/dx samples
74
75   Double32_t  fTPCsignal;        //[0.,0.,10] detector raw signal
76   UChar_t     fTPCsignalN;       // number of points used for TPC dE/dx
77   Double32_t  fTPCmomentum;      //[0.,0.,20] momentum at the inner wall of TPC;
78   Double32_t  fTPCTgl;           //[0.,0.,10] track momentum dip angle at the inner wall of TPC;
79   
80   Int_t       fTRDnSlices;       // N slices used for PID in the TRD (as number of slices per tracklet * number of layers)
81   UChar_t     fTRDntls;          // number of tracklets used for PID calculation
82   UChar_t     fTRDncls[6];       // number of clusters used for dE/dx calculation
83   Double32_t* fTRDslices;        //[fTRDnSlices][0.,0.,10]
84   Double32_t  fTRDsignal;        //[0.,0.,10]  TRD signal
85   Double32_t  fTRDmomentum[6];   //[0.,0.,10]  momentum at the TRD layers
86   Double32_t  fTRDChi2;          //[0.,0.,10]  TRD chi2
87
88   Double32_t  fTOFesdsignal;     //[0.,0.,20] TOF signal - t0 (T0 interaction time)
89   Double32_t  fTOFpidResolution[5]; //[0.,0.,20] TOF pid resolution for each mass hypotesys 
90   Double32_t  fIntTime[5];       //[0.,0.,20] track time hypothesis
91  
92   AliTPCdEdxInfo * fTPCdEdxInfo; // object containing dE/dx information for different pad regions
93
94   ClassDef(AliAODPid, 15);
95 };
96
97 //_____________________________________________________________
98 inline void AliAODPid::SetTRDslices(Int_t nslices, const Double_t * const trdslices) {
99   //
100   // Set TRD dE/dx slices and the number of dE/dx slices per track
101   //
102   if(fTRDslices && fTRDnSlices != nslices) {
103     delete [] fTRDslices; fTRDslices = NULL;
104   };
105   if(!fTRDslices) fTRDslices = new Double32_t[nslices];
106   fTRDnSlices = nslices; 
107   for(Int_t is = 0; is < fTRDnSlices; is++) fTRDslices[is] = trdslices[is];
108 }
109
110 //_____________________________________________________________
111 inline void AliAODPid::SetTRDncls(UChar_t ncls, Int_t layer) { 
112   //
113   // Set the number of clusters / tracklet
114   // If no layer is specified the full number of clusters will be put in layer 0
115   //
116   if(layer > 5) return; 
117   if(layer < 0) fTRDncls[0] = ncls;
118   else fTRDncls[layer] = ncls;
119 }
120
121 //_____________________________________________________________
122 inline UChar_t AliAODPid::GetTRDncls() const {
123   //
124   // Get number of clusters per track
125   // Calculated as sum of the number of clusters per tracklet
126   //
127   UChar_t ncls = 0;
128   for(Int_t ily = 0; ily < 6; ily++) ncls += fTRDncls[ily];
129   return ncls;
130 }
131 #endif