]>
Commit | Line | Data |
---|---|---|
d0e92d9a | 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 | #include "AliFemtoTrack.h" | |
67427ff7 | 12 | #ifndef __NO_STAR_DEPENDENCE_ALLOWED__ |
13 | #ifdef __ROOT__ | |
14 | #include "StEvent/StEnumerations.h" | |
d0e92d9a | 15 | #include "AliFemtoAihongPid.h" |
67427ff7 | 16 | #include "StEventUtilities/StuProbabilityPidAlgorithm.h" |
17 | #endif | |
18 | #endif | |
19 | ||
d0e92d9a | 20 | #include "SystemOfUnits.h" // has "tesla" in it |
67427ff7 | 21 | //#include "AliFemtoParticleTypes.h" |
d0e92d9a | 22 | //#include "AliFemtoTTreeEvent.h" |
23 | //#include "AliFemtoTTreeTrack.h" | |
67427ff7 | 24 | |
25 | AliFemtoTrack::AliFemtoTrack(): | |
0215f606 | 26 | fCharge(0), |
27 | fPidProbElectron(0), | |
28 | fPidProbPion(0), | |
29 | fPidProbKaon(0), | |
30 | fPidProbProton(0), | |
31 | fPidProbMuon(0), | |
67427ff7 | 32 | fTrackId(0), |
b5f2928c | 33 | fTofPionTime(-100000.0), |
34 | fTofKaonTime(-100000.0), | |
35 | fTofProtonTime(-100000.0), | |
0215f606 | 36 | fP(0,0,0), |
37 | fPt(0), | |
38 | fHelix(), | |
67427ff7 | 39 | fFlags(0), |
40 | fLabel(0), | |
41 | fImpactD(0), | |
42 | fImpactZ(0), | |
43 | fCdd(0), | |
44 | fCdz(0), | |
45 | fCzz(0), | |
46 | fITSchi2(0), | |
47 | fITSncls(0), | |
48 | fTPCchi2(0), | |
49 | fTPCncls(0), | |
50 | fTPCnclsF(0), | |
8a21a731 | 51 | fTPCsignal(0), |
67427ff7 | 52 | fTPCsignalN(0), |
53 | fTPCsignalS(0), | |
0b3bd1ac | 54 | fSigmaToVertex(0), |
67427ff7 | 55 | fClusters(159), |
0215f606 | 56 | fShared(159), |
0b3bd1ac | 57 | fNominalTpcEntrancePoint(0,0,0), |
58 | fNominalTpcExitPoint(0,0,0), | |
0215f606 | 59 | fHiddenInfo(0) |
67427ff7 | 60 | { |
d0e92d9a | 61 | // Default constructor |
67427ff7 | 62 | fHiddenInfo = NULL; |
ea77036b | 63 | fKinkIndexes[0] = 0; |
64 | fKinkIndexes[1] = 0; | |
65 | fKinkIndexes[2] = 0; | |
67427ff7 | 66 | // cout << "Created track " << this << endl; |
67 | } | |
68 | ||
69 | ||
0215f606 | 70 | AliFemtoTrack::AliFemtoTrack(const AliFemtoTrack& t) : |
71 | fCharge(0), | |
72 | fPidProbElectron(0), | |
73 | fPidProbPion(0), | |
74 | fPidProbKaon(0), | |
75 | fPidProbProton(0), | |
76 | fPidProbMuon(0), | |
77 | fTrackId(0), | |
b5f2928c | 78 | fTofPionTime(-100000.0), |
79 | fTofKaonTime(-100000.0), | |
80 | fTofProtonTime(-100000.0), | |
0215f606 | 81 | fP(0,0,0), |
82 | fPt(0), | |
83 | fHelix(), | |
84 | fFlags(0), | |
85 | fLabel(0), | |
86 | fImpactD(0), | |
87 | fImpactZ(0), | |
88 | fCdd(0), | |
89 | fCdz(0), | |
90 | fCzz(0), | |
91 | fITSchi2(0), | |
92 | fITSncls(0), | |
93 | fTPCchi2(0), | |
94 | fTPCncls(0), | |
95 | fTPCnclsF(0), | |
8a21a731 | 96 | fTPCsignal(0), |
0215f606 | 97 | fTPCsignalN(0), |
98 | fTPCsignalS(0), | |
0b3bd1ac | 99 | fSigmaToVertex(0), |
0215f606 | 100 | fClusters(159), |
101 | fShared(159), | |
0b3bd1ac | 102 | fNominalTpcEntrancePoint(0,0,0), |
103 | fNominalTpcExitPoint(0,0,0), | |
0215f606 | 104 | fHiddenInfo(0) |
d0e92d9a | 105 | { |
106 | // copy constructor | |
67427ff7 | 107 | fCharge = t.fCharge; |
108 | fPidProbElectron = t.fPidProbElectron; | |
109 | fPidProbPion = t.fPidProbPion; | |
110 | fPidProbKaon = t.fPidProbKaon; | |
111 | fPidProbProton = t.fPidProbProton; | |
112 | fPidProbMuon=t.fPidProbMuon; | |
b5f2928c | 113 | fTofPionTime=t.fTofPionTime; |
114 | fTofKaonTime=t.fTofKaonTime; | |
115 | fTofProtonTime=t.fTofProtonTime; | |
67427ff7 | 116 | fP = t.fP; |
117 | fPt = t.fPt; | |
118 | fHelix = t.fHelix; | |
119 | fTrackId = t.fTrackId; | |
120 | fFlags=t.fFlags; | |
121 | fLabel=t.fLabel; | |
122 | fImpactD=t.fImpactD; | |
123 | fImpactZ=t.fImpactZ; | |
124 | fCdd=t.fCdd; | |
125 | fCdz=t.fCdz; | |
126 | fCzz=t.fCzz; | |
127 | fITSchi2=t.fITSchi2; | |
128 | fITSncls=t.fITSncls; | |
129 | fTPCchi2=t.fTPCchi2; | |
130 | fTPCncls=t.fTPCncls; | |
131 | fTPCnclsF=t.fTPCnclsF; | |
8a21a731 | 132 | fTPCsignal=t.fTPCsignal; |
67427ff7 | 133 | fTPCsignalN=t.fTPCsignalN; |
134 | fTPCsignalS=t.fTPCsignalS; | |
0b3bd1ac | 135 | fSigmaToVertex=t.fSigmaToVertex; |
67427ff7 | 136 | fClusters=t.fClusters; |
137 | fShared=t.fShared; | |
0b3bd1ac | 138 | fNominalTpcEntrancePoint=t.fNominalTpcEntrancePoint; |
139 | fNominalTpcExitPoint=t.fNominalTpcExitPoint; | |
67427ff7 | 140 | if (t.ValidHiddenInfo()) |
d0e92d9a | 141 | fHiddenInfo = t.GetHiddenInfo()->Clone(); |
67427ff7 | 142 | else |
143 | fHiddenInfo = NULL; | |
ea77036b | 144 | fKinkIndexes[0] = t.fKinkIndexes[0]; |
145 | fKinkIndexes[1] = t.fKinkIndexes[1]; | |
146 | fKinkIndexes[2] = t.fKinkIndexes[2]; | |
67427ff7 | 147 | // cout << "Created track " << this << endl; |
ea77036b | 148 | } |
67427ff7 | 149 | |
0215f606 | 150 | AliFemtoTrack& AliFemtoTrack::operator=(const AliFemtoTrack& aTrack) |
151 | { | |
d0e92d9a | 152 | // assignment operator |
0215f606 | 153 | if (this == &aTrack) |
154 | return *this; | |
155 | fCharge = aTrack.fCharge; | |
156 | fPidProbElectron = aTrack.fPidProbElectron; | |
157 | fPidProbPion = aTrack.fPidProbPion; | |
158 | fPidProbKaon = aTrack.fPidProbKaon; | |
159 | fPidProbProton = aTrack.fPidProbProton; | |
160 | fPidProbMuon=aTrack.fPidProbMuon; | |
b5f2928c | 161 | fTofPionTime=aTrack.fTofPionTime; |
162 | fTofKaonTime=aTrack.fTofKaonTime; | |
163 | fTofProtonTime=aTrack.fTofProtonTime; | |
0215f606 | 164 | fP = aTrack.fP; |
165 | fPt = aTrack.fPt; | |
166 | fHelix = aTrack.fHelix; | |
167 | fTrackId = aTrack.fTrackId; | |
168 | fFlags=aTrack.fFlags; | |
169 | fLabel=aTrack.fLabel; | |
170 | fImpactD=aTrack.fImpactD; | |
171 | fImpactZ=aTrack.fImpactZ; | |
172 | fCdd=aTrack.fCdd; | |
173 | fCdz=aTrack.fCdz; | |
174 | fCzz=aTrack.fCzz; | |
175 | fITSchi2=aTrack.fITSchi2; | |
176 | fITSncls=aTrack.fITSncls; | |
177 | fTPCchi2=aTrack.fTPCchi2; | |
178 | fTPCncls=aTrack.fTPCncls; | |
8a21a731 | 179 | fTPCnclsF=aTrack.fTPCnclsF; |
180 | fTPCsignal=aTrack.fTPCsignal; | |
0215f606 | 181 | fTPCsignalN=aTrack.fTPCsignalN; |
182 | fTPCsignalS=aTrack.fTPCsignalS; | |
183 | fClusters=aTrack.fClusters; | |
184 | fShared=aTrack.fShared; | |
0b3bd1ac | 185 | fNominalTpcEntrancePoint=aTrack.fNominalTpcEntrancePoint; |
186 | fNominalTpcExitPoint=aTrack.fNominalTpcExitPoint; | |
ea77036b | 187 | fKinkIndexes[0] = aTrack.fKinkIndexes[0]; |
188 | fKinkIndexes[1] = aTrack.fKinkIndexes[1]; | |
189 | fKinkIndexes[2] = aTrack.fKinkIndexes[2]; | |
0215f606 | 190 | if (ValidHiddenInfo()) |
191 | delete fHiddenInfo; | |
192 | if (aTrack.ValidHiddenInfo()) | |
d0e92d9a | 193 | fHiddenInfo = aTrack.GetHiddenInfo()->Clone(); |
0215f606 | 194 | else |
195 | fHiddenInfo = NULL; | |
196 | ||
197 | return *this; | |
198 | } | |
199 | ||
67427ff7 | 200 | void AliFemtoTrack::SetCharge(const short& ch){fCharge=ch;} |
201 | ||
202 | void AliFemtoTrack::SetPidProbElectron(const float& x){fPidProbElectron = x;} | |
203 | void AliFemtoTrack::SetPidProbPion(const float& x){fPidProbPion = x;} | |
204 | void AliFemtoTrack::SetPidProbKaon(const float& x){fPidProbKaon = x;} | |
205 | void AliFemtoTrack::SetPidProbProton(const float& x){fPidProbProton = x;} | |
206 | void AliFemtoTrack::SetPidProbMuon(const float& x){fPidProbMuon = x;} | |
b5f2928c | 207 | void AliFemtoTrack::SetTofExpectedTimes(const float& tpi, const float& tkn, const float& tpr){fTofPionTime = tpi; fTofKaonTime = tkn; fTofProtonTime = tpr; } |
67427ff7 | 208 | |
209 | void AliFemtoTrack::SetP(const AliFemtoThreeVector& p){fP = p;} | |
210 | void AliFemtoTrack::SetPt(const float& pt){fPt = pt;} | |
211 | void AliFemtoTrack::SetHelix(const AliFmPhysicalHelixD& h){fHelix = h;} | |
212 | void AliFemtoTrack::SetTrackId(const short & id) { fTrackId=id;} | |
213 | void AliFemtoTrack::SetFlags(const long int &flags) {fFlags=flags;} | |
214 | void AliFemtoTrack::SetLabel(const int &label) {fLabel=label;} | |
9064872d | 215 | void AliFemtoTrack::SetImpactD(const float& aImpactD){fImpactD=aImpactD;} |
216 | void AliFemtoTrack::SetImpactZ(const float& aImpactZ){fImpactZ=aImpactZ;} | |
217 | void AliFemtoTrack::SetCdd(const float& aCdd){fCdd=aCdd;} | |
218 | void AliFemtoTrack::SetCdz(const float& aCdz){fCdz=aCdz;} | |
219 | void AliFemtoTrack::SetCzz(const float& aCzz){fCzz=aCzz;} | |
220 | void AliFemtoTrack::SetITSchi2(const float& aITSchi2){fITSchi2=aITSchi2;} | |
221 | void AliFemtoTrack::SetITSncls(const int& aITSncls){fITSncls=aITSncls;} | |
222 | void AliFemtoTrack::SetTPCchi2(const float& aTPCchi2){fTPCchi2=aTPCchi2;} | |
223 | void AliFemtoTrack::SetTPCncls(const int& aTPCncls){fTPCncls=aTPCncls;} | |
224 | void AliFemtoTrack::SetTPCnclsF(const short& aTPCnclsF){fTPCnclsF=aTPCnclsF;} | |
8a21a731 | 225 | void AliFemtoTrack::SetTPCsignal(const float& aTPCsig){fTPCsignal=aTPCsig;} |
9064872d | 226 | void AliFemtoTrack::SetTPCsignalN(const short& aTPCsignalN){fTPCsignalN=aTPCsignalN;} |
227 | void AliFemtoTrack::SetTPCsignalS(const float& aTPCsignalS){fTPCsignalS=aTPCsignalS;} | |
228 | void AliFemtoTrack::SetSigmaToVertex(const float& aSigma){fSigmaToVertex=aSigma;} | |
67427ff7 | 229 | |
230 | ||
231 | short AliFemtoTrack::Charge() const {return fCharge;} | |
232 | AliFemtoThreeVector AliFemtoTrack::P() const {return fP;} | |
233 | float AliFemtoTrack::Pt() const {return fPt;} | |
234 | const AliFmPhysicalHelixD& AliFemtoTrack::Helix() const {return fHelix;} | |
235 | short AliFemtoTrack::TrackId() const { return fTrackId; } | |
236 | long int AliFemtoTrack::Flags() const {return fFlags;} | |
237 | int AliFemtoTrack::Label()const {return fLabel;} | |
238 | float AliFemtoTrack::ImpactD()const{return fImpactD;} | |
239 | float AliFemtoTrack::ImpactZ()const{return fImpactZ;} | |
240 | float AliFemtoTrack::Cdd() const{return fCdd;} | |
241 | float AliFemtoTrack::Cdz() const{return fCdz;} | |
242 | float AliFemtoTrack::Czz() const{return fCzz;} | |
243 | float AliFemtoTrack::ITSchi2() const{return fITSchi2;} | |
244 | int AliFemtoTrack::ITSncls() const{return fITSncls;} | |
245 | float AliFemtoTrack::TPCchi2() const{return fTPCchi2;} | |
246 | int AliFemtoTrack::TPCncls() const{return fTPCncls;} | |
247 | short AliFemtoTrack::TPCnclsF() const{return fTPCnclsF;} | |
8a21a731 | 248 | float AliFemtoTrack::TPCsignal() const{return fTPCsignal;} |
67427ff7 | 249 | short AliFemtoTrack::TPCsignalN() const{return fTPCsignalN;} |
250 | float AliFemtoTrack::TPCsignalS() const{return fTPCsignalS;} | |
0b3bd1ac | 251 | float AliFemtoTrack::SigmaToVertex() const{return fSigmaToVertex;} |
b5f2928c | 252 | float AliFemtoTrack::TOFpionTime() const{return fTofPionTime;} |
253 | float AliFemtoTrack::TOFkaonTime() const{return fTofKaonTime;} | |
254 | float AliFemtoTrack::TOFprotonTime() const{return fTofProtonTime;} | |
255 | ||
67427ff7 | 256 | |
257 | void AliFemtoTrack::SetHiddenInfo(AliFemtoHiddenInfo* aHiddenInfo) {fHiddenInfo=aHiddenInfo;} | |
258 | bool AliFemtoTrack::ValidHiddenInfo() const { if (fHiddenInfo) return true; else return false; } | |
d0e92d9a | 259 | AliFemtoHiddenInfo* AliFemtoTrack::GetHiddenInfo() const {return fHiddenInfo;} |
67427ff7 | 260 | |
261 | AliFemtoTrack::~AliFemtoTrack() | |
262 | { | |
0b3bd1ac | 263 | // destructor |
67427ff7 | 264 | if (fHiddenInfo) |
265 | delete fHiddenInfo; | |
266 | // cout << "Deleted track " << this << endl; | |
267 | } | |
268 | ||
269 | const TBits& AliFemtoTrack::TPCclusters() const {return fClusters;} | |
270 | const TBits& AliFemtoTrack::TPCsharing() const {return fShared;} | |
271 | ||
272 | void AliFemtoTrack::SetTPCcluster(const short& aNBit, const Bool_t& aValue) | |
273 | { | |
274 | fClusters.SetBitNumber(aNBit, aValue); | |
275 | } | |
276 | ||
277 | void AliFemtoTrack::SetTPCshared(const short& aNBit, const Bool_t& aValue) | |
278 | { | |
279 | fShared.SetBitNumber(aNBit, aValue); | |
280 | } | |
281 | ||
ea77036b | 282 | void AliFemtoTrack::SetTPCClusterMap(const TBits& aBits) |
283 | { | |
284 | fClusters = aBits; | |
285 | } | |
286 | void AliFemtoTrack::SetTPCSharedMap(const TBits& aBits) | |
287 | { | |
288 | fShared = aBits; | |
289 | } | |
290 | ||
291 | void AliFemtoTrack::SetKinkIndexes(int points[3]) | |
292 | { | |
0b3bd1ac | 293 | // Transfer the Kink indices |
ea77036b | 294 | fKinkIndexes[0] = points[0]; |
295 | fKinkIndexes[1] = points[1]; | |
296 | fKinkIndexes[2] = points[2]; | |
297 | } | |
298 | ||
299 | int AliFemtoTrack::KinkIndex(int aIndex) const | |
300 | { | |
0b3bd1ac | 301 | // Return Kink index |
ea77036b | 302 | if ((aIndex <3) && (aIndex>=0)) |
303 | return fKinkIndexes[aIndex]; | |
304 | else | |
305 | return 0; | |
306 | } | |
0b3bd1ac | 307 | |
308 | // void AliFemtoTrack::SetXTPC(const AliFemtoThreeVector& aXTPC) | |
309 | // { | |
310 | // fXTPC = aXTPC; | |
311 | // } | |
312 | ||
313 | // void AliFemtoTrack::SetXTPC(double *aXTPC) | |
314 | // { | |
315 | // fXTPC.setX(aXTPC[0]); | |
316 | // fXTPC.setY(aXTPC[1]); | |
317 | // fXTPC.setZ(aXTPC[2]); | |
318 | // } | |
319 | ||
320 | // AliFemtoThreeVector AliFemtoTrack::XTPC() const | |
321 | // { | |
322 | // return fXTPC; | |
323 | // } | |
324 | ||
325 | const AliFemtoThreeVector& AliFemtoTrack::NominalTpcExitPoint() const | |
326 | { | |
327 | return fNominalTpcExitPoint; | |
328 | } | |
329 | const AliFemtoThreeVector& AliFemtoTrack::NominalTpcEntrancePoint() const | |
330 | { | |
331 | return fNominalTpcEntrancePoint; | |
332 | } | |
333 | ||
334 | void AliFemtoTrack::SetNominalTPCEntrancePoint(const AliFemtoThreeVector& aXTPC) | |
335 | { | |
336 | fNominalTpcEntrancePoint = aXTPC; | |
337 | } | |
338 | void AliFemtoTrack::SetNominalTPCEntrancePoint(double *aXTPC) | |
339 | { | |
340 | // Store the nominal TPC entrance point | |
a19edcc9 | 341 | fNominalTpcEntrancePoint.SetX(aXTPC[0]); |
342 | fNominalTpcEntrancePoint.SetY(aXTPC[1]); | |
343 | fNominalTpcEntrancePoint.SetZ(aXTPC[2]); | |
0b3bd1ac | 344 | } |
345 | ||
346 | void AliFemtoTrack::SetNominalTPCExitPoint(const AliFemtoThreeVector& aXTPC) | |
347 | { | |
348 | fNominalTpcExitPoint = aXTPC; | |
349 | } | |
350 | void AliFemtoTrack::SetNominalTPCExitPoint(double *aXTPC) | |
351 | { | |
352 | // Store the nominal TPC exit point | |
a19edcc9 | 353 | fNominalTpcExitPoint.SetX(aXTPC[0]); |
354 | fNominalTpcExitPoint.SetY(aXTPC[1]); | |
355 | fNominalTpcExitPoint.SetZ(aXTPC[2]); | |
0b3bd1ac | 356 | } |