]> git.uio.no Git - u/mrichter/AliRoot.git/blame - PWG2/FEMTOSCOPY/AliFemto/AliFemtoTrack.cxx
Lines getting the matched track moved to a method in AliCalorimeterUtils. Lines copie...
[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),
1309aa0b 54 fVTOF(0),
55 fNSigmaTPCPi(0),
56 fNSigmaTPCK(0),
57 fNSigmaTPCP(0),
58 fNSigmaTOFPi(0),
59 fNSigmaTOFK(0),
60 fNSigmaTOFP(0),
0b3bd1ac 61 fSigmaToVertex(0),
67427ff7 62 fClusters(159),
0215f606 63 fShared(159),
0b3bd1ac 64 fNominalTpcEntrancePoint(0,0,0),
65 fNominalTpcExitPoint(0,0,0),
0215f606 66 fHiddenInfo(0)
67427ff7 67{
d0e92d9a 68 // Default constructor
67427ff7 69 fHiddenInfo = NULL;
ea77036b 70 fKinkIndexes[0] = 0;
71 fKinkIndexes[1] = 0;
72 fKinkIndexes[2] = 0;
67427ff7 73 // cout << "Created track " << this << endl;
74}
75
76
0215f606 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),
b5f2928c 85 fTofPionTime(-100000.0),
86 fTofKaonTime(-100000.0),
87 fTofProtonTime(-100000.0),
0215f606 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),
8a21a731 103 fTPCsignal(0),
0215f606 104 fTPCsignalN(0),
105 fTPCsignalS(0),
1309aa0b 106 fVTOF(0),
107 fNSigmaTPCPi(0),
108 fNSigmaTPCK(0),
109 fNSigmaTPCP(0),
110 fNSigmaTOFPi(0),
111 fNSigmaTOFK(0),
112 fNSigmaTOFP(0),
0b3bd1ac 113 fSigmaToVertex(0),
0215f606 114 fClusters(159),
115 fShared(159),
0b3bd1ac 116 fNominalTpcEntrancePoint(0,0,0),
117 fNominalTpcExitPoint(0,0,0),
0215f606 118 fHiddenInfo(0)
d0e92d9a 119 {
120 // copy constructor
67427ff7 121 fCharge = t.fCharge;
122 fPidProbElectron = t.fPidProbElectron;
123 fPidProbPion = t.fPidProbPion;
124 fPidProbKaon = t.fPidProbKaon;
125 fPidProbProton = t.fPidProbProton;
126 fPidProbMuon=t.fPidProbMuon;
b5f2928c 127 fTofPionTime=t.fTofPionTime;
128 fTofKaonTime=t.fTofKaonTime;
129 fTofProtonTime=t.fTofProtonTime;
67427ff7 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;
8a21a731 146 fTPCsignal=t.fTPCsignal;
67427ff7 147 fTPCsignalN=t.fTPCsignalN;
148 fTPCsignalS=t.fTPCsignalS;
1309aa0b 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;
0b3bd1ac 156 fSigmaToVertex=t.fSigmaToVertex;
67427ff7 157 fClusters=t.fClusters;
158 fShared=t.fShared;
0b3bd1ac 159 fNominalTpcEntrancePoint=t.fNominalTpcEntrancePoint;
160 fNominalTpcExitPoint=t.fNominalTpcExitPoint;
67427ff7 161 if (t.ValidHiddenInfo())
d0e92d9a 162 fHiddenInfo = t.GetHiddenInfo()->Clone();
67427ff7 163 else
164 fHiddenInfo = NULL;
ea77036b 165 fKinkIndexes[0] = t.fKinkIndexes[0];
166 fKinkIndexes[1] = t.fKinkIndexes[1];
167 fKinkIndexes[2] = t.fKinkIndexes[2];
67427ff7 168 // cout << "Created track " << this << endl;
ea77036b 169}
67427ff7 170
0215f606 171AliFemtoTrack& AliFemtoTrack::operator=(const AliFemtoTrack& aTrack)
172{
d0e92d9a 173 // assignment operator
0215f606 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;
b5f2928c 182 fTofPionTime=aTrack.fTofPionTime;
183 fTofKaonTime=aTrack.fTofKaonTime;
184 fTofProtonTime=aTrack.fTofProtonTime;
0215f606 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;
8a21a731 200 fTPCnclsF=aTrack.fTPCnclsF;
201 fTPCsignal=aTrack.fTPCsignal;
0215f606 202 fTPCsignalN=aTrack.fTPCsignalN;
203 fTPCsignalS=aTrack.fTPCsignalS;
1309aa0b 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;
0215f606 211 fClusters=aTrack.fClusters;
212 fShared=aTrack.fShared;
0b3bd1ac 213 fNominalTpcEntrancePoint=aTrack.fNominalTpcEntrancePoint;
214 fNominalTpcExitPoint=aTrack.fNominalTpcExitPoint;
ea77036b 215 fKinkIndexes[0] = aTrack.fKinkIndexes[0];
216 fKinkIndexes[1] = aTrack.fKinkIndexes[1];
217 fKinkIndexes[2] = aTrack.fKinkIndexes[2];
0215f606 218 if (ValidHiddenInfo())
219 delete fHiddenInfo;
220 if (aTrack.ValidHiddenInfo())
d0e92d9a 221 fHiddenInfo = aTrack.GetHiddenInfo()->Clone();
0215f606 222 else
223 fHiddenInfo = NULL;
224
225 return *this;
226}
227
67427ff7 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;}
b5f2928c 235void AliFemtoTrack::SetTofExpectedTimes(const float& tpi, const float& tkn, const float& tpr){fTofPionTime = tpi; fTofKaonTime = tkn; fTofProtonTime = tpr; }
67427ff7 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;}
9064872d 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;}
8a21a731 253void AliFemtoTrack::SetTPCsignal(const float& aTPCsig){fTPCsignal=aTPCsig;}
9064872d 254void AliFemtoTrack::SetTPCsignalN(const short& aTPCsignalN){fTPCsignalN=aTPCsignalN;}
255void AliFemtoTrack::SetTPCsignalS(const float& aTPCsignalS){fTPCsignalS=aTPCsignalS;}
1309aa0b 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;}
9064872d 263void AliFemtoTrack::SetSigmaToVertex(const float& aSigma){fSigmaToVertex=aSigma;}
67427ff7 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;}
8a21a731 283float AliFemtoTrack::TPCsignal() const{return fTPCsignal;}
67427ff7 284short AliFemtoTrack::TPCsignalN() const{return fTPCsignalN;}
285float AliFemtoTrack::TPCsignalS() const{return fTPCsignalS;}
1309aa0b 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;}
0b3bd1ac 293float AliFemtoTrack::SigmaToVertex() const{return fSigmaToVertex;}
b5f2928c 294float AliFemtoTrack::TOFpionTime() const{return fTofPionTime;}
295float AliFemtoTrack::TOFkaonTime() const{return fTofKaonTime;}
296float AliFemtoTrack::TOFprotonTime() const{return fTofProtonTime;}
297
67427ff7 298
299void AliFemtoTrack::SetHiddenInfo(AliFemtoHiddenInfo* aHiddenInfo) {fHiddenInfo=aHiddenInfo;}
300bool AliFemtoTrack::ValidHiddenInfo() const { if (fHiddenInfo) return true; else return false; }
d0e92d9a 301AliFemtoHiddenInfo* AliFemtoTrack::GetHiddenInfo() const {return fHiddenInfo;}
67427ff7 302
303AliFemtoTrack::~AliFemtoTrack()
304{
0b3bd1ac 305 // destructor
67427ff7 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
ea77036b 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{
0b3bd1ac 335 // Transfer the Kink indices
ea77036b 336 fKinkIndexes[0] = points[0];
337 fKinkIndexes[1] = points[1];
338 fKinkIndexes[2] = points[2];
339}
340
341int AliFemtoTrack::KinkIndex(int aIndex) const
342{
0b3bd1ac 343 // Return Kink index
ea77036b 344 if ((aIndex <3) && (aIndex>=0))
345 return fKinkIndexes[aIndex];
346 else
347 return 0;
348}
0b3bd1ac 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
a19edcc9 383 fNominalTpcEntrancePoint.SetX(aXTPC[0]);
384 fNominalTpcEntrancePoint.SetY(aXTPC[1]);
385 fNominalTpcEntrancePoint.SetZ(aXTPC[2]);
0b3bd1ac 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
a19edcc9 395 fNominalTpcExitPoint.SetX(aXTPC[0]);
396 fNominalTpcExitPoint.SetY(aXTPC[1]);
397 fNominalTpcExitPoint.SetZ(aXTPC[2]);
0b3bd1ac 398}