-#ifndef ALIL3_HOUGHTRANSFORMER
-#define ALIL3_HOUGHTRANSFORMER
+// @(#) $Id$
+
+#ifndef ALIL3HOUGHTRANSFORMER_H
+#define ALIL3HOUGHTRANSFORMER_H
+
+//-------------------------------------------------------------------------
+// Class AliL3HoughTransformer
+// This is one of the possible implementations of the Hough Transform
+// TPC tracking algorithms for HLT.
+//-------------------------------------------------------------------------
#include "AliL3RootTypes.h"
#include "AliL3HoughBaseTransformer.h"
class AliL3Histogram;
class AliL3HoughTransformer : public AliL3HoughBaseTransformer {
-
- private:
-
- AliL3Histogram **fParamSpace; //!
-#ifdef do_mc
- TrackIndex **fTrackID; //!
-#endif
- Bool_t fDoMC;
- void DeleteHistograms();
public:
AliL3HoughTransformer();
- AliL3HoughTransformer(Int_t slice,Int_t patch,Int_t n_eta_segments);
+ AliL3HoughTransformer(Int_t slice,Int_t patch,Int_t netasegments,Bool_t DoEtaOverlap=kFALSE,Bool_t DoMC=kFALSE);
virtual ~AliL3HoughTransformer();
- void CreateHistograms(Int_t nxbin,Double_t ptmin,Int_t nybin,Double_t phimin,Double_t phimax);
- void CreateHistograms(Int_t nxbin,Double_t xmin,Double_t xmax,
- Int_t nybin,Double_t ymin,Double_t ymax);
+ void CreateHistograms(Float_t ptmin,Float_t ptmax,Float_t ptres,Int_t nybin,Float_t psi);
+ void CreateHistograms(Int_t nxbin,Float_t ptmin,Int_t nybin,Float_t phimin,Float_t phimax);
+ void CreateHistograms(Int_t nxbin,Float_t xmin,Float_t xmax,
+ Int_t nybin,Float_t ymin,Float_t ymax);
void Reset();
void TransformCircle();
- void TransformCircleC(Int_t row_range);
- void TransformLine();
-
- Int_t GetEtaIndex(Double_t eta);
- AliL3Histogram *GetHistogram(Int_t eta_index);
- Double_t GetEta(Int_t eta_index,Int_t slice);
- Int_t GetTrackID(Int_t eta_index,Double_t kappa,Double_t psi);
+ void TransformCircleC(Int_t *rowrange,Int_t every=1);
+ void TransformLine(Int_t *rowrange=0,Float_t *phirange=0);
+ void TransformLineC(Int_t *rowrange,Float_t *phirange);
+
+ Int_t GetEtaIndex(Double_t eta) const;
+ void GetEtaIndexes(Double_t eta,Int_t *indexes) const;
+ AliL3Histogram *GetHistogram(Int_t etaindex);
+ Double_t GetEta(Int_t etaindex,Int_t slice) const;
+ Int_t GetTrackID(Int_t etaindex,Double_t kappa,Double_t psi) const;
+
+ private:
- //void Init(Int_t slice=0,Int_t patch=0,Int_t n_eta_segments=100);
+ AliL3Histogram **fParamSpace; //!
+#ifdef do_mc
+ AliL3TrackIndex **fTrackID; //!
+#endif
+ Bool_t fDoMC; // Calculate mc labels or not
+ Bool_t fEtaOverlap; // Allow overlapping of eta slice or not
+ void DeleteHistograms();
+
ClassDef(AliL3HoughTransformer,1) //Normal Hough transformation class
};