]> git.uio.no Git - u/mrichter/AliRoot.git/blob - TPC/AliTPCtrack.h
Updated from the TPC-PreRelease branch
[u/mrichter/AliRoot.git] / TPC / AliTPCtrack.h
1 #ifndef ALITPCTRACK_H
2 #define ALITPCTRACK_H
3 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
4  * See cxx source for full Copyright notice                               */
5
6 /* $Id$ */
7
8 //-------------------------------------------------------
9 //                    TPC Track Class
10 //
11 //   Origin: Iouri Belikov, CERN, Jouri.Belikov@cern.ch 
12 //-------------------------------------------------------
13
14 #include <TObject.h>
15 #include <TMath.h>
16 #include <iostream.h>
17
18 class AliTPCClustersArray;
19 class AliTPCcluster;
20
21 //_____________________________________________________________________________
22 class AliTPCtrack : public TObject {
23 public:
24    AliTPCtrack();
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);
38
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;
61
62 protected: 
63    Short_t fN;               // number of clusters 
64 private:
65    Int_t fLab;               // track label
66    Double_t fChi2;           // total chi2 value for this track
67    Float_t fdEdx;            // dE/dx 
68
69    Double_t fAlpha;          // rotation angle
70    Double_t fX;              // X-coordinate of this track (reference plane)
71
72    Double_t fY;              // Y-coordinate of the track
73    Double_t fZ;              // Z-coordinate of the track
74    Double_t fC;              // track curvature
75    Double_t fE;              // C*x0
76    Double_t fT;              // tangent of the track dip angle
77
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
83
84    UInt_t fIndex[200];       // (((row<<8)+sec)<<16)+index
85
86    ClassDef(AliTPCtrack,1)   // Time Projection Chamber reconstructed tracks
87 };
88
89 inline AliTPCtrack::AliTPCtrack() {
90   //default contructor
91   fN=0;
92 }
93
94 inline void AliTPCtrack::SetLabel(Int_t lab) {
95   //just to calm down our rule checker
96   fLab=lab;
97 }
98
99 inline void AliTPCtrack::SetdEdx(Float_t dedx) {
100   //just to calm down our rule checker
101   fdEdx=dedx;
102 }
103
104 inline Bool_t AliTPCtrack::IsSortable() const {
105   //just to calm down our rule checker
106   return kTRUE;
107 }
108
109 inline Int_t AliTPCtrack::GetLabel() const {
110   //just to calm down our rule checker
111   return fLab;
112 }
113
114 inline Float_t AliTPCtrack::GetdEdx() const {
115   //just to calm down our rule checker
116   return fdEdx;
117 }
118
119 inline Double_t AliTPCtrack::GetX() const {
120   //just to calm down our rule checker
121   return fX;
122 }
123
124 inline Double_t AliTPCtrack::GetY() const {
125   //just to calm down our rule checker
126   return fY;
127 }
128
129 inline Double_t AliTPCtrack::GetZ() const {
130   //just to calm down our rule checker
131   return fZ;
132 }
133
134 inline Double_t AliTPCtrack::GetC() const {
135   //just to calm down our rule checker
136   return fC;
137 }
138
139 inline Double_t AliTPCtrack::GetEta() const {
140   //just to calm down our rule checker
141   return fE;
142 }
143
144 inline Double_t AliTPCtrack::GetTgl() const {
145   //just to calm down our rule checker
146   return fT;
147 }
148
149 inline Double_t AliTPCtrack::GetPt() const {
150   //just to calm down our rule checker
151   return 0.3*0.2/GetC()/100;
152 }
153
154 inline Double_t AliTPCtrack::GetP() const {
155   //just to calm down our rule checker
156   return TMath::Abs(GetPt())*sqrt(1.+GetTgl()*GetTgl());
157 }
158
159 inline Double_t AliTPCtrack::GetSigmaY2() const {
160   //just to calm down our rule checker
161   return fCyy;
162 }
163
164 inline Double_t AliTPCtrack::GetSigmaZ2() const {
165   //just to calm down our rule checker
166   return fCzz;
167 }
168
169 inline Double_t AliTPCtrack::GetSigmaC2() const {
170   //just to calm down our rule checker
171   return fCcc;
172 }
173
174 inline Double_t AliTPCtrack::GetSigmaTgl2() const {
175   //just to calm down our rule checker
176   return fCtt;
177 }
178
179 inline Double_t AliTPCtrack::GetAlpha() const {
180   //just to calm down our rule checker
181   return fAlpha;
182 }
183
184 inline Double_t AliTPCtrack::GetChi2() const {
185   //just to calm down our rule checker
186   return fChi2;
187 }
188
189 inline Int_t AliTPCtrack::GetNumberOfClusters() const {
190   //just to calm down our rule checker
191   return fN;
192 }
193
194 inline 
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;
201 }
202
203 #endif
204
205