Added LUT transformer and new function to set parameter for VHDL transformer.
[u/mrichter/AliRoot.git] / HLT / hough / AliL3Hough.h
1 #ifndef ALIL3_HOUGH
2 #define ALIL3_HOUGH
3
4 #include "AliL3RootTypes.h"
5
6 class AliL3HoughMaxFinder;
7 class AliL3HoughBaseTransformer;
8 class AliL3Histogram;
9 class AliL3MemHandler;
10 class AliL3FileHandler;
11 class AliL3HoughEval;
12 class AliL3TrackArray;
13 class AliL3HoughMerger;
14 class AliL3HoughIntMerger;
15 class AliL3HoughGlobalMerger;
16
17 class AliL3Hough {
18   
19  private:
20   Char_t fPath[256];
21   Bool_t fBinary;
22   Bool_t fAddHistograms;
23   Bool_t fDoIterative;
24   Bool_t fWriteDigits;
25   Bool_t fUse8bits;
26   Int_t fNEtaSegments;
27   Int_t fNPatches;
28   Int_t fVersion; //which HoughTransformer to use
29   Int_t fCurrentSlice;
30
31   Float_t fLowPt;
32   Float_t fPhi;
33   Int_t fNBinX;
34   Int_t fNBinY;
35   Int_t fThreshold;
36   Int_t fNSaveIterations; //for HoughtransformerVhld
37
38   AliL3MemHandler **fMemHandler; //!
39   AliL3HoughBaseTransformer **fHoughTransformer; //!
40   AliL3HoughEval **fEval; //!
41   AliL3HoughMaxFinder *fPeakFinder; //!
42   AliL3TrackArray **fTracks; //!
43   AliL3HoughMerger *fMerger; //!
44   AliL3HoughIntMerger *fInterMerger; //!
45   AliL3HoughGlobalMerger *fGlobalMerger; //!
46
47   void CleanUp();
48   Double_t GetCpuTime();
49   
50  public:
51   
52   AliL3Hough(); 
53   AliL3Hough(Char_t *path,Bool_t binary,Int_t n_eta_segments=100,Bool_t bit8=kFALSE,Int_t tv=0);
54   virtual ~AliL3Hough();
55   
56   void Init(Char_t *path,Bool_t binary,Int_t n_eta_segments=100,Bool_t bit8=kFALSE,Int_t tv=0);
57   void Init(Bool_t doit=kFALSE, Bool_t addhists=kFALSE);
58
59   void Process(Int_t minslice,Int_t maxslice);
60   void ReadData(Int_t slice,Int_t eventnr=0);
61   void Transform(Int_t row_range = -1);
62   void ProcessSliceIter();
63   void ProcessPatchIter(Int_t patch);
64   void MergePatches();
65   void MergeInternally();
66   
67   void FindTrackCandidates();
68   void AddAllHistograms();
69   Int_t Evaluate(Int_t road_width=1,Int_t nrowstomiss=1);
70   void EvaluatePatch(Int_t i,Int_t road_width,Int_t nrowstomiss);
71   void EvaluateWithEta();
72   void WriteTracks(Int_t slice,Char_t *path="./");
73   void WriteDigits(Char_t *outfile="output_digits.root");
74   void InitEvaluate();
75   
76   //Setters
77   void SetNEtaSegments(Int_t i) {fNEtaSegments = i;}
78   void SetAddHistograms() {fAddHistograms = kTRUE;}
79   void DoIterative() {fDoIterative = kTRUE;}
80   void SetWriteDigits() {fWriteDigits = kTRUE;}
81   void SetTransformerParams(Int_t nx=64, Int_t ny=64,Float_t lpt=0.1,Float_t phi=30) {fNBinX=nx;fNBinY=ny;fLowPt=lpt;fPhi=phi;}
82   void SetThreshold(Int_t t=3) {fThreshold=t;}
83   void SetNSaveIterations(Int_t t=10) {fNSaveIterations=t;}
84
85   //Getters
86   AliL3HoughBaseTransformer *GetTransformer(Int_t i) {if(!fHoughTransformer[i]) return 0; return fHoughTransformer[i];}
87   AliL3TrackArray *GetTracks(Int_t i) {if(!fTracks[i]) return 0; return fTracks[i];}
88   AliL3HoughEval *GetEval(Int_t i) {if(!fEval[i]) return 0; return fEval[i];}
89   AliL3HoughMerger *GetMerger() {if(!fMerger) return 0; return fMerger;}
90   AliL3HoughIntMerger *GetInterMerger() {if(!fInterMerger) return 0; return fInterMerger;}
91   AliL3MemHandler *GetMemHandler(Int_t i) {if(!fMemHandler[i]) return 0; return fMemHandler[i];}
92   AliL3HoughMaxFinder *GetMaxFinder() {return fPeakFinder;}
93
94   ClassDef(AliL3Hough,1) //Hough transform base class
95 };
96
97 #endif
98
99
100
101
102
103
104