Solved bug to not merge clusters on the same pad.
[u/mrichter/AliRoot.git] / HLT / src / AliL3ClustFinderNew.h
CommitLineData
46fbeb8a 1#ifndef AliL3_ClustFinderNew
2#define AliL3_ClustFinderNew
3
4#include "AliL3RootTypes.h"
5
6
7struct ClusterData
8{
46fbeb8a 9 UInt_t fTotalCharge;
10 UInt_t fPad;
11 UInt_t fTime;
c3dd27a3 12 UInt_t fPad2; //for error in XY direction
13 UInt_t fTime2; //for error in Z direction
46fbeb8a 14 UInt_t fMean;
15 UInt_t fFlags;
99a6d5c9 16 UInt_t fChargeFalling; //for deconvolution
17 UInt_t fLastCharge; //for deconvolution
b62fa469 18 UInt_t fLastMergedPad; //dont merge twice per pad
46fbeb8a 19};
20typedef struct ClusterData ClusterData;
21
22class AliL3DigitRowData;
46fbeb8a 23class AliL3SpacePointData;
24
25class AliL3ClustFinderNew {
26
27 private:
28
29 AliL3DigitRowData *fDigitRowData; //!
46fbeb8a 30 AliL3SpacePointData *fSpacePointData; //!
99a6d5c9 31 Bool_t fDeconvTime;
32 Bool_t fDeconvPad;
c3dd27a3 33 Bool_t fstdout;
34 Bool_t fcalcerr;
35
46fbeb8a 36 UInt_t fNDigitRowData;
37 Int_t fFirstRow;
38 Int_t fLastRow;
39 Int_t fCurrentRow;
40 Int_t fCurrentSlice;
41 Int_t fCurrentPatch;
42 Int_t fMatch;
43 UInt_t fThreshold;
44 Int_t fNClusters;
45 Int_t fMaxNClusters;
46 Float_t fXYErr;
47 Float_t fZErr;
10f815d9 48
49#ifdef do_mc
50 void GetTrackID(Int_t pad,Int_t time,Int_t *trackID);
51#endif
46fbeb8a 52
53 public:
54 AliL3ClustFinderNew();
46fbeb8a 55 virtual ~AliL3ClustFinderNew();
56
57 void Read(UInt_t ndigits,AliL3DigitRowData *ptr);
58 void InitSlice(Int_t slice,Int_t patch,Int_t firstrow, Int_t lastrow,Int_t maxpoints);
59 void InitSlice(Int_t slice,Int_t patch,Int_t maxpoints);
60 void ProcessDigits();
61 void ProcessRow(AliL3DigitRowData *tempPt);
62 void SetOutputArray(AliL3SpacePointData *pt);
63 void WriteClusters(Int_t n_clusters,ClusterData *list);
64
77f08cd3 65 void SetXYError(Float_t f) {fXYErr=f;}
66 void SetZError(Float_t f) {fZErr=f;}
4ec96209 67 void SetDeconv(Bool_t f) {fDeconvPad=f; fDeconvTime=f;}
77f08cd3 68 void SetThreshold(UInt_t i) {fThreshold=i;}
69 void SetMatchWidth(UInt_t i) {fMatch=i;}
70 void SetSTDOutput(Bool_t f=kFALSE) {fstdout=f;}
c3dd27a3 71 void SetCalcErr(Bool_t f=kTRUE) {fcalcerr=f;}
77f08cd3 72
46fbeb8a 73 Int_t GetNumberOfClusters() {return fNClusters;}
74
b661165c 75 ClassDef(AliL3ClustFinderNew,1) //Fast cluster finder
46fbeb8a 76
77};
78
79#endif
b62fa469 80
81