Lines getting the matched track moved to a method in AliCalorimeterUtils. Lines copie...
[u/mrichter/AliRoot.git] / PWG2 / 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   short 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   const TBits& TPCclusters() const;
87   const TBits& TPCsharing()  const;
88   
89   void SetCharge(const short& s);
90   void SetPidProbElectron(const float& x);
91   void SetPidProbPion(const float& x);
92   void SetPidProbKaon(const float& x);
93   void SetPidProbProton(const float& x);
94   void SetPidProbMuon(const float& x);
95   void SetTofExpectedTimes(const float& tpi, const float& tkn, const float& tpr);
96    
97   void SetP(const AliFemtoThreeVector& p);
98   void SetPt(const float& x);
99   void SetHelix(const AliFmPhysicalHelixD& h);
100   void SetTrackId(const short& s);
101   void SetFlags(const long int& i);
102   void SetLabel(const int& i);
103   void SetImpactD(const float& x);
104   void SetImpactZ(const float& x);
105   void SetCdd(const float& x);
106   void SetCdz(const float& x);
107   void SetCzz(const float& x);
108   
109   void SetITSchi2(const float& x);    
110   void SetITSncls(const int& i);     
111   void SetTPCchi2(const float& x);       
112   void SetTPCncls(const int& i);       
113   void SetTPCnclsF(const short& s);      
114   void SetTPCsignal(const float& s);
115   void SetTPCsignalN(const short& s);    
116   void SetTPCsignalS(const float& x);   
117
118   //new PID
119   void SetNSigmaTPCPi(const float& x);   
120   void SetNSigmaTPCK(const float& x);   
121   void SetNSigmaTPCP(const float& x);   
122   void SetVTOF(const float& x);   
123   void SetNSigmaTOFPi(const float& x);   
124   void SetNSigmaTOFK(const float& x);   
125   void SetNSigmaTOFP(const float& x);  
126
127   void SetTPCcluster(const short& aNBit, const Bool_t& aValue);
128   void SetTPCshared(const short& aNBit, const Bool_t& aValue);
129
130   void SetTPCClusterMap(const TBits& aBits);
131   void SetTPCSharedMap(const TBits& aBits);
132
133   void SetKinkIndexes(int points[3]);
134   int  KinkIndex(int aIndex) const;
135
136   /* Th stuff */
137   void SetHiddenInfo(AliFemtoHiddenInfo* aHiddenInfo);
138   bool ValidHiddenInfo() const;
139   // Fab private : (official : const AliFemtoHiddenInfo* HiddenInfo() const;
140   AliFemtoHiddenInfo* GetHiddenInfo() const;
141   /***/
142   
143   const AliFemtoThreeVector& NominalTpcExitPoint() const;
144   const AliFemtoThreeVector& NominalTpcEntrancePoint() const;
145     
146   void SetNominalTPCEntrancePoint(const AliFemtoThreeVector& aXTPC);
147   void SetNominalTPCEntrancePoint(double *aXTPC);
148
149   void SetNominalTPCExitPoint(const AliFemtoThreeVector& aXTPC);
150   void SetNominalTPCExitPoint(double *aXTPC);
151   void SetSigmaToVertex(const float& Sigma);
152   float SigmaToVertex() const;
153  
154   //Alice stuff
155   enum {
156     kITSin=0x0001,kITSout=0x0002,kITSrefit=0x0004,kITSpid=0x0008,
157     kTPCin=0x0010,kTPCout=0x0020,kTPCrefit=0x0040,kTPCpid=0x0080,
158     kTRDin=0x0100,kTRDout=0x0200,kTRDrefit=0x0400,kTRDpid=0x0800,
159     kTOFin=0x1000,kTOFout=0x2000,kTOFrefit=0x4000,kTOFpid=0x8000,
160     kRICHpid=0x20000,
161     kTRDbackup=0x80000,
162     kTRDStop=0x20000000,
163     kESDpid=0x40000000,
164     kTIME=0x80000000
165   };
166   
167  private:
168   char fCharge;           // track charge
169   float fPidProbElectron; // electron pid
170   float fPidProbPion;     // pion pid 
171   float fPidProbKaon;     // kaon pid 
172   float fPidProbProton;   // proton pid
173   float fPidProbMuon;     // muon pid
174   unsigned int fTrackId;  // track unique id
175   float fTofPionTime;     // TOF time - pion expected time
176   float fTofKaonTime;     // TOF time - kaon expected time
177   float fTofProtonTime;   // TOF time - proton expected time
178
179   AliFemtoThreeVector fP; // track momentum
180   float fPt;              // transverse momenta
181   AliFmPhysicalHelixD fHelix; // track helix
182   //alice stuff
183   long int fFlags; //Reconsruction status flags
184   int fLabel; //Track label  
185   float fImpactD; //impact parameter in xy plane
186   float fImpactZ;//impacct parameter in z
187   float fCdd,fCdz,fCzz;//covariance matrix of the impact parameters
188   // ITS related track information
189   float fITSchi2;        // chi2 in the ITS
190   int   fITSncls;        // number of clusters assigned in the ITS
191   // TPC related track information
192   float  fTPCchi2;       // chi2 in the TPC
193   int    fTPCncls;       // number of clusters assigned in the TPC
194   short fTPCnclsF;       // number of findable clusters in the TPC
195   float fTPCsignal;      // dEdx TPC value
196   short fTPCsignalN;     // number of points used for dEdx
197   float fTPCsignalS;     // RMS of dEdx measurement
198
199   float fVTOF;     // v=length/TOF
200   float fNSigmaTPCPi;     // nsigma TPC for pion
201   float fNSigmaTPCK;     // nsigma TPC for K
202   float fNSigmaTPCP;     // nsigma TPC for P
203   float fNSigmaTOFPi;     // nsigma TPC for pion
204   float fNSigmaTOFK;     // nsigma TPC for K
205   float fNSigmaTOFP;     // nsigma TPC for P
206
207   float fSigmaToVertex;  // Distance from track to vertex in sigmas
208   TBits fClusters;       // Cluster per padrow map
209   TBits fShared;         // Sharing per padrow map
210   AliFemtoThreeVector fNominalTpcEntrancePoint; // Nominal track entrance point into TPC
211   AliFemtoThreeVector fNominalTpcExitPoint;     // Nominal track exit point from TPC
212
213   int   fKinkIndexes[3]; // Kink Index list
214   /* Th stuff */
215   // Fab private : add mutable
216   //  mutable 
217   AliFemtoHiddenInfo* fHiddenInfo; //! hidden info
218   /***/
219 };
220
221 //inline const float* AliFemtoTrack::NSigma() const 
222 //{return &mNSigmaElectron;} // Fab private 
223 inline float AliFemtoTrack::PidProbElectron() const {return fPidProbElectron;}
224 inline float AliFemtoTrack::PidProbPion() const {return fPidProbPion;}
225 inline float AliFemtoTrack::PidProbKaon() const {return fPidProbKaon;}
226 inline float AliFemtoTrack::PidProbProton() const {return fPidProbProton;}
227 inline float AliFemtoTrack::PidProbMuon() const {return fPidProbMuon;}
228
229 #endif