L3 becomes HLT
[u/mrichter/AliRoot.git] / HLT / TPCLib / AliHLTTPCConfMapPoint.h
1 // @(#) $Id$
2 // Original: AliHLTConfMapPoint.h,v 1.8 2005/06/23 17:46:55 hristov 
3
4 #ifndef ALIHLTTPCConfMapPointH
5 #define ALIHLTTPCConfMapPointH
6
7 #include "AliHLTTPCRootTypes.h"
8
9 class AliHLTTPCSpacePointData;
10 class AliHLTTPCConfMapTrack;
11 class AliHLTTPCVertex;
12
13 class AliHLTTPCConfMapPoint {
14
15  private:
16
17   Int_t fHitNumber;     //hit number
18   Int_t fTrackNumber;   //track number
19   Int_t fNextHitNumber; //next hit number
20   Bool_t fUsed;         //flag is used
21   Int_t fPadrow;        //padrow
22   Int_t fSector;        //sector
23
24   //global coordinates and their errors
25   Double_t fx;    //glob x
26   Double_t fy;    //glob y
27   Double_t fz;    //glob z
28   Double_t fxerr; //glob xerr
29   Double_t fyerr; //glob yerr
30   Double_t fzerr; //glob zerr
31
32   Double_t fWxy;  // x-y weight on x-y
33   Double_t fWz;   // z weight on z
34   Float_t fs;      //track trajectory
35   
36    // Interaction point
37   Double_t   fXt;          // x-value of the interaction point
38   Double_t   fYt;          // y-value of the interaction point
39   Double_t   fZt;          // z-value of the interaction point
40   
41   Double_t   fXterr;       // error of mXt
42   Double_t   fYterr;       // error of mYt
43   Double_t   fZterr;       // error of mZt
44   
45   // conformal mapping coordinates
46   Double_t   fXprime;      // transformed x
47   Double_t   fYprime;      // transformed y  
48   
49   Double_t   fXprimeerr;   // error of mXprime
50   Double_t   fYprimeerr;   // error of mYprime
51   
52   // coordinates with respect to the vertex
53   
54   // cartesian coordinates
55   Double_t   fXv;          // x with respect to vertex
56   Double_t   fYv;          // y with respect to vertex
57   Double_t   fZv;          // z with respect to vertex
58   
59   Double_t   fXverr;       // error of mXv
60   Double_t   fYverr;       // error of mYv
61   Double_t   fZverr;       // error of mZv
62   
63   // spherical coordinates
64   Double_t   fPhi;         // angle phi
65   Double_t   fEta;         // pseudorapidity
66   
67   AliHLTTPCConfMapPoint *fNextVolumeHit; //!
68   AliHLTTPCConfMapPoint *fNextRowHit;    //!
69   AliHLTTPCConfMapPoint *fNextTrackHit;  //! Linked chain of points in a track
70   Short_t fPhiIndex; //phi index
71   Short_t fEtaIndex; //eta index
72   Double_t fXYChi2; //xy chi
73   Double_t fSZChi2; //z chi
74   Int_t fMCTrackID[3]; //MClabel of tracks, may overlap
75
76   static Bool_t fgDontMap; //flag to switch off mapping  
77
78  public:
79
80   AliHLTTPCConfMapPoint();
81   virtual ~AliHLTTPCConfMapPoint();
82   
83   void Reset();
84   Bool_t ReadHits(AliHLTTPCSpacePointData* hits );
85   
86    // getter
87   Double_t GetX() const {return fx;}
88   Double_t GetY() const {return fy;}
89   Double_t GetZ() const {return fz;}
90   Double_t GetXerr() const {return fxerr;}
91   Double_t GetYerr() const {return fyerr;}
92   Double_t GetZerr() const {return fzerr;}
93   Int_t GetPadRow() const {return fPadrow;}
94   Int_t GetSector() const {return fSector;}
95   
96   Double_t GetXYWeight() const {return fWxy;}
97   Double_t GetZWeight() const {return fWz;}
98   Float_t GetS()        const {return fs;}
99
100   Bool_t GetUsage() const {return fUsed;}
101   Double_t GetPhi() const {return fPhi;}
102   Double_t GetEta() const {return fEta;}
103   
104   Double_t GetXprime() const    {return fXprime;}
105   Double_t GetYprime() const    {return fYprime;}
106   Double_t GetXprimeerr() const {return fXprimeerr;}
107   Double_t GetYprimeerr() const {return fYprimeerr;}
108   
109   Double_t GetXt() const {return fXt;}
110   Double_t GetYt() const {return fYt;}
111   Double_t GetZt() const {return fZt;}
112   Double_t GetXterr() const {return fXterr;}
113   Double_t GetYterr() const {return fYterr;}
114   Double_t GetZterr() const {return fZterr;}
115   
116   Double_t GetXv() const {return fXv;}
117   Double_t GetYv() const {return fYv;}
118   Double_t GetZv() const {return fZv;}
119   Double_t GetXverr() const {return fXverr;}
120   Double_t GetYverr() const {return fYverr;}
121   Double_t GetZverr() const {return fZverr;}
122
123   Int_t GetHitNumber() const {return fHitNumber;}
124   Int_t GetNextHitNumber() const {return fNextHitNumber;}
125   Int_t GetTrackNumber() const {return fTrackNumber;}
126   //Int_t const *GetMCTrackID()     const {return fMCTrackID;}
127   
128   AliHLTTPCConfMapPoint* GetNextVolumeHit(){return fNextVolumeHit;}
129   AliHLTTPCConfMapPoint* GetNextRowHit(){return fNextRowHit;}
130   AliHLTTPCConfMapPoint* GetNextTrackHit(){return fNextTrackHit;}
131   Short_t GetPhiIndex() const {return fPhiIndex;}
132   Short_t GetEtaIndex() const {return fEtaIndex;}
133   Double_t GetXYChi2() const {return fXYChi2;}
134   Double_t GetSZChi2() const {return fSZChi2;}
135   //Int_t fMCTrackID[3]; //MClabel of tracks, may overlap
136
137   // setter
138   void SetNextVolumeHit(AliHLTTPCConfMapPoint* p){fNextVolumeHit=p;}
139   void SetNextRowHit(AliHLTTPCConfMapPoint* p){fNextRowHit=p;}
140   void SetNextTrackHit(AliHLTTPCConfMapPoint* p){fNextTrackHit=p;}
141
142   void SetPhiIndex(Short_t p){fPhiIndex=p;}
143   void SetEtaIndex(Short_t p){fEtaIndex=p;}
144   void SetXYChi2(Double_t d) {fXYChi2=d;}
145   void SetSZChi2(Double_t d) {fSZChi2=d;}
146
147   static void SetDontMap(Bool_t b){fgDontMap=b;}
148
149   void SetX(Double_t f){fx=f;}
150   void SetY(Double_t f){fy=f;}
151   void SetZ(Double_t f){fz=f;}
152   void SetXerr(Double_t f){fxerr=f;}
153   void SetYerr(Double_t f){fyerr=f;}
154   void SetZerr(Double_t f){fzerr=f;}
155   void SetPadRow(Int_t f){fPadrow=f;}
156   void SetSector(Int_t f){fSector=f;}
157   void SetMCTrackID(Int_t f,Int_t g,Int_t h){fMCTrackID[0] = f; fMCTrackID[1]=g; fMCTrackID[2]=h;}
158
159   void SetXYWeight(Float_t f){fWxy = f;}
160   void SetZWeight(Float_t f){fWz = f;}
161   void SetS(Float_t f){fs = f;}
162   void SetUsage(Bool_t f){fUsed=f;}
163   void SetPhi(Double_t f ){fPhi = f;}
164   void SetEta(Double_t f){fEta = f;}
165   void SetXprime(Double_t f){fXprime = f;}
166   void SetYprime(Double_t f){fYprime = f;}
167   void SetXprimeerr(Double_t f){fXprimeerr = f;}
168   void SetYprimeerr(Double_t f){fYprimeerr = f;}
169   void SetXt(Double_t f){fXt = f;}
170   void SetYt(Double_t f){fYt = f;}
171   void SetZt(Double_t f){fZt = f;}
172   void SetXterr(Double_t f){fXterr = f;}
173   void SetYterr(Double_t f){fYterr = f;}
174   void SetZterr(Double_t f){fZterr = f;}
175   void SetXv(Double_t f){fXv = f;}
176   void SetYv(Double_t f){fYv = f;}
177   void SetZv(Double_t f){fZv = f;}
178   void SetXverr(Double_t f){fXverr = f;}
179   void SetYverr(Double_t f){fYverr = f;}
180   void SetZverr(Double_t f){fZverr = f;}
181   void SetHitNumber(Int_t f){fHitNumber=f;}
182   void SetTrackNumber(Int_t f){fTrackNumber=f;}
183   void SetNextHitNumber(Int_t f){fNextHitNumber=f;}
184
185   void Setup(AliHLTTPCVertex *vertex);// does the usual setup in the right order
186   void SetAngles();               // calculate spherical angles and set values
187   void SetIntPoint(Double_t inx = 0., Double_t iny = 0.,
188                    Double_t inz = 0., Double_t inxerr = 0., 
189                    Double_t inyerr = 0., Double_t inzerr = 0.);  
190   //-> set interaction point
191   void SetShiftedCoord();// set shifted coordinates  
192   void SetAllCoord(const AliHLTTPCConfMapPoint *hit);// set conformal mapping coordinates in respect to given hit
193   void SetConfCoord();// conformal mapping
194
195   ClassDef(AliHLTTPCConfMapPoint, 1)   //Conformal mapping hit class.
196 };
197
198 #endif