6 #include "AliL3RootTypes.h"
8 class AliL3HoughMaxFinder;
9 class AliL3HoughBaseTransformer;
11 class AliL3MemHandler;
12 class AliL3FileHandler;
14 class AliL3TrackArray;
15 class AliL3HoughMerger;
16 class AliL3HoughIntMerger;
17 class AliL3HoughGlobalMerger;
23 Char_t *fInputFile;//!
27 Bool_t fAddHistograms;
33 Int_t fVersion; //which HoughTransformer to use
37 Int_t fPeakThreshold[6];
45 Int_t fNSaveIterations; //for HoughtransformerVhdl
47 //parameters for the peak finder:
51 AliL3MemHandler **fMemHandler; //!
52 AliL3HoughBaseTransformer **fHoughTransformer; //!
53 AliL3HoughEval **fEval; //!
54 AliL3HoughMaxFinder *fPeakFinder; //!
55 AliL3TrackArray **fTracks; //!
56 AliL3TrackArray *fGlobalTracks; //!
57 AliL3HoughMerger *fMerger; //!
58 AliL3HoughIntMerger *fInterMerger; //!
59 AliL3HoughGlobalMerger *fGlobalMerger; //!
60 AliL3Benchmark *fBenchmark; //!
63 Double_t GetCpuTime();
68 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);
69 virtual ~AliL3Hough();
71 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);
72 void Init(Bool_t doit=kFALSE, Bool_t addhists=kFALSE);
74 void Process(Int_t minslice,Int_t maxslice);
75 void ReadData(Int_t slice,Int_t eventnr=0);
76 void Transform(Int_t *row_range = 0);
77 void ProcessSliceIter();
78 void ProcessPatchIter(Int_t patch);
80 void MergeInternally();
81 void MergeEtaSlices();
83 void FindTrackCandidates();
84 void AddAllHistograms();
85 Int_t Evaluate(Int_t road_width=1,Int_t nrowstomiss=1);
86 void EvaluatePatch(Int_t i,Int_t road_width,Int_t nrowstomiss);
87 void WriteTracks(Int_t slice,Char_t *path="./");
88 void WriteTracks(Char_t *path);
89 void WriteDigits(Char_t *outfile="output_digits.root");
91 void DoBench(Char_t *filename);
95 void SetNEtaSegments(Int_t i) {fNEtaSegments = i;}
96 void SetAddHistograms() {fAddHistograms = kTRUE;}
97 void DoIterative() {fDoIterative = kTRUE;}
98 void SetWriteDigits() {fWriteDigits = kTRUE;}
99 void SetTransformerParams(Float_t ptres=0,Float_t ptmin=0,Float_t ptmax=0,Int_t ny=0,Int_t patch=-1);
100 //{fPtRes=ptres;fNBinY=ny;fLowPt=ptmin;fUpperPt=ptmax;fPhi=psi;}
101 void SetTransformerParams(Int_t nx,Int_t ny,Float_t lpt,Int_t patch);
102 void SetTransformerParams(Int_t nx,Int_t ny,Float_t lpt,Float_t phi);
103 //{fNBinX=nx;fNBinY=ny;fLowPt=lpt;fPhi=phi;}
104 void SetThreshold(Int_t t=3,Int_t patch=-1);
105 void SetNSaveIterations(Int_t t=10) {fNSaveIterations=t;}
106 void SetPeakThreshold(Int_t threshold=0,Int_t patch=-1);
108 void SetPeakParameters(Int_t kspread,Float_t pratio) {fKappaSpread=kspread; fPeakRatio=pratio;}
111 AliL3HoughBaseTransformer *GetTransformer(Int_t i) {if(!fHoughTransformer[i]) return 0; return fHoughTransformer[i];}
112 AliL3TrackArray *GetTracks(Int_t i) {if(!fTracks[i]) return 0; return fTracks[i];}
113 AliL3HoughEval *GetEval(Int_t i) {if(!fEval[i]) return 0; return fEval[i];}
114 AliL3HoughMerger *GetMerger() {if(!fMerger) return 0; return fMerger;}
115 AliL3HoughIntMerger *GetInterMerger() {if(!fInterMerger) return 0; return fInterMerger;}
116 AliL3MemHandler *GetMemHandler(Int_t i) {if(!fMemHandler[i]) return 0; return fMemHandler[i];}
117 AliL3HoughMaxFinder *GetMaxFinder() {return fPeakFinder;}
119 ClassDef(AliL3Hough,1) //Hough transform base class