]>
Commit | Line | Data |
---|---|---|
a38a7850 | 1 | // @(#) $Id$ |
4aa41877 | 2 | // Original: AliHLTClustFinderNew.h,v 1.13 2004/06/18 10:55:26 loizides |
a38a7850 | 3 | |
01f43166 | 4 | #ifndef AliHLTTPC_CLUSTERFINDER |
5 | #define AliHLTTPC_CLUSTERFINDER | |
6 | /* This file is property of and copyright by the ALICE HLT Project * | |
7 | * ALICE Experiment at CERN, All rights reserved. * | |
8 | * See cxx source for full Copyright notice */ | |
a38a7850 | 9 | |
01f43166 | 10 | /** @file AliHLTTPCClusterFinder.h |
11 | @author Anders Vestbo, Constantin Loizides, Jochen Thaeder | |
12 | Kenneth Aamodt kenneth.aamodt@student.uib.no | |
13 | @date | |
14 | @brief Cluster Finder for the TPC | |
15 | */ | |
16 | ||
17 | // see below for class documentation | |
18 | // or | |
19 | // refer to README to build package | |
20 | // or | |
21 | // visit http://web.ift.uib.no/~kjeks/doc/alice-hlt | |
46b33a24 | 22 | |
d8b2f74a | 23 | |
01f43166 | 24 | #include "AliHLTLogging.h" |
a74855c2 | 25 | #include "AliHLTTPCPad.h" |
a38a7850 | 26 | class AliHLTTPCSpacePointData; |
27 | class AliHLTTPCDigitReader; | |
28 | ||
46b33a24 | 29 | class AliHLTTPCClusterFinder : public AliHLTLogging { |
a38a7850 | 30 | |
31 | public: | |
32 | struct AliClusterData | |
33 | { | |
34 | UInt_t fTotalCharge; //tot charge of cluster | |
35 | UInt_t fPad; //pad value | |
36 | UInt_t fTime; //time value | |
37 | ULong64_t fPad2; //for error in XY direction | |
38 | ULong64_t fTime2; //for error in Z direction | |
39 | UInt_t fMean; //mean in time | |
40 | UInt_t fFlags; //different flags | |
41 | UInt_t fChargeFalling; //for deconvolution | |
42 | UInt_t fLastCharge; //for deconvolution | |
43 | UInt_t fLastMergedPad; //dont merge twice per pad | |
d8b2f74a | 44 | Int_t fRow; //row value |
a38a7850 | 45 | }; |
46 | typedef struct AliClusterData AliClusterData; //! | |
47 | ||
8f8bf0af | 48 | /** standard constructor */ |
49 | AliHLTTPCClusterFinder(); | |
50 | /** destructor */ | |
51 | virtual ~AliHLTTPCClusterFinder(); | |
52 | ||
53 | void Read(void* ptr,unsigned long size); | |
54 | ||
55 | void InitSlice(Int_t slice,Int_t patch,Int_t firstrow, Int_t lastrow,Int_t maxpoints); | |
56 | void InitSlice(Int_t slice,Int_t patch,Int_t maxpoints); | |
57 | void ProcessDigits(); | |
58 | ||
59 | void SetOutputArray(AliHLTTPCSpacePointData *pt); | |
60 | void WriteClusters(Int_t n_clusters,AliClusterData *list); | |
8252a538 | 61 | void PrintClusters(); |
8f8bf0af | 62 | void SetXYError(Float_t f) {fXYErr=f;} |
63 | void SetZError(Float_t f) {fZErr=f;} | |
64 | void SetDeconv(Bool_t f) {fDeconvPad=f; fDeconvTime=f;} | |
65 | void SetThreshold(UInt_t i) {fThreshold=i;} | |
66 | void SetOccupancyLimit(Float_t f) {fOccupancyLimit=f;} | |
67 | void SetSignalThreshold(Int_t i) {fSignalThreshold=i;} | |
b1c46961 | 68 | void SetNSigmaThreshold(Double_t d) {fNSigmaThreshold=d;} |
8f8bf0af | 69 | void SetMatchWidth(UInt_t i) {fMatch=i;} |
70 | void SetSTDOutput(Bool_t f=kFALSE) {fStdout=f;} | |
71 | void SetCalcErr(Bool_t f=kTRUE) {fCalcerr=f;} | |
72 | void SetRawSP(Bool_t f=kFALSE) {fRawSP=f;} | |
73 | void SetReader(AliHLTTPCDigitReader* f){fDigitReader = f;} | |
74 | Int_t GetNumberOfClusters() const {return fNClusters;} | |
75 | ||
76 | //----------------------------------Methods for the new unsorted way of reading data ---------- | |
a74855c2 | 77 | void ReadDataUnsorted(void* ptr,unsigned long size); |
8f8bf0af | 78 | void FindClusters(); |
79 | void WriteClusters(Int_t nclusters,AliHLTTPCClusters *list); | |
aff6e981 | 80 | void SetUnsorted(Int_t unsorted){fUnsorted=unsorted;} |
8252a538 | 81 | void SetPatch(Int_t patch){fCurrentPatch=patch;} |
82 | void InitializePadArray(); | |
83 | Int_t DeInitializePadArray(); | |
84 | Bool_t ComparePads(AliHLTTPCPad *nextPad,AliHLTTPCClusters* candidate,Int_t nextPadToRead); | |
98034d0d | 85 | protected: |
8f8bf0af | 86 | /** copy constructor prohibited */ |
87 | AliHLTTPCClusterFinder(const AliHLTTPCClusterFinder&); | |
88 | /** assignment operator prohibited */ | |
89 | AliHLTTPCClusterFinder& operator=(const AliHLTTPCClusterFinder&); | |
90 | ||
2a083ac4 | 91 | AliHLTTPCSpacePointData *fSpacePointData; //! array of space points |
92 | AliHLTTPCDigitReader *fDigitReader; //! reader instance | |
a38a7850 | 93 | |
2a083ac4 | 94 | UChar_t* fPtr; //! pointer to packed block |
a38a7850 | 95 | unsigned long fSize; //packed block size |
96 | Bool_t fDeconvTime; //deconv in time direction | |
97 | Bool_t fDeconvPad; //deconv in pad direction | |
98 | Bool_t fStdout; //have print out in write clusters | |
99 | Bool_t fCalcerr; //calculate centroid sigmas | |
100 | Bool_t fRawSP; //store centroids in raw system | |
101 | ||
102 | ||
103 | Int_t fFirstRow; //first row | |
104 | Int_t fLastRow; //last row | |
105 | Int_t fCurrentRow; //current active row | |
106 | Int_t fCurrentSlice; //current slice | |
107 | Int_t fCurrentPatch; //current patch | |
108 | Int_t fMatch; //size of match | |
109 | UInt_t fThreshold; //threshold for clusters | |
84645eb0 | 110 | /** threshold for zero suppression (applied per bin) */ |
b1c46961 | 111 | Int_t fSignalThreshold;// see above |
112 | /** threshold for zero suppression 2007 December run */ | |
113 | Double_t fNSigmaThreshold; // see above | |
a38a7850 | 114 | Int_t fNClusters; //number of found clusters |
115 | Int_t fMaxNClusters; //max. number of clusters | |
116 | Float_t fXYErr; //fixed error in XY | |
117 | Float_t fZErr; //fixed error in Z | |
5235c3e9 | 118 | |
119 | Float_t fOccupancyLimit; // Occupancy Limit | |
120 | ||
aff6e981 | 121 | Int_t fUnsorted; // enable for processing of unsorted digit data |
8252a538 | 122 | Bool_t fVectorInitialized; |
123 | ||
124 | typedef vector<AliHLTTPCPad*> AliHLTTPCPadVector; | |
125 | ||
126 | vector<AliHLTTPCPadVector> fRowPadVector; //! transient | |
127 | ||
128 | vector<AliHLTTPCClusters> fClusters; //! transient | |
129 | ||
130 | UInt_t* fNumberOfPadsInRow; //! transient | |
131 | ||
132 | UInt_t fNumberOfRows; //! transient | |
133 | ||
134 | UInt_t fRowOfFirstCandidate; | |
a38a7850 | 135 | |
64defa03 | 136 | |
a38a7850 | 137 | #ifdef do_mc |
138 | void GetTrackID(Int_t pad,Int_t time,Int_t *trackID); | |
139 | #endif | |
140 | ||
8252a538 | 141 | ClassDef(AliHLTTPCClusterFinder,4) //Fast cluster finder |
a38a7850 | 142 | }; |
143 | #endif |