]> git.uio.no Git - u/mrichter/AliRoot.git/blame - HLT/TPCLib/AliHLTTPCClusterFinder.h
- configure adapted to the new directory structure of the HOMER module in PubSub
[u/mrichter/AliRoot.git] / HLT / TPCLib / AliHLTTPCClusterFinder.h
CommitLineData
a38a7850 1// @(#) $Id$
c2f37813 2// Original: AliL3ClustFinderNew.h,v 1.13 2004/06/18 10:55:26 loizides
a38a7850 3
4#ifndef AliHLTTPC_ClusterFinder
5#define AliHLTTPC_ClusterFinder
6
46b33a24 7#include "AliHLTLogging.h"
8
a38a7850 9class AliHLTTPCSpacePointData;
10class AliHLTTPCDigitReader;
11
46b33a24 12class AliHLTTPCClusterFinder : public AliHLTLogging {
a38a7850 13
14 public:
15 struct AliClusterData
16 {
17 UInt_t fTotalCharge; //tot charge of cluster
18 UInt_t fPad; //pad value
19 UInt_t fTime; //time value
20 ULong64_t fPad2; //for error in XY direction
21 ULong64_t fTime2; //for error in Z direction
22 UInt_t fMean; //mean in time
23 UInt_t fFlags; //different flags
24 UInt_t fChargeFalling; //for deconvolution
25 UInt_t fLastCharge; //for deconvolution
26 UInt_t fLastMergedPad; //dont merge twice per pad
27 };
28 typedef struct AliClusterData AliClusterData; //!
29
30 private:
31 AliHLTTPCSpacePointData *fSpacePointData; //!
32 AliHLTTPCDigitReader *fDigitReader;
33
34 UChar_t* fPtr; //pointer to packed block
35 unsigned long fSize; //packed block size
36 Bool_t fDeconvTime; //deconv in time direction
37 Bool_t fDeconvPad; //deconv in pad direction
38 Bool_t fStdout; //have print out in write clusters
39 Bool_t fCalcerr; //calculate centroid sigmas
40 Bool_t fRawSP; //store centroids in raw system
41
42
43 Int_t fFirstRow; //first row
44 Int_t fLastRow; //last row
45 Int_t fCurrentRow; //current active row
46 Int_t fCurrentSlice; //current slice
47 Int_t fCurrentPatch; //current patch
48 Int_t fMatch; //size of match
49 UInt_t fThreshold; //threshold for clusters
84645eb0 50 /** threshold for zero suppression (applied per bin) */
51 Int_t fSignalThreshold;
a38a7850 52 Int_t fNClusters; //number of found clusters
53 Int_t fMaxNClusters; //max. number of clusters
54 Float_t fXYErr; //fixed error in XY
55 Float_t fZErr; //fixed error in Z
5235c3e9 56
57 Float_t fOccupancyLimit; // Occupancy Limit
58
a38a7850 59
60#ifdef do_mc
61 void GetTrackID(Int_t pad,Int_t time,Int_t *trackID);
62#endif
63
64 public:
46b33a24 65 /** standard constructor */
a38a7850 66 AliHLTTPCClusterFinder();
46b33a24 67 /** not a valid copy constructor, defined according to effective C++ style */
68 AliHLTTPCClusterFinder(const AliHLTTPCClusterFinder&);
69 /** not a valid assignment op, but defined according to effective C++ style */
70 AliHLTTPCClusterFinder& operator=(const AliHLTTPCClusterFinder&);
71 /** destructor */
a38a7850 72 virtual ~AliHLTTPCClusterFinder();
73
74 void Read(void* ptr,unsigned long size);
75
76 void InitSlice(Int_t slice,Int_t patch,Int_t firstrow, Int_t lastrow,Int_t maxpoints);
77 void InitSlice(Int_t slice,Int_t patch,Int_t maxpoints);
78 void ProcessDigits();
79
80 void SetOutputArray(AliHLTTPCSpacePointData *pt);
81 void WriteClusters(Int_t n_clusters,AliClusterData *list);
82
83 void SetXYError(Float_t f) {fXYErr=f;}
84 void SetZError(Float_t f) {fZErr=f;}
85 void SetDeconv(Bool_t f) {fDeconvPad=f; fDeconvTime=f;}
86 void SetThreshold(UInt_t i) {fThreshold=i;}
5235c3e9 87 void SetOccupancyLimit(Float_t f) {fOccupancyLimit=f;}
84645eb0 88 void SetSignalThreshold(Int_t i) {fSignalThreshold=i;}
a38a7850 89 void SetMatchWidth(UInt_t i) {fMatch=i;}
90 void SetSTDOutput(Bool_t f=kFALSE) {fStdout=f;}
91 void SetCalcErr(Bool_t f=kTRUE) {fCalcerr=f;}
92 void SetRawSP(Bool_t f=kFALSE) {fRawSP=f;}
93 void SetReader(AliHLTTPCDigitReader* f){fDigitReader = f;}
94 Int_t GetNumberOfClusters() const {return fNClusters;}
95
db16520a 96 ClassDef(AliHLTTPCClusterFinder,0) //Fast cluster finder
a38a7850 97};
98#endif