Put back the two bellows in front of the absorber.
[u/mrichter/AliRoot.git] / TPC / AliTPCtrack.h
CommitLineData
73042f01 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
18class AliTPCClustersArray;
19class AliTPCcluster;
20
21//_____________________________________________________________________________
22class AliTPCtrack : public TObject {
23public:
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
62protected:
63 Short_t fN; // number of clusters
64private:
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
89inline AliTPCtrack::AliTPCtrack() {
90 //default contructor
91 fN=0;
92}
93
94inline void AliTPCtrack::SetLabel(Int_t lab) {
95 //just to calm down our rule checker
96 fLab=lab;
97}
98
99inline void AliTPCtrack::SetdEdx(Float_t dedx) {
100 //just to calm down our rule checker
101 fdEdx=dedx;
102}
103
104inline Bool_t AliTPCtrack::IsSortable() const {
105 //just to calm down our rule checker
106 return kTRUE;
107}
108
109inline Int_t AliTPCtrack::GetLabel() const {
110 //just to calm down our rule checker
111 return fLab;
112}
113
114inline Float_t AliTPCtrack::GetdEdx() const {
115 //just to calm down our rule checker
116 return fdEdx;
117}
118
119inline Double_t AliTPCtrack::GetX() const {
120 //just to calm down our rule checker
121 return fX;
122}
123
124inline Double_t AliTPCtrack::GetY() const {
125 //just to calm down our rule checker
126 return fY;
127}
128
129inline Double_t AliTPCtrack::GetZ() const {
130 //just to calm down our rule checker
131 return fZ;
132}
133
134inline Double_t AliTPCtrack::GetC() const {
135 //just to calm down our rule checker
136 return fC;
137}
138
139inline Double_t AliTPCtrack::GetEta() const {
140 //just to calm down our rule checker
141 return fE;
142}
143
144inline Double_t AliTPCtrack::GetTgl() const {
145 //just to calm down our rule checker
146 return fT;
147}
148
149inline Double_t AliTPCtrack::GetPt() const {
150 //just to calm down our rule checker
37831078 151 return 0.299792458*0.2/GetC()/100;
73042f01 152}
153
154inline Double_t AliTPCtrack::GetP() const {
155 //just to calm down our rule checker
156 return TMath::Abs(GetPt())*sqrt(1.+GetTgl()*GetTgl());
157}
158
159inline Double_t AliTPCtrack::GetSigmaY2() const {
160 //just to calm down our rule checker
161 return fCyy;
162}
163
164inline Double_t AliTPCtrack::GetSigmaZ2() const {
165 //just to calm down our rule checker
166 return fCzz;
167}
168
169inline Double_t AliTPCtrack::GetSigmaC2() const {
170 //just to calm down our rule checker
171 return fCcc;
172}
173
174inline Double_t AliTPCtrack::GetSigmaTgl2() const {
175 //just to calm down our rule checker
176 return fCtt;
177}
178
179inline Double_t AliTPCtrack::GetAlpha() const {
180 //just to calm down our rule checker
181 return fAlpha;
182}
183
184inline Double_t AliTPCtrack::GetChi2() const {
185 //just to calm down our rule checker
186 return fChi2;
187}
188
189inline Int_t AliTPCtrack::GetNumberOfClusters() const {
190 //just to calm down our rule checker
191 return fN;
192}
193
194inline
195void 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