3 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
4 * See cxx source for full Copyright notice */
8 //-------------------------------------------------------
11 // Origin: Iouri Belikov, CERN, Jouri.Belikov@cern.ch
12 //-------------------------------------------------------
18 class AliTPCClustersArray;
21 //_____________________________________________________________________________
22 class AliTPCtrack : public TObject {
25 AliTPCtrack(UInt_t index, const Double_t xx[5],
26 const Double_t cc[15], Double_t xr, Double_t alpha);
27 AliTPCtrack(const AliTPCtrack& t);
28 Int_t Compare(TObject *o);
29 Int_t PropagateTo(Double_t xr,
30 Double_t x0=28.94,Double_t rho=0.9e-3,Double_t pm=0.139);
31 void PropagateToVertex(
32 Double_t x0=36.66,Double_t rho=1.2e-3,Double_t pm=0.139);
33 void Update(const AliTPCcluster* c, Double_t chi2, UInt_t i);
34 Int_t Rotate(Double_t angle);
35 void CookLabel(AliTPCClustersArray *carray);
36 void SetLabel(Int_t lab=0);
37 void SetdEdx(Float_t dedx);
39 Double_t GetPredictedChi2(const AliTPCcluster *cluster) const;
40 Bool_t IsSortable() const;
41 Int_t GetLabel() const;
42 void GetPxPyPz(Double_t &px, Double_t &py, Double_t &pz) const;
43 Float_t GetdEdx() const;
44 Double_t GetX() const;
45 Double_t GetY() const;
46 Double_t GetZ() const;
47 Double_t GetC() const;
48 Double_t GetEta() const;
49 Double_t GetTgl() const;
50 Double_t GetPt() const;
51 Double_t GetP() const;
52 void GetCovariance(Double_t cov[15]) const;
53 Double_t GetSigmaY2() const;
54 Double_t GetSigmaZ2() const;
55 Double_t GetSigmaC2() const;
56 Double_t GetSigmaTgl2() const;
57 Double_t GetAlpha() const;
58 Double_t GetChi2() const;
59 Int_t GetNumberOfClusters() const;
60 void GetCluster(Int_t i, Int_t &sec, Int_t &row, Int_t &ncl) const;
63 Short_t fN; // number of clusters
65 Int_t fLab; // track label
66 Double_t fChi2; // total chi2 value for this track
67 Float_t fdEdx; // dE/dx
69 Double_t fAlpha; // rotation angle
70 Double_t fX; // X-coordinate of this track (reference plane)
72 Double_t fY; // Y-coordinate of the track
73 Double_t fZ; // Z-coordinate of the track
74 Double_t fC; // track curvature
76 Double_t fT; // tangent of the track dip angle
78 Double_t fCyy; // covariance
79 Double_t fCzy, fCzz; // matrix
80 Double_t fCcy, fCcz, fCcc; // of the
81 Double_t fCey, fCez, fCec, fCee; // track
82 Double_t fCty, fCtz, fCtc, fCte, fCtt; // parameters
84 UInt_t fIndex[200]; // (((row<<8)+sec)<<16)+index
86 ClassDef(AliTPCtrack,1) // Time Projection Chamber reconstructed tracks
89 inline AliTPCtrack::AliTPCtrack() {
94 inline void AliTPCtrack::SetLabel(Int_t lab) {
95 //just to calm down our rule checker
99 inline void AliTPCtrack::SetdEdx(Float_t dedx) {
100 //just to calm down our rule checker
104 inline Bool_t AliTPCtrack::IsSortable() const {
105 //just to calm down our rule checker
109 inline Int_t AliTPCtrack::GetLabel() const {
110 //just to calm down our rule checker
114 inline Float_t AliTPCtrack::GetdEdx() const {
115 //just to calm down our rule checker
119 inline Double_t AliTPCtrack::GetX() const {
120 //just to calm down our rule checker
124 inline Double_t AliTPCtrack::GetY() const {
125 //just to calm down our rule checker
129 inline Double_t AliTPCtrack::GetZ() const {
130 //just to calm down our rule checker
134 inline Double_t AliTPCtrack::GetC() const {
135 //just to calm down our rule checker
139 inline Double_t AliTPCtrack::GetEta() const {
140 //just to calm down our rule checker
144 inline Double_t AliTPCtrack::GetTgl() const {
145 //just to calm down our rule checker
149 inline Double_t AliTPCtrack::GetPt() const {
150 //just to calm down our rule checker
151 return 0.299792458*0.2/GetC()/100;
154 inline Double_t AliTPCtrack::GetP() const {
155 //just to calm down our rule checker
156 return TMath::Abs(GetPt())*sqrt(1.+GetTgl()*GetTgl());
159 inline Double_t AliTPCtrack::GetSigmaY2() const {
160 //just to calm down our rule checker
164 inline Double_t AliTPCtrack::GetSigmaZ2() const {
165 //just to calm down our rule checker
169 inline Double_t AliTPCtrack::GetSigmaC2() const {
170 //just to calm down our rule checker
174 inline Double_t AliTPCtrack::GetSigmaTgl2() const {
175 //just to calm down our rule checker
179 inline Double_t AliTPCtrack::GetAlpha() const {
180 //just to calm down our rule checker
184 inline Double_t AliTPCtrack::GetChi2() const {
185 //just to calm down our rule checker
189 inline Int_t AliTPCtrack::GetNumberOfClusters() const {
190 //just to calm down our rule checker
195 void AliTPCtrack::GetCluster(Int_t i,Int_t &sec,Int_t &row,Int_t &ncl) const {
196 //just to calm down our rule checker
197 Int_t index=fIndex[i];
198 sec=(index&0xff000000)>>24;
199 row=(index&0x00ff0000)>>16;
200 ncl=(index&0x0000ffff)>>00;