]> git.uio.no Git - u/mrichter/AliRoot.git/blame - HLT/hough/AliL3Hough.h
Merged Bergen, mergen Cvetan TransformerRow and
[u/mrichter/AliRoot.git] / HLT / hough / AliL3Hough.h
CommitLineData
3e87ef69 1// @(#) $Id$
2
b2a02bce 3#ifndef ALIL3HOUGH
4#define ALIL3HOUGH
f000f8a5 5
6#include "AliL3RootTypes.h"
7
8class AliL3HoughMaxFinder;
237d3f5c 9class AliL3HoughBaseTransformer;
f80b98cb 10class AliL3Histogram;
95a00d93 11class AliL3MemHandler;
f80b98cb 12class AliL3FileHandler;
13class AliL3HoughEval;
f80b98cb 14class AliL3TrackArray;
b1886074 15class AliL3HoughMerger;
16class AliL3HoughIntMerger;
1c404dd5 17class AliL3HoughGlobalMerger;
3e87ef69 18class AliL3Benchmark;
f000f8a5 19
de3c3890 20#ifdef use_newio
21#include <AliRunLoader.h>
22#endif
23
b1886074 24class AliL3Hough {
f000f8a5 25
26 private:
b2a02bce 27 Char_t *fInputFile;//!
0bd0c1ef 28 Char_t *fInputPtr;//!
b2a02bce 29 Char_t fPath[1024];
4fc9a6a4 30 Bool_t fBinary;
a6008206 31 Bool_t fAddHistograms;
b1886074 32 Bool_t fDoIterative;
a6008206 33 Bool_t fWriteDigits;
d96f6a4a 34 Bool_t fUse8bits;
f80b98cb 35 Int_t fNEtaSegments;
1c404dd5 36 Int_t fNPatches;
636080ea 37 Int_t fVersion; //which HoughTransformer to use
3bb06991 38 Int_t fCurrentSlice;
b2a02bce 39 Int_t fEvent;
40
41 Int_t fPeakThreshold[6];
42 Float_t fLowPt[6];
43 Float_t fUpperPt[6];
44 Float_t fPtRes[6];
45 Float_t fPhi[6];
46 Int_t fNBinX[6];
47 Int_t fNBinY[6];
48 Int_t fThreshold[6];
49 Int_t fNSaveIterations; //for HoughtransformerVhdl
5a31e9df 50
51 //parameters for the peak finder:
52 Int_t fKappaSpread;
53 Float_t fPeakRatio;
636080ea 54
0bd0c1ef 55 Float_t fZVertex;
56
95a00d93 57 AliL3MemHandler **fMemHandler; //!
237d3f5c 58 AliL3HoughBaseTransformer **fHoughTransformer; //!
a6008206 59 AliL3HoughEval **fEval; //!
60 AliL3HoughMaxFinder *fPeakFinder; //!
b1886074 61 AliL3TrackArray **fTracks; //!
3e87ef69 62 AliL3TrackArray *fGlobalTracks; //!
b1886074 63 AliL3HoughMerger *fMerger; //!
64 AliL3HoughIntMerger *fInterMerger; //!
1c404dd5 65 AliL3HoughGlobalMerger *fGlobalMerger; //!
3e87ef69 66 AliL3Benchmark *fBenchmark; //!
1c404dd5 67
de3c3890 68#ifdef use_newio
69 AliRunLoader *fRunLoader;
70#endif
71
b1886074 72 void CleanUp();
0309a5ee 73 Double_t GetCpuTime();
4fc9a6a4 74
f000f8a5 75 public:
4fc9a6a4 76
f000f8a5 77 AliL3Hough();
0bd0c1ef 78 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);
f000f8a5 79 virtual ~AliL3Hough();
de3c3890 80
81#ifdef use_newio
82 void SetRunLoader(AliRunLoader *runloader) {fRunLoader = runloader;}
83#endif
84
0bd0c1ef 85 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);
6dbc57b4 86 void Init(Bool_t doit=kFALSE, Bool_t addhists=kFALSE);
87
a6008206 88 void Process(Int_t minslice,Int_t maxslice);
208b54c5 89 void ReadData(Int_t slice,Int_t eventnr=0);
3e87ef69 90 void Transform(Int_t *row_range = 0);
b1886074 91 void ProcessSliceIter();
92 void ProcessPatchIter(Int_t patch);
93 void MergePatches();
94 void MergeInternally();
44c7f8de 95 void MergeEtaSlices();
96
a6008206 97 void FindTrackCandidates();
de3c3890 98 void FindTrackCandidatesRow();
a6008206 99 void AddAllHistograms();
0bd0c1ef 100 void AddAllHistogramsRows();
0309a5ee 101 Int_t Evaluate(Int_t road_width=1,Int_t nrowstomiss=1);
a4639de2 102 void EvaluatePatch(Int_t i,Int_t road_width,Int_t nrowstomiss);
3fe49b5b 103 void WriteTracks(Int_t slice,Char_t *path="./");
b2a02bce 104 void WriteTracks(Char_t *path);
a6008206 105 void WriteDigits(Char_t *outfile="output_digits.root");
3fe49b5b 106 void InitEvaluate();
3e87ef69 107 void DoBench(Char_t *filename);
b2a02bce 108 void AddTracks();
3fe49b5b 109
4fc9a6a4 110 //Setters
111 void SetNEtaSegments(Int_t i) {fNEtaSegments = i;}
a6008206 112 void SetAddHistograms() {fAddHistograms = kTRUE;}
b1886074 113 void DoIterative() {fDoIterative = kTRUE;}
a6008206 114 void SetWriteDigits() {fWriteDigits = kTRUE;}
b2a02bce 115 void SetTransformerParams(Float_t ptres=0,Float_t ptmin=0,Float_t ptmax=0,Int_t ny=0,Int_t patch=-1);
116 //{fPtRes=ptres;fNBinY=ny;fLowPt=ptmin;fUpperPt=ptmax;fPhi=psi;}
117 void SetTransformerParams(Int_t nx,Int_t ny,Float_t lpt,Int_t patch);
118 void SetTransformerParams(Int_t nx,Int_t ny,Float_t lpt,Float_t phi);
119 //{fNBinX=nx;fNBinY=ny;fLowPt=lpt;fPhi=phi;}
120 void SetThreshold(Int_t t=3,Int_t patch=-1);
636080ea 121 void SetNSaveIterations(Int_t t=10) {fNSaveIterations=t;}
b2a02bce 122 void SetPeakThreshold(Int_t threshold=0,Int_t patch=-1);
3e87ef69 123
5a31e9df 124 void SetPeakParameters(Int_t kspread,Float_t pratio) {fKappaSpread=kspread; fPeakRatio=pratio;}
125
4fc9a6a4 126 //Getters
237d3f5c 127 AliL3HoughBaseTransformer *GetTransformer(Int_t i) {if(!fHoughTransformer[i]) return 0; return fHoughTransformer[i];}
b1886074 128 AliL3TrackArray *GetTracks(Int_t i) {if(!fTracks[i]) return 0; return fTracks[i];}
129 AliL3HoughEval *GetEval(Int_t i) {if(!fEval[i]) return 0; return fEval[i];}
130 AliL3HoughMerger *GetMerger() {if(!fMerger) return 0; return fMerger;}
131 AliL3HoughIntMerger *GetInterMerger() {if(!fInterMerger) return 0; return fInterMerger;}
95a00d93 132 AliL3MemHandler *GetMemHandler(Int_t i) {if(!fMemHandler[i]) return 0; return fMemHandler[i];}
208b54c5 133 AliL3HoughMaxFinder *GetMaxFinder() {return fPeakFinder;}
f000f8a5 134
b1886074 135 ClassDef(AliL3Hough,1) //Hough transform base class
f000f8a5 136};
137
138#endif
6dbc57b4 139
140
141
142
143
144
145