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():
33 fTofPionTime(-100000.0),
34 fTofKaonTime(-100000.0),
35 fTofProtonTime(-100000.0),
43 fImpactDprim(-10000.0),
44 fImpactDweak(-10000.0),
45 fImpactDmat(-10000.0),
70 fNominalTpcEntrancePoint(0,0,0),
71 fNominalTpcExitPoint(0,0,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)
82 // Default constructor
88 for(int i=0;i<6;i++) {
89 fHasPointOnITS[i]=false;
94 fNominalTpcPoints[i].SetX(0);
95 fNominalTpcPoints[i].SetY(0);
96 fNominalTpcPoints[i].SetZ(0);
98 // cout << "Created track " << this << endl;
102 AliFemtoTrack::AliFemtoTrack(const AliFemtoTrack& t) :
110 fTofPionTime(-100000.0),
111 fTofKaonTime(-100000.0),
112 fTofProtonTime(-100000.0),
120 fImpactDprim(-10000.0),
121 fImpactDweak(-10000.0),
122 fImpactDmat(-10000.0),
147 fNominalTpcEntrancePoint(0,0,0),
148 fNominalTpcExitPoint(0,0,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)
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;
171 fInnerMomentum = t.fInnerMomentum;
173 fTrackId = t.fTrackId;
177 fImpactDprim=t.fImpactDprim;
178 fImpactDweak=t.fImpactDweak;
179 fImpactDmat=t.fImpactDmat;
188 fTPCnclsF=t.fTPCnclsF;
189 fTPCsignal=t.fTPCsignal;
190 fTPCsignalN=t.fTPCsignalN;
191 fTPCsignalS=t.fTPCsignalS;
193 fNSigmaTPCPi=t.fNSigmaTPCPi;
194 fNSigmaTPCK=t.fNSigmaTPCK;
195 fNSigmaTPCP=t.fNSigmaTPCP;
196 fNSigmaTPCE=t.fNSigmaTPCE;
197 fNSigmaTOFPi=t.fNSigmaTOFPi;
198 fNSigmaTOFK=t.fNSigmaTOFK;
199 fNSigmaTOFP=t.fNSigmaTOFP;
200 fNSigmaTOFE=t.fNSigmaTOFE;
201 fSigmaToVertex=t.fSigmaToVertex;
202 fClusters=t.fClusters;
204 fNominalTpcEntrancePoint=t.fNominalTpcEntrancePoint;
205 fNominalTpcExitPoint=t.fNominalTpcExitPoint;
206 if (t.ValidHiddenInfo())
207 fHiddenInfo = t.GetHiddenInfo()->Clone();
210 fKinkIndexes[0] = t.fKinkIndexes[0];
211 fKinkIndexes[1] = t.fKinkIndexes[1];
212 fKinkIndexes[2] = t.fKinkIndexes[2];
219 fNominalTpcPoints[i] = t.fNominalTpcPoints[i];
222 fTrueMomentum = new AliFemtoThreeVector();
224 fTrueMomentum->SetX(t.fTrueMomentum->x());
225 fTrueMomentum->SetY(t.fTrueMomentum->y());
226 fTrueMomentum->SetZ(t.fTrueMomentum->z());}
228 fEmissionPoint = new AliFemtoLorentzVector();
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());
239 fGlobalEmissionPoint = new AliFemtoThreeVector();
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;
249 AliFemtoTrack& AliFemtoTrack::operator=(const AliFemtoTrack& aTrack)
251 // assignment operator
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;
265 fInnerMomentum = aTrack.fInnerMomentum;
266 fHelix = aTrack.fHelix;
267 fTrackId = aTrack.fTrackId;
268 fFlags=aTrack.fFlags;
269 fLabel=aTrack.fLabel;
270 fImpactD=aTrack.fImpactD;
271 fImpactDprim=aTrack.fImpactDprim;
272 fImpactDweak=aTrack.fImpactDweak;
273 fImpactDmat=aTrack.fImpactDmat;
274 fImpactZ=aTrack.fImpactZ;
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;
287 fNSigmaTPCPi=aTrack.fNSigmaTPCPi;
288 fNSigmaTPCK=aTrack.fNSigmaTPCK;
289 fNSigmaTPCP=aTrack.fNSigmaTPCP;
290 fNSigmaTPCE=aTrack.fNSigmaTPCE;
291 fNSigmaTOFPi=aTrack.fNSigmaTOFPi;
292 fNSigmaTOFK=aTrack.fNSigmaTOFK;
293 fNSigmaTOFP=aTrack.fNSigmaTOFP;
294 fNSigmaTOFE=aTrack.fNSigmaTOFE;
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];
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;
309 for(int i=0;i<6;i++) {
310 fHasPointOnITS[i]=false;
313 fXatDCA=aTrack.fXatDCA;
314 fYatDCA=aTrack.fYatDCA;
315 fZatDCA=aTrack.fZatDCA;
318 fNominalTpcPoints[i] = aTrack.fNominalTpcPoints[i];
320 if (ValidHiddenInfo())
322 if (aTrack.ValidHiddenInfo())
323 fHiddenInfo = aTrack.GetHiddenInfo()->Clone();
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());}
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());
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;
357 void AliFemtoTrack::SetCharge(const short& ch){fCharge=ch;}
359 void AliFemtoTrack::SetPidProbElectron(const float& x){fPidProbElectron = x;}
360 void AliFemtoTrack::SetPidProbPion(const float& x){fPidProbPion = x;}
361 void AliFemtoTrack::SetPidProbKaon(const float& x){fPidProbKaon = x;}
362 void AliFemtoTrack::SetPidProbProton(const float& x){fPidProbProton = x;}
363 void AliFemtoTrack::SetPidProbMuon(const float& x){fPidProbMuon = x;}
364 void AliFemtoTrack::SetTofExpectedTimes(const float& tpi, const float& tkn, const float& tpr){fTofPionTime = tpi; fTofKaonTime = tkn; fTofProtonTime = tpr; }
366 void AliFemtoTrack::SetP(const AliFemtoThreeVector& p){fP = p;}
367 void AliFemtoTrack::SetPt(const float& pt){fPt = pt;}
368 void AliFemtoTrack::SetInnerMomentum(const float& x){fInnerMomentum = x;}
369 void AliFemtoTrack::SetHelix(const AliFmPhysicalHelixD& h){fHelix = h;}
370 void AliFemtoTrack::SetTrackId(const int & id) { fTrackId=id;}
371 void AliFemtoTrack::SetFlags(const long int &flags) {fFlags=flags;}
372 void AliFemtoTrack::SetLabel(const int &label) {fLabel=label;}
373 void AliFemtoTrack::SetImpactD(const float& aImpactD){fImpactD=aImpactD;}
375 void AliFemtoTrack::SetImpactDprim(const float& aImpactDprim){fImpactDprim=aImpactDprim;}
376 void AliFemtoTrack::SetImpactDweak(const float& aImpactDweak){fImpactDweak=aImpactDweak;}
377 void AliFemtoTrack::SetImpactDmat(const float& aImpactDmat){fImpactDmat=aImpactDmat;}
379 void AliFemtoTrack::SetImpactZ(const float& aImpactZ){fImpactZ=aImpactZ;}
380 void AliFemtoTrack::SetCdd(const float& aCdd){fCdd=aCdd;}
381 void AliFemtoTrack::SetCdz(const float& aCdz){fCdz=aCdz;}
382 void AliFemtoTrack::SetCzz(const float& aCzz){fCzz=aCzz;}
383 void AliFemtoTrack::SetITSchi2(const float& aITSchi2){fITSchi2=aITSchi2;}
384 void AliFemtoTrack::SetITSncls(const int& aITSncls){fITSncls=aITSncls;}
385 void AliFemtoTrack::SetTPCchi2(const float& aTPCchi2){fTPCchi2=aTPCchi2;}
386 void AliFemtoTrack::SetTPCncls(const int& aTPCncls){fTPCncls=aTPCncls;}
387 void AliFemtoTrack::SetTPCnclsF(const short& aTPCnclsF){fTPCnclsF=aTPCnclsF;}
388 void AliFemtoTrack::SetTPCsignal(const float& aTPCsig){fTPCsignal=aTPCsig;}
389 void AliFemtoTrack::SetTPCsignalN(const short& aTPCsignalN){fTPCsignalN=aTPCsignalN;}
390 void AliFemtoTrack::SetTPCsignalS(const float& aTPCsignalS){fTPCsignalS=aTPCsignalS;}
391 void AliFemtoTrack::SetVTOF(const float& aVTOF){fVTOF=aVTOF;}
392 void AliFemtoTrack::SetNSigmaTPCPi(const float& aNSigmaTPCPi){fNSigmaTPCPi=aNSigmaTPCPi;}
393 void AliFemtoTrack::SetNSigmaTPCK(const float& aNSigmaTPCK){fNSigmaTPCK=aNSigmaTPCK;}
394 void AliFemtoTrack::SetNSigmaTPCP(const float& aNSigmaTPCP){fNSigmaTPCP=aNSigmaTPCP;}
395 void AliFemtoTrack::SetNSigmaTPCE(const float& aNSigmaTPCE){fNSigmaTPCE=aNSigmaTPCE;}
396 void AliFemtoTrack::SetNSigmaTOFPi(const float& aNSigmaTOFPi){fNSigmaTOFPi=aNSigmaTOFPi;}
397 void AliFemtoTrack::SetNSigmaTOFK(const float& aNSigmaTOFK){fNSigmaTOFK=aNSigmaTOFK;}
398 void AliFemtoTrack::SetNSigmaTOFP(const float& aNSigmaTOFP){fNSigmaTOFP=aNSigmaTOFP;}
399 void AliFemtoTrack::SetNSigmaTOFE(const float& aNSigmaTOFE){fNSigmaTOFE=aNSigmaTOFE;}
400 void AliFemtoTrack::SetSigmaToVertex(const float& aSigma){fSigmaToVertex=aSigma;}
402 void AliFemtoTrack::SetXatDCA(const double& x) {fXatDCA=x;}
403 void AliFemtoTrack::SetYatDCA(const double& x) {fYatDCA=x;}
404 void AliFemtoTrack::SetZatDCA(const double& x) {fZatDCA=x;}
407 short AliFemtoTrack::Charge() const {return fCharge;}
408 AliFemtoThreeVector AliFemtoTrack::P() const {return fP;}
409 float AliFemtoTrack::Pt() const {return fPt;}
410 float AliFemtoTrack::InnerMomentum() const {return fInnerMomentum;}
411 const AliFmPhysicalHelixD& AliFemtoTrack::Helix() const {return fHelix;}
412 int AliFemtoTrack::TrackId() const { return fTrackId; }
413 long int AliFemtoTrack::Flags() const {return fFlags;}
414 int AliFemtoTrack::Label()const {return fLabel;}
415 float AliFemtoTrack::ImpactD()const{return fImpactD;}
417 float AliFemtoTrack::ImpactDprim()const{return fImpactDprim;}
418 float AliFemtoTrack::ImpactDweak()const{return fImpactDweak;}
419 float AliFemtoTrack::ImpactDmat()const{return fImpactDmat;}
421 float AliFemtoTrack::ImpactZ()const{return fImpactZ;}
422 float AliFemtoTrack::Cdd() const{return fCdd;}
423 float AliFemtoTrack::Cdz() const{return fCdz;}
424 float AliFemtoTrack::Czz() const{return fCzz;}
425 float AliFemtoTrack::ITSchi2() const{return fITSchi2;}
426 int AliFemtoTrack::ITSncls() const{return fITSncls;}
427 float AliFemtoTrack::TPCchi2() const{return fTPCchi2;}
428 int AliFemtoTrack::TPCncls() const{return fTPCncls;}
429 short AliFemtoTrack::TPCnclsF() const{return fTPCnclsF;}
430 float AliFemtoTrack::TPCsignal() const{return fTPCsignal;}
431 short AliFemtoTrack::TPCsignalN() const{return fTPCsignalN;}
432 float AliFemtoTrack::TPCsignalS() const{return fTPCsignalS;}
433 float AliFemtoTrack::VTOF() const{return fVTOF;}
434 float AliFemtoTrack::NSigmaTPCPi() const{return fNSigmaTPCPi;}
435 float AliFemtoTrack::NSigmaTPCK() const{return fNSigmaTPCK;}
436 float AliFemtoTrack::NSigmaTPCP() const{return fNSigmaTPCP;}
437 float AliFemtoTrack::NSigmaTPCE() const{return fNSigmaTPCE;}
438 float AliFemtoTrack::NSigmaTOFPi() const{return fNSigmaTOFPi;}
439 float AliFemtoTrack::NSigmaTOFK() const{return fNSigmaTOFK;}
440 float AliFemtoTrack::NSigmaTOFP() const{return fNSigmaTOFP;}
441 float AliFemtoTrack::NSigmaTOFE() const{return fNSigmaTOFE;}
442 float AliFemtoTrack::SigmaToVertex() const{return fSigmaToVertex;}
443 float AliFemtoTrack::TOFpionTime() const{return fTofPionTime;}
444 float AliFemtoTrack::TOFkaonTime() const{return fTofKaonTime;}
445 float AliFemtoTrack::TOFprotonTime() const{return fTofProtonTime;}
447 double AliFemtoTrack::XatDCA() const {return fXatDCA;}
448 double AliFemtoTrack::YatDCA() const {return fYatDCA;}
449 double AliFemtoTrack::ZatDCA() const {return fZatDCA;}
451 void AliFemtoTrack::SetHiddenInfo(AliFemtoHiddenInfo* aHiddenInfo) {fHiddenInfo=aHiddenInfo;}
452 bool AliFemtoTrack::ValidHiddenInfo() const { if (fHiddenInfo) return true; else return false; }
453 AliFemtoHiddenInfo* AliFemtoTrack::GetHiddenInfo() const {return fHiddenInfo;}
455 AliFemtoTrack::~AliFemtoTrack()
461 if(fTrueMomentum) delete fTrueMomentum;
462 if(fEmissionPoint) delete fEmissionPoint;
463 if(fGlobalEmissionPoint) delete fGlobalEmissionPoint;
466 // cout << "Deleted track " << this << endl;
469 const TBits& AliFemtoTrack::TPCclusters() const {return fClusters;}
470 const TBits& AliFemtoTrack::TPCsharing() const {return fShared;}
472 void AliFemtoTrack::SetTPCcluster(const short& aNBit, const Bool_t& aValue)
474 fClusters.SetBitNumber(aNBit, aValue);
477 void AliFemtoTrack::SetTPCshared(const short& aNBit, const Bool_t& aValue)
479 fShared.SetBitNumber(aNBit, aValue);
482 void AliFemtoTrack::SetTPCClusterMap(const TBits& aBits)
486 void AliFemtoTrack::SetTPCSharedMap(const TBits& aBits)
491 void AliFemtoTrack::SetKinkIndexes(int points[3])
493 // Transfer the Kink indices
494 fKinkIndexes[0] = points[0];
495 fKinkIndexes[1] = points[1];
496 fKinkIndexes[2] = points[2];
499 void AliFemtoTrack::SetITSHitOnLayer(int i, bool val)
502 fHasPointOnITS[i] = val;
506 int AliFemtoTrack::KinkIndex(int aIndex) const
509 if ((aIndex <3) && (aIndex>=0))
510 return fKinkIndexes[aIndex];
515 bool AliFemtoTrack::HasPointOnITSLayer(int aIndex) const
517 // Return if i-th ITS layer had a hit for this track
518 if ((aIndex <6) && (aIndex>=0))
519 return fHasPointOnITS[aIndex];
524 // void AliFemtoTrack::SetXTPC(const AliFemtoThreeVector& aXTPC)
529 // void AliFemtoTrack::SetXTPC(double *aXTPC)
531 // fXTPC.setX(aXTPC[0]);
532 // fXTPC.setY(aXTPC[1]);
533 // fXTPC.setZ(aXTPC[2]);
536 // AliFemtoThreeVector AliFemtoTrack::XTPC() const
541 const AliFemtoThreeVector& AliFemtoTrack::NominalTpcExitPoint() const
543 return fNominalTpcExitPoint;
546 const AliFemtoThreeVector& AliFemtoTrack::NominalTpcPoint(int i) const
549 return fNominalTpcPoints[0];
551 return fNominalTpcPoints[8];
552 return fNominalTpcPoints[i];
555 const AliFemtoThreeVector& AliFemtoTrack::NominalTpcEntrancePoint() const
557 return fNominalTpcEntrancePoint;
560 void AliFemtoTrack::SetNominalTPCEntrancePoint(const AliFemtoThreeVector& aXTPC)
562 fNominalTpcEntrancePoint = aXTPC;
564 void AliFemtoTrack::SetNominalTPCEntrancePoint(double *aXTPC)
566 // Store the nominal TPC entrance point
567 fNominalTpcEntrancePoint.SetX(aXTPC[0]);
568 fNominalTpcEntrancePoint.SetY(aXTPC[1]);
569 fNominalTpcEntrancePoint.SetZ(aXTPC[2]);
572 void AliFemtoTrack::SetNominalTPCPoints(double **aXTPC)
574 // Store the nominal TPC points
577 fNominalTpcPoints[i].SetX(aXTPC[i][0]);
578 fNominalTpcPoints[i].SetY(aXTPC[i][1]);
579 fNominalTpcPoints[i].SetZ(aXTPC[i][2]);
583 void AliFemtoTrack::SetNominalTPCExitPoint(const AliFemtoThreeVector& aXTPC)
585 fNominalTpcExitPoint = aXTPC;
587 void AliFemtoTrack::SetNominalTPCExitPoint(double *aXTPC)
589 // Store the nominal TPC exit point
590 fNominalTpcExitPoint.SetX(aXTPC[0]);
591 fNominalTpcExitPoint.SetY(aXTPC[1]);
592 fNominalTpcExitPoint.SetZ(aXTPC[2]);
598 //_____________________________________________
599 AliFemtoThreeVector *AliFemtoTrack::GetTrueMomentum() const
601 return fTrueMomentum;
603 //_____________________________________________
604 AliFemtoLorentzVector *AliFemtoTrack::GetEmissionPoint() const
606 return fEmissionPoint;
608 //_____________________________________________
609 Int_t AliFemtoTrack::GetPDGPid() const
613 //_____________________________________________
614 Double_t AliFemtoTrack::GetMass() const
618 //_____________________________________________
619 void AliFemtoTrack::SetTrueMomentum(AliFemtoThreeVector *aMom)
621 // Set momentum from vector
623 fTrueMomentum->SetX(aMom->x());
624 fTrueMomentum->SetY(aMom->y());
625 fTrueMomentum->SetZ(aMom->z());
628 fTrueMomentum = new AliFemtoThreeVector(*aMom);
631 //_____________________________________________
632 void AliFemtoTrack::SetTrueMomentum(const AliFemtoThreeVector& aMom)
634 // Set momentum from vector
636 fTrueMomentum->SetX(aMom.x());
637 fTrueMomentum->SetY(aMom.y());
638 fTrueMomentum->SetZ(aMom.z());
641 fTrueMomentum = new AliFemtoThreeVector();
642 *fTrueMomentum = aMom;
645 //_____________________________________________
646 void AliFemtoTrack::SetTrueMomentum(Double_t aPx, Double_t aPy, Double_t aPz)
648 // Set momentum from components
649 if (!fTrueMomentum) fTrueMomentum = new AliFemtoThreeVector();
650 fTrueMomentum->SetX(aPx);
651 fTrueMomentum->SetY(aPy);
652 fTrueMomentum->SetZ(aPz);
654 //_____________________________________________
655 void AliFemtoTrack::SetEmissionPoint(AliFemtoLorentzVector *aPos)
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());
665 fEmissionPoint = new AliFemtoLorentzVector(*aPos);
668 //_____________________________________________
669 void AliFemtoTrack::SetEmissionPoint(const AliFemtoLorentzVector& aPos)
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());
679 fEmissionPoint = new AliFemtoLorentzVector();
680 *fEmissionPoint = aPos;
683 //_____________________________________________
684 void AliFemtoTrack::SetPDGPid(Int_t aPid)
688 //_____________________________________________
689 void AliFemtoTrack::SetMass(Double_t aMass)
693 //_____________________________________________
694 void AliFemtoTrack::SetEmissionPoint(Double_t aRx, Double_t aRy, Double_t aRz, Double_t aT)
696 // Set position from components
697 if (fEmissionPoint) {
698 fEmissionPoint->SetX(aRx);
699 fEmissionPoint->SetY(aRy);
700 fEmissionPoint->SetZ(aRz);
701 fEmissionPoint->SetT(aT);
704 fEmissionPoint = new AliFemtoLorentzVector(aRx, aRy, aRz, aT);
708 //_____________________________________________
709 AliFemtoThreeVector *AliFemtoTrack::GetGlobalEmissionPoint() const
711 return fGlobalEmissionPoint;
713 //_____________________________________________
714 void AliFemtoTrack::SetGlobalEmissionPoint(const AliFemtoThreeVector& aPos)
716 // set position from vector
717 if (fGlobalEmissionPoint) {
718 fGlobalEmissionPoint->SetX(aPos.x());
719 fGlobalEmissionPoint->SetY(aPos.y());
720 fGlobalEmissionPoint->SetZ(aPos.z());
723 fGlobalEmissionPoint = new AliFemtoThreeVector();
724 *fGlobalEmissionPoint = aPos;
727 //_____________________________________________
728 void AliFemtoTrack::SetGlobalEmissionPoint(Double_t aRx, Double_t aRy, Double_t aRz)
730 // Set position from components
731 if (fGlobalEmissionPoint) {
732 fGlobalEmissionPoint->SetX(aRx);
733 fGlobalEmissionPoint->SetY(aRy);
734 fGlobalEmissionPoint->SetZ(aRz);
737 fGlobalEmissionPoint = new AliFemtoThreeVector(aRx, aRy, aRz);
740 //_______________________