408106bce7fec98749ee6e914ee6e91055ea0e6d
[u/mrichter/AliRoot.git] / HLT / hough / AliL3HoughTransformerLUT.h
1 // @(#) $Id$
2
3 #ifndef ALIL3_HOUGHTRANSFORMERLUT
4 #define ALIL3_HOUGHTRANSFORMERLUT
5
6 #include "AliL3RootTypes.h"
7 #include "AliL3HoughBaseTransformer.h"
8
9 class AliL3Histogram;
10
11 class AliL3HoughTransformerLUT : public AliL3HoughBaseTransformer {
12   
13  protected:
14   AliL3Histogram **fParamSpace; //!
15 #ifdef do_mc
16   TrackIndex **fTrackID; //!
17 #endif
18   Bool_t fDoMC;
19
20   void DeleteHistograms();
21   
22   Int_t fMinRow;
23   Int_t fMaxRow;
24   Int_t fNRows;
25   Int_t fNEtas;
26   Int_t fNPhi0;
27   Int_t fSlice;
28   Int_t fSector;
29   Int_t fSectorRow;
30   Int_t fZSign;
31   Float_t fZLengthPlusOff;
32   Float_t fTimeWidth;
33   Float_t fPadPitch;
34   Float_t fEtaSlice;
35
36   Float_t *fLUTX; //!
37   Float_t *fLUTY; //!
38   Float_t *fLUTEta; //!
39   Float_t *fLUTEtaReal; //!
40   Float_t *fLUTphi0; //!
41   Float_t *fLUT2sinphi0; //!   
42   Float_t *fLUT2cosphi0; //!
43   Float_t *fLUTKappa; //!
44   
45   Int_t fLastPad;
46   Int_t fLastIndex;
47   Int_t fAccCharge;
48
49   Float_t CalcRoverZ2(Float_t eta);
50   Float_t CalcEta(Float_t roverz2);
51   Float_t CalcX(Int_t row);
52   Float_t CalcY(Int_t pad, Int_t row);
53   Float_t CalcZ(Int_t time);  
54
55   Int_t FindIndex(Float_t rz2, Int_t start=-100);
56   void AddCurveToHistogram(Int_t new_eta_index=-1);
57
58  public:
59
60   AliL3HoughTransformerLUT(); 
61   AliL3HoughTransformerLUT(Int_t slice,Int_t patch,Int_t n_eta_segments);
62   virtual ~AliL3HoughTransformerLUT();
63   
64   void CreateHistograms(Int_t nxbin,Double_t ptmin,Int_t nybin,Double_t phimin,Double_t phimax);
65   void CreateHistograms(Int_t nxbin,Double_t xmin,Double_t xmax,Int_t nybin,Double_t ymin,Double_t ymax);
66   void Reset();
67
68   void TransformCircle();
69   void TransformCircleC(Int_t *row_range,Int_t every){STDCERR<<"TransformCircleC is not defined for this transformer!"<<STDENDL;}
70   void TransformLine(Int_t *rowrange=0,Float_t *phirange=0) {STDCERR<<"TransformLine is not defined for this transformer!"<<STDENDL;}
71
72   Int_t GetEtaIndex(Double_t eta);
73   AliL3Histogram *GetHistogram(Int_t eta_index);
74   Double_t GetEta(Int_t eta_index,Int_t slice);
75   Int_t GetTrackID(Int_t eta_index,Double_t kappa,Double_t psi);
76   
77   void Print();
78   void Init(Int_t slice=0,Int_t patch=0,Int_t n_eta_segments=100,Int_t n_seqs=-1);
79
80   ClassDef(AliL3HoughTransformerLUT,1) //Normal Hough transformation class
81
82 };
83 #endif