]>
Commit | Line | Data |
---|---|---|
76ce4b5b | 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" | |
12 | #ifndef __NO_STAR_DEPENDENCE_ALLOWED__ | |
13 | #ifdef __ROOT__ | |
14 | #include "StEvent/StEnumerations.h" | |
15 | #include "AliFemtoAihongPid.h" | |
16 | #include "StEventUtilities/StuProbabilityPidAlgorithm.h" | |
17 | #endif | |
18 | #endif | |
19 | ||
20 | #include "SystemOfUnits.h" // has "tesla" in it | |
21 | //#include "AliFemtoParticleTypes.h" | |
22 | //#include "AliFemtoTTreeEvent.h" | |
23 | //#include "AliFemtoTTreeTrack.h" | |
24 | ||
25 | AliFemtoTrack::AliFemtoTrack(): | |
26 | fCharge(0), | |
27 | fPidProbElectron(0), | |
28 | fPidProbPion(0), | |
29 | fPidProbKaon(0), | |
30 | fPidProbProton(0), | |
31 | fPidProbMuon(0), | |
32 | fTrackId(0), | |
33 | fTofPionTime(-100000.0), | |
34 | fTofKaonTime(-100000.0), | |
35 | fTofProtonTime(-100000.0), | |
36 | fP(0,0,0), | |
37 | fPt(0), | |
7eb9f5d0 | 38 | fInnerMomentum(0), |
76ce4b5b | 39 | fHelix(), |
40 | fFlags(0), | |
41 | fLabel(0), | |
42 | fImpactD(0), | |
7eb9f5d0 | 43 | fImpactDprim(-10000.0), |
44 | fImpactDweak(-10000.0), | |
45 | fImpactDmat(-10000.0), | |
76ce4b5b | 46 | fImpactZ(0), |
47 | fCdd(0), | |
48 | fCdz(0), | |
49 | fCzz(0), | |
50 | fITSchi2(0), | |
51 | fITSncls(0), | |
52 | fTPCchi2(0), | |
53 | fTPCncls(0), | |
54 | fTPCnclsF(0), | |
55 | fTPCsignal(0), | |
56 | fTPCsignalN(0), | |
57 | fTPCsignalS(0), | |
58 | fVTOF(0), | |
59 | fNSigmaTPCPi(0), | |
60 | fNSigmaTPCK(0), | |
61 | fNSigmaTPCP(0), | |
2e04885f | 62 | fNSigmaTPCE(0), |
76ce4b5b | 63 | fNSigmaTOFPi(0), |
64 | fNSigmaTOFK(0), | |
65 | fNSigmaTOFP(0), | |
2e04885f | 66 | fNSigmaTOFE(0), |
76ce4b5b | 67 | fSigmaToVertex(0), |
68 | fClusters(159), | |
69 | fShared(159), | |
70 | fNominalTpcEntrancePoint(0,0,0), | |
71 | fNominalTpcExitPoint(0,0,0), | |
973a91f8 | 72 | fXatDCA(0), |
73 | fYatDCA(0), | |
74 | fZatDCA(0), | |
7f1f4463 | 75 | fHiddenInfo(0), |
76 | fTrueMomentum(0), // True (simulated) momentum | |
77 | fEmissionPoint(0), // Emission point coordinates | |
78 | fPDGPid(0), // True PID of the particle | |
79 | fMass(0), // True particle mass | |
80 | fGlobalEmissionPoint(0) | |
76ce4b5b | 81 | { |
82 | // Default constructor | |
83 | fHiddenInfo = NULL; | |
84 | fKinkIndexes[0] = 0; | |
85 | fKinkIndexes[1] = 0; | |
86 | fKinkIndexes[2] = 0; | |
ce7b3d98 | 87 | |
4eac0b05 | 88 | for(int i=0;i<6;i++) { |
89 | fHasPointOnITS[i]=false; | |
90 | } | |
91 | ||
ce7b3d98 | 92 | for(int i=0;i<9;i++) |
93 | { | |
94 | fNominalTpcPoints[i].SetX(0); | |
95 | fNominalTpcPoints[i].SetY(0); | |
96 | fNominalTpcPoints[i].SetZ(0); | |
97 | } | |
76ce4b5b | 98 | // cout << "Created track " << this << endl; |
99 | } | |
100 | ||
101 | ||
102 | AliFemtoTrack::AliFemtoTrack(const AliFemtoTrack& t) : | |
103 | fCharge(0), | |
104 | fPidProbElectron(0), | |
105 | fPidProbPion(0), | |
106 | fPidProbKaon(0), | |
107 | fPidProbProton(0), | |
108 | fPidProbMuon(0), | |
109 | fTrackId(0), | |
110 | fTofPionTime(-100000.0), | |
111 | fTofKaonTime(-100000.0), | |
112 | fTofProtonTime(-100000.0), | |
113 | fP(0,0,0), | |
114 | fPt(0), | |
7eb9f5d0 | 115 | fInnerMomentum(0), |
76ce4b5b | 116 | fHelix(), |
117 | fFlags(0), | |
118 | fLabel(0), | |
119 | fImpactD(0), | |
7eb9f5d0 | 120 | fImpactDprim(-10000.0), |
121 | fImpactDweak(-10000.0), | |
122 | fImpactDmat(-10000.0), | |
76ce4b5b | 123 | fImpactZ(0), |
124 | fCdd(0), | |
125 | fCdz(0), | |
126 | fCzz(0), | |
127 | fITSchi2(0), | |
128 | fITSncls(0), | |
129 | fTPCchi2(0), | |
130 | fTPCncls(0), | |
131 | fTPCnclsF(0), | |
132 | fTPCsignal(0), | |
133 | fTPCsignalN(0), | |
134 | fTPCsignalS(0), | |
135 | fVTOF(0), | |
136 | fNSigmaTPCPi(0), | |
137 | fNSigmaTPCK(0), | |
138 | fNSigmaTPCP(0), | |
2e04885f | 139 | fNSigmaTPCE(0), |
76ce4b5b | 140 | fNSigmaTOFPi(0), |
141 | fNSigmaTOFK(0), | |
142 | fNSigmaTOFP(0), | |
2e04885f | 143 | fNSigmaTOFE(0), |
76ce4b5b | 144 | fSigmaToVertex(0), |
145 | fClusters(159), | |
146 | fShared(159), | |
147 | fNominalTpcEntrancePoint(0,0,0), | |
148 | fNominalTpcExitPoint(0,0,0), | |
973a91f8 | 149 | fXatDCA(0), |
150 | fYatDCA(0), | |
151 | fZatDCA(0), | |
7f1f4463 | 152 | fHiddenInfo(0), |
153 | fTrueMomentum(0), // True (simulated) momentum | |
154 | fEmissionPoint(0), // Emission point coordinates | |
155 | fPDGPid(0), // True PID of the particle | |
156 | fMass(0), // True particle mass | |
157 | fGlobalEmissionPoint(0) | |
76ce4b5b | 158 | { |
159 | // copy constructor | |
160 | fCharge = t.fCharge; | |
161 | fPidProbElectron = t.fPidProbElectron; | |
162 | fPidProbPion = t.fPidProbPion; | |
163 | fPidProbKaon = t.fPidProbKaon; | |
164 | fPidProbProton = t.fPidProbProton; | |
165 | fPidProbMuon=t.fPidProbMuon; | |
166 | fTofPionTime=t.fTofPionTime; | |
167 | fTofKaonTime=t.fTofKaonTime; | |
168 | fTofProtonTime=t.fTofProtonTime; | |
169 | fP = t.fP; | |
170 | fPt = t.fPt; | |
7eb9f5d0 | 171 | fInnerMomentum = t.fInnerMomentum; |
76ce4b5b | 172 | fHelix = t.fHelix; |
173 | fTrackId = t.fTrackId; | |
174 | fFlags=t.fFlags; | |
175 | fLabel=t.fLabel; | |
176 | fImpactD=t.fImpactD; | |
7eb9f5d0 | 177 | fImpactDprim=t.fImpactDprim; |
178 | fImpactDweak=t.fImpactDweak; | |
179 | fImpactDmat=t.fImpactDmat; | |
76ce4b5b | 180 | fImpactZ=t.fImpactZ; |
181 | fCdd=t.fCdd; | |
182 | fCdz=t.fCdz; | |
183 | fCzz=t.fCzz; | |
184 | fITSchi2=t.fITSchi2; | |
185 | fITSncls=t.fITSncls; | |
186 | fTPCchi2=t.fTPCchi2; | |
187 | fTPCncls=t.fTPCncls; | |
188 | fTPCnclsF=t.fTPCnclsF; | |
189 | fTPCsignal=t.fTPCsignal; | |
190 | fTPCsignalN=t.fTPCsignalN; | |
191 | fTPCsignalS=t.fTPCsignalS; | |
192 | fVTOF=t.fVTOF; | |
193 | fNSigmaTPCPi=t.fNSigmaTPCPi; | |
194 | fNSigmaTPCK=t.fNSigmaTPCK; | |
195 | fNSigmaTPCP=t.fNSigmaTPCP; | |
2e04885f | 196 | fNSigmaTPCE=t.fNSigmaTPCE; |
76ce4b5b | 197 | fNSigmaTOFPi=t.fNSigmaTOFPi; |
198 | fNSigmaTOFK=t.fNSigmaTOFK; | |
199 | fNSigmaTOFP=t.fNSigmaTOFP; | |
2e04885f | 200 | fNSigmaTOFE=t.fNSigmaTOFE; |
76ce4b5b | 201 | fSigmaToVertex=t.fSigmaToVertex; |
202 | fClusters=t.fClusters; | |
203 | fShared=t.fShared; | |
204 | fNominalTpcEntrancePoint=t.fNominalTpcEntrancePoint; | |
205 | fNominalTpcExitPoint=t.fNominalTpcExitPoint; | |
206 | if (t.ValidHiddenInfo()) | |
207 | fHiddenInfo = t.GetHiddenInfo()->Clone(); | |
208 | else | |
209 | fHiddenInfo = NULL; | |
210 | fKinkIndexes[0] = t.fKinkIndexes[0]; | |
211 | fKinkIndexes[1] = t.fKinkIndexes[1]; | |
212 | fKinkIndexes[2] = t.fKinkIndexes[2]; | |
973a91f8 | 213 | |
214 | fXatDCA=t.fXatDCA; | |
215 | fYatDCA=t.fYatDCA; | |
216 | fZatDCA=t.fZatDCA; | |
217 | ||
ce7b3d98 | 218 | for(int i=0;i<9;i++) |
219 | fNominalTpcPoints[i] = t.fNominalTpcPoints[i]; | |
220 | ||
7f1f4463 | 221 | |
222 | fTrueMomentum = new AliFemtoThreeVector(); | |
c7babf35 | 223 | if(t.fTrueMomentum){ |
224 | fTrueMomentum->SetX(t.fTrueMomentum->x()); | |
225 | fTrueMomentum->SetY(t.fTrueMomentum->y()); | |
226 | fTrueMomentum->SetZ(t.fTrueMomentum->z());} | |
7f1f4463 | 227 | |
228 | fEmissionPoint = new AliFemtoLorentzVector(); | |
c7babf35 | 229 | if(t.fEmissionPoint){ |
230 | fEmissionPoint->SetX(t.fEmissionPoint->x()); | |
231 | fEmissionPoint->SetY(t.fEmissionPoint->y()); | |
232 | fEmissionPoint->SetZ(t.fEmissionPoint->z()); | |
233 | fEmissionPoint->SetT(t.fEmissionPoint->e()); | |
234 | } | |
7f1f4463 | 235 | |
236 | fPDGPid = t.fPDGPid; | |
237 | fMass = t.fMass; | |
238 | ||
239 | fGlobalEmissionPoint = new AliFemtoThreeVector(); | |
c7babf35 | 240 | if(t.fGlobalEmissionPoint){ |
241 | fGlobalEmissionPoint->SetX(t.fGlobalEmissionPoint->x()); | |
242 | fGlobalEmissionPoint->SetY(t.fGlobalEmissionPoint->y()); | |
243 | fGlobalEmissionPoint->SetZ(t.fGlobalEmissionPoint->z()); | |
244 | //fGlobalEmissionPoint->SetT(t.fGlobalEmissionPoint->e()); | |
245 | // cout << "Created track " << this << endl; | |
246 | } | |
76ce4b5b | 247 | } |
248 | ||
249 | AliFemtoTrack& AliFemtoTrack::operator=(const AliFemtoTrack& aTrack) | |
250 | { | |
251 | // assignment operator | |
252 | if (this == &aTrack) | |
253 | return *this; | |
254 | fCharge = aTrack.fCharge; | |
255 | fPidProbElectron = aTrack.fPidProbElectron; | |
256 | fPidProbPion = aTrack.fPidProbPion; | |
257 | fPidProbKaon = aTrack.fPidProbKaon; | |
258 | fPidProbProton = aTrack.fPidProbProton; | |
259 | fPidProbMuon=aTrack.fPidProbMuon; | |
260 | fTofPionTime=aTrack.fTofPionTime; | |
261 | fTofKaonTime=aTrack.fTofKaonTime; | |
262 | fTofProtonTime=aTrack.fTofProtonTime; | |
263 | fP = aTrack.fP; | |
264 | fPt = aTrack.fPt; | |
7eb9f5d0 | 265 | fInnerMomentum = aTrack.fInnerMomentum; |
76ce4b5b | 266 | fHelix = aTrack.fHelix; |
267 | fTrackId = aTrack.fTrackId; | |
268 | fFlags=aTrack.fFlags; | |
269 | fLabel=aTrack.fLabel; | |
270 | fImpactD=aTrack.fImpactD; | |
7eb9f5d0 | 271 | fImpactDprim=aTrack.fImpactDprim; |
272 | fImpactDweak=aTrack.fImpactDweak; | |
273 | fImpactDmat=aTrack.fImpactDmat; | |
76ce4b5b | 274 | fImpactZ=aTrack.fImpactZ; |
275 | fCdd=aTrack.fCdd; | |
276 | fCdz=aTrack.fCdz; | |
277 | fCzz=aTrack.fCzz; | |
278 | fITSchi2=aTrack.fITSchi2; | |
279 | fITSncls=aTrack.fITSncls; | |
280 | fTPCchi2=aTrack.fTPCchi2; | |
281 | fTPCncls=aTrack.fTPCncls; | |
282 | fTPCnclsF=aTrack.fTPCnclsF; | |
283 | fTPCsignal=aTrack.fTPCsignal; | |
284 | fTPCsignalN=aTrack.fTPCsignalN; | |
285 | fTPCsignalS=aTrack.fTPCsignalS; | |
286 | fVTOF=aTrack.fVTOF; | |
287 | fNSigmaTPCPi=aTrack.fNSigmaTPCPi; | |
288 | fNSigmaTPCK=aTrack.fNSigmaTPCK; | |
289 | fNSigmaTPCP=aTrack.fNSigmaTPCP; | |
2e04885f | 290 | fNSigmaTPCE=aTrack.fNSigmaTPCE; |
76ce4b5b | 291 | fNSigmaTOFPi=aTrack.fNSigmaTOFPi; |
292 | fNSigmaTOFK=aTrack.fNSigmaTOFK; | |
293 | fNSigmaTOFP=aTrack.fNSigmaTOFP; | |
2e04885f | 294 | fNSigmaTOFE=aTrack.fNSigmaTOFE; |
76ce4b5b | 295 | fClusters=aTrack.fClusters; |
296 | fShared=aTrack.fShared; | |
297 | fNominalTpcEntrancePoint=aTrack.fNominalTpcEntrancePoint; | |
298 | fNominalTpcExitPoint=aTrack.fNominalTpcExitPoint; | |
299 | fKinkIndexes[0] = aTrack.fKinkIndexes[0]; | |
300 | fKinkIndexes[1] = aTrack.fKinkIndexes[1]; | |
301 | fKinkIndexes[2] = aTrack.fKinkIndexes[2]; | |
7f1f4463 | 302 | //fTrueMomentum = aTrack.fTrueMomentum; |
303 | //fEmissionPoint(0), // Emission point coordinates | |
304 | //fPDGPid(0), // True PID of the particle | |
305 | // fGlobalEmissionPoint(0) | |
306 | fMass = aTrack.fMass; | |
307 | fPDGPid = aTrack.fPDGPid; | |
973a91f8 | 308 | |
4eac0b05 | 309 | for(int i=0;i<6;i++) { |
310 | fHasPointOnITS[i]=false; | |
311 | } | |
312 | ||
973a91f8 | 313 | fXatDCA=aTrack.fXatDCA; |
314 | fYatDCA=aTrack.fYatDCA; | |
315 | fZatDCA=aTrack.fZatDCA; | |
316 | ||
ce7b3d98 | 317 | for(int i=0;i<9;i++) |
318 | fNominalTpcPoints[i] = aTrack.fNominalTpcPoints[i]; | |
319 | ||
76ce4b5b | 320 | if (ValidHiddenInfo()) |
321 | delete fHiddenInfo; | |
322 | if (aTrack.ValidHiddenInfo()) | |
323 | fHiddenInfo = aTrack.GetHiddenInfo()->Clone(); | |
324 | else | |
325 | fHiddenInfo = NULL; | |
326 | ||
d68ae32c | 327 | |
328 | if(!fTrueMomentum && aTrack.fTrueMomentum) | |
329 | fTrueMomentum = new AliFemtoThreeVector(); | |
330 | if(aTrack.fTrueMomentum){ | |
331 | fTrueMomentum->SetX(aTrack.fTrueMomentum->x()); | |
332 | fTrueMomentum->SetY(aTrack.fTrueMomentum->y()); | |
333 | fTrueMomentum->SetZ(aTrack.fTrueMomentum->z());} | |
334 | ||
335 | if(!fEmissionPoint && aTrack.fEmissionPoint) | |
336 | fEmissionPoint = new AliFemtoLorentzVector(); | |
337 | if(aTrack.fEmissionPoint){ | |
338 | fEmissionPoint->SetX(aTrack.fEmissionPoint->x()); | |
339 | fEmissionPoint->SetY(aTrack.fEmissionPoint->y()); | |
340 | fEmissionPoint->SetZ(aTrack.fEmissionPoint->z()); | |
341 | fEmissionPoint->SetT(aTrack.fEmissionPoint->e()); | |
342 | } | |
343 | ||
344 | if(!fGlobalEmissionPoint && aTrack.fGlobalEmissionPoint) | |
345 | fGlobalEmissionPoint = new AliFemtoThreeVector(); | |
346 | if(aTrack.fGlobalEmissionPoint){ | |
347 | fGlobalEmissionPoint->SetX(aTrack.fGlobalEmissionPoint->x()); | |
348 | fGlobalEmissionPoint->SetY(aTrack.fGlobalEmissionPoint->y()); | |
349 | fGlobalEmissionPoint->SetZ(aTrack.fGlobalEmissionPoint->z()); | |
350 | //fGlobalEmissionPoint->SetT(t.fGlobalEmissionPoint->e()); | |
351 | // cout << "Created track " << this << endl; | |
352 | } | |
353 | ||
76ce4b5b | 354 | return *this; |
355 | } | |
356 | ||
357 | void AliFemtoTrack::SetCharge(const short& ch){fCharge=ch;} | |
358 | ||
359 | void AliFemtoTrack::SetPidProbElectron(const float& x){fPidProbElectron = x;} | |
360 | void AliFemtoTrack::SetPidProbPion(const float& x){fPidProbPion = x;} | |
361 | void AliFemtoTrack::SetPidProbKaon(const float& x){fPidProbKaon = x;} | |
362 | void AliFemtoTrack::SetPidProbProton(const float& x){fPidProbProton = x;} | |
363 | void AliFemtoTrack::SetPidProbMuon(const float& x){fPidProbMuon = x;} | |
364 | void AliFemtoTrack::SetTofExpectedTimes(const float& tpi, const float& tkn, const float& tpr){fTofPionTime = tpi; fTofKaonTime = tkn; fTofProtonTime = tpr; } | |
365 | ||
366 | void AliFemtoTrack::SetP(const AliFemtoThreeVector& p){fP = p;} | |
367 | void AliFemtoTrack::SetPt(const float& pt){fPt = pt;} | |
7eb9f5d0 | 368 | void AliFemtoTrack::SetInnerMomentum(const float& x){fInnerMomentum = x;} |
76ce4b5b | 369 | void AliFemtoTrack::SetHelix(const AliFmPhysicalHelixD& h){fHelix = h;} |
973a91f8 | 370 | void AliFemtoTrack::SetTrackId(const int & id) { fTrackId=id;} |
76ce4b5b | 371 | void AliFemtoTrack::SetFlags(const long int &flags) {fFlags=flags;} |
372 | void AliFemtoTrack::SetLabel(const int &label) {fLabel=label;} | |
373 | void AliFemtoTrack::SetImpactD(const float& aImpactD){fImpactD=aImpactD;} | |
7eb9f5d0 | 374 | |
375 | void AliFemtoTrack::SetImpactDprim(const float& aImpactDprim){fImpactDprim=aImpactDprim;} | |
376 | void AliFemtoTrack::SetImpactDweak(const float& aImpactDweak){fImpactDweak=aImpactDweak;} | |
377 | void AliFemtoTrack::SetImpactDmat(const float& aImpactDmat){fImpactDmat=aImpactDmat;} | |
378 | ||
76ce4b5b | 379 | void AliFemtoTrack::SetImpactZ(const float& aImpactZ){fImpactZ=aImpactZ;} |
380 | void AliFemtoTrack::SetCdd(const float& aCdd){fCdd=aCdd;} | |
381 | void AliFemtoTrack::SetCdz(const float& aCdz){fCdz=aCdz;} | |
382 | void AliFemtoTrack::SetCzz(const float& aCzz){fCzz=aCzz;} | |
383 | void AliFemtoTrack::SetITSchi2(const float& aITSchi2){fITSchi2=aITSchi2;} | |
384 | void AliFemtoTrack::SetITSncls(const int& aITSncls){fITSncls=aITSncls;} | |
385 | void AliFemtoTrack::SetTPCchi2(const float& aTPCchi2){fTPCchi2=aTPCchi2;} | |
386 | void AliFemtoTrack::SetTPCncls(const int& aTPCncls){fTPCncls=aTPCncls;} | |
387 | void AliFemtoTrack::SetTPCnclsF(const short& aTPCnclsF){fTPCnclsF=aTPCnclsF;} | |
388 | void AliFemtoTrack::SetTPCsignal(const float& aTPCsig){fTPCsignal=aTPCsig;} | |
389 | void AliFemtoTrack::SetTPCsignalN(const short& aTPCsignalN){fTPCsignalN=aTPCsignalN;} | |
390 | void AliFemtoTrack::SetTPCsignalS(const float& aTPCsignalS){fTPCsignalS=aTPCsignalS;} | |
391 | void AliFemtoTrack::SetVTOF(const float& aVTOF){fVTOF=aVTOF;} | |
392 | void AliFemtoTrack::SetNSigmaTPCPi(const float& aNSigmaTPCPi){fNSigmaTPCPi=aNSigmaTPCPi;} | |
393 | void AliFemtoTrack::SetNSigmaTPCK(const float& aNSigmaTPCK){fNSigmaTPCK=aNSigmaTPCK;} | |
394 | void AliFemtoTrack::SetNSigmaTPCP(const float& aNSigmaTPCP){fNSigmaTPCP=aNSigmaTPCP;} | |
2e04885f | 395 | void AliFemtoTrack::SetNSigmaTPCE(const float& aNSigmaTPCE){fNSigmaTPCE=aNSigmaTPCE;} |
76ce4b5b | 396 | void AliFemtoTrack::SetNSigmaTOFPi(const float& aNSigmaTOFPi){fNSigmaTOFPi=aNSigmaTOFPi;} |
397 | void AliFemtoTrack::SetNSigmaTOFK(const float& aNSigmaTOFK){fNSigmaTOFK=aNSigmaTOFK;} | |
398 | void AliFemtoTrack::SetNSigmaTOFP(const float& aNSigmaTOFP){fNSigmaTOFP=aNSigmaTOFP;} | |
2e04885f | 399 | void AliFemtoTrack::SetNSigmaTOFE(const float& aNSigmaTOFE){fNSigmaTOFE=aNSigmaTOFE;} |
76ce4b5b | 400 | void AliFemtoTrack::SetSigmaToVertex(const float& aSigma){fSigmaToVertex=aSigma;} |
401 | ||
973a91f8 | 402 | void AliFemtoTrack::SetXatDCA(const double& x) {fXatDCA=x;} |
403 | void AliFemtoTrack::SetYatDCA(const double& x) {fYatDCA=x;} | |
404 | void AliFemtoTrack::SetZatDCA(const double& x) {fZatDCA=x;} | |
405 | ||
76ce4b5b | 406 | |
407 | short AliFemtoTrack::Charge() const {return fCharge;} | |
408 | AliFemtoThreeVector AliFemtoTrack::P() const {return fP;} | |
7eb9f5d0 | 409 | float AliFemtoTrack::Pt() const {return fPt;} |
410 | float AliFemtoTrack::InnerMomentum() const {return fInnerMomentum;} | |
76ce4b5b | 411 | const AliFmPhysicalHelixD& AliFemtoTrack::Helix() const {return fHelix;} |
973a91f8 | 412 | int AliFemtoTrack::TrackId() const { return fTrackId; } |
76ce4b5b | 413 | long int AliFemtoTrack::Flags() const {return fFlags;} |
414 | int AliFemtoTrack::Label()const {return fLabel;} | |
415 | float AliFemtoTrack::ImpactD()const{return fImpactD;} | |
7eb9f5d0 | 416 | |
417 | float AliFemtoTrack::ImpactDprim()const{return fImpactDprim;} | |
418 | float AliFemtoTrack::ImpactDweak()const{return fImpactDweak;} | |
419 | float AliFemtoTrack::ImpactDmat()const{return fImpactDmat;} | |
420 | ||
76ce4b5b | 421 | float AliFemtoTrack::ImpactZ()const{return fImpactZ;} |
422 | float AliFemtoTrack::Cdd() const{return fCdd;} | |
423 | float AliFemtoTrack::Cdz() const{return fCdz;} | |
424 | float AliFemtoTrack::Czz() const{return fCzz;} | |
425 | float AliFemtoTrack::ITSchi2() const{return fITSchi2;} | |
426 | int AliFemtoTrack::ITSncls() const{return fITSncls;} | |
427 | float AliFemtoTrack::TPCchi2() const{return fTPCchi2;} | |
428 | int AliFemtoTrack::TPCncls() const{return fTPCncls;} | |
429 | short AliFemtoTrack::TPCnclsF() const{return fTPCnclsF;} | |
430 | float AliFemtoTrack::TPCsignal() const{return fTPCsignal;} | |
431 | short AliFemtoTrack::TPCsignalN() const{return fTPCsignalN;} | |
432 | float AliFemtoTrack::TPCsignalS() const{return fTPCsignalS;} | |
433 | float AliFemtoTrack::VTOF() const{return fVTOF;} | |
434 | float AliFemtoTrack::NSigmaTPCPi() const{return fNSigmaTPCPi;} | |
435 | float AliFemtoTrack::NSigmaTPCK() const{return fNSigmaTPCK;} | |
436 | float AliFemtoTrack::NSigmaTPCP() const{return fNSigmaTPCP;} | |
2e04885f | 437 | float AliFemtoTrack::NSigmaTPCE() const{return fNSigmaTPCE;} |
76ce4b5b | 438 | float AliFemtoTrack::NSigmaTOFPi() const{return fNSigmaTOFPi;} |
439 | float AliFemtoTrack::NSigmaTOFK() const{return fNSigmaTOFK;} | |
440 | float AliFemtoTrack::NSigmaTOFP() const{return fNSigmaTOFP;} | |
2e04885f | 441 | float AliFemtoTrack::NSigmaTOFE() const{return fNSigmaTOFE;} |
76ce4b5b | 442 | float AliFemtoTrack::SigmaToVertex() const{return fSigmaToVertex;} |
443 | float AliFemtoTrack::TOFpionTime() const{return fTofPionTime;} | |
444 | float AliFemtoTrack::TOFkaonTime() const{return fTofKaonTime;} | |
445 | float AliFemtoTrack::TOFprotonTime() const{return fTofProtonTime;} | |
446 | ||
973a91f8 | 447 | double AliFemtoTrack::XatDCA() const {return fXatDCA;} |
448 | double AliFemtoTrack::YatDCA() const {return fYatDCA;} | |
449 | double AliFemtoTrack::ZatDCA() const {return fZatDCA;} | |
76ce4b5b | 450 | |
451 | void AliFemtoTrack::SetHiddenInfo(AliFemtoHiddenInfo* aHiddenInfo) {fHiddenInfo=aHiddenInfo;} | |
452 | bool AliFemtoTrack::ValidHiddenInfo() const { if (fHiddenInfo) return true; else return false; } | |
453 | AliFemtoHiddenInfo* AliFemtoTrack::GetHiddenInfo() const {return fHiddenInfo;} | |
454 | ||
455 | AliFemtoTrack::~AliFemtoTrack() | |
456 | { | |
457 | // destructor | |
458 | if (fHiddenInfo) | |
459 | delete fHiddenInfo; | |
d68ae32c | 460 | |
461 | if(fTrueMomentum) delete fTrueMomentum; | |
462 | if(fEmissionPoint) delete fEmissionPoint; | |
463 | if(fGlobalEmissionPoint) delete fGlobalEmissionPoint; | |
464 | ||
465 | ||
76ce4b5b | 466 | // cout << "Deleted track " << this << endl; |
467 | } | |
468 | ||
469 | const TBits& AliFemtoTrack::TPCclusters() const {return fClusters;} | |
470 | const TBits& AliFemtoTrack::TPCsharing() const {return fShared;} | |
471 | ||
472 | void AliFemtoTrack::SetTPCcluster(const short& aNBit, const Bool_t& aValue) | |
473 | { | |
474 | fClusters.SetBitNumber(aNBit, aValue); | |
475 | } | |
476 | ||
477 | void AliFemtoTrack::SetTPCshared(const short& aNBit, const Bool_t& aValue) | |
478 | { | |
479 | fShared.SetBitNumber(aNBit, aValue); | |
480 | } | |
481 | ||
482 | void AliFemtoTrack::SetTPCClusterMap(const TBits& aBits) | |
483 | { | |
484 | fClusters = aBits; | |
485 | } | |
486 | void AliFemtoTrack::SetTPCSharedMap(const TBits& aBits) | |
487 | { | |
488 | fShared = aBits; | |
489 | } | |
490 | ||
491 | void AliFemtoTrack::SetKinkIndexes(int points[3]) | |
492 | { | |
493 | // Transfer the Kink indices | |
494 | fKinkIndexes[0] = points[0]; | |
495 | fKinkIndexes[1] = points[1]; | |
496 | fKinkIndexes[2] = points[2]; | |
497 | } | |
498 | ||
4eac0b05 | 499 | void AliFemtoTrack::SetITSHitOnLayer(int i, bool val) |
500 | { | |
501 | // Transfer ITS hit | |
502 | fHasPointOnITS[i] = val; | |
503 | } | |
504 | ||
505 | ||
76ce4b5b | 506 | int AliFemtoTrack::KinkIndex(int aIndex) const |
507 | { | |
508 | // Return Kink index | |
509 | if ((aIndex <3) && (aIndex>=0)) | |
510 | return fKinkIndexes[aIndex]; | |
511 | else | |
512 | return 0; | |
513 | } | |
514 | ||
4eac0b05 | 515 | bool AliFemtoTrack::HasPointOnITSLayer(int aIndex) const |
516 | { | |
517 | // Return if i-th ITS layer had a hit for this track | |
518 | if ((aIndex <6) && (aIndex>=0)) | |
519 | return fHasPointOnITS[aIndex]; | |
520 | else | |
521 | return false; | |
522 | } | |
523 | ||
76ce4b5b | 524 | // void AliFemtoTrack::SetXTPC(const AliFemtoThreeVector& aXTPC) |
525 | // { | |
526 | // fXTPC = aXTPC; | |
527 | // } | |
528 | ||
529 | // void AliFemtoTrack::SetXTPC(double *aXTPC) | |
530 | // { | |
531 | // fXTPC.setX(aXTPC[0]); | |
532 | // fXTPC.setY(aXTPC[1]); | |
533 | // fXTPC.setZ(aXTPC[2]); | |
534 | // } | |
535 | ||
536 | // AliFemtoThreeVector AliFemtoTrack::XTPC() const | |
537 | // { | |
538 | // return fXTPC; | |
539 | // } | |
540 | ||
541 | const AliFemtoThreeVector& AliFemtoTrack::NominalTpcExitPoint() const | |
542 | { | |
543 | return fNominalTpcExitPoint; | |
544 | } | |
ce7b3d98 | 545 | |
546 | const AliFemtoThreeVector& AliFemtoTrack::NominalTpcPoint(int i) const | |
547 | { | |
548 | if(i<0) | |
549 | return fNominalTpcPoints[0]; | |
550 | if(i>8) | |
551 | return fNominalTpcPoints[8]; | |
552 | return fNominalTpcPoints[i]; | |
553 | } | |
554 | ||
76ce4b5b | 555 | const AliFemtoThreeVector& AliFemtoTrack::NominalTpcEntrancePoint() const |
556 | { | |
557 | return fNominalTpcEntrancePoint; | |
558 | } | |
559 | ||
560 | void AliFemtoTrack::SetNominalTPCEntrancePoint(const AliFemtoThreeVector& aXTPC) | |
561 | { | |
562 | fNominalTpcEntrancePoint = aXTPC; | |
563 | } | |
564 | void AliFemtoTrack::SetNominalTPCEntrancePoint(double *aXTPC) | |
565 | { | |
566 | // Store the nominal TPC entrance point | |
567 | fNominalTpcEntrancePoint.SetX(aXTPC[0]); | |
568 | fNominalTpcEntrancePoint.SetY(aXTPC[1]); | |
569 | fNominalTpcEntrancePoint.SetZ(aXTPC[2]); | |
570 | } | |
571 | ||
ce7b3d98 | 572 | void AliFemtoTrack::SetNominalTPCPoints(double **aXTPC) |
573 | { | |
574 | // Store the nominal TPC points | |
575 | for(int i=0;i<9;i++) | |
576 | { | |
577 | fNominalTpcPoints[i].SetX(aXTPC[i][0]); | |
578 | fNominalTpcPoints[i].SetY(aXTPC[i][1]); | |
579 | fNominalTpcPoints[i].SetZ(aXTPC[i][2]); | |
580 | } | |
581 | } | |
582 | ||
76ce4b5b | 583 | void AliFemtoTrack::SetNominalTPCExitPoint(const AliFemtoThreeVector& aXTPC) |
584 | { | |
585 | fNominalTpcExitPoint = aXTPC; | |
586 | } | |
587 | void AliFemtoTrack::SetNominalTPCExitPoint(double *aXTPC) | |
588 | { | |
589 | // Store the nominal TPC exit point | |
590 | fNominalTpcExitPoint.SetX(aXTPC[0]); | |
591 | fNominalTpcExitPoint.SetY(aXTPC[1]); | |
592 | fNominalTpcExitPoint.SetZ(aXTPC[2]); | |
593 | } | |
7f1f4463 | 594 | |
595 | ||
596 | ||
597 | ||
598 | //_____________________________________________ | |
599 | AliFemtoThreeVector *AliFemtoTrack::GetTrueMomentum() const | |
600 | { | |
601 | return fTrueMomentum; | |
602 | } | |
603 | //_____________________________________________ | |
604 | AliFemtoLorentzVector *AliFemtoTrack::GetEmissionPoint() const | |
605 | { | |
606 | return fEmissionPoint; | |
607 | } | |
608 | //_____________________________________________ | |
609 | Int_t AliFemtoTrack::GetPDGPid() const | |
610 | { | |
611 | return fPDGPid; | |
612 | } | |
613 | //_____________________________________________ | |
614 | Double_t AliFemtoTrack::GetMass() const | |
615 | { | |
616 | return fMass; | |
617 | } | |
618 | //_____________________________________________ | |
619 | void AliFemtoTrack::SetTrueMomentum(AliFemtoThreeVector *aMom) | |
620 | { | |
621 | // Set momentum from vector | |
622 | if (fTrueMomentum) { | |
623 | fTrueMomentum->SetX(aMom->x()); | |
624 | fTrueMomentum->SetY(aMom->y()); | |
625 | fTrueMomentum->SetZ(aMom->z()); | |
626 | } | |
627 | else { | |
628 | fTrueMomentum = new AliFemtoThreeVector(*aMom); | |
629 | } | |
630 | } | |
631 | //_____________________________________________ | |
632 | void AliFemtoTrack::SetTrueMomentum(const AliFemtoThreeVector& aMom) | |
633 | { | |
634 | // Set momentum from vector | |
635 | if (fTrueMomentum) { | |
636 | fTrueMomentum->SetX(aMom.x()); | |
637 | fTrueMomentum->SetY(aMom.y()); | |
638 | fTrueMomentum->SetZ(aMom.z()); | |
639 | } | |
640 | else { | |
641 | fTrueMomentum = new AliFemtoThreeVector(); | |
642 | *fTrueMomentum = aMom; | |
643 | } | |
644 | } | |
645 | //_____________________________________________ | |
646 | void AliFemtoTrack::SetTrueMomentum(Double_t aPx, Double_t aPy, Double_t aPz) | |
647 | { | |
648 | // Set momentum from components | |
649 | if (!fTrueMomentum) fTrueMomentum = new AliFemtoThreeVector(); | |
650 | fTrueMomentum->SetX(aPx); | |
651 | fTrueMomentum->SetY(aPy); | |
652 | fTrueMomentum->SetZ(aPz); | |
653 | } | |
654 | //_____________________________________________ | |
655 | void AliFemtoTrack::SetEmissionPoint(AliFemtoLorentzVector *aPos) | |
656 | { | |
657 | // Set position from vector | |
658 | if (fEmissionPoint) { | |
659 | fEmissionPoint->SetX(aPos->px()); | |
660 | fEmissionPoint->SetY(aPos->py()); | |
661 | fEmissionPoint->SetZ(aPos->pz()); | |
662 | fEmissionPoint->SetT(aPos->e()); | |
663 | } | |
664 | else { | |
665 | fEmissionPoint = new AliFemtoLorentzVector(*aPos); | |
666 | } | |
667 | } | |
668 | //_____________________________________________ | |
669 | void AliFemtoTrack::SetEmissionPoint(const AliFemtoLorentzVector& aPos) | |
670 | { | |
671 | // Set position from vector | |
672 | if (fEmissionPoint) { | |
673 | fEmissionPoint->SetX(aPos.px()); | |
674 | fEmissionPoint->SetY(aPos.py()); | |
675 | fEmissionPoint->SetZ(aPos.pz()); | |
676 | fEmissionPoint->SetT(aPos.e()); | |
677 | } | |
678 | else { | |
679 | fEmissionPoint = new AliFemtoLorentzVector(); | |
680 | *fEmissionPoint = aPos; | |
681 | } | |
682 | } | |
683 | //_____________________________________________ | |
684 | void AliFemtoTrack::SetPDGPid(Int_t aPid) | |
685 | { | |
686 | fPDGPid = aPid; | |
687 | } | |
688 | //_____________________________________________ | |
689 | void AliFemtoTrack::SetMass(Double_t aMass) | |
690 | { | |
691 | fMass = aMass; | |
692 | } | |
693 | //_____________________________________________ | |
694 | void AliFemtoTrack::SetEmissionPoint(Double_t aRx, Double_t aRy, Double_t aRz, Double_t aT) | |
695 | { | |
696 | // Set position from components | |
697 | if (fEmissionPoint) { | |
698 | fEmissionPoint->SetX(aRx); | |
699 | fEmissionPoint->SetY(aRy); | |
700 | fEmissionPoint->SetZ(aRz); | |
701 | fEmissionPoint->SetT(aT); | |
702 | } | |
703 | else { | |
704 | fEmissionPoint = new AliFemtoLorentzVector(aRx, aRy, aRz, aT); | |
705 | } | |
706 | } | |
707 | ||
708 | //_____________________________________________ | |
709 | AliFemtoThreeVector *AliFemtoTrack::GetGlobalEmissionPoint() const | |
710 | { | |
711 | return fGlobalEmissionPoint; | |
712 | } | |
713 | //_____________________________________________ | |
714 | void AliFemtoTrack::SetGlobalEmissionPoint(const AliFemtoThreeVector& aPos) | |
715 | { | |
716 | // set position from vector | |
717 | if (fGlobalEmissionPoint) { | |
718 | fGlobalEmissionPoint->SetX(aPos.x()); | |
719 | fGlobalEmissionPoint->SetY(aPos.y()); | |
720 | fGlobalEmissionPoint->SetZ(aPos.z()); | |
721 | } | |
722 | else { | |
723 | fGlobalEmissionPoint = new AliFemtoThreeVector(); | |
724 | *fGlobalEmissionPoint = aPos; | |
725 | } | |
726 | } | |
727 | //_____________________________________________ | |
728 | void AliFemtoTrack::SetGlobalEmissionPoint(Double_t aRx, Double_t aRy, Double_t aRz) | |
729 | { | |
730 | // Set position from components | |
731 | if (fGlobalEmissionPoint) { | |
732 | fGlobalEmissionPoint->SetX(aRx); | |
733 | fGlobalEmissionPoint->SetY(aRy); | |
734 | fGlobalEmissionPoint->SetZ(aRz); | |
735 | } | |
736 | else { | |
737 | fGlobalEmissionPoint = new AliFemtoThreeVector(aRx, aRy, aRz); | |
738 | } | |
739 | } | |
740 | //_______________________ |