1 ///////////////////////////////////////////////////////////////////////////
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. //
9 ///////////////////////////////////////////////////////////////////////////
11 #ifndef ALIFEMTOTRACK_H
12 #define ALIFEMTOTRACK_H
14 #include "AliFemtoTypes.h"
15 #include "AliFmPhysicalHelixD.h"
18 #include "AliFemtoHiddenInfo.h"
21 #ifndef __NO_STAR_DEPENDENCE_ALLOWED__
31 AliFemtoTrack(const AliFemtoTrack& aTrack);// copy constructor
32 AliFemtoTrack& operator=(const AliFemtoTrack& aTrack);
33 #ifndef __NO_STAR_DEPENDENCE_ALLOWED__
35 //AliFemtoTrack(const StTrack*, AliFemtoThreeVector); // c-tor from StTrack of STAR DSTs
36 //AliFemtoTrack(const StMuDst* dst, const StMuTrack* t);
38 //AliFemtoTrack(const StEvent*, const StTrack*);
42 // ~AliFemtoTrack(){/* no-op*/};
45 float PidProbElectron() const;
46 float PidProbPion() const;
47 float PidProbKaon() const;
48 float PidProbProton() const;
49 float PidProbMuon() const;
51 AliFemtoThreeVector P() const;
53 const AliFmPhysicalHelixD& Helix() const;
55 long int Flags() const;
63 float ITSchi2() const;
65 float TPCchi2() const;
67 short TPCnclsF() const;
68 float TPCsignal() const;
69 short TPCsignalN() const;
70 float TPCsignalS() const;
73 float NSigmaTPCPi() const;
74 float NSigmaTPCK() const;
75 float NSigmaTPCP() const;
77 float NSigmaTOFPi() const;
78 float NSigmaTOFK() const;
79 float NSigmaTOFP() const;
82 float TOFpionTime() const;
83 float TOFkaonTime() const;
84 float TOFprotonTime() const;
86 double XatDCA() const;
87 double YatDCA() const;
88 double ZatDCA() const;
90 const TBits& TPCclusters() const;
91 const TBits& TPCsharing() const;
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);
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);
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);
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);
131 void SetTPCcluster(const short& aNBit, const Bool_t& aValue);
132 void SetTPCshared(const short& aNBit, const Bool_t& aValue);
134 void SetTPCClusterMap(const TBits& aBits);
135 void SetTPCSharedMap(const TBits& aBits);
137 void SetKinkIndexes(int points[3]);
138 int KinkIndex(int aIndex) const;
141 void SetHiddenInfo(AliFemtoHiddenInfo* aHiddenInfo);
142 bool ValidHiddenInfo() const;
143 // Fab private : (official : const AliFemtoHiddenInfo* HiddenInfo() const;
144 AliFemtoHiddenInfo* GetHiddenInfo() const;
147 const AliFemtoThreeVector& NominalTpcExitPoint() const;
148 const AliFemtoThreeVector& NominalTpcPoint(int i) const;
149 const AliFemtoThreeVector& NominalTpcEntrancePoint() const;
151 void SetNominalTPCEntrancePoint(const AliFemtoThreeVector& aXTPC);
152 void SetNominalTPCEntrancePoint(double *aXTPC);
154 void SetNominalTPCPoints(double **aXTPC);
156 void SetNominalTPCExitPoint(const AliFemtoThreeVector& aXTPC);
157 void SetNominalTPCExitPoint(double *aXTPC);
158 void SetSigmaToVertex(const float& Sigma);
159 float SigmaToVertex() const;
161 void SetXatDCA(const double& x);
162 void SetYatDCA(const double& x);
163 void SetZatDCA(const double& x);
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,
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
190 AliFemtoThreeVector fP; // track momentum
191 float fPt; // transverse momenta
192 AliFmPhysicalHelixD fHelix; // track helix
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
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
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
227 int fKinkIndexes[3]; // Kink Index list
233 // Fab private : add mutable
235 AliFemtoHiddenInfo* fHiddenInfo; //! hidden info
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;}