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