]> git.uio.no Git - u/mrichter/AliRoot.git/blame - PWG2/FEMTOSCOPY/AliFemto/AliFemtoTrack.cxx
Add TOF info
[u/mrichter/AliRoot.git] / PWG2 / FEMTOSCOPY / AliFemto / AliFemtoTrack.cxx
CommitLineData
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
25AliFemtoTrack::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 70AliFemtoTrack::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 150AliFemtoTrack& 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 200void AliFemtoTrack::SetCharge(const short& ch){fCharge=ch;}
201
202void AliFemtoTrack::SetPidProbElectron(const float& x){fPidProbElectron = x;}
203void AliFemtoTrack::SetPidProbPion(const float& x){fPidProbPion = x;}
204void AliFemtoTrack::SetPidProbKaon(const float& x){fPidProbKaon = x;}
205void AliFemtoTrack::SetPidProbProton(const float& x){fPidProbProton = x;}
206void AliFemtoTrack::SetPidProbMuon(const float& x){fPidProbMuon = x;}
b5f2928c 207void AliFemtoTrack::SetTofExpectedTimes(const float& tpi, const float& tkn, const float& tpr){fTofPionTime = tpi; fTofKaonTime = tkn; fTofProtonTime = tpr; }
67427ff7 208
209void AliFemtoTrack::SetP(const AliFemtoThreeVector& p){fP = p;}
210void AliFemtoTrack::SetPt(const float& pt){fPt = pt;}
211void AliFemtoTrack::SetHelix(const AliFmPhysicalHelixD& h){fHelix = h;}
212void AliFemtoTrack::SetTrackId(const short & id) { fTrackId=id;}
213void AliFemtoTrack::SetFlags(const long int &flags) {fFlags=flags;}
214void AliFemtoTrack::SetLabel(const int &label) {fLabel=label;}
9064872d 215void AliFemtoTrack::SetImpactD(const float& aImpactD){fImpactD=aImpactD;}
216void AliFemtoTrack::SetImpactZ(const float& aImpactZ){fImpactZ=aImpactZ;}
217void AliFemtoTrack::SetCdd(const float& aCdd){fCdd=aCdd;}
218void AliFemtoTrack::SetCdz(const float& aCdz){fCdz=aCdz;}
219void AliFemtoTrack::SetCzz(const float& aCzz){fCzz=aCzz;}
220void AliFemtoTrack::SetITSchi2(const float& aITSchi2){fITSchi2=aITSchi2;}
221void AliFemtoTrack::SetITSncls(const int& aITSncls){fITSncls=aITSncls;}
222void AliFemtoTrack::SetTPCchi2(const float& aTPCchi2){fTPCchi2=aTPCchi2;}
223void AliFemtoTrack::SetTPCncls(const int& aTPCncls){fTPCncls=aTPCncls;}
224void AliFemtoTrack::SetTPCnclsF(const short& aTPCnclsF){fTPCnclsF=aTPCnclsF;}
8a21a731 225void AliFemtoTrack::SetTPCsignal(const float& aTPCsig){fTPCsignal=aTPCsig;}
9064872d 226void AliFemtoTrack::SetTPCsignalN(const short& aTPCsignalN){fTPCsignalN=aTPCsignalN;}
227void AliFemtoTrack::SetTPCsignalS(const float& aTPCsignalS){fTPCsignalS=aTPCsignalS;}
228void AliFemtoTrack::SetSigmaToVertex(const float& aSigma){fSigmaToVertex=aSigma;}
67427ff7 229
230
231short AliFemtoTrack::Charge() const {return fCharge;}
232AliFemtoThreeVector AliFemtoTrack::P() const {return fP;}
233float AliFemtoTrack::Pt() const {return fPt;}
234const AliFmPhysicalHelixD& AliFemtoTrack::Helix() const {return fHelix;}
235short AliFemtoTrack::TrackId() const { return fTrackId; }
236long int AliFemtoTrack::Flags() const {return fFlags;}
237int AliFemtoTrack::Label()const {return fLabel;}
238float AliFemtoTrack::ImpactD()const{return fImpactD;}
239float AliFemtoTrack::ImpactZ()const{return fImpactZ;}
240float AliFemtoTrack::Cdd() const{return fCdd;}
241float AliFemtoTrack::Cdz() const{return fCdz;}
242float AliFemtoTrack::Czz() const{return fCzz;}
243float AliFemtoTrack::ITSchi2() const{return fITSchi2;}
244int AliFemtoTrack::ITSncls() const{return fITSncls;}
245float AliFemtoTrack::TPCchi2() const{return fTPCchi2;}
246int AliFemtoTrack::TPCncls() const{return fTPCncls;}
247short AliFemtoTrack::TPCnclsF() const{return fTPCnclsF;}
8a21a731 248float AliFemtoTrack::TPCsignal() const{return fTPCsignal;}
67427ff7 249short AliFemtoTrack::TPCsignalN() const{return fTPCsignalN;}
250float AliFemtoTrack::TPCsignalS() const{return fTPCsignalS;}
0b3bd1ac 251float AliFemtoTrack::SigmaToVertex() const{return fSigmaToVertex;}
b5f2928c 252float AliFemtoTrack::TOFpionTime() const{return fTofPionTime;}
253float AliFemtoTrack::TOFkaonTime() const{return fTofKaonTime;}
254float AliFemtoTrack::TOFprotonTime() const{return fTofProtonTime;}
255
67427ff7 256
257void AliFemtoTrack::SetHiddenInfo(AliFemtoHiddenInfo* aHiddenInfo) {fHiddenInfo=aHiddenInfo;}
258bool AliFemtoTrack::ValidHiddenInfo() const { if (fHiddenInfo) return true; else return false; }
d0e92d9a 259AliFemtoHiddenInfo* AliFemtoTrack::GetHiddenInfo() const {return fHiddenInfo;}
67427ff7 260
261AliFemtoTrack::~AliFemtoTrack()
262{
0b3bd1ac 263 // destructor
67427ff7 264 if (fHiddenInfo)
265 delete fHiddenInfo;
266 // cout << "Deleted track " << this << endl;
267}
268
269const TBits& AliFemtoTrack::TPCclusters() const {return fClusters;}
270const TBits& AliFemtoTrack::TPCsharing() const {return fShared;}
271
272void AliFemtoTrack::SetTPCcluster(const short& aNBit, const Bool_t& aValue)
273{
274 fClusters.SetBitNumber(aNBit, aValue);
275}
276
277void AliFemtoTrack::SetTPCshared(const short& aNBit, const Bool_t& aValue)
278{
279 fShared.SetBitNumber(aNBit, aValue);
280}
281
ea77036b 282void AliFemtoTrack::SetTPCClusterMap(const TBits& aBits)
283{
284 fClusters = aBits;
285}
286void AliFemtoTrack::SetTPCSharedMap(const TBits& aBits)
287{
288 fShared = aBits;
289}
290
291void 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
299int 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
325const AliFemtoThreeVector& AliFemtoTrack::NominalTpcExitPoint() const
326{
327 return fNominalTpcExitPoint;
328}
329const AliFemtoThreeVector& AliFemtoTrack::NominalTpcEntrancePoint() const
330{
331 return fNominalTpcEntrancePoint;
332}
333
334void AliFemtoTrack::SetNominalTPCEntrancePoint(const AliFemtoThreeVector& aXTPC)
335{
336 fNominalTpcEntrancePoint = aXTPC;
337}
338void 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
346void AliFemtoTrack::SetNominalTPCExitPoint(const AliFemtoThreeVector& aXTPC)
347{
348 fNominalTpcExitPoint = aXTPC;
349}
350void 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}