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:
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; //!
65 Double_t GetCpuTime();
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();
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);
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);
82 void MergeInternally();
83 void MergeEtaSlices();
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");
94 void DoBench(Char_t *filename);
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);
111 void SetPeakParameters(Int_t kspread,Float_t pratio) {fKappaSpread=kspread; fPeakRatio=pratio;}
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;}
122 ClassDef(AliL3Hough,1) //Hough transform base class