]>
Commit | Line | Data |
---|---|---|
1 | // @(#) $Id$ | |
2 | ||
3 | #ifndef AliL3_ClustFinderNew | |
4 | #define AliL3_ClustFinderNew | |
5 | ||
6 | #include "AliL3RootTypes.h" | |
7 | ||
8 | ||
9 | struct ClusterData | |
10 | { | |
11 | UInt_t fTotalCharge; | |
12 | UInt_t fPad; | |
13 | UInt_t fTime; | |
14 | UInt_t fPad2; //for error in XY direction | |
15 | ULong64_t fTime2; //for error in Z direction | |
16 | UInt_t fMean; | |
17 | UInt_t fFlags; | |
18 | UInt_t fChargeFalling; //for deconvolution | |
19 | UInt_t fLastCharge; //for deconvolution | |
20 | UInt_t fLastMergedPad; //dont merge twice per pad | |
21 | }; | |
22 | typedef struct ClusterData ClusterData; | |
23 | ||
24 | class AliL3DigitRowData; | |
25 | class AliL3SpacePointData; | |
26 | ||
27 | class AliL3ClustFinderNew { | |
28 | ||
29 | private: | |
30 | ||
31 | AliL3DigitRowData *fDigitRowData; //! | |
32 | AliL3SpacePointData *fSpacePointData; //! | |
33 | Bool_t fDeconvTime; //deconv in time direction | |
34 | Bool_t fDeconvPad; //deconv in pad direction | |
35 | Bool_t fStdout; //have print out in write clusters | |
36 | Bool_t fCalcerr; //calculate centroid sigmas | |
37 | Bool_t fRawSP; //store centroids in raw system | |
38 | ||
39 | UInt_t fNDigitRowData; | |
40 | Int_t fFirstRow; | |
41 | Int_t fLastRow; | |
42 | Int_t fCurrentRow; | |
43 | Int_t fCurrentSlice; | |
44 | Int_t fCurrentPatch; | |
45 | Int_t fMatch; | |
46 | UInt_t fThreshold; | |
47 | Int_t fNClusters; | |
48 | Int_t fMaxNClusters; | |
49 | Float_t fXYErr; | |
50 | Float_t fZErr; | |
51 | ||
52 | #ifdef do_mc | |
53 | void GetTrackID(Int_t pad,Int_t time,Int_t *trackID); | |
54 | #endif | |
55 | ||
56 | public: | |
57 | AliL3ClustFinderNew(); | |
58 | virtual ~AliL3ClustFinderNew(); | |
59 | ||
60 | void Read(UInt_t ndigits,AliL3DigitRowData *ptr); | |
61 | void InitSlice(Int_t slice,Int_t patch,Int_t firstrow, Int_t lastrow,Int_t maxpoints); | |
62 | void InitSlice(Int_t slice,Int_t patch,Int_t maxpoints); | |
63 | void ProcessDigits(); | |
64 | void ProcessRow(AliL3DigitRowData *tempPt); | |
65 | void SetOutputArray(AliL3SpacePointData *pt); | |
66 | void WriteClusters(Int_t n_clusters,ClusterData *list); | |
67 | ||
68 | void SetXYError(Float_t f) {fXYErr=f;} | |
69 | void SetZError(Float_t f) {fZErr=f;} | |
70 | void SetDeconv(Bool_t f) {fDeconvPad=f; fDeconvTime=f;} | |
71 | void SetThreshold(UInt_t i) {fThreshold=i;} | |
72 | void SetMatchWidth(UInt_t i) {fMatch=i;} | |
73 | void SetSTDOutput(Bool_t f=kFALSE) {fStdout=f;} | |
74 | void SetCalcErr(Bool_t f=kTRUE) {fCalcerr=f;} | |
75 | void SetRawSP(Bool_t f=kFALSE) {fRawSP=f;} | |
76 | Int_t GetNumberOfClusters() {return fNClusters;} | |
77 | ||
78 | ClassDef(AliL3ClustFinderNew,1) //Fast cluster finder | |
79 | ||
80 | }; | |
81 | ||
82 | #endif | |
83 | ||
84 |