]> git.uio.no Git - u/mrichter/AliRoot.git/blob - TPC/AliComplexCluster.h
28e9202208ea979c1dc0b410f9feca36640f0342
[u/mrichter/AliRoot.git] / TPC / AliComplexCluster.h
1 #ifndef ALICOMPLEXCLUSTER_H
2 #define ALICOMPLEXCLUSTER_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 // this is a class
9 // AliComplexCluster
10 // by M. Ivanov
11 //
12
13 #include "TObject.h"
14 #include "TMath.h"
15 #include "AliTPCclusterMI.h"
16 //
17
18 class AliComplexCluster : public TObject {
19 public:
20
21   AliComplexCluster();
22   virtual ~AliComplexCluster() {;}
23   Bool_t    IsSortable() const;
24   Int_t Compare(const TObject *o) const;
25   // the following getters are needed by HLT
26   // please dont remove... C. Loizides
27   Int_t GetTrack(Int_t i)const {return fTracks[i];} //labels of overlapped tracks
28   Float_t GetX()const {return fX;}
29   Float_t GetY()const {return fY;}
30   Float_t GetQ()const {return fQ;}
31   Float_t GetSigmaX2()const {return fSigmaX2;}
32   Float_t GetSigmaY2()const {return fSigmaY2;}
33   Float_t GetSigmaXY()const {return fSigmaXY;}
34   Float_t GetArea()const {return fArea;}
35   Float_t GetMax()const {return fMax;}
36 private:
37   Int_t     fTracks[3];//labels of overlapped tracks
38   Float_t   fX ;       //Y of cluster
39   Float_t   fY ;       //Z of cluster
40   Float_t   fQ ;       //Q of cluster (in ADC counts)
41   Float_t   fSigmaX2;  //Sigma Y square of cluster
42   Float_t   fSigmaY2;  //Sigma Z square of cluster
43   Float_t   fSigmaXY;  //      XY moment 
44   Float_t   fArea;     //area of cluster
45   Float_t   fMax;     //amplitude at maximum 
46
47   ClassDef(AliComplexCluster,1)
48     // Cluster manager
49 };
50
51
52
53 class AliTPCTrackerPoint  {  
54  public:
55
56   AliTPCTrackerPoint():
57     fTX(0),
58     fTZ(0),
59     fTY(0),
60     fTAngleZ(0),
61     fTAngleY(0),
62     fSigmaZ(0),
63     fSigmaY(0),
64     fErrZ(0),
65     fErrY(0),
66     fIsShared(0){}
67   virtual ~AliTPCTrackerPoint(){}
68   Float_t  GetX() const  {return (fTX*0.01);}
69   Float_t  GetZ() const {return (fTZ*0.01);}
70   Float_t  GetY() const {return (fTY*0.01);}
71   Float_t  GetAngleZ() const  {return (Float_t(fTAngleZ)*0.02);}
72   Float_t  GetAngleY() const {return (Float_t(fTAngleY)*0.02);}
73   //
74   void     SetX(Float_t x)  { fTX = Short_t(TMath::Nint(x*100.));} 
75   void     SetY(Float_t y)  { fTY = Short_t(TMath::Nint(y*100.));} 
76   void     SetZ(Float_t z)  { fTZ = Short_t(TMath::Nint(z*100.));} 
77   void     SetAngleZ(Float_t anglez) {fTAngleZ = Char_t(TMath::Nint(anglez*50.));}
78   void     SetAngleY(Float_t angley) {fTAngleY = Char_t(TMath::Nint(angley*50.));}
79   Float_t  GetSigmaZ() const {return (fSigmaZ*0.02);}
80   Float_t  GetSigmaY() const {return (fSigmaY*0.02);}  
81   Float_t  GetErrZ()   const {return (fErrZ*0.005);}
82   Float_t  GetErrY()   const {return (fErrY*0.005);}
83   void     SetErrZ(Float_t errz) {fErrZ = UChar_t(TMath::Nint(errz*200.));}
84   void     SetErrY(Float_t erry) {fErrY = UChar_t(TMath::Nint(erry*200.));}
85
86   void     SetSigmaZ(Float_t sigmaz) {fSigmaZ = UChar_t(TMath::Nint(sigmaz*50.));}
87   void     SetSigmaY(Float_t sigmay) {fSigmaY = UChar_t(TMath::Nint(sigmay*50.));}
88
89   Char_t   IsShared() const {return fIsShared;}
90   void     SetShared(Char_t s) {fIsShared=s;}
91
92   //
93  private:
94   Short_t   fTX;        // x position of the cluster  in cm - 10 mum prec
95   Short_t   fTZ;        // current prolongation in Z  in cm - 10 mum prec.
96   Short_t   fTY;        // current prolongation in Y  in cm - 10 mum prec.
97   Char_t    fTAngleZ;    // angle 
98   Char_t    fTAngleY;    // angle 
99   UShort_t  fSigmaZ;     // shape  Z - normalised shape - normaliziation 1 - precision 2 percent
100   UShort_t  fSigmaY;     // shape  Y - normalised shape - normaliziation 1 - precision 2 percent
101   UShort_t  fErrZ;       // z error estimate - in  mm - 50 mum precision 
102   UShort_t  fErrY;       // y error estimate - in  mm - 50 mum precision 
103   Char_t   fIsShared;     // indicate sharing of the point between several tracks
104
105   ClassDef(AliTPCTrackerPoint,1)  
106 };
107
108 class AliTPCClusterPoint  {
109  public:
110   AliTPCClusterPoint():
111                       fCZ(0),
112                       fCY(0), 
113                       fSigmaZ(0),
114                       fSigmaY(0),
115                       fQ(0),
116                       fMax(0),
117                       fCType(0){}
118   virtual ~AliTPCClusterPoint(){}
119   Float_t  GetZ() const    {return (fCZ*0.01);}
120   Float_t  GetY() const   {return (fCY*0.01);}
121   Float_t  GetSigmaZ() const {return (fSigmaZ*0.02);}
122   Float_t  GetSigmaY() const {return (fSigmaY*0.02);}  
123   Int_t  GetType() const  {return fCType;}
124   Int_t  GetMax()  const {return fMax;}
125   Float_t  GetQ()  const {return fQ;}
126
127   //
128   void     SetY(Float_t y){ fCY = Short_t(TMath::Nint(y*100.));} 
129   void     SetZ(Float_t z){ fCZ = Short_t(TMath::Nint(z*100.));} 
130   void     SetSigmaZ(Float_t sigmaz) {fSigmaZ = UChar_t(TMath::Nint(sigmaz*50.));}
131   void     SetSigmaY(Float_t sigmay) {fSigmaY = UChar_t(TMath::Nint(sigmay*50.));}
132   void     SetQ(Float_t q) {fQ = UShort_t(q);}
133   void     SetMax(Float_t max) {fMax = UShort_t(max);}
134   void     SetType(Char_t type) {fCType = type;}
135  private:
136   Short_t  fCZ;       // current cluster position Z in cm - 100 mum precision
137   Short_t  fCY;       // current cluster position Y in cm - 100 mum precision
138   UChar_t  fSigmaZ;   // shape  Z - normalised shape - normaliziation 1 - precision 2 percent
139   UChar_t  fSigmaY;   // shape  Y - normalised shape - normaliziation 1 - precision 2 percent
140   UShort_t fQ;        // total charge in cluster 
141   UShort_t fMax;      // charge at maximum  
142   Char_t   fCType;    // type of the cluster
143
144   //
145   ClassDef(AliTPCClusterPoint,1)  
146 };
147
148
149 class AliTPCExactPoint : public TObject{
150  public:
151   AliTPCExactPoint():TObject(),
152     fEZ(0.),
153     fEY(0.),
154     fEX(0.),
155     fEAngleZ(0.),
156     fEAngleY(0.),
157     fEAmp(0.),
158     fEPrim(0.),
159     fTrackID(0),
160     fRow(0),
161     fSec(0){}
162  private:
163   Float_t fEZ;       // current "exact" position according simulation
164   Float_t fEY;       // current "exact" position according simulation
165   Float_t fEX;       // x poistion of the cluster
166   Float_t fEAngleZ;  // angle Z
167   Float_t fEAngleY;  // angle Y
168   Float_t fEAmp;     // total charge deposited in row
169   Float_t fEPrim;    // primary charge deposited in row
170   Int_t   fTrackID;  // id of the track
171   Int_t   fRow;      // row
172   Int_t   fSec;      //sector
173   ClassDef(AliTPCExactPoint,1)  
174 };
175
176
177 class AliTPCTrackPoint: public TObject{
178  public:
179   AliTPCTrackPoint():TObject(),
180     fTPoint(),
181     fCPoint(){}
182
183   // AliTPCClusterPoint & GetCPoint(){return fCPoint;}
184   AliTPCTrackerPoint & GetTPoint(){return fTPoint;}
185   AliTPCclusterMI & GetCPoint(){return fCPoint;}  
186  private:
187   //  AliTPCClusterPoint fCPoint; 
188   //Char_t fIsShared;
189   AliTPCTrackerPoint fTPoint;  // track point
190   AliTPCclusterMI    fCPoint;  // cluster point
191   ClassDef(AliTPCTrackPoint,1)  
192 };
193
194 class AliTPCTrackPoint2: public AliTPCTrackPoint{
195  public:
196   AliTPCTrackPoint2():AliTPCTrackPoint(),
197     fGX(0.),
198     fGY(0.),
199     fGZ(0.),
200     fDY(0.),
201     fDZ(0.),
202     fDYU(0.),
203     fDYD(0),
204     fDZU(0.),
205     fDZD(0.),
206     fDDY(0),
207     fDDZ(0.),
208     fID(0),
209     fLab(0){}
210  private: 
211   Float_t fGX;    //global poition of the point
212   Float_t fGY;    //global poition of the point
213   Float_t fGZ;    //global poition of the point
214   //
215   Float_t fDY;    //distortion of the clusters from the global helix (3 point interpolation)
216   Float_t fDZ;    //distortion of the clusters from the global helix (3 point interpolation)
217   //
218   Float_t fDYU;  //derivation in y up
219   Float_t fDYD;  //distortion of y down
220   //
221   Float_t fDZU;  //derivation in y up
222   Float_t fDZD;  //distortion of y down
223   //
224   Float_t fDDY;  //derivation in y,z up-down
225   Float_t fDDZ;  //derivation in y,z up-down
226   //
227   Int_t   fID;            //id of the corresponding track
228   Int_t   fLab;           //MC label of the track
229   ClassDef(AliTPCTrackPoint2,1)  
230 };
231
232
233
234
235 class AliTPCTrackPointRef: public AliTPCTrackPoint{
236  public:
237   AliTPCExactPoint & GetExactPoint(){return fEPoint;}
238   AliTPCExactPoint & GetNearestPoint(){return fNPoint;}  
239  private:
240   AliTPCExactPoint fEPoint; //exact point belonging to track
241   AliTPCExactPoint fNPoint; //nearest point  
242   ClassDef(AliTPCTrackPointRef,1)  
243 };
244
245
246 #endif //ALICOMPLEXCLUSTER_H