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