]> git.uio.no Git - u/mrichter/AliRoot.git/blame - RICH/AliRICHRecon.h
Implementation of new ClusterFinder
[u/mrichter/AliRoot.git] / RICH / AliRICHRecon.h
CommitLineData
5cb4dfc3 1#ifndef AliRICHRecon_h
2#define AliRICHRecon_h
3
4/* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
5 * See cxx source for full Copyright notice */
6
7#include <TTask.h>
8#include "AliRICH.h"
9#include <AliRun.h>
10
11class AliRICH;
12
13class AliRICHRecon : public TTask {
14 public :
15
16 AliRICHRecon(const char*, const char*);
9eb3dcf5 17 ~AliRICHRecon(){EndProcessEvent();}
5cb4dfc3 18
19 AliRICH* Rich() {return fRich;}
20 void StartProcessEvent();
21 void EndProcessEvent();
22
23 void InitRecon();
24
25 void PatRec();
26
27 void Minimization();
28
29 void FillHistograms();
30
31 void FindThetaPhotonCerenkov();
32 void FindAreaAndPortionOfRing();
33
34 void FindEmissionPoint();
35
36 Int_t PhotonInBand();
37 Float_t PhotonPositionOnCathode();
38
39 void FindPhotonAnglesInDRS();
40 void FindPhiPoint();
41 void FindThetaAtQuartz(Float_t ThetaCerenkov);
42
43 Float_t FindMassOfParticle();
44
45 Float_t Cerenkovangle(Float_t n, Float_t beta);
46
47 void HoughResponse();
48 void HoughFiltering(float HCS[]);
49 void FlagPhotons();
50 void FindWeightThetaCerenkov();
51
52 void EstimationOfTheta();
53 void FindIntersectionWithDetector();
54 Int_t CheckDetectorAcceptance();
55
56 void DrawRing();
57 void DrawEvent(Int_t flag);
58
59 void waiting();
60
61 //////////////////////////////////////
62 Float_t GetEventVertexZ() { return fEventVertZ;}
63 Float_t GetEventMultiplicity() { return fEventMultiplicity;}
64 Float_t GetPhotonEnergy() { return fPhotonEnergy;}
65 Float_t GetFreonRefractiveIndex() { return fFreonRefractiveIndex;}
66 Float_t GetQuartzRefractiveIndex() { return fQuartzRefractiveIndex;}
67 Float_t GetGasRefractiveIndex() { return fGasRefractiveIndex;}
68
69 Float_t GetFreonScaleFactor() { return fFreonScaleFactor;}
70
71 Float_t GetEmissionPoint() { return fLengthEmissionPoint;}
72 Float_t GetMassHypotesis() { return fMassHypotesis;}
73 Float_t GetBetaOfParticle() { return fTrackBeta;}
74 Float_t GetEntranceX() { return fXtoentr;}
75 Float_t GetEntranceY() { return fYtoentr;}
76 Float_t GetThetaCerenkov() { return fThetaCerenkov;}
77 Float_t GetThetaPhotonCerenkov() { return fThetaPhotonCerenkov;}
78 Float_t GetTrackMomentum() { return fTrackMomentum;}
79 Float_t GetTrackEta() { return fTrackEta;}
80 Float_t GetTrackTheta() { return fTrackTheta;}
81 Float_t GetTrackPhi() { return fTrackPhi;}
82 Float_t GetTrackPt() { return fTrackPt;}
83 Int_t GetTrackCharge() { return fTrackCharge;}
84 Float_t GetTrackTPCLastZ() { return fTrackTPCLastZ;}
85 Float_t GetMinDist() { return fMinDist;}
86 Float_t GetXPointOnCathode() { return fPhotonLimitX;}
87 Float_t GetYPointOnCathode() { return fPhotonLimitY;}
88
89
90 Float_t GetThetaPhotonInDRS() { return fThetaPhotonInDRS;}
91 Float_t GetPhiPhotonInDRS() { return fPhiPhotonInDRS;}
92 Float_t GetThetaPhotonInTRS() { return fThetaPhotonInTRS;}
93 Float_t GetPhiPhotonInTRS() { return fPhiPhotonInTRS;}
94
95 Float_t GetThetaAtQuartz() { return fThetaAtQuartz;}
96
97 Float_t GetPhiPoint(){ return fPhiPoint;}
98 Float_t GetXCoordOfEmission() {return fXEmiss;}
99 Float_t GetYCoordOfEmission() {return fYEmiss;}
100
101 Float_t GetXInnerRing() {return fXInner;}
102 Float_t GetYInnerRing() {return fYInner;}
103 Float_t GetRadiusInnerRing() {return fInnerRadius;}
104
105 Float_t GetXOuterRing() {return fXOuter;}
106 Float_t GetYOuterRing() {return fYOuter;}
107 Float_t GetRadiusOuterRing() {return fOuterRadius;}
108 Float_t GetShiftX() { return fShiftX;}
109 Float_t GetShiftY() { return fShiftY;}
110 Float_t GetDetectorWhereX() { return fXcoord;}
111 Float_t GetDetectorWhereY() { return fYcoord;}
112 Float_t GetIntersectionX() {return fIntersectionX;}
113 Float_t GetIntersectionY() {return fIntersectionY;}
114
115 Float_t GetThetaOfRing() { return fThetaOfRing;}
116 Float_t GetAreaOfRing() {return fAreaOfRing;}
117 Float_t GetPortionOfRing() {return fPortionOfRing;}
118 Float_t GetHoughArea() { return fHoughArea;}
119
120 Int_t GetPhotonsNumber() { return fPhotonsNumber;}
121 Int_t GetPhotonIndex() { return fPhotonIndex;}
122 Float_t GetPhotonEta() { return fPhotonEta[fPhotonIndex];}
123 Int_t GetPhotonFlag() { return fPhotonFlag[fPhotonIndex];}
124 Float_t GetPhotonWeight() { return fPhotonWeight[fPhotonIndex];}
125
126 Float_t GetHoughRMS() { return fHoughRMS;}
127
128 Int_t GetMipIndex() { return fMipIndex;}
129 Int_t GetTrackIndex() { return fTrackIndex;}
130 Float_t* GetCandidatePhotonX() { return fCandidatePhotonX;}
131 Float_t* GetCandidatePhotonY() { return fCandidatePhotonY;}
132 Int_t GetCandidatePhotonsNumber() { return fCandidatePhotonsNumber;}
133
134 Int_t GetHoughPhotons() { return fHoughPhotons;}
135 Float_t GetHoughPhotonsNorm() { return fHoughPhotonsNorm;}
136
137 Float_t GetFittedTrackTheta() { return fFittedTrackTheta;}
138 Float_t GetFittedTrackPhi() { return fFittedTrackPhi;}
139 Float_t GetFittedThetaCerenkov() { return fFittedThetaCerenkov;}
140 Int_t GetFittedHoughPhotons() { return fFittedHoughPhotons;}
141 Float_t GetEstimationOfTheta() { return fEstimationOfTheta;}
142 Float_t GetEstimationOfThetaRMS() { return fEstimationOfThetaRMS;}
143
144 void SetEventVertexZ(Float_t EventVertZ) { fEventVertZ = EventVertZ;}
145 void SetEventMultiplicity(Float_t EventMultiplicity) { fEventMultiplicity = EventMultiplicity;}
146 void SetPhotonEnergy(Float_t PhotonEnergy) { fPhotonEnergy = PhotonEnergy;}
147 void SetFreonRefractiveIndex() {fFreonRefractiveIndex = fFreonScaleFactor*(1.177+0.0172*fPhotonEnergy);}
148 void SetQuartzRefractiveIndex() {fQuartzRefractiveIndex = sqrt(1+(46.411/(113.763556-TMath::Power(fPhotonEnergy,2)))+(228.71/(328.51563-TMath::Power(fPhotonEnergy,2))));}
149 void SetGasRefractiveIndex() { fGasRefractiveIndex = 1.;}
150
151 void SetFreonScaleFactor(Float_t FreonScaleFactor) {fFreonScaleFactor = FreonScaleFactor;}
152
153 void SetEmissionPoint(Float_t LengthEmissionPoint) { fLengthEmissionPoint = LengthEmissionPoint;}
154 void SetMassHypotesis(Float_t mass) {fMassHypotesis = mass;}
155
156 void SetBetaOfParticle() { fTrackBeta = fTrackMomentum/sqrt(TMath::Power(fTrackMomentum,2)+TMath::Power(fMassHypotesis,2));}
157
158 void SetEntranceX(Float_t Xtoentr) { fXtoentr = Xtoentr;}
159 void SetEntranceY(Float_t Ytoentr) { fYtoentr = Ytoentr;}
160
161 void SetThetaPhotonInTRS(Float_t Theta) {fThetaPhotonInTRS = Theta;}
162 void SetPhiPhotonInTRS(Float_t Phi) {fPhiPhotonInTRS = Phi;}
163 void SetThetaPhotonInDRS(Float_t Theta) {fThetaPhotonInDRS = Theta;}
164 void SetPhiPhotonInDRS(Float_t Phi) {fPhiPhotonInDRS = Phi;}
165
166 void SetThetaAtQuartz(Float_t ThetaAtQuartz) {fThetaAtQuartz = ThetaAtQuartz;}
167
168 void SetPhiPoint(Float_t PhiPoint){ fPhiPoint = PhiPoint;}
169
170 void SetXCoordOfEmission(Float_t XEmiss) {fXEmiss = XEmiss;}
171 void SetYCoordOfEmission(Float_t YEmiss) {fYEmiss = YEmiss;}
172
173
174 void SetXPointOnCathode(Float_t PhotonLimitX) { fPhotonLimitX = PhotonLimitX;}
175 void SetYPointOnCathode(Float_t PhotonLimitY) { fPhotonLimitY = PhotonLimitY;}
176
177 void SetXInnerRing(Float_t XInner) {fXInner = XInner;}
178 void SetYInnerRing(Float_t YInner) {fYInner = YInner;}
179 void SetRadiusInnerRing(Float_t InnerRadius) {fInnerRadius = InnerRadius;}
180
181 void SetXOuterRing(Float_t XOuter) {fXOuter = XOuter;}
182 void SetYOuterRing(Float_t YOuter) {fYOuter = YOuter;}
183 void SetRadiusOuterRing(Float_t OuterRadius) {fOuterRadius = OuterRadius;}
184
185 void SetThetaCerenkov(Float_t ThetaCer) {fThetaCerenkov = ThetaCer;}
186 void SetThetaPhotonCerenkov(Float_t ThetaPhotCer) {fThetaPhotonCerenkov = ThetaPhotCer;}
187
188 void SetTrackMomentum(Float_t TrackMomentum) {fTrackMomentum = TrackMomentum;}
189 void SetTrackEta(Float_t TrackEta) {fTrackEta = TrackEta;}
190 void SetTrackTheta(Float_t TrackTheta) { fTrackTheta = TrackTheta;}
191 void SetTrackPhi(Float_t TrackPhi) { fTrackPhi = TrackPhi;}
192 void SetTrackPt(Float_t TrackPt) { fTrackPt = TrackPt;}
193 void SetTrackCharge(Int_t TrackCharge) { fTrackCharge = TrackCharge;}
194 void SetTrackTPCLastZ(Float_t TrackTPCLastZ) { fTrackTPCLastZ = TrackTPCLastZ;}
195 void SetMinDist(Float_t MinDist) { fMinDist = MinDist;}
196 void SetShiftX(Float_t ShiftX) { fShiftX = ShiftX;}
197 void SetShiftY(Float_t ShiftY) { fShiftY = ShiftY;}
198
199 void SetDetectorWhereX(Float_t Xcoord) { fXcoord = Xcoord;}
200 void SetDetectorWhereY(Float_t Ycoord) { fYcoord = Ycoord;}
201
202 void SetIntersectionX(Float_t IntersectionX) { fIntersectionX = IntersectionX;}
203 void SetIntersectionY(Float_t IntersectionY) { fIntersectionY = IntersectionY;}
204
205 void SetThetaOfRing(Float_t ThetaOfRing) { fThetaOfRing = ThetaOfRing;}
206 void SetAreaOfRing(Float_t AreaOfRing) { fAreaOfRing = AreaOfRing;}
207 void SetPortionOfRing(Float_t PortionOfRing) { fPortionOfRing = PortionOfRing;}
208 void SetHoughArea(Float_t HoughArea) { fHoughArea = HoughArea;}
209
210
211 void SetPhotonsNumber(Int_t PhotonsNumber) { fPhotonsNumber = PhotonsNumber;}
212 void SetPhotonIndex(Int_t PhotonIndex) { fPhotonIndex = PhotonIndex;}
213 void SetPhotonEta(Float_t PhotonEta) { fPhotonEta[fPhotonIndex] = PhotonEta;}
214 void SetPhotonFlag(Int_t PhotonFlag) { fPhotonFlag[fPhotonIndex] = PhotonFlag;}
215 void SetPhotonWeight(Float_t PhotonWeight) { fPhotonWeight[fPhotonIndex] = PhotonWeight;}
216
217 void SetHoughRMS(Float_t HoughRMS) { fHoughRMS = HoughRMS;}
218 void SetMipIndex(Int_t MipIndex) { fMipIndex = MipIndex;}
219 void SetTrackIndex(Int_t TrackIndex) { fTrackIndex = TrackIndex;}
220
221 void SetCandidatePhotonX(Float_t *CandidatePhotonX) { fCandidatePhotonX = CandidatePhotonX;}
222 void SetCandidatePhotonY(Float_t *CandidatePhotonY) { fCandidatePhotonY = CandidatePhotonY;}
223 void SetCandidatePhotonsNumber(Int_t CandidatePhotonsNumber) { fCandidatePhotonsNumber = CandidatePhotonsNumber;}
224 void SetHoughPhotons(Int_t HoughPhotons) { fHoughPhotons = HoughPhotons;}
225 void SetHoughPhotonsNorm(Float_t HoughPhotonsNorm) { fHoughPhotonsNorm = HoughPhotonsNorm;}
226
227 void SetFittedTrackTheta(Float_t FittedTrackTheta) { fFittedTrackTheta = FittedTrackTheta;}
228 void SetFittedTrackPhi(Float_t FittedTrackPhi) { fFittedTrackPhi = FittedTrackPhi;}
229 void SetFittedThetaCerenkov(Float_t FittedThetaCerenkov) { fFittedThetaCerenkov = FittedThetaCerenkov;}
230 void SetFittedHoughPhotons(Int_t FittedHoughPhotons) { fFittedHoughPhotons = FittedHoughPhotons;}
231 void SetEstimationOfTheta(Float_t EstimationOfTheta) { fEstimationOfTheta = EstimationOfTheta;}
232 void SetEstimationOfThetaRMS(Float_t EstimationOfThetaRMS) { fEstimationOfThetaRMS = EstimationOfThetaRMS;}
233
234 void FindBetaFromTheta(Float_t ThetaCerenkov) {fTrackBeta = 1/(fFreonRefractiveIndex*cos(ThetaCerenkov));}
235
236 Float_t SnellAngle(Float_t n1, Float_t n2, Float_t theta1);
237
238 Float_t FromEmissionToCathode();
239 //////////////////////////////////////
240 private:
241
242 AliRICH* fRich;
243
244 Float_t fEventVertZ;
245 Float_t fEventMultiplicity;
246
247 Float_t fTrackTheta;
248 Float_t fTrackPhi;
249 Float_t fTrackMomentum;
250 Float_t fTrackEta;
251 Float_t fTrackPt;
252 Int_t fTrackCharge;
253 Float_t fTrackTPCLastZ;
254 Float_t fMinDist;
255 Float_t fTrackBeta;
256
257 Float_t fXtoentr;
258 Float_t fYtoentr;
259
260 Float_t fThetaPhotonInTRS;
261 Float_t fPhiPhotonInTRS;
262
263 Float_t fThetaPhotonInDRS;
264 Float_t fPhiPhotonInDRS;
265
266 Float_t fThetaAtQuartz;
267 Float_t fPhiPoint;
268
269 Float_t fXEmiss;
270 Float_t fYEmiss;
271
272 Float_t fXInner;
273 Float_t fYInner;
274 Float_t fXOuter;
275 Float_t fYOuter;
276 Float_t fInnerRadius;
277 Float_t fOuterRadius;
278
279 Float_t fPhotonEnergy;
280 Float_t fFreonRefractiveIndex;
281 Float_t fQuartzRefractiveIndex;
282 Float_t fGasRefractiveIndex;
283
284 Float_t fFreonScaleFactor;
285
286 Float_t fLengthEmissionPoint;
287
288 Float_t fPhotonLimitX;
289 Float_t fPhotonLimitY;
290 Float_t fDistanceFromCluster;
291
292 Float_t fMassHypotesis;
293
294 Float_t fCerenkovAnglePad;
295
296 Float_t fThetaPhotonCerenkov;
297
298 Float_t fShiftX;
299 Float_t fShiftY;
300
301 Float_t fXcoord;
302 Float_t fYcoord;
303
304 Float_t fIntersectionX;
305 Float_t fIntersectionY;
306
307 Float_t fThetaOfRing;
308 Float_t fAreaOfRing;
309 Float_t fPortionOfRing;
310 Float_t fHoughArea;
311
312 Int_t fPhotonsNumber;
313 Int_t fPhotonIndex;
314 Float_t fPhotonEta[3000];
315 Int_t fPhotonFlag[3000];
316 Float_t fPhotonWeight[3000];
317
318 Float_t fHoughRMS;
319
320 Int_t fMipIndex;
321 Int_t fTrackIndex;
322
323 Float_t* fCandidatePhotonX;
324 Float_t* fCandidatePhotonY;
325 Int_t fCandidatePhotonsNumber;
326
327 Int_t fHoughPhotons;
328 Float_t fHoughPhotonsNorm;
329
330 Float_t fFittedTrackTheta;
331 Float_t fFittedTrackPhi;
332 Float_t fFittedThetaCerenkov;
333 Int_t fFittedHoughPhotons;
334
335 Float_t fEstimationOfTheta;
336 Float_t fEstimationOfThetaRMS;
337
338 public:
339
340 Int_t fNumEtaPhotons; // Number of photons
341 Int_t fEtaFlag[3000]; // flag for good photons
342 Float_t fEtaPhotons[3000]; // Cerenkov angle each photon
343 Float_t fWeightPhotons[3000]; // weight for each photon
344 Float_t fThetaCerenkov; // Theta angle for Hough
345 Float_t fWeightThetaCerenkov; // Theta Cerenkov angle weighted
346 Float_t fThetaPeakPos; // Peak position
347
348
349ClassDef(AliRICHRecon,0)
350
351};
352
353#endif // #ifdef AliRICHRecon_cxx
354