Added support for NEWIO, merged cern-hlt tree, updated to latest track candidate...
[u/mrichter/AliRoot.git] / HLT / hough / AliL3HoughBaseTransformer.h
1 // @(#) $Id$
2
3 #ifndef ALIL3_HOUGHBASETRANSFORMER
4 #define ALIL3_HOUGHBASETRANSFORMER
5
6 #include "AliL3RootTypes.h"
7
8 #ifdef do_mc
9 const UInt_t MaxTrack=35;
10 struct TrackIndex {
11   Int_t fLabel[MaxTrack];
12   Int_t fNHits[MaxTrack];
13 };
14 typedef struct TrackIndex TrackIndex;
15 #endif
16
17 class AliL3DigitRowData;
18 class AliL3Histogram;
19
20 class AliL3HoughBaseTransformer {
21   
22  private:
23
24   Int_t fSlice;
25   Int_t fPatch;
26   Int_t fNEtaSegments;
27   Double_t fEtaMin;
28   Double_t fEtaMax;
29   Int_t fLowerThreshold;
30   Int_t fUpperThreshold;
31   
32   AliL3DigitRowData *fDigitRowData; //!
33   
34  public:
35
36   AliL3HoughBaseTransformer(); 
37   AliL3HoughBaseTransformer(Int_t slice,Int_t patch,Int_t n_eta_segments);
38   virtual ~AliL3HoughBaseTransformer();
39   
40   void SetInputData(UInt_t ndigits,AliL3DigitRowData *ptr) {fDigitRowData = ptr;}
41   
42   virtual void CreateHistograms(Float_t ptmin,Float_t ptmax,Float_t pres,Int_t nybin,Float_t psi) {return;}
43   virtual void CreateHistograms(Int_t nxbin,Float_t ptmin,Int_t nybin,Float_t phimin,Float_t phimax) = 0;
44   virtual void CreateHistograms(Int_t nxbin,Float_t xmin,Float_t xmax,Int_t nybin,Float_t ymin,Float_t ymax) = 0;
45   virtual void Reset() = 0;
46   virtual void TransformCircle() = 0;
47   virtual void TransformCircleC(Int_t *row_range,Int_t every=1) = 0;
48   virtual void TransformLine(Int_t *rowrange=0,Float_t *phirange=0) = 0;
49   
50   //Getters
51   Int_t GetSlice() {return fSlice;}
52   Int_t GetPatch() {return fPatch;}
53   Int_t GetNEtaSegments() {return fNEtaSegments;}
54   Int_t GetLowerThreshold() {return fLowerThreshold;}
55   Int_t GetUpperThreshold() {return fUpperThreshold;}
56   Double_t GetEtaMin() {return fEtaMin;}
57   Double_t GetEtaMax() {return fEtaMax;}
58   
59   AliL3DigitRowData *GetDataPointer() {return fDigitRowData;}
60  
61   virtual Int_t GetEtaIndex(Double_t eta) = 0;
62   virtual void GetEtaIndexes(Double_t eta,Int_t *indexes) {STDCERR<<"GetEtaIndexes not implemented for this Transformer class"<<STDENDL;}
63   virtual AliL3Histogram *GetHistogram(Int_t eta_index) = 0;
64   virtual Double_t GetEta(Int_t eta_index,Int_t slice) = 0;
65   virtual Int_t GetTrackID(Int_t eta_index,Double_t kappa,Double_t psi) {return -1;}
66   
67   //setters
68   virtual void Init(Int_t slice=0,Int_t patch=0,Int_t n_eta_segments=100,Int_t n_segs=-1);
69   void SetLowerThreshold(Int_t i) {fLowerThreshold = i;}
70   void SetUpperThreshold(Int_t i) {fUpperThreshold = i;}
71
72   virtual void Print(){};
73
74   ClassDef(AliL3HoughBaseTransformer,1) //Hough transformation base class
75
76 };
77
78
79 #endif
80