]> git.uio.no Git - u/mrichter/AliRoot.git/blob - HLT/hough/AliL3Hough.h
Merged Cvetans RowHoughTransformer, Anders latest developments in comp
[u/mrichter/AliRoot.git] / HLT / hough / AliL3Hough.h
1 // @(#) $Id$
2
3 #ifndef ALIL3HOUGH
4 #define ALIL3HOUGH
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 *fInputFile;//!
24   Char_t *fInputPtr;//!
25   Char_t fPath[1024];
26   Bool_t fBinary;
27   Bool_t fAddHistograms;
28   Bool_t fDoIterative;
29   Bool_t fWriteDigits;
30   Bool_t fUse8bits;
31   Int_t fNEtaSegments;
32   Int_t fNPatches;
33   Int_t fVersion; //which HoughTransformer to use
34   Int_t fCurrentSlice;
35   Int_t fEvent;
36
37   Int_t fPeakThreshold[6];
38   Float_t fLowPt[6];
39   Float_t fUpperPt[6];
40   Float_t fPtRes[6];
41   Float_t fPhi[6];
42   Int_t fNBinX[6];
43   Int_t fNBinY[6];
44   Int_t fThreshold[6];
45   Int_t fNSaveIterations; //for HoughtransformerVhdl
46   
47   //parameters for the peak finder:
48   Int_t fKappaSpread;
49   Float_t fPeakRatio;
50
51   Float_t fZVertex;
52
53   AliL3MemHandler **fMemHandler; //!
54   AliL3HoughBaseTransformer **fHoughTransformer; //!
55   AliL3HoughEval **fEval; //!
56   AliL3HoughMaxFinder *fPeakFinder; //!
57   AliL3TrackArray **fTracks; //!
58   AliL3TrackArray *fGlobalTracks; //!
59   AliL3HoughMerger *fMerger; //!
60   AliL3HoughIntMerger *fInterMerger; //!
61   AliL3HoughGlobalMerger *fGlobalMerger; //!
62   AliL3Benchmark *fBenchmark; //!
63
64   void CleanUp();
65   Double_t GetCpuTime();
66   
67  public:
68   
69   AliL3Hough(); 
70   AliL3Hough(Char_t *path,Bool_t binary,Int_t n_eta_segments=100,Bool_t bit8=kFALSE,Int_t tv=0,Char_t *infile=0,Char_t *ptr=0);
71   virtual ~AliL3Hough();
72   
73   void Init(Char_t *path,Bool_t binary,Int_t n_eta_segments=100,Bool_t bit8=kFALSE,Int_t tv=0,Char_t *infile=0,Char_t *ptr=0,Float_t zvertex=0.0);
74   void Init(Bool_t doit=kFALSE, Bool_t addhists=kFALSE);
75
76   void Process(Int_t minslice,Int_t maxslice);
77   void ReadData(Int_t slice,Int_t eventnr=0);
78   void Transform(Int_t *row_range = 0);
79   void ProcessSliceIter();
80   void ProcessPatchIter(Int_t patch);
81   void MergePatches();
82   void MergeInternally();
83   void MergeEtaSlices();
84
85   void FindTrackCandidates();
86   void AddAllHistograms();
87   void AddAllHistogramsRows();
88   Int_t Evaluate(Int_t road_width=1,Int_t nrowstomiss=1);
89   void EvaluatePatch(Int_t i,Int_t road_width,Int_t nrowstomiss);
90   void WriteTracks(Int_t slice,Char_t *path="./");
91   void WriteTracks(Char_t *path);
92   void WriteDigits(Char_t *outfile="output_digits.root");
93   void InitEvaluate();
94   void DoBench(Char_t *filename);
95   void AddTracks();
96   
97   //Setters
98   void SetNEtaSegments(Int_t i) {fNEtaSegments = i;}
99   void SetAddHistograms() {fAddHistograms = kTRUE;}
100   void DoIterative() {fDoIterative = kTRUE;}
101   void SetWriteDigits() {fWriteDigits = kTRUE;}
102   void SetTransformerParams(Float_t ptres=0,Float_t ptmin=0,Float_t ptmax=0,Int_t ny=0,Int_t patch=-1);
103   //{fPtRes=ptres;fNBinY=ny;fLowPt=ptmin;fUpperPt=ptmax;fPhi=psi;}
104   void SetTransformerParams(Int_t nx,Int_t ny,Float_t lpt,Int_t patch);
105   void SetTransformerParams(Int_t nx,Int_t ny,Float_t lpt,Float_t phi);
106   //{fNBinX=nx;fNBinY=ny;fLowPt=lpt;fPhi=phi;}
107   void SetThreshold(Int_t t=3,Int_t patch=-1);
108   void SetNSaveIterations(Int_t t=10) {fNSaveIterations=t;}
109   void SetPeakThreshold(Int_t threshold=0,Int_t patch=-1);
110   
111   void SetPeakParameters(Int_t kspread,Float_t pratio) {fKappaSpread=kspread; fPeakRatio=pratio;}
112   
113   //Getters
114   AliL3HoughBaseTransformer *GetTransformer(Int_t i) {if(!fHoughTransformer[i]) return 0; return fHoughTransformer[i];}
115   AliL3TrackArray *GetTracks(Int_t i) {if(!fTracks[i]) return 0; return fTracks[i];}
116   AliL3HoughEval *GetEval(Int_t i) {if(!fEval[i]) return 0; return fEval[i];}
117   AliL3HoughMerger *GetMerger() {if(!fMerger) return 0; return fMerger;}
118   AliL3HoughIntMerger *GetInterMerger() {if(!fInterMerger) return 0; return fInterMerger;}
119   AliL3MemHandler *GetMemHandler(Int_t i) {if(!fMemHandler[i]) return 0; return fMemHandler[i];}
120   AliL3HoughMaxFinder *GetMaxFinder() {return fPeakFinder;}
121
122   ClassDef(AliL3Hough,1) //Hough transform base class
123 };
124
125 #endif
126
127
128
129
130
131
132