0688636f79874d610bfadf86ae5aa15dc5ad1f36
[u/mrichter/AliRoot.git] / HLT / hough / AliL3HoughTransformer.h
1 #ifndef ALIL3_HOUGHTRANSFORMER
2 #define ALIL3_HOUGHTRANSFORMER
3
4 #include "AliL3RootTypes.h"
5
6 struct AliL3Digits
7 {
8   UShort_t fCharge;
9   UChar_t fPad;
10   UShort_t fTime;
11   Int_t fIndex;
12   AliL3Digits *fNextVolumePixel;
13   //AliL3Digits *nextPhiRowPixel;
14   AliL3Digits *nextRowPixel;
15 };
16
17 struct AliL3HoughContainer
18 {
19   void *first;
20   void *last;
21 };
22
23
24
25 class AliL3Histogram;
26 class AliL3Transform;
27 class AliL3HoughEvaluate;
28 class AliL3TrackArray;
29 class AliL3DigitRowData;
30
31 class AliL3HoughTransformer : public TObject {
32   
33  private:
34
35   friend class AliL3HoughEval;
36   
37   AliL3Transform *fTransform; //!
38
39   Int_t fNPhiSegments; //Number of patches in phi.
40   Float_t fEtaMin;
41   Float_t fEtaMax;
42   Int_t fNumEtaSegments;
43   Int_t fNumOfPadRows;
44   Int_t fNRowsInPatch;
45   Int_t fBinTableBounds;
46
47   UInt_t fNDigitRowData; //!
48   AliL3DigitRowData *fDigitRowData; //!
49   
50   AliL3HoughContainer *fRowContainer; //!
51   AliL3HoughContainer *fPhiRowContainer; //!
52   AliL3HoughContainer *fVolume; //!
53   
54   Int_t fContainerBounds;
55   Int_t fNDigits;
56   Int_t **fBinTable; //!
57   Int_t *fEtaIndex; //!
58   Char_t **fTrackTable; //!
59   AliL3Histogram *fHistoPt;
60   
61   Int_t fSlice;
62   Int_t fPatch;
63
64  public:
65   AliL3HoughTransformer(); 
66   AliL3HoughTransformer(Int_t slice,Int_t patch,Float_t *etarange);
67   AliL3HoughTransformer(Int_t slice,Int_t patch,Double_t *etarange=0,Int_t n_eta_segments=90);
68   virtual ~AliL3HoughTransformer();
69
70   void InitTables();
71   void TransformTables(AliL3Histogram **histos,AliL3Histogram **images=0);
72   void SetInputData(UInt_t ndigits,AliL3DigitRowData *ptr);
73   void WriteTables();
74   void SetHistogram(AliL3Histogram *hist) {fHistoPt = hist;}
75   Double_t CpuTime();
76   Int_t GetNumEtaSegments() {return fNumEtaSegments;}
77   /*
78     void Transform2Circle(TH2F *hist,Int_t eta_index);
79     void Transform2Circle(TH2F **histos,Int_t n_eta_segments,UInt_t ndigits,AliL3DigitRowData *ptr);
80     void Transform2Line(TH2F *hist,Int_t ref_row,Int_t *rowrange,Double_t *phirange,TH2F *raw=0);
81     void TransformLines2Circle(TH2F *hist,AliL3TrackArray *tracks);
82     void GetPixels(Char_t *rootfile,TH2F *hist=0);
83     void InitTemplates(TH2F *hist);
84   */
85   ClassDef(AliL3HoughTransformer,1)
86
87 };
88
89 #endif