]> git.uio.no Git - u/mrichter/AliRoot.git/blame - PWGCF/FEMTOSCOPY/AliFemto/AliFemtoTrack.cxx
Migration of PWG2/FEMTOSCOPY to PWGCF/FEMTOSCOPY
[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),
38 fHelix(),
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),
51 fTPCsignal(0),
52 fTPCsignalN(0),
53 fTPCsignalS(0),
54 fVTOF(0),
55 fNSigmaTPCPi(0),
56 fNSigmaTPCK(0),
57 fNSigmaTPCP(0),
58 fNSigmaTOFPi(0),
59 fNSigmaTOFK(0),
60 fNSigmaTOFP(0),
61 fSigmaToVertex(0),
62 fClusters(159),
63 fShared(159),
64 fNominalTpcEntrancePoint(0,0,0),
65 fNominalTpcExitPoint(0,0,0),
66 fHiddenInfo(0)
67{
68 // Default constructor
69 fHiddenInfo = NULL;
70 fKinkIndexes[0] = 0;
71 fKinkIndexes[1] = 0;
72 fKinkIndexes[2] = 0;
73 // cout << "Created track " << this << endl;
74}
75
76
77AliFemtoTrack::AliFemtoTrack(const AliFemtoTrack& t) :
78 fCharge(0),
79 fPidProbElectron(0),
80 fPidProbPion(0),
81 fPidProbKaon(0),
82 fPidProbProton(0),
83 fPidProbMuon(0),
84 fTrackId(0),
85 fTofPionTime(-100000.0),
86 fTofKaonTime(-100000.0),
87 fTofProtonTime(-100000.0),
88 fP(0,0,0),
89 fPt(0),
90 fHelix(),
91 fFlags(0),
92 fLabel(0),
93 fImpactD(0),
94 fImpactZ(0),
95 fCdd(0),
96 fCdz(0),
97 fCzz(0),
98 fITSchi2(0),
99 fITSncls(0),
100 fTPCchi2(0),
101 fTPCncls(0),
102 fTPCnclsF(0),
103 fTPCsignal(0),
104 fTPCsignalN(0),
105 fTPCsignalS(0),
106 fVTOF(0),
107 fNSigmaTPCPi(0),
108 fNSigmaTPCK(0),
109 fNSigmaTPCP(0),
110 fNSigmaTOFPi(0),
111 fNSigmaTOFK(0),
112 fNSigmaTOFP(0),
113 fSigmaToVertex(0),
114 fClusters(159),
115 fShared(159),
116 fNominalTpcEntrancePoint(0,0,0),
117 fNominalTpcExitPoint(0,0,0),
118 fHiddenInfo(0)
119 {
120 // copy constructor
121 fCharge = t.fCharge;
122 fPidProbElectron = t.fPidProbElectron;
123 fPidProbPion = t.fPidProbPion;
124 fPidProbKaon = t.fPidProbKaon;
125 fPidProbProton = t.fPidProbProton;
126 fPidProbMuon=t.fPidProbMuon;
127 fTofPionTime=t.fTofPionTime;
128 fTofKaonTime=t.fTofKaonTime;
129 fTofProtonTime=t.fTofProtonTime;
130 fP = t.fP;
131 fPt = t.fPt;
132 fHelix = t.fHelix;
133 fTrackId = t.fTrackId;
134 fFlags=t.fFlags;
135 fLabel=t.fLabel;
136 fImpactD=t.fImpactD;
137 fImpactZ=t.fImpactZ;
138 fCdd=t.fCdd;
139 fCdz=t.fCdz;
140 fCzz=t.fCzz;
141 fITSchi2=t.fITSchi2;
142 fITSncls=t.fITSncls;
143 fTPCchi2=t.fTPCchi2;
144 fTPCncls=t.fTPCncls;
145 fTPCnclsF=t.fTPCnclsF;
146 fTPCsignal=t.fTPCsignal;
147 fTPCsignalN=t.fTPCsignalN;
148 fTPCsignalS=t.fTPCsignalS;
149 fVTOF=t.fVTOF;
150 fNSigmaTPCPi=t.fNSigmaTPCPi;
151 fNSigmaTPCK=t.fNSigmaTPCK;
152 fNSigmaTPCP=t.fNSigmaTPCP;
153 fNSigmaTOFPi=t.fNSigmaTOFPi;
154 fNSigmaTOFK=t.fNSigmaTOFK;
155 fNSigmaTOFP=t.fNSigmaTOFP;
156 fSigmaToVertex=t.fSigmaToVertex;
157 fClusters=t.fClusters;
158 fShared=t.fShared;
159 fNominalTpcEntrancePoint=t.fNominalTpcEntrancePoint;
160 fNominalTpcExitPoint=t.fNominalTpcExitPoint;
161 if (t.ValidHiddenInfo())
162 fHiddenInfo = t.GetHiddenInfo()->Clone();
163 else
164 fHiddenInfo = NULL;
165 fKinkIndexes[0] = t.fKinkIndexes[0];
166 fKinkIndexes[1] = t.fKinkIndexes[1];
167 fKinkIndexes[2] = t.fKinkIndexes[2];
168 // cout << "Created track " << this << endl;
169}
170
171AliFemtoTrack& AliFemtoTrack::operator=(const AliFemtoTrack& aTrack)
172{
173 // assignment operator
174 if (this == &aTrack)
175 return *this;
176 fCharge = aTrack.fCharge;
177 fPidProbElectron = aTrack.fPidProbElectron;
178 fPidProbPion = aTrack.fPidProbPion;
179 fPidProbKaon = aTrack.fPidProbKaon;
180 fPidProbProton = aTrack.fPidProbProton;
181 fPidProbMuon=aTrack.fPidProbMuon;
182 fTofPionTime=aTrack.fTofPionTime;
183 fTofKaonTime=aTrack.fTofKaonTime;
184 fTofProtonTime=aTrack.fTofProtonTime;
185 fP = aTrack.fP;
186 fPt = aTrack.fPt;
187 fHelix = aTrack.fHelix;
188 fTrackId = aTrack.fTrackId;
189 fFlags=aTrack.fFlags;
190 fLabel=aTrack.fLabel;
191 fImpactD=aTrack.fImpactD;
192 fImpactZ=aTrack.fImpactZ;
193 fCdd=aTrack.fCdd;
194 fCdz=aTrack.fCdz;
195 fCzz=aTrack.fCzz;
196 fITSchi2=aTrack.fITSchi2;
197 fITSncls=aTrack.fITSncls;
198 fTPCchi2=aTrack.fTPCchi2;
199 fTPCncls=aTrack.fTPCncls;
200 fTPCnclsF=aTrack.fTPCnclsF;
201 fTPCsignal=aTrack.fTPCsignal;
202 fTPCsignalN=aTrack.fTPCsignalN;
203 fTPCsignalS=aTrack.fTPCsignalS;
204 fVTOF=aTrack.fVTOF;
205 fNSigmaTPCPi=aTrack.fNSigmaTPCPi;
206 fNSigmaTPCK=aTrack.fNSigmaTPCK;
207 fNSigmaTPCP=aTrack.fNSigmaTPCP;
208 fNSigmaTOFPi=aTrack.fNSigmaTOFPi;
209 fNSigmaTOFK=aTrack.fNSigmaTOFK;
210 fNSigmaTOFP=aTrack.fNSigmaTOFP;
211 fClusters=aTrack.fClusters;
212 fShared=aTrack.fShared;
213 fNominalTpcEntrancePoint=aTrack.fNominalTpcEntrancePoint;
214 fNominalTpcExitPoint=aTrack.fNominalTpcExitPoint;
215 fKinkIndexes[0] = aTrack.fKinkIndexes[0];
216 fKinkIndexes[1] = aTrack.fKinkIndexes[1];
217 fKinkIndexes[2] = aTrack.fKinkIndexes[2];
218 if (ValidHiddenInfo())
219 delete fHiddenInfo;
220 if (aTrack.ValidHiddenInfo())
221 fHiddenInfo = aTrack.GetHiddenInfo()->Clone();
222 else
223 fHiddenInfo = NULL;
224
225 return *this;
226}
227
228void AliFemtoTrack::SetCharge(const short& ch){fCharge=ch;}
229
230void AliFemtoTrack::SetPidProbElectron(const float& x){fPidProbElectron = x;}
231void AliFemtoTrack::SetPidProbPion(const float& x){fPidProbPion = x;}
232void AliFemtoTrack::SetPidProbKaon(const float& x){fPidProbKaon = x;}
233void AliFemtoTrack::SetPidProbProton(const float& x){fPidProbProton = x;}
234void AliFemtoTrack::SetPidProbMuon(const float& x){fPidProbMuon = x;}
235void AliFemtoTrack::SetTofExpectedTimes(const float& tpi, const float& tkn, const float& tpr){fTofPionTime = tpi; fTofKaonTime = tkn; fTofProtonTime = tpr; }
236
237void AliFemtoTrack::SetP(const AliFemtoThreeVector& p){fP = p;}
238void AliFemtoTrack::SetPt(const float& pt){fPt = pt;}
239void AliFemtoTrack::SetHelix(const AliFmPhysicalHelixD& h){fHelix = h;}
240void AliFemtoTrack::SetTrackId(const short & id) { fTrackId=id;}
241void AliFemtoTrack::SetFlags(const long int &flags) {fFlags=flags;}
242void AliFemtoTrack::SetLabel(const int &label) {fLabel=label;}
243void AliFemtoTrack::SetImpactD(const float& aImpactD){fImpactD=aImpactD;}
244void AliFemtoTrack::SetImpactZ(const float& aImpactZ){fImpactZ=aImpactZ;}
245void AliFemtoTrack::SetCdd(const float& aCdd){fCdd=aCdd;}
246void AliFemtoTrack::SetCdz(const float& aCdz){fCdz=aCdz;}
247void AliFemtoTrack::SetCzz(const float& aCzz){fCzz=aCzz;}
248void AliFemtoTrack::SetITSchi2(const float& aITSchi2){fITSchi2=aITSchi2;}
249void AliFemtoTrack::SetITSncls(const int& aITSncls){fITSncls=aITSncls;}
250void AliFemtoTrack::SetTPCchi2(const float& aTPCchi2){fTPCchi2=aTPCchi2;}
251void AliFemtoTrack::SetTPCncls(const int& aTPCncls){fTPCncls=aTPCncls;}
252void AliFemtoTrack::SetTPCnclsF(const short& aTPCnclsF){fTPCnclsF=aTPCnclsF;}
253void AliFemtoTrack::SetTPCsignal(const float& aTPCsig){fTPCsignal=aTPCsig;}
254void AliFemtoTrack::SetTPCsignalN(const short& aTPCsignalN){fTPCsignalN=aTPCsignalN;}
255void AliFemtoTrack::SetTPCsignalS(const float& aTPCsignalS){fTPCsignalS=aTPCsignalS;}
256void AliFemtoTrack::SetVTOF(const float& aVTOF){fVTOF=aVTOF;}
257void AliFemtoTrack::SetNSigmaTPCPi(const float& aNSigmaTPCPi){fNSigmaTPCPi=aNSigmaTPCPi;}
258void AliFemtoTrack::SetNSigmaTPCK(const float& aNSigmaTPCK){fNSigmaTPCK=aNSigmaTPCK;}
259void AliFemtoTrack::SetNSigmaTPCP(const float& aNSigmaTPCP){fNSigmaTPCP=aNSigmaTPCP;}
260void AliFemtoTrack::SetNSigmaTOFPi(const float& aNSigmaTOFPi){fNSigmaTOFPi=aNSigmaTOFPi;}
261void AliFemtoTrack::SetNSigmaTOFK(const float& aNSigmaTOFK){fNSigmaTOFK=aNSigmaTOFK;}
262void AliFemtoTrack::SetNSigmaTOFP(const float& aNSigmaTOFP){fNSigmaTOFP=aNSigmaTOFP;}
263void AliFemtoTrack::SetSigmaToVertex(const float& aSigma){fSigmaToVertex=aSigma;}
264
265
266short AliFemtoTrack::Charge() const {return fCharge;}
267AliFemtoThreeVector AliFemtoTrack::P() const {return fP;}
268float AliFemtoTrack::Pt() const {return fPt;}
269const AliFmPhysicalHelixD& AliFemtoTrack::Helix() const {return fHelix;}
270short AliFemtoTrack::TrackId() const { return fTrackId; }
271long int AliFemtoTrack::Flags() const {return fFlags;}
272int AliFemtoTrack::Label()const {return fLabel;}
273float AliFemtoTrack::ImpactD()const{return fImpactD;}
274float AliFemtoTrack::ImpactZ()const{return fImpactZ;}
275float AliFemtoTrack::Cdd() const{return fCdd;}
276float AliFemtoTrack::Cdz() const{return fCdz;}
277float AliFemtoTrack::Czz() const{return fCzz;}
278float AliFemtoTrack::ITSchi2() const{return fITSchi2;}
279int AliFemtoTrack::ITSncls() const{return fITSncls;}
280float AliFemtoTrack::TPCchi2() const{return fTPCchi2;}
281int AliFemtoTrack::TPCncls() const{return fTPCncls;}
282short AliFemtoTrack::TPCnclsF() const{return fTPCnclsF;}
283float AliFemtoTrack::TPCsignal() const{return fTPCsignal;}
284short AliFemtoTrack::TPCsignalN() const{return fTPCsignalN;}
285float AliFemtoTrack::TPCsignalS() const{return fTPCsignalS;}
286float AliFemtoTrack::VTOF() const{return fVTOF;}
287float AliFemtoTrack::NSigmaTPCPi() const{return fNSigmaTPCPi;}
288float AliFemtoTrack::NSigmaTPCK() const{return fNSigmaTPCK;}
289float AliFemtoTrack::NSigmaTPCP() const{return fNSigmaTPCP;}
290float AliFemtoTrack::NSigmaTOFPi() const{return fNSigmaTOFPi;}
291float AliFemtoTrack::NSigmaTOFK() const{return fNSigmaTOFK;}
292float AliFemtoTrack::NSigmaTOFP() const{return fNSigmaTOFP;}
293float AliFemtoTrack::SigmaToVertex() const{return fSigmaToVertex;}
294float AliFemtoTrack::TOFpionTime() const{return fTofPionTime;}
295float AliFemtoTrack::TOFkaonTime() const{return fTofKaonTime;}
296float AliFemtoTrack::TOFprotonTime() const{return fTofProtonTime;}
297
298
299void AliFemtoTrack::SetHiddenInfo(AliFemtoHiddenInfo* aHiddenInfo) {fHiddenInfo=aHiddenInfo;}
300bool AliFemtoTrack::ValidHiddenInfo() const { if (fHiddenInfo) return true; else return false; }
301AliFemtoHiddenInfo* AliFemtoTrack::GetHiddenInfo() const {return fHiddenInfo;}
302
303AliFemtoTrack::~AliFemtoTrack()
304{
305 // destructor
306 if (fHiddenInfo)
307 delete fHiddenInfo;
308 // cout << "Deleted track " << this << endl;
309}
310
311const TBits& AliFemtoTrack::TPCclusters() const {return fClusters;}
312const TBits& AliFemtoTrack::TPCsharing() const {return fShared;}
313
314void AliFemtoTrack::SetTPCcluster(const short& aNBit, const Bool_t& aValue)
315{
316 fClusters.SetBitNumber(aNBit, aValue);
317}
318
319void AliFemtoTrack::SetTPCshared(const short& aNBit, const Bool_t& aValue)
320{
321 fShared.SetBitNumber(aNBit, aValue);
322}
323
324void AliFemtoTrack::SetTPCClusterMap(const TBits& aBits)
325{
326 fClusters = aBits;
327}
328void AliFemtoTrack::SetTPCSharedMap(const TBits& aBits)
329{
330 fShared = aBits;
331}
332
333void AliFemtoTrack::SetKinkIndexes(int points[3])
334{
335 // Transfer the Kink indices
336 fKinkIndexes[0] = points[0];
337 fKinkIndexes[1] = points[1];
338 fKinkIndexes[2] = points[2];
339}
340
341int AliFemtoTrack::KinkIndex(int aIndex) const
342{
343 // Return Kink index
344 if ((aIndex <3) && (aIndex>=0))
345 return fKinkIndexes[aIndex];
346 else
347 return 0;
348}
349
350// void AliFemtoTrack::SetXTPC(const AliFemtoThreeVector& aXTPC)
351// {
352// fXTPC = aXTPC;
353// }
354
355// void AliFemtoTrack::SetXTPC(double *aXTPC)
356// {
357// fXTPC.setX(aXTPC[0]);
358// fXTPC.setY(aXTPC[1]);
359// fXTPC.setZ(aXTPC[2]);
360// }
361
362// AliFemtoThreeVector AliFemtoTrack::XTPC() const
363// {
364// return fXTPC;
365// }
366
367const AliFemtoThreeVector& AliFemtoTrack::NominalTpcExitPoint() const
368{
369 return fNominalTpcExitPoint;
370}
371const AliFemtoThreeVector& AliFemtoTrack::NominalTpcEntrancePoint() const
372{
373 return fNominalTpcEntrancePoint;
374}
375
376void AliFemtoTrack::SetNominalTPCEntrancePoint(const AliFemtoThreeVector& aXTPC)
377{
378 fNominalTpcEntrancePoint = aXTPC;
379}
380void AliFemtoTrack::SetNominalTPCEntrancePoint(double *aXTPC)
381{
382 // Store the nominal TPC entrance point
383 fNominalTpcEntrancePoint.SetX(aXTPC[0]);
384 fNominalTpcEntrancePoint.SetY(aXTPC[1]);
385 fNominalTpcEntrancePoint.SetZ(aXTPC[2]);
386}
387
388void AliFemtoTrack::SetNominalTPCExitPoint(const AliFemtoThreeVector& aXTPC)
389{
390 fNominalTpcExitPoint = aXTPC;
391}
392void AliFemtoTrack::SetNominalTPCExitPoint(double *aXTPC)
393{
394 // Store the nominal TPC exit point
395 fNominalTpcExitPoint.SetX(aXTPC[0]);
396 fNominalTpcExitPoint.SetY(aXTPC[1]);
397 fNominalTpcExitPoint.SetZ(aXTPC[2]);
398}