]>
Commit | Line | Data |
---|---|---|
d88f97cc | 1 | #ifndef ALITRACK_H |
2 | #define ALITRACK_H | |
959fbac5 | 3 | |
3da30618 | 4 | /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. * |
5 | * See cxx source for full Copyright notice */ | |
6 | ||
f531a546 | 7 | // $Id$ |
3da30618 | 8 | |
959fbac5 | 9 | |
fcf4326d | 10 | class TObjArray; |
d88f97cc | 11 | |
fcf4326d | 12 | class AliPosition; |
13 | class AliPositionObj; | |
14 | class AliSignal; | |
15 | class AliTimestamp; | |
16 | #include "Ali4Vector.h" | |
d88f97cc | 17 | |
5f25234b | 18 | class AliTrack : public TNamed,public Ali4Vector |
d88f97cc | 19 | { |
20 | public: | |
261c0caf | 21 | AliTrack(); // Default constructor |
22 | virtual ~AliTrack(); // Destructor | |
23 | AliTrack(const AliTrack& t); // Copy constructor | |
24 | virtual TObject* Clone(const char* name="") const; // Make a deep copy and provide its pointer | |
25 | virtual void Reset(); // Reset all values to 0 | |
26 | void Set4Momentum(Ali4Vector& p); // Set track 4-momentum | |
27 | void Set3Momentum(Ali3Vector& p); // Set track 3-momentum | |
959fbac5 | 28 | void SetMass(Double_t m,Double_t dm=0); // Set particle mass and error |
261c0caf | 29 | void SetMass(); // Set mass and error to the values of the hyp. with highest prob. |
30 | void SetCharge(Float_t q); // Set particle charge | |
1f241680 | 31 | virtual void Data(TString f="car",TString u="rad"); // Print track information for frame f and ang units u |
32 | virtual void List(TString f="car",TString u="rad"); // Track and decay level 1 info for frame f and ang units u | |
33 | virtual void ListAll(TString f="car",TString u="rad");// Track and all decay level info for frame f and ang units u | |
25eefd00 | 34 | Ali3Vector Get3Momentum(Float_t scale=-1) const; // Provide track 3-momentum |
35 | Double_t GetMomentum(Float_t scale=-1); // Provide value of track 3-momentum | |
36 | Double_t GetMass(Float_t scale=-1); // Provide particle mass | |
261c0caf | 37 | Float_t GetCharge() const; // Provide particle charge |
25eefd00 | 38 | Double_t GetEnergy(Float_t scale=-1); // Provide particle total energy |
d88f97cc | 39 | void Decay(Double_t m1,Double_t m2,Double_t thcms,Double_t phicms); // Perform 2-body decay |
261c0caf | 40 | Int_t GetNdecay() const; // Provide number of decay products |
41 | AliTrack* GetDecayTrack(Int_t j) const; // Access to decay produced track number j | |
42 | void RemoveDecays(); // Remove all the decay products of this track | |
d0120ca2 | 43 | void AddSignal(AliSignal& s,Int_t mode=0); // Relate an AliSignal to this track |
44 | void RemoveSignal(AliSignal& s,Int_t mode=1); // Remove related AliSignal from this track | |
45 | void RemoveSignals(Int_t mode=1); // Remove all related AliSignals from this track | |
261c0caf | 46 | Int_t GetNsignals() const; // Provide number of related AliSignals |
caa58e1a | 47 | Int_t GetNsignals(const char* classname) const; // Provide the number of selected signals |
261c0caf | 48 | AliSignal* GetSignal(Int_t j) const; // Access to the related AliSignal number j |
49 | void SetBeginPoint(AliPosition& p); // Set the track begin-point | |
fcf4326d | 50 | AliPosition* GetBeginPoint() const; // Provide the track begin-point |
261c0caf | 51 | void SetEndPoint(AliPosition& p); // Set the track end-point |
fcf4326d | 52 | AliPosition* GetEndPoint() const; // Provide the track end-point |
c5555bc0 | 53 | void SetReferencePoint(AliPosition& p); // Set the track reference-point for the 3-momentum vector |
fcf4326d | 54 | AliPosition* GetReferencePoint() const; // Provide the track reference-point for the 3-momentum vector |
261c0caf | 55 | void AddTrackHypothesis(AliTrack& t); // Add track hypothesis |
5f25234b | 56 | void AddTrackHypothesis(Double_t prob,Double_t m,Double_t dm=0); // Add track hypothesis with mass data |
261c0caf | 57 | Int_t GetNhypotheses() const; // Provide number of track hypotheses |
58 | AliTrack* GetTrackHypothesis(Int_t j=0) const; // Provide the j-th track hypothesis | |
59 | void RemoveTrackHypothesis(AliTrack& t);// Remove the specified track hypothesis | |
60 | void RemoveTrackHypotheses(); // Remove all track hypotheses | |
25eefd00 | 61 | Double_t GetPt(Float_t scale=-1); // Provide trans. momentum w.r.t. z-axis |
62 | Double_t GetPl(Float_t scale=-1); // Provide long. momentum w.r.t. z-axis | |
63 | Double_t GetEt(Float_t scale=-1); // Provide trans. energy w.r.t. z-axis | |
64 | Double_t GetEl(Float_t scale=-1); // Provide long. energy w.r.t. z-axis | |
65 | Double_t GetMt(Float_t scale=-1); // Provide trans. mass w.r.t. z-axis | |
261c0caf | 66 | Double_t GetRapidity(); // Provide rapidity value w.r.t. z-axis |
c72198f1 | 67 | void SetImpactPoint(AliPosition& p,TString q); // Set the impact-point in plane "q=0" |
fcf4326d | 68 | AliPosition* GetImpactPoint(TString q) const; // Provide the impact-point in plane "q=0" |
261c0caf | 69 | void SetId(Int_t id); // Set the user defined unique track identifier |
70 | Int_t GetId() const; // Provide the user defined unique track identifier | |
71 | void SetClosestPoint(AliPosition& p); // Set position p as point of closest approach w.r.t. some reference | |
fcf4326d | 72 | AliPosition* GetClosestPoint() const; // Provide point of closest approach w.r.t. some reference |
261c0caf | 73 | void SetParticleCode(Int_t code); // Set the user defined particle id code (e.g. the PDF convention) |
74 | Int_t GetParticleCode() const; // Provide the user defined particle id code | |
fcf4326d | 75 | void SetParentTrack(AliTrack * const t); // Set pointer to the parent track |
76 | AliTrack* GetParentTrack() const; // Provide pointer to the parent track | |
261c0caf | 77 | void SetProb(Double_t prob); // Set the hypothesis probability for this track |
78 | Float_t GetProb() const; // Provide the hypothesis probability for this track | |
fcf4326d | 79 | void SetFitDetails(const TObject* obj); // Enter the object containing the fit details |
80 | void SetFitDetails(const TObject& obj) { SetFitDetails(&obj); } | |
81 | TObject* GetFitDetails() const; // Provide pointer to the object containing the fit details | |
a7dc0627 | 82 | void SetTimestamp(AliTimestamp& t); // Set the track timestamp |
fcf4326d | 83 | AliTimestamp* GetTimestamp() const; // Provide the track timestamp |
a7dc0627 | 84 | void RemoveTimestamp(); // Remove timestamp from this track |
fcf4326d | 85 | Double_t GetDistance(AliPosition* const p,Float_t scale=-1); // Provide distance to position p |
25eefd00 | 86 | Double_t GetDistance(AliPosition& p,Float_t scale=-1) { return GetDistance(&p,scale); } |
fcf4326d | 87 | Double_t GetDistance(AliTrack* const t,Float_t scale=-1); // Provide distance to track t |
25eefd00 | 88 | Double_t GetDistance(AliTrack& t,Float_t scale=-1) { return GetDistance(&t,scale); } |
89 | void SetEscale(Float_t scale); // Set the scale of the energy-momentum units of the track | |
90 | Float_t GetEscale() const; // Provide the scale of the energy-momentum units of the track | |
d88f97cc | 91 | |
92 | protected: | |
c72198f1 | 93 | void Init(); // Initialisation of pointers etc... |
94 | Float_t fQ; // The charge of the particle | |
c72198f1 | 95 | TObjArray* fDecays; // The array of decay produced tracks |
c72198f1 | 96 | TObjArray* fSignals; // The array of related AliSignals |
5f25234b | 97 | TObjArray* fHypotheses; // The array of track hypotheses |
c72198f1 | 98 | AliPositionObj* fBegin; // The begin-point of the track |
99 | AliPositionObj* fEnd; // The end-point of the track | |
c5555bc0 | 100 | AliPositionObj* fRef; // The reference-point of the track for the 3-momentum vector |
c72198f1 | 101 | AliPositionObj* fImpactXY; // The (extrapolated) impact-point in the plane z=0 |
102 | AliPositionObj* fImpactXZ; // The (extrapolated) impact-point in the plane y=0 | |
103 | AliPositionObj* fImpactYZ; // The (extrapolated) impact-point in the plane x=0 | |
104 | Int_t fUserId; // The user defined identifier | |
105 | AliPositionObj* fClosest; // The (extrapolated) point of closest approach w.r.t some reference | |
c72198f1 | 106 | Int_t fCode; // The user defined particle id code |
1fbffa23 | 107 | AliTrack* fParent; // Pointer to the parent track |
5f25234b | 108 | Float_t fProb; // Probability for this track as a hypothesis |
ea0b5b7f | 109 | TObject* fFit; // Object containing details of the fit |
a7dc0627 | 110 | AliTimestamp* fTstamp; // The track timestamp |
25eefd00 | 111 | Float_t fEscale; // The scale of the energy-momentum units of the track |
d88f97cc | 112 | |
113 | private: | |
fcf4326d | 114 | |
115 | AliTrack& operator=(const AliTrack &); // Not implemented | |
116 | ||
117 | void Dumps(const AliTrack* t,Int_t n,TString f,TString u); // Recursively print all decay levels | |
d88f97cc | 118 | |
caa58e1a | 119 | ClassDef(AliTrack,21) // Handling of the attributes of a reconstructed particle track. |
d88f97cc | 120 | }; |
121 | #endif |