]>
Commit | Line | Data |
---|---|---|
3e87ef69 | 1 | // @(#) $Id$ |
2 | ||
4aa41877 | 3 | #ifndef AliHLT_Modeller |
4 | #define AliHLT_Modeller | |
735e167e | 5 | |
6 | ||
4aa41877 | 7 | #include "AliHLTRootTypes.h" |
735e167e | 8 | |
4aa41877 | 9 | class AliHLTTrackArray; |
10 | class AliHLTMemHandler; | |
11 | class AliHLTDigitRowData; | |
12 | class AliHLTModelTrack; | |
735e167e | 13 | |
14 | struct Cluster { | |
b4686276 | 15 | UInt_t fCharge; // Charge |
16 | UInt_t fPad; // Pad | |
17 | UInt_t fTime; // Time | |
18 | UInt_t fSigmaY2; // SigmaY2 | |
19 | UInt_t fSigmaZ2; // SigmaZ2 | |
735e167e | 20 | }; |
21 | ||
22 | struct Digit { | |
b4686276 | 23 | Short_t fCharge; // Charge |
24 | Bool_t fUsed; // Flag if used | |
735e167e | 25 | }; |
26 | ||
3e87ef69 | 27 | struct ClusterRegion { |
b4686276 | 28 | Int_t fMintime; // Min time |
29 | Int_t fMaxtime; // Max time | |
3e87ef69 | 30 | }; |
31 | ||
4aa41877 | 32 | class AliHLTModeller { |
735e167e | 33 | |
735e167e | 34 | public: |
35 | ||
4aa41877 | 36 | AliHLTModeller(); |
37 | virtual ~AliHLTModeller(); | |
735e167e | 38 | |
3e87ef69 | 39 | virtual void FindClusters(); |
8487f697 | 40 | void Init(Int_t slice,Int_t patch,Char_t *trackdata,Char_t *path,Bool_t houghtracks,Bool_t binary=kTRUE); |
3e87ef69 | 41 | void CheckForOverlaps(Float_t dangle=-1,Int_t *rowrange=0); |
735e167e | 42 | void CalculateCrossingPoints(); |
3e87ef69 | 43 | void RemoveBadTracks(); |
be6ddb10 | 44 | void WriteRemaining(); |
95a00d93 | 45 | |
4aa41877 | 46 | void SetInputData(AliHLTDigitRowData *digits) {fRowData = digits;} |
2357bb38 | 47 | void SetTrackThreshold(Int_t i=0) {fTrackThreshold=i;} |
48 | void SetOverlap(Int_t p=6,Int_t t=8) {fPadOverlap=p;fTimeOverlap=t;} | |
f64c4364 | 49 | void SetSearchRange(Int_t p=1,Int_t t=2) {fPadSearch=p;fTimeSearch=t;} |
3e87ef69 | 50 | void SetInnerSearchRange(Int_t p,Int_t t) {fInnerPadSearch=p; fInnerTimeSearch=t;} |
51 | void SetOuterSearchRange(Int_t p,Int_t t) {fOuterPadSearch=p; fOuterTimeSearch=t;} | |
52 | void SetMaxClusterRange(Int_t p,Int_t t) {fMaxPads=p; fMaxTimebins=t;} | |
53 | void Debug() {fDebug=kTRUE;} | |
4aa41877 | 54 | virtual Bool_t SetFitRange(AliHLTModelTrack */*track*/,Int_t */*p*/,Int_t */*t*/) {return kFALSE;} |
dd7d3870 | 55 | virtual void SetNmaxOverlaps(Int_t /*i*/) {return;} |
72d03b2f | 56 | virtual void SetChiSqMax(Float_t /*f*/,Int_t /*p*/) {return;} |
3e87ef69 | 57 | |
4aa41877 | 58 | AliHLTTrackArray *GetTracks() {return fTracks;} |
735e167e | 59 | |
b4686276 | 60 | protected: |
61 | ||
4aa41877 | 62 | AliHLTTrackArray *fTracks; //! Array of tracks |
63 | AliHLTDigitRowData *fRowData;//! Row data | |
b4686276 | 64 | Digit *fRow; //! Current row |
65 | Char_t fPath[1024]; // Path to the files | |
66 | ||
67 | Bool_t fDebug; // Flag to switch on/off the debugging | |
68 | Int_t fNClusters; // Number of clusters | |
69 | Int_t fMaxClusters; // Max clusters (?) | |
70 | Int_t fCurrentPadRow; // Current pad row | |
71 | Int_t fMaxPads; // Max pads (?) | |
72 | Int_t fMaxTimebins; // Max time bins (?) | |
73 | Int_t fPadSearch; // Pad search (?) | |
74 | Int_t fTimeSearch; // Time search (?) | |
75 | Int_t fInnerPadSearch; // Inner pad search (?) | |
76 | Int_t fInnerTimeSearch; // Inner time search (?) | |
77 | Int_t fOuterPadSearch; // Outer Pad search (?) | |
78 | Int_t fOuterTimeSearch; // Outer time search (?) | |
79 | ||
80 | Int_t fSlice; // Slice | |
81 | Int_t fPatch; // Patch | |
82 | ||
4aa41877 | 83 | void FillCluster(AliHLTModelTrack *track,Cluster *cluster,Int_t row,Int_t npads); |
84 | void FillZeros(AliHLTDigitRowData *digPt,Bool_t reversesign=kFALSE); | |
85 | void LocateCluster(AliHLTModelTrack *track,ClusterRegion *region,Int_t &padmin,Int_t &padmax); | |
b4686276 | 86 | void GetTrackID(Int_t pad,Int_t time,Int_t *trackID); |
87 | ||
88 | private: | |
89 | Bool_t fHoughTracks; // Flag to switch on/off Hough tracks | |
90 | Bool_t CheckCluster(Int_t hitpad,Int_t hittime); | |
91 | Float_t fPadOverlap; // Pad overlap (?) | |
92 | Float_t fTimeOverlap; // Time overlap (?) | |
93 | Int_t fTrackThreshold; //minimum weigth track need in order to be included.(=Nhits/weight) | |
4aa41877 | 94 | AliHLTMemHandler *fMemHandler; //! Pointer to the memory handler |
b4686276 | 95 | |
96 | void CalcClusterWidth(Cluster *cl,Float_t &sigmaY2,Float_t &sigmaZ2); | |
97 | ||
4aa41877 | 98 | ClassDef(AliHLTModeller,1) //Modeller class |
735e167e | 99 | |
100 | }; | |
101 | ||
4aa41877 | 102 | typedef AliHLTModeller AliL3Modeller; // for backward compatibility |
103 | ||
735e167e | 104 | #endif |