1 ///////////////////////////////////////////////////////////////////////////
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. //
9 ///////////////////////////////////////////////////////////////////////////
11 #include "AliFemtoTrack.h"
12 #ifndef __NO_STAR_DEPENDENCE_ALLOWED__
14 #include "StEvent/StEnumerations.h"
15 #include "AliFemtoAihongPid.h"
16 #include "StEventUtilities/StuProbabilityPidAlgorithm.h"
20 #include "SystemOfUnits.h" // has "tesla" in it
21 //#include "AliFemtoParticleTypes.h"
22 //#include "AliFemtoTTreeEvent.h"
23 //#include "AliFemtoTTreeTrack.h"
25 AliFemtoTrack::AliFemtoTrack():
54 // Default constructor
59 // cout << "Created track " << this << endl;
63 AliFemtoTrack::AliFemtoTrack(const AliFemtoTrack& t) :
94 fPidProbElectron = t.fPidProbElectron;
95 fPidProbPion = t.fPidProbPion;
96 fPidProbKaon = t.fPidProbKaon;
97 fPidProbProton = t.fPidProbProton;
98 fPidProbMuon=t.fPidProbMuon;
102 fTrackId = t.fTrackId;
114 fTPCnclsF=t.fTPCnclsF;
115 fTPCsignalN=t.fTPCsignalN;
116 fTPCsignalS=t.fTPCsignalS;
117 fClusters=t.fClusters;
119 if (t.ValidHiddenInfo())
120 fHiddenInfo = t.GetHiddenInfo()->Clone();
123 fKinkIndexes[0] = t.fKinkIndexes[0];
124 fKinkIndexes[1] = t.fKinkIndexes[1];
125 fKinkIndexes[2] = t.fKinkIndexes[2];
126 // cout << "Created track " << this << endl;
129 AliFemtoTrack& AliFemtoTrack::operator=(const AliFemtoTrack& aTrack)
131 // assignment operator
134 fCharge = aTrack.fCharge;
135 fPidProbElectron = aTrack.fPidProbElectron;
136 fPidProbPion = aTrack.fPidProbPion;
137 fPidProbKaon = aTrack.fPidProbKaon;
138 fPidProbProton = aTrack.fPidProbProton;
139 fPidProbMuon=aTrack.fPidProbMuon;
142 fHelix = aTrack.fHelix;
143 fTrackId = aTrack.fTrackId;
144 fFlags=aTrack.fFlags;
145 fLabel=aTrack.fLabel;
146 fImpactD=aTrack.fImpactD;
147 fImpactZ=aTrack.fImpactZ;
151 fITSchi2=aTrack.fITSchi2;
152 fITSncls=aTrack.fITSncls;
153 fTPCchi2=aTrack.fTPCchi2;
154 fTPCncls=aTrack.fTPCncls;
155 fTPCnclsF=aTrack.fTPCnclsF;
156 fTPCsignalN=aTrack.fTPCsignalN;
157 fTPCsignalS=aTrack.fTPCsignalS;
158 fClusters=aTrack.fClusters;
159 fShared=aTrack.fShared;
160 fKinkIndexes[0] = aTrack.fKinkIndexes[0];
161 fKinkIndexes[1] = aTrack.fKinkIndexes[1];
162 fKinkIndexes[2] = aTrack.fKinkIndexes[2];
163 if (ValidHiddenInfo())
165 if (aTrack.ValidHiddenInfo())
166 fHiddenInfo = aTrack.GetHiddenInfo()->Clone();
173 void AliFemtoTrack::SetCharge(const short& ch){fCharge=ch;}
175 void AliFemtoTrack::SetPidProbElectron(const float& x){fPidProbElectron = x;}
176 void AliFemtoTrack::SetPidProbPion(const float& x){fPidProbPion = x;}
177 void AliFemtoTrack::SetPidProbKaon(const float& x){fPidProbKaon = x;}
178 void AliFemtoTrack::SetPidProbProton(const float& x){fPidProbProton = x;}
179 void AliFemtoTrack::SetPidProbMuon(const float& x){fPidProbMuon = x;}
181 void AliFemtoTrack::SetP(const AliFemtoThreeVector& p){fP = p;}
182 void AliFemtoTrack::SetPt(const float& pt){fPt = pt;}
183 void AliFemtoTrack::SetHelix(const AliFmPhysicalHelixD& h){fHelix = h;}
184 void AliFemtoTrack::SetTrackId(const short & id) { fTrackId=id;}
185 void AliFemtoTrack::SetFlags(const long int &flags) {fFlags=flags;}
186 void AliFemtoTrack::SetLabel(const int &label) {fLabel=label;}
187 void AliFemtoTrack::SetImpactD(const float& ImpactD){fImpactD=ImpactD;}
188 void AliFemtoTrack::SetImpactZ(const float& ImpactZ){fImpactZ=ImpactZ;}
189 void AliFemtoTrack::SetCdd(const float& Cdd){fCdd=Cdd;}
190 void AliFemtoTrack::SetCdz(const float& Cdz){fCdz=Cdz;}
191 void AliFemtoTrack::SetCzz(const float& Czz){fCzz=Czz;}
192 void AliFemtoTrack::SetITSchi2(const float& ITSchi2){fITSchi2=ITSchi2;}
193 void AliFemtoTrack::SetITSncls(const int& ITSncls){fITSncls=ITSncls;}
194 void AliFemtoTrack::SetTPCchi2(const float& TPCchi2){fTPCchi2=TPCchi2;}
195 void AliFemtoTrack::SetTPCncls(const int& TPCncls){fTPCncls=TPCncls;}
196 void AliFemtoTrack::SetTPCnclsF(const short& TPCnclsF){fTPCnclsF=TPCnclsF;}
197 void AliFemtoTrack::SetTPCsignalN(const short& TPCsignalN){fTPCsignalN=TPCsignalN;}
198 void AliFemtoTrack::SetTPCsignalS(const float& TPCsignalS){fTPCsignalS=TPCsignalS;}
201 short AliFemtoTrack::Charge() const {return fCharge;}
202 AliFemtoThreeVector AliFemtoTrack::P() const {return fP;}
203 float AliFemtoTrack::Pt() const {return fPt;}
204 const AliFmPhysicalHelixD& AliFemtoTrack::Helix() const {return fHelix;}
205 short AliFemtoTrack::TrackId() const { return fTrackId; }
206 long int AliFemtoTrack::Flags() const {return fFlags;}
207 int AliFemtoTrack::Label()const {return fLabel;}
208 float AliFemtoTrack::ImpactD()const{return fImpactD;}
209 float AliFemtoTrack::ImpactZ()const{return fImpactZ;}
210 float AliFemtoTrack::Cdd() const{return fCdd;}
211 float AliFemtoTrack::Cdz() const{return fCdz;}
212 float AliFemtoTrack::Czz() const{return fCzz;}
213 float AliFemtoTrack::ITSchi2() const{return fITSchi2;}
214 int AliFemtoTrack::ITSncls() const{return fITSncls;}
215 float AliFemtoTrack::TPCchi2() const{return fTPCchi2;}
216 int AliFemtoTrack::TPCncls() const{return fTPCncls;}
217 short AliFemtoTrack::TPCnclsF() const{return fTPCnclsF;}
218 short AliFemtoTrack::TPCsignalN() const{return fTPCsignalN;}
219 float AliFemtoTrack::TPCsignalS() const{return fTPCsignalS;}
221 void AliFemtoTrack::SetHiddenInfo(AliFemtoHiddenInfo* aHiddenInfo) {fHiddenInfo=aHiddenInfo;}
222 bool AliFemtoTrack::ValidHiddenInfo() const { if (fHiddenInfo) return true; else return false; }
223 AliFemtoHiddenInfo* AliFemtoTrack::GetHiddenInfo() const {return fHiddenInfo;}
225 AliFemtoTrack::~AliFemtoTrack()
229 // cout << "Deleted track " << this << endl;
232 const TBits& AliFemtoTrack::TPCclusters() const {return fClusters;}
233 const TBits& AliFemtoTrack::TPCsharing() const {return fShared;}
235 void AliFemtoTrack::SetTPCcluster(const short& aNBit, const Bool_t& aValue)
237 fClusters.SetBitNumber(aNBit, aValue);
240 void AliFemtoTrack::SetTPCshared(const short& aNBit, const Bool_t& aValue)
242 fShared.SetBitNumber(aNBit, aValue);
245 void AliFemtoTrack::SetTPCClusterMap(const TBits& aBits)
249 void AliFemtoTrack::SetTPCSharedMap(const TBits& aBits)
254 void AliFemtoTrack::SetKinkIndexes(int points[3])
256 fKinkIndexes[0] = points[0];
257 fKinkIndexes[1] = points[1];
258 fKinkIndexes[2] = points[2];
261 int AliFemtoTrack::KinkIndex(int aIndex) const
263 if ((aIndex <3) && (aIndex>=0))
264 return fKinkIndexes[aIndex];