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