#include "AliL3RootTypes.h"
class AliL3HoughMaxFinder;
-class AliL3HoughTransformer;
+class AliL3HoughBaseTransformer;
class AliL3Histogram;
+class AliL3MemHandler;
class AliL3FileHandler;
class AliL3HoughEval;
-class AliL3Transform;
class AliL3TrackArray;
-class TFile;
+class AliL3HoughMerger;
+class AliL3HoughIntMerger;
+class AliL3HoughGlobalMerger;
-class AliL3Hough : public TObject {
+class AliL3Hough {
private:
Char_t fPath[256];
Bool_t fBinary;
+ Bool_t fAddHistograms;
+ Bool_t fDoIterative;
+ Bool_t fWriteDigits;
+ Bool_t fUse8bits;
Int_t fNEtaSegments;
- AliL3FileHandler **fMemHandler; //!
- AliL3HoughTransformer **fHoughTransformer; //!
- TFile *fRootFile; //!
+ Int_t fNPatches;
+ Int_t fVersion; //which HoughTransformer to use
+ Int_t fCurrentSlice;
- void DeleteTransformers();
- void DeleteMemory();
- void Init();
+ Float_t fLowPt;
+ Float_t fPhi;
+ Int_t fNBinX;
+ Int_t fNBinY;
+ Int_t fThreshold;
+ Int_t fNSaveIterations; //for HoughtransformerVhld
+
+ AliL3MemHandler **fMemHandler; //!
+ AliL3HoughBaseTransformer **fHoughTransformer; //!
+ AliL3HoughEval **fEval; //!
+ AliL3HoughMaxFinder *fPeakFinder; //!
+ AliL3TrackArray **fTracks; //!
+ AliL3HoughMerger *fMerger; //!
+ AliL3HoughIntMerger *fInterMerger; //!
+ AliL3HoughGlobalMerger *fGlobalMerger; //!
+
+ void CleanUp();
+ Double_t GetCpuTime();
public:
AliL3Hough();
- AliL3Hough(Char_t *path,Bool_t binary,Int_t n_eta_segments=100);
+ AliL3Hough(Char_t *path,Bool_t binary,Int_t n_eta_segments=100,Bool_t bit8=kFALSE,Int_t tv=0);
virtual ~AliL3Hough();
- void TransformSlice(Int_t slice);
- AliL3Histogram *AddHistograms();
- void Evaluate(AliL3Histogram *hist);
+ void Init(Char_t *path,Bool_t binary,Int_t n_eta_segments=100,Bool_t bit8=kFALSE,Int_t tv=0);
+ void Init(Bool_t doit=kFALSE, Bool_t addhists=kFALSE);
+ void Process(Int_t minslice,Int_t maxslice);
+ void ReadData(Int_t slice,Int_t eventnr=0);
+ void Transform(Int_t row_range = -1);
+ void ProcessSliceIter();
+ void ProcessPatchIter(Int_t patch);
+ void MergePatches();
+ void MergeInternally();
+ void MergeEtaSlices();
+
+ void FindTrackCandidates();
+ void AddAllHistograms();
+ Int_t Evaluate(Int_t road_width=1,Int_t nrowstomiss=1);
+ void EvaluatePatch(Int_t i,Int_t road_width,Int_t nrowstomiss);
+ void WriteTracks(Int_t slice,Char_t *path="./");
+ void WriteDigits(Char_t *outfile="output_digits.root");
+ void InitEvaluate();
+
//Setters
void SetNEtaSegments(Int_t i) {fNEtaSegments = i;}
-
- //Getters
- AliL3HoughTransformer *GetTransformer(Int_t i) {if(!fHoughTransformer[i]) return 0; return fHoughTransformer[i];}
+ void SetAddHistograms() {fAddHistograms = kTRUE;}
+ void DoIterative() {fDoIterative = kTRUE;}
+ void SetWriteDigits() {fWriteDigits = kTRUE;}
+ void SetTransformerParams(Int_t nx=64, Int_t ny=64,Float_t lpt=0.1,Float_t phi=30) {fNBinX=nx;fNBinY=ny;fLowPt=lpt;fPhi=phi;}
+ void SetThreshold(Int_t t=3) {fThreshold=t;}
+ void SetNSaveIterations(Int_t t=10) {fNSaveIterations=t;}
- ClassDef(AliL3Hough,1)
+ //Getters
+ AliL3HoughBaseTransformer *GetTransformer(Int_t i) {if(!fHoughTransformer[i]) return 0; return fHoughTransformer[i];}
+ AliL3TrackArray *GetTracks(Int_t i) {if(!fTracks[i]) return 0; return fTracks[i];}
+ AliL3HoughEval *GetEval(Int_t i) {if(!fEval[i]) return 0; return fEval[i];}
+ AliL3HoughMerger *GetMerger() {if(!fMerger) return 0; return fMerger;}
+ AliL3HoughIntMerger *GetInterMerger() {if(!fInterMerger) return 0; return fInterMerger;}
+ AliL3MemHandler *GetMemHandler(Int_t i) {if(!fMemHandler[i]) return 0; return fMemHandler[i];}
+ AliL3HoughMaxFinder *GetMaxFinder() {return fPeakFinder;}
+ ClassDef(AliL3Hough,1) //Hough transform base class
};
#endif
+
+
+
+
+
+
+