Checking in for the weekend
[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 AliL3HoughTransformer;
8 class AliL3Histogram;
9 class AliL3MemHandler;
10 class AliL3FileHandler;
11 class AliL3HoughEval;
12 class AliL3Transform;
13 class AliL3TrackArray;
14 class AliL3HoughMerger;
15 class AliL3HoughIntMerger;
16 class AliL3HoughGlobalMerger;
17
18 class AliL3Hough {
19   
20  private:
21   Char_t fPath[256];
22   Bool_t fBinary;
23   Bool_t fAddHistograms;
24   Bool_t fDoIterative;
25   Bool_t fWriteDigits;
26   Int_t fNEtaSegments;
27   Int_t fNPatches;
28 #ifdef use_aliroot
29   AliL3FileHandler **fMemHandler; //!
30 #else
31   AliL3MemHandler **fMemHandler; //!
32 #endif
33   AliL3HoughTransformer **fHoughTransformer; //!
34   AliL3HoughEval **fEval; //!
35   AliL3HoughMaxFinder *fPeakFinder; //!
36   AliL3TrackArray **fTracks; //!
37   AliL3HoughMerger *fMerger; //!
38   AliL3HoughIntMerger *fInterMerger; //!
39   AliL3HoughGlobalMerger *fGlobalMerger; //!
40
41   void CleanUp();
42   void Init();
43   
44  public:
45   
46   AliL3Hough(); 
47   AliL3Hough(Char_t *path,Bool_t binary,Int_t n_eta_segments=100);
48   virtual ~AliL3Hough();
49   
50   void Process(Int_t minslice,Int_t maxslice);
51   void ReadData(Int_t slice);
52   void Transform();
53   void ProcessSliceIter();
54   void ProcessPatchIter(Int_t patch);
55   void MergePatches();
56   void MergeInternally();
57
58   void FindTrackCandidates();
59   void AddAllHistograms();
60   void Evaluate(Int_t road_width=1);
61   void EvaluateWithEta();
62   void WriteTracks(Char_t *path="./");
63 #ifdef use_aliroot
64   void WriteDigits(Char_t *outfile="output_digits.root");
65 #endif
66
67   //Setters
68   void SetNEtaSegments(Int_t i) {fNEtaSegments = i;}
69   void SetAddHistograms() {fAddHistograms = kTRUE;}
70   void DoIterative() {fDoIterative = kTRUE;}
71   void SetWriteDigits() {fWriteDigits = kTRUE;}
72   
73   //Getters
74   AliL3HoughTransformer *GetTransformer(Int_t i) {if(!fHoughTransformer[i]) return 0; return fHoughTransformer[i];}
75   AliL3TrackArray *GetTracks(Int_t i) {if(!fTracks[i]) return 0; return fTracks[i];}
76   AliL3HoughEval *GetEval(Int_t i) {if(!fEval[i]) return 0; return fEval[i];}
77   AliL3HoughMerger *GetMerger() {if(!fMerger) return 0; return fMerger;}
78   AliL3HoughIntMerger *GetInterMerger() {if(!fInterMerger) return 0; return fInterMerger;}
79 #ifdef use_aliroot
80   AliL3FileHandler *GetMemHandler(Int_t i) {if(!fMemHandler[i]) return 0; return fMemHandler[i];}
81 #else
82   AliL3MemHandler *GetMemHandler(Int_t i) {if(!fMemHandler[i]) return 0; return fMemHandler[i];}
83 #endif
84
85   ClassDef(AliL3Hough,1) //Hough transform base class
86
87 };
88
89 #endif