]> git.uio.no Git - u/mrichter/AliRoot.git/blame - HLT/TPCLib/Ref/AliHLTTPCModeller.h
Added a Makefile with rules for component libraries conforming to the
[u/mrichter/AliRoot.git] / HLT / TPCLib / Ref / AliHLTTPCModeller.h
CommitLineData
78001a73 1// @(#) $Id$
2
3#ifndef AliHLTTPC_Modeller
4#define AliHLTTPC_Modeller
5
6
7#include "AliHLTTPCRootTypes.h"
8
9class AliHLTTPCTrackArray;
10class AliHLTTPCMemHandler;
11class AliHLTTPCDigitRowData;
12class AliHLTTPCModelTrack;
13
14struct Cluster {
15 UInt_t fCharge;
16 UInt_t fPad;
17 UInt_t fTime;
18 UInt_t fSigmaY2;
19 UInt_t fSigmaZ2;
20};
21
22struct Digit {
23 Short_t fCharge;
24 Bool_t fUsed;
25};
26
27struct ClusterRegion {
28 Int_t mintime;
29 Int_t maxtime;
30};
31
32class AliHLTTPCModeller {
33
34 private:
35 Bool_t fHoughTracks;
36 Bool_t CheckCluster(Int_t hitpad,Int_t hittime);
37 Float_t fPadOverlap;
38 Float_t fTimeOverlap;
39 Int_t fTrackThreshold; //minimum weigth track need in order to be included.(=Nhits/weight)
40 AliHLTTPCMemHandler *fMemHandler; //!
41
42 void CalcClusterWidth(Cluster *cl,Float_t &sigmaY2,Float_t &sigmaZ2);
43
44 protected:
45
46 AliHLTTPCTrackArray *fTracks; //!
47 AliHLTTPCDigitRowData *fRowData;//!
48 Digit *fRow; //!
49 Char_t fPath[1024];
50
51 Bool_t fDebug;
52 Int_t fNClusters;
53 Int_t fMaxClusters;
54 Int_t fCurrentPadRow;
55 Int_t fMaxPads;
56 Int_t fMaxTimebins;
57 Int_t fPadSearch;
58 Int_t fTimeSearch;
59 Int_t fInnerPadSearch;
60 Int_t fInnerTimeSearch;
61 Int_t fOuterPadSearch;
62 Int_t fOuterTimeSearch;
63
64 Int_t fSlice;
65 Int_t fPatch;
66
67 void FillCluster(AliHLTTPCModelTrack *track,Cluster *cluster,Int_t row,Int_t npads);
68 void FillZeros(AliHLTTPCDigitRowData *digPt,Bool_t reversesign=kFALSE);
69 void LocateCluster(AliHLTTPCModelTrack *track,ClusterRegion *region,Int_t &padmin,Int_t &padmax);
70 void GetTrackID(Int_t pad,Int_t time,Int_t *trackID);
71
72 public:
73
74 AliHLTTPCModeller();
75 virtual ~AliHLTTPCModeller();
76
77 virtual void FindClusters();
78 void Init(Int_t slice,Int_t patch,Char_t *trackdata,Char_t *path,Bool_t houghtracks,Bool_t binary=kTRUE);
79 void CheckForOverlaps(Float_t dangle=-1,Int_t *rowrange=0);
80 void CalculateCrossingPoints();
81 void RemoveBadTracks();
82 void WriteRemaining();
83
84 void SetInputData(AliHLTTPCDigitRowData *digits) {fRowData = digits;}
85 void SetTrackThreshold(Int_t i=0) {fTrackThreshold=i;}
86 void SetOverlap(Int_t p=6,Int_t t=8) {fPadOverlap=p;fTimeOverlap=t;}
87 void SetSearchRange(Int_t p=1,Int_t t=2) {fPadSearch=p;fTimeSearch=t;}
88 void SetInnerSearchRange(Int_t p,Int_t t) {fInnerPadSearch=p; fInnerTimeSearch=t;}
89 void SetOuterSearchRange(Int_t p,Int_t t) {fOuterPadSearch=p; fOuterTimeSearch=t;}
90 void SetMaxClusterRange(Int_t p,Int_t t) {fMaxPads=p; fMaxTimebins=t;}
91 void Debug() {fDebug=kTRUE;}
92 virtual void SetFitRange(Int_t p,Int_t t) {return;}
93 virtual void SetNmaxOverlaps(Int_t i) {return;}
94 virtual void SetChiSqMax(Float_t f) {return;}
95
96 AliHLTTPCTrackArray *GetTracks() {return fTracks;}
97
98 ClassDef(AliHLTTPCModeller,1) //Modeller class
99
100};
101
102#endif