]> git.uio.no Git - u/mrichter/AliRoot.git/blame - HLT/hough/AliL3HoughBaseTransformer.h
Including St2 in the new geometry segmentation (Christian)
[u/mrichter/AliRoot.git] / HLT / hough / AliL3HoughBaseTransformer.h
CommitLineData
3e87ef69 1// @(#) $Id$
2
c62b480b 3#ifndef ALIL3HOUGHBASETRANSFORMER_H
4#define ALIL3HOUGHBASETRANSFORMER_H
c52cf5d8 5
6#include "AliL3RootTypes.h"
7
1eef4efc 8#ifdef do_mc
e81ffe36 9const UInt_t MaxTrack=120;
c62b480b 10struct AliL3TrackIndex {
11 Int_t fLabel[MaxTrack];//MC label
12 UChar_t fNHits[MaxTrack];//Number of different mc labels
13 UChar_t fCurrentRow[MaxTrack];//Index of the current row while filling Hough space
1eef4efc 14};
c62b480b 15typedef struct AliL3TrackIndex AliL3TrackIndex;
1eef4efc 16#endif
17
c52cf5d8 18class AliL3DigitRowData;
19class AliL3Histogram;
20
a8ffd46b 21#include "../RAW/AliTPCRawStream.h"
22
c52cf5d8 23class AliL3HoughBaseTransformer {
0bd0c1ef 24
c52cf5d8 25 public:
e06900d5 26
c52cf5d8 27 AliL3HoughBaseTransformer();
c62b480b 28 AliL3HoughBaseTransformer(Int_t slice,Int_t patch,Int_t netasegments,Float_t zvertex=0.0);
c52cf5d8 29 virtual ~AliL3HoughBaseTransformer();
30
0615a438 31 void SetInputData(UInt_t /*ndigits*/,AliL3DigitRowData *ptr) {fDigitRowData = ptr;}
c52cf5d8 32
1f1942b8 33 //this is for adaptave histograms
eb016424 34 virtual void CreateHistograms(Float_t /*ptmin*/,Float_t /*ptmax*/,Float_t /*pres*/,Int_t /*nybin*/,Float_t /*psi*/)
1f1942b8 35 {STDCERR<<"Adaptive histograms are not supported for this Transformer!"<<STDENDL;}
36
b2a02bce 37 virtual void CreateHistograms(Int_t nxbin,Float_t ptmin,Int_t nybin,Float_t phimin,Float_t phimax) = 0;
38 virtual void CreateHistograms(Int_t nxbin,Float_t xmin,Float_t xmax,Int_t nybin,Float_t ymin,Float_t ymax) = 0;
1f1942b8 39
c52cf5d8 40 virtual void Reset() = 0;
eb016424 41 virtual void TransformCircle()
1f1942b8 42 {STDCERR<<"TransformCircle is not defined for this transformer!"<<STDENDL;}
eb016424 43 virtual void TransformCircle(Int_t */*row_range*/,Int_t /*every*/)
1f1942b8 44 {STDCERR<<"TransformCircle is not defined for this transformer!"<<STDENDL;}
eb016424 45 virtual void TransformCircleC(Int_t */*row_range*/,Int_t /*every*/)
1f1942b8 46 {STDCERR<<"TransformCircleC is not defined for this transformer!"<<STDENDL;}
eb016424 47 virtual void TransformLine(Int_t */*rowrange*/=0,Float_t */*phirange*/=0)
1f1942b8 48 {STDCERR<<"TransformLine is not defined for this Transformer!"<<STDENDL;}
eb016424 49 virtual void TransformLineC(Int_t */*rowrange*/,Float_t */*phirange*/)
1f1942b8 50 {STDCERR<<"TransformLineC is not defined for this Transformer!"<<STDENDL;}
51
c52cf5d8 52 //Getters
974fb714 53 Int_t GetSlice() const {return fSlice;}
54 Int_t GetPatch() const {return fPatch;}
a8ffd46b 55 Int_t GetLastPatch() const {return fLastPatch;}
56 AliL3HoughBaseTransformer *GetLastTransfromer() const {return fLastTransformer;}
974fb714 57 Int_t GetNEtaSegments() const {return fNEtaSegments;}
58 Int_t GetLowerThreshold() const {return fLowerThreshold;}
59 Int_t GetUpperThreshold() const {return fUpperThreshold;}
60 Double_t GetEtaMin() const {return fEtaMin;}
61 Double_t GetEtaMax() const {return fEtaMax;}
62 Float_t GetZVertex() const {return fZVertex;}
0bd0c1ef 63
c52cf5d8 64 AliL3DigitRowData *GetDataPointer() {return fDigitRowData;}
65
bd2f8772 66 virtual Int_t GetEtaIndex(Double_t eta) const = 0;
c62b480b 67 virtual void GetEtaIndexes(Double_t /*eta*/,Int_t */*indexes*/) const
1f1942b8 68 {STDCERR<<"GetEtaIndexes not implemented for this Transformer class"<<STDENDL;}
c62b480b 69 virtual AliL3Histogram *GetHistogram(Int_t etaindex) = 0;
70 virtual Double_t GetEta(Int_t etaindex,Int_t slice) const = 0;
1f1942b8 71
c62b480b 72 virtual Int_t GetTrackID(Int_t /*etaindex*/,Double_t /*kappa*/,Double_t /*psi*/) const {
1f1942b8 73 STDCERR<<"GetTrackID not implemented for this Transformer class"<<STDENDL;
74 return -1;
75 }
1eef4efc 76
c52cf5d8 77 //setters
c62b480b 78 virtual void Init(Int_t slice=0,Int_t patch=0,Int_t netasegments=100,Int_t nsegs=-1);
3bb06991 79 void SetLowerThreshold(Int_t i) {fLowerThreshold = i;}
80 void SetUpperThreshold(Int_t i) {fUpperThreshold = i;}
a8ffd46b 81 void SetLastPatch(Int_t i) {fLastPatch = i;}
82 void SetLastTransformer(AliL3HoughBaseTransformer *transformer) {fLastTransformer = transformer;}
83
84 virtual void SetTPCRawStream(AliTPCRawStream */*rawstream*/){};
c52cf5d8 85
65ca0c00 86 virtual void Print(){};
a8ffd46b 87
88 protected:
89
90 AliL3HoughBaseTransformer *fLastTransformer;//Pointer to the previous hough transformer
c62b480b 91
92 private:
93
94 Int_t fSlice;//Index of the current slice being processed
95 Int_t fPatch;//Index of the current patch being processed
a8ffd46b 96 Int_t fLastPatch;//Index of the last processed patch
c62b480b 97 Int_t fNEtaSegments;//Number of eta slices
98 Double_t fEtaMin;//Minimum allowed eta
99 Double_t fEtaMax;//Maximum allowed eta
100 Int_t fLowerThreshold;//Lower threshold for digits amplitude
101 Int_t fUpperThreshold;//Upper threshold for digits amplitude
102
103 AliL3DigitRowData *fDigitRowData; //!
104
105 Float_t fZVertex;//Z position of the primary vertex
65ca0c00 106
c52cf5d8 107 ClassDef(AliL3HoughBaseTransformer,1) //Hough transformation base class
108
109};
110
111
112#endif
65ca0c00 113