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