]> git.uio.no Git - u/mrichter/AliRoot.git/blob - HLT/TPCLib/AliHLTTPCClusterFinder.h
- parameter protection in the TPC raw reader class
[u/mrichter/AliRoot.git] / HLT / TPCLib / AliHLTTPCClusterFinder.h
1 // @(#) $Id$
2 // Original: AliL3ClustFinderNew.h,v 1.13 2004/06/18 10:55:26 loizides 
3
4 #ifndef AliHLTTPC_ClusterFinder
5 #define AliHLTTPC_ClusterFinder
6
7 #include "AliHLTLogging.h"
8
9 class AliHLTTPCSpacePointData;
10 class AliHLTTPCDigitReader;
11
12 class AliHLTTPCClusterFinder : public AliHLTLogging {
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
50   /** threshold for zero suppression (applied per bin) */
51   Int_t fSignalThreshold;
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
56
57 #ifdef do_mc
58   void GetTrackID(Int_t pad,Int_t time,Int_t *trackID);
59 #endif
60   
61  public:
62   /** standard constructor */
63   AliHLTTPCClusterFinder();
64   /** not a valid copy constructor, defined according to effective C++ style */
65   AliHLTTPCClusterFinder(const AliHLTTPCClusterFinder&);
66   /** not a valid assignment op, but defined according to effective C++ style */
67   AliHLTTPCClusterFinder& operator=(const AliHLTTPCClusterFinder&);
68   /** destructor */
69   virtual ~AliHLTTPCClusterFinder();
70
71   void Read(void* ptr,unsigned long size);
72
73   void InitSlice(Int_t slice,Int_t patch,Int_t firstrow, Int_t lastrow,Int_t maxpoints);
74   void InitSlice(Int_t slice,Int_t patch,Int_t maxpoints);
75   void ProcessDigits();
76
77   void SetOutputArray(AliHLTTPCSpacePointData *pt);
78   void WriteClusters(Int_t n_clusters,AliClusterData *list);
79
80   void SetXYError(Float_t f) {fXYErr=f;}
81   void SetZError(Float_t f) {fZErr=f;}
82   void SetDeconv(Bool_t f) {fDeconvPad=f; fDeconvTime=f;}
83   void SetThreshold(UInt_t i) {fThreshold=i;}
84   void SetSignalThreshold(Int_t i) {fSignalThreshold=i;}
85   void SetMatchWidth(UInt_t i) {fMatch=i;}
86   void SetSTDOutput(Bool_t f=kFALSE) {fStdout=f;}  
87   void SetCalcErr(Bool_t f=kTRUE) {fCalcerr=f;}
88   void SetRawSP(Bool_t f=kFALSE) {fRawSP=f;}
89   void SetReader(AliHLTTPCDigitReader* f){fDigitReader = f;}
90   Int_t GetNumberOfClusters() const {return fNClusters;}
91   
92   ClassDef(AliHLTTPCClusterFinder,0) //Fast cluster finder
93 };
94 #endif