Rewriting and cleaning up
[u/mrichter/AliRoot.git] / HLT / hough / AliL3HoughTransformer.h
1 #ifndef ALIL3_HOUGHTRANSFORMER
2 #define ALIL3_HOUGHTRANSFORMER
3
4 #include "AliL3RootTypes.h"
5
6 class AliL3Transform;
7 class AliL3Histogram;
8 class AliL3DigitRowData;
9
10 class AliL3HoughTransformer : public TObject {
11   
12  private:
13
14   Int_t fSlice;
15   Int_t fPatch;
16   Int_t fNEtaSegments;
17   Double_t fEtaMin;
18   Double_t fEtaMax;
19   Int_t fThreshold;
20   AliL3Transform *fTransform; //!
21   
22   //Pointers to histograms
23   AliL3Histogram **fParamSpace; //!
24
25   //Data pointers
26   UInt_t fNDigitRowData;
27   AliL3DigitRowData *fDigitRowData; //!
28   
29   void DeleteHistograms();
30
31  public:
32   AliL3HoughTransformer(); 
33   AliL3HoughTransformer(Int_t slice,Int_t patch,Int_t n_eta_segments);
34   virtual ~AliL3HoughTransformer();
35   
36   void SetInputData(UInt_t ndigits,AliL3DigitRowData *ptr);
37   void UpdateDataPointer(AliL3DigitRowData *&tempPt);
38   void CreateHistograms(Int_t nxbin=64,Double_t xmin=-0.006,Double_t xmax=0.006,
39                         Int_t nybin=64,Double_t ymin=-0.26,Double_t ymax=0.26);
40   void TransformCircle();
41   void TransformLine();
42
43   //Getters
44   Int_t GetSlice() {return fSlice;}
45   Int_t GetPatch() {return fPatch;}
46   Int_t GetNEtaSegments() {return fNEtaSegments;}
47   Int_t GetThreshold() {return fThreshold;}
48   Double_t GetEtaMin() {return fEtaMin;}
49   Double_t GetEtaMax() {return fEtaMax;}
50   void *GetDataPointer() {return (void*)fDigitRowData;}
51   AliL3Histogram *GetHistogram(Int_t eta_index);
52   
53   //setters
54   void SetThreshold(Int_t i) {fThreshold = i;}
55
56   ClassDef(AliL3HoughTransformer,1)
57
58 };
59
60 inline AliL3Histogram *AliL3HoughTransformer::GetHistogram(Int_t eta_index)
61 {
62   if(!fParamSpace || eta_index >= fNEtaSegments)
63     return 0;
64   if(!fParamSpace[eta_index])
65     return 0;
66   return fParamSpace[eta_index];
67 }
68
69 #endif