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