]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWGCF/FEMTOSCOPY/AliFemto/AliFemtoTrack.h
73a9bebddd33108aa04dcb56ab343e070ed0528f
[u/mrichter/AliRoot.git] / PWGCF / FEMTOSCOPY / AliFemto / AliFemtoTrack.h
1 ///////////////////////////////////////////////////////////////////////////
2 //                                                                       //
3 // AliFemtoTrack: main class holding all the necessary information       //
4 // about a track (before the identification) that is required during     //
5 // femtoscopic analysis. This class is filled with information from the  //
6 // input stream by the reader. A particle has a link back to the Track   //
7 // it was created from, so we do not copy the information.               //
8 //                                                                       //
9 ///////////////////////////////////////////////////////////////////////////
10
11 #ifndef ALIFEMTOTRACK_H
12 #define ALIFEMTOTRACK_H
13
14 #include "AliFemtoTypes.h"
15 #include "AliFmPhysicalHelixD.h"
16 #include "TBits.h"
17 /* Th stuff */
18 #include "AliFemtoHiddenInfo.h"
19 /***/
20
21 #ifndef __NO_STAR_DEPENDENCE_ALLOWED__
22 class StEvent;
23 class StTrack;
24 class StMuDst;
25 class StMuTrack;
26 #endif
27
28 class AliFemtoTrack{
29 public:
30   AliFemtoTrack();
31   AliFemtoTrack(const AliFemtoTrack& aTrack);// copy constructor
32   AliFemtoTrack& operator=(const AliFemtoTrack& aTrack);
33 #ifndef __NO_STAR_DEPENDENCE_ALLOWED__
34 #ifdef __ROOT__
35  //AliFemtoTrack(const StTrack*, AliFemtoThreeVector);   // c-tor from StTrack of STAR DSTs
36   //AliFemtoTrack(const StMuDst* dst, const StMuTrack* t);
37 #endif
38   //AliFemtoTrack(const StEvent*, const StTrack*);
39 #endif
40
41   ~AliFemtoTrack();
42 //    ~AliFemtoTrack(){/* no-op*/};
43
44   short Charge() const;
45   float PidProbElectron() const;
46   float PidProbPion() const;
47   float PidProbKaon() const;
48   float PidProbProton() const;
49   float PidProbMuon() const;
50   
51   AliFemtoThreeVector P() const;
52   float Pt() const;
53   const AliFmPhysicalHelixD& Helix() const;
54   int TrackId() const;
55   long int Flags() const;
56   int Label()const;
57   float ImpactD()const;
58   float ImpactZ()const;
59   float Cdd() const;
60   float Cdz() const;
61   float Czz() const; 
62   
63   float ITSchi2() const;    
64   int   ITSncls() const;     
65   float TPCchi2() const;       
66   int   TPCncls() const;       
67   short TPCnclsF() const;      
68   float TPCsignal() const;
69   short TPCsignalN() const;    
70   float TPCsignalS() const;   
71  
72   //new PID
73   float NSigmaTPCPi() const;   
74   float NSigmaTPCK() const;   
75   float NSigmaTPCP() const;   
76   float VTOF() const;   
77   float NSigmaTOFPi() const;   
78   float NSigmaTOFK() const;   
79   float NSigmaTOFP() const;   
80
81
82   float TOFpionTime() const;
83   float TOFkaonTime() const;
84   float TOFprotonTime() const;
85
86   double XatDCA() const;
87   double YatDCA() const;
88   double ZatDCA() const;
89
90   const TBits& TPCclusters() const;
91   const TBits& TPCsharing()  const;
92   
93   void SetCharge(const short& s);
94   void SetPidProbElectron(const float& x);
95   void SetPidProbPion(const float& x);
96   void SetPidProbKaon(const float& x);
97   void SetPidProbProton(const float& x);
98   void SetPidProbMuon(const float& x);
99   void SetTofExpectedTimes(const float& tpi, const float& tkn, const float& tpr);
100    
101   void SetP(const AliFemtoThreeVector& p);
102   void SetPt(const float& x);
103   void SetHelix(const AliFmPhysicalHelixD& h);
104   void SetTrackId(const int& s);
105   void SetFlags(const long int& i);
106   void SetLabel(const int& i);
107   void SetImpactD(const float& x);
108   void SetImpactZ(const float& x);
109   void SetCdd(const float& x);
110   void SetCdz(const float& x);
111   void SetCzz(const float& x);
112   
113   void SetITSchi2(const float& x);    
114   void SetITSncls(const int& i);     
115   void SetTPCchi2(const float& x);       
116   void SetTPCncls(const int& i);       
117   void SetTPCnclsF(const short& s);      
118   void SetTPCsignal(const float& s);
119   void SetTPCsignalN(const short& s);    
120   void SetTPCsignalS(const float& x);   
121
122   //new PID
123   void SetNSigmaTPCPi(const float& x);   
124   void SetNSigmaTPCK(const float& x);   
125   void SetNSigmaTPCP(const float& x);   
126   void SetVTOF(const float& x);   
127   void SetNSigmaTOFPi(const float& x);   
128   void SetNSigmaTOFK(const float& x);   
129   void SetNSigmaTOFP(const float& x);  
130
131   void SetTPCcluster(const short& aNBit, const Bool_t& aValue);
132   void SetTPCshared(const short& aNBit, const Bool_t& aValue);
133
134   void SetTPCClusterMap(const TBits& aBits);
135   void SetTPCSharedMap(const TBits& aBits);
136
137   void SetKinkIndexes(int points[3]);
138   int  KinkIndex(int aIndex) const;
139
140   /* Th stuff */
141   void SetHiddenInfo(AliFemtoHiddenInfo* aHiddenInfo);
142   bool ValidHiddenInfo() const;
143   // Fab private : (official : const AliFemtoHiddenInfo* HiddenInfo() const;
144   AliFemtoHiddenInfo* GetHiddenInfo() const;
145   /***/
146   
147   const AliFemtoThreeVector& NominalTpcExitPoint() const;
148   const AliFemtoThreeVector& NominalTpcPoint(int i) const;
149   const AliFemtoThreeVector& NominalTpcEntrancePoint() const;
150     
151   void SetNominalTPCEntrancePoint(const AliFemtoThreeVector& aXTPC);
152   void SetNominalTPCEntrancePoint(double *aXTPC);
153
154   void SetNominalTPCPoints(double **aXTPC);
155
156   void SetNominalTPCExitPoint(const AliFemtoThreeVector& aXTPC);
157   void SetNominalTPCExitPoint(double *aXTPC);
158   void SetSigmaToVertex(const float& Sigma);
159   float SigmaToVertex() const;
160
161   void SetXatDCA(const double& x);
162   void SetYatDCA(const double& x);
163   void SetZatDCA(const double& x);
164  
165   //Alice stuff
166   enum {
167     kITSin=0x0001,kITSout=0x0002,kITSrefit=0x0004,kITSpid=0x0008,
168     kTPCin=0x0010,kTPCout=0x0020,kTPCrefit=0x0040,kTPCpid=0x0080,
169     kTRDin=0x0100,kTRDout=0x0200,kTRDrefit=0x0400,kTRDpid=0x0800,
170     kTOFin=0x1000,kTOFout=0x2000,kTOFrefit=0x4000,kTOFpid=0x8000,
171     kRICHpid=0x20000,
172     kTRDbackup=0x80000,
173     kTRDStop=0x20000000,
174     kESDpid=0x40000000,
175     kTIME=0x80000000
176   };
177   
178  private:
179   char fCharge;           // track charge
180   float fPidProbElectron; // electron pid
181   float fPidProbPion;     // pion pid 
182   float fPidProbKaon;     // kaon pid 
183   float fPidProbProton;   // proton pid
184   float fPidProbMuon;     // muon pid
185   int fTrackId;  // track unique id
186   float fTofPionTime;     // TOF time - pion expected time
187   float fTofKaonTime;     // TOF time - kaon expected time
188   float fTofProtonTime;   // TOF time - proton expected time
189
190   AliFemtoThreeVector fP; // track momentum
191   float fPt;              // transverse momenta
192   AliFmPhysicalHelixD fHelix; // track helix
193   //alice stuff
194   long int fFlags; //Reconsruction status flags
195   int fLabel; //Track label  
196   float fImpactD; //impact parameter in xy plane
197   float fImpactZ;//impacct parameter in z
198   float fCdd,fCdz,fCzz;//covariance matrix of the impact parameters
199   // ITS related track information
200   float fITSchi2;        // chi2 in the ITS
201   int   fITSncls;        // number of clusters assigned in the ITS
202   // TPC related track information
203   float  fTPCchi2;       // chi2 in the TPC
204   int    fTPCncls;       // number of clusters assigned in the TPC
205   short fTPCnclsF;       // number of findable clusters in the TPC
206   float fTPCsignal;      // dEdx TPC value
207   short fTPCsignalN;     // number of points used for dEdx
208   float fTPCsignalS;     // RMS of dEdx measurement
209
210   float fVTOF;     // v=length/TOF
211   float fNSigmaTPCPi;     // nsigma TPC for pion
212   float fNSigmaTPCK;     // nsigma TPC for K
213   float fNSigmaTPCP;     // nsigma TPC for P
214   float fNSigmaTOFPi;     // nsigma TPC for pion
215   float fNSigmaTOFK;     // nsigma TPC for K
216   float fNSigmaTOFP;     // nsigma TPC for P
217
218   float fSigmaToVertex;  // Distance from track to vertex in sigmas
219   TBits fClusters;       // Cluster per padrow map
220   TBits fShared;         // Sharing per padrow map
221   AliFemtoThreeVector fNominalTpcEntrancePoint; // Nominal track entrance point into TPC
222   AliFemtoThreeVector fNominalTpcPoints[9];
223   AliFemtoThreeVector fNominalTpcExitPoint;     // Nominal track exit point from TPC
224
225
226
227   int   fKinkIndexes[3]; // Kink Index list
228
229   double fXatDCA;
230   double fYatDCA;
231   double fZatDCA;
232   /* Th stuff */
233   // Fab private : add mutable
234   //  mutable 
235   AliFemtoHiddenInfo* fHiddenInfo; //! hidden info
236   /***/
237 };
238
239 //inline const float* AliFemtoTrack::NSigma() const 
240 //{return &mNSigmaElectron;} // Fab private 
241 inline float AliFemtoTrack::PidProbElectron() const {return fPidProbElectron;}
242 inline float AliFemtoTrack::PidProbPion() const {return fPidProbPion;}
243 inline float AliFemtoTrack::PidProbKaon() const {return fPidProbKaon;}
244 inline float AliFemtoTrack::PidProbProton() const {return fPidProbProton;}
245 inline float AliFemtoTrack::PidProbMuon() const {return fPidProbMuon;}
246
247 #endif