]> git.uio.no Git - u/mrichter/AliRoot.git/blame - PWGCF/FEMTOSCOPY/AliFemto/AliFemtoTrack.cxx
Merge branch 'master' of https://git.cern.ch/reps/AliRoot
[u/mrichter/AliRoot.git] / PWGCF / FEMTOSCOPY / AliFemto / AliFemtoTrack.cxx
CommitLineData
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
25AliFemtoTrack::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
102AliFemtoTrack::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
249AliFemtoTrack& 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
357void AliFemtoTrack::SetCharge(const short& ch){fCharge=ch;}
358
359void AliFemtoTrack::SetPidProbElectron(const float& x){fPidProbElectron = x;}
360void AliFemtoTrack::SetPidProbPion(const float& x){fPidProbPion = x;}
361void AliFemtoTrack::SetPidProbKaon(const float& x){fPidProbKaon = x;}
362void AliFemtoTrack::SetPidProbProton(const float& x){fPidProbProton = x;}
363void AliFemtoTrack::SetPidProbMuon(const float& x){fPidProbMuon = x;}
364void AliFemtoTrack::SetTofExpectedTimes(const float& tpi, const float& tkn, const float& tpr){fTofPionTime = tpi; fTofKaonTime = tkn; fTofProtonTime = tpr; }
365
366void AliFemtoTrack::SetP(const AliFemtoThreeVector& p){fP = p;}
367void AliFemtoTrack::SetPt(const float& pt){fPt = pt;}
7eb9f5d0 368void AliFemtoTrack::SetInnerMomentum(const float& x){fInnerMomentum = x;}
76ce4b5b 369void AliFemtoTrack::SetHelix(const AliFmPhysicalHelixD& h){fHelix = h;}
973a91f8 370void AliFemtoTrack::SetTrackId(const int & id) { fTrackId=id;}
76ce4b5b 371void AliFemtoTrack::SetFlags(const long int &flags) {fFlags=flags;}
372void AliFemtoTrack::SetLabel(const int &label) {fLabel=label;}
373void AliFemtoTrack::SetImpactD(const float& aImpactD){fImpactD=aImpactD;}
7eb9f5d0 374
375void AliFemtoTrack::SetImpactDprim(const float& aImpactDprim){fImpactDprim=aImpactDprim;}
376void AliFemtoTrack::SetImpactDweak(const float& aImpactDweak){fImpactDweak=aImpactDweak;}
377void AliFemtoTrack::SetImpactDmat(const float& aImpactDmat){fImpactDmat=aImpactDmat;}
378
76ce4b5b 379void AliFemtoTrack::SetImpactZ(const float& aImpactZ){fImpactZ=aImpactZ;}
380void AliFemtoTrack::SetCdd(const float& aCdd){fCdd=aCdd;}
381void AliFemtoTrack::SetCdz(const float& aCdz){fCdz=aCdz;}
382void AliFemtoTrack::SetCzz(const float& aCzz){fCzz=aCzz;}
383void AliFemtoTrack::SetITSchi2(const float& aITSchi2){fITSchi2=aITSchi2;}
384void AliFemtoTrack::SetITSncls(const int& aITSncls){fITSncls=aITSncls;}
385void AliFemtoTrack::SetTPCchi2(const float& aTPCchi2){fTPCchi2=aTPCchi2;}
386void AliFemtoTrack::SetTPCncls(const int& aTPCncls){fTPCncls=aTPCncls;}
387void AliFemtoTrack::SetTPCnclsF(const short& aTPCnclsF){fTPCnclsF=aTPCnclsF;}
388void AliFemtoTrack::SetTPCsignal(const float& aTPCsig){fTPCsignal=aTPCsig;}
389void AliFemtoTrack::SetTPCsignalN(const short& aTPCsignalN){fTPCsignalN=aTPCsignalN;}
390void AliFemtoTrack::SetTPCsignalS(const float& aTPCsignalS){fTPCsignalS=aTPCsignalS;}
391void AliFemtoTrack::SetVTOF(const float& aVTOF){fVTOF=aVTOF;}
392void AliFemtoTrack::SetNSigmaTPCPi(const float& aNSigmaTPCPi){fNSigmaTPCPi=aNSigmaTPCPi;}
393void AliFemtoTrack::SetNSigmaTPCK(const float& aNSigmaTPCK){fNSigmaTPCK=aNSigmaTPCK;}
394void AliFemtoTrack::SetNSigmaTPCP(const float& aNSigmaTPCP){fNSigmaTPCP=aNSigmaTPCP;}
2e04885f 395void AliFemtoTrack::SetNSigmaTPCE(const float& aNSigmaTPCE){fNSigmaTPCE=aNSigmaTPCE;}
76ce4b5b 396void AliFemtoTrack::SetNSigmaTOFPi(const float& aNSigmaTOFPi){fNSigmaTOFPi=aNSigmaTOFPi;}
397void AliFemtoTrack::SetNSigmaTOFK(const float& aNSigmaTOFK){fNSigmaTOFK=aNSigmaTOFK;}
398void AliFemtoTrack::SetNSigmaTOFP(const float& aNSigmaTOFP){fNSigmaTOFP=aNSigmaTOFP;}
2e04885f 399void AliFemtoTrack::SetNSigmaTOFE(const float& aNSigmaTOFE){fNSigmaTOFE=aNSigmaTOFE;}
76ce4b5b 400void AliFemtoTrack::SetSigmaToVertex(const float& aSigma){fSigmaToVertex=aSigma;}
401
973a91f8 402void AliFemtoTrack::SetXatDCA(const double& x) {fXatDCA=x;}
403void AliFemtoTrack::SetYatDCA(const double& x) {fYatDCA=x;}
404void AliFemtoTrack::SetZatDCA(const double& x) {fZatDCA=x;}
405
76ce4b5b 406
407short AliFemtoTrack::Charge() const {return fCharge;}
408AliFemtoThreeVector AliFemtoTrack::P() const {return fP;}
7eb9f5d0 409float AliFemtoTrack::Pt() const {return fPt;}
410float AliFemtoTrack::InnerMomentum() const {return fInnerMomentum;}
76ce4b5b 411const AliFmPhysicalHelixD& AliFemtoTrack::Helix() const {return fHelix;}
973a91f8 412int AliFemtoTrack::TrackId() const { return fTrackId; }
76ce4b5b 413long int AliFemtoTrack::Flags() const {return fFlags;}
414int AliFemtoTrack::Label()const {return fLabel;}
415float AliFemtoTrack::ImpactD()const{return fImpactD;}
7eb9f5d0 416
417float AliFemtoTrack::ImpactDprim()const{return fImpactDprim;}
418float AliFemtoTrack::ImpactDweak()const{return fImpactDweak;}
419float AliFemtoTrack::ImpactDmat()const{return fImpactDmat;}
420
76ce4b5b 421float AliFemtoTrack::ImpactZ()const{return fImpactZ;}
422float AliFemtoTrack::Cdd() const{return fCdd;}
423float AliFemtoTrack::Cdz() const{return fCdz;}
424float AliFemtoTrack::Czz() const{return fCzz;}
425float AliFemtoTrack::ITSchi2() const{return fITSchi2;}
426int AliFemtoTrack::ITSncls() const{return fITSncls;}
427float AliFemtoTrack::TPCchi2() const{return fTPCchi2;}
428int AliFemtoTrack::TPCncls() const{return fTPCncls;}
429short AliFemtoTrack::TPCnclsF() const{return fTPCnclsF;}
430float AliFemtoTrack::TPCsignal() const{return fTPCsignal;}
431short AliFemtoTrack::TPCsignalN() const{return fTPCsignalN;}
432float AliFemtoTrack::TPCsignalS() const{return fTPCsignalS;}
433float AliFemtoTrack::VTOF() const{return fVTOF;}
434float AliFemtoTrack::NSigmaTPCPi() const{return fNSigmaTPCPi;}
435float AliFemtoTrack::NSigmaTPCK() const{return fNSigmaTPCK;}
436float AliFemtoTrack::NSigmaTPCP() const{return fNSigmaTPCP;}
2e04885f 437float AliFemtoTrack::NSigmaTPCE() const{return fNSigmaTPCE;}
76ce4b5b 438float AliFemtoTrack::NSigmaTOFPi() const{return fNSigmaTOFPi;}
439float AliFemtoTrack::NSigmaTOFK() const{return fNSigmaTOFK;}
440float AliFemtoTrack::NSigmaTOFP() const{return fNSigmaTOFP;}
2e04885f 441float AliFemtoTrack::NSigmaTOFE() const{return fNSigmaTOFE;}
76ce4b5b 442float AliFemtoTrack::SigmaToVertex() const{return fSigmaToVertex;}
443float AliFemtoTrack::TOFpionTime() const{return fTofPionTime;}
444float AliFemtoTrack::TOFkaonTime() const{return fTofKaonTime;}
445float AliFemtoTrack::TOFprotonTime() const{return fTofProtonTime;}
446
973a91f8 447double AliFemtoTrack::XatDCA() const {return fXatDCA;}
448double AliFemtoTrack::YatDCA() const {return fYatDCA;}
449double AliFemtoTrack::ZatDCA() const {return fZatDCA;}
76ce4b5b 450
451void AliFemtoTrack::SetHiddenInfo(AliFemtoHiddenInfo* aHiddenInfo) {fHiddenInfo=aHiddenInfo;}
452bool AliFemtoTrack::ValidHiddenInfo() const { if (fHiddenInfo) return true; else return false; }
453AliFemtoHiddenInfo* AliFemtoTrack::GetHiddenInfo() const {return fHiddenInfo;}
454
455AliFemtoTrack::~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
469const TBits& AliFemtoTrack::TPCclusters() const {return fClusters;}
470const TBits& AliFemtoTrack::TPCsharing() const {return fShared;}
471
472void AliFemtoTrack::SetTPCcluster(const short& aNBit, const Bool_t& aValue)
473{
474 fClusters.SetBitNumber(aNBit, aValue);
475}
476
477void AliFemtoTrack::SetTPCshared(const short& aNBit, const Bool_t& aValue)
478{
479 fShared.SetBitNumber(aNBit, aValue);
480}
481
482void AliFemtoTrack::SetTPCClusterMap(const TBits& aBits)
483{
484 fClusters = aBits;
485}
486void AliFemtoTrack::SetTPCSharedMap(const TBits& aBits)
487{
488 fShared = aBits;
489}
490
491void 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 499void AliFemtoTrack::SetITSHitOnLayer(int i, bool val)
500{
501 // Transfer ITS hit
502 fHasPointOnITS[i] = val;
503}
504
505
76ce4b5b 506int 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 515bool 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
541const AliFemtoThreeVector& AliFemtoTrack::NominalTpcExitPoint() const
542{
543 return fNominalTpcExitPoint;
544}
ce7b3d98 545
546const 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 555const AliFemtoThreeVector& AliFemtoTrack::NominalTpcEntrancePoint() const
556{
557 return fNominalTpcEntrancePoint;
558}
559
560void AliFemtoTrack::SetNominalTPCEntrancePoint(const AliFemtoThreeVector& aXTPC)
561{
562 fNominalTpcEntrancePoint = aXTPC;
563}
564void 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 572void 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 583void AliFemtoTrack::SetNominalTPCExitPoint(const AliFemtoThreeVector& aXTPC)
584{
585 fNominalTpcExitPoint = aXTPC;
586}
587void 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//_____________________________________________
599AliFemtoThreeVector *AliFemtoTrack::GetTrueMomentum() const
600{
601 return fTrueMomentum;
602}
603//_____________________________________________
604AliFemtoLorentzVector *AliFemtoTrack::GetEmissionPoint() const
605{
606 return fEmissionPoint;
607}
608//_____________________________________________
609Int_t AliFemtoTrack::GetPDGPid() const
610{
611 return fPDGPid;
612}
613//_____________________________________________
614Double_t AliFemtoTrack::GetMass() const
615{
616 return fMass;
617}
618//_____________________________________________
619void 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//_____________________________________________
632void 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//_____________________________________________
646void 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//_____________________________________________
655void 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//_____________________________________________
669void 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//_____________________________________________
684void AliFemtoTrack::SetPDGPid(Int_t aPid)
685{
686 fPDGPid = aPid;
687}
688//_____________________________________________
689void AliFemtoTrack::SetMass(Double_t aMass)
690{
691 fMass = aMass;
692}
693//_____________________________________________
694void 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//_____________________________________________
709AliFemtoThreeVector *AliFemtoTrack::GetGlobalEmissionPoint() const
710{
711 return fGlobalEmissionPoint;
712}
713//_____________________________________________
714void 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//_____________________________________________
728void 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//_______________________