]>
Commit | Line | Data |
---|---|---|
afa4418c | 1 | // XEmacs -*-C++-*- |
2 | // @(#) $Id: AliHLTTPCClusterFinderComponent.h 23318 2008-01-14 12:43:28Z hristov $ | |
3 | ||
4 | #ifndef ALIHLTTPCZEROSUPPRESSIONCOMPONENT_H | |
5 | #define ALIHLTTPCZEROSUPPRESSIONCOMPONENT_H | |
6 | ||
7 | /* This file is property of and copyright by the ALICE HLT Project * | |
8 | * ALICE Experiment at CERN, All rights reserved. * | |
9 | * See cxx source for full Copyright notice */ | |
10 | ||
11 | /** @file AliHLTTPCZeroSuppressionComponent.h | |
12 | @author Kenneth Aamodt | |
13 | @date | |
14 | @brief Component for ZeroSuppression | |
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 | |
22 | ||
23 | #include "AliHLTProcessor.h" | |
24 | #include "AliHLTTPCPad.h" | |
25 | ||
26 | class AliHLTTPCDigitReader; | |
27 | ||
28 | /** | |
29 | * @class AliHLTTPCZeroSuppressionComponent | |
30 | * Implementation of the zero suppression component. | |
31 | * The component implements the interface methods of the @ref AliHLTProcessor. | |
32 | * It reads the data pad by pad and zerosuppress the data. The output is unpacked which is | |
33 | * sent to the clulsterfinder. | |
34 | * | |
35 | * The component has the following component arguments: | |
36 | * - adc-threshold ADC count threshold for zero suppression. | |
37 | * | |
38 | * - rms-threshold RMS threshold for zero suppression. | |
39 | * | |
40 | * - first-timebin The first timebin for zero suppression | |
41 | * | |
42 | * - last-timebin The last timebin for zero suppression | |
43 | * | |
44 | * - occupancy-limit Minimum number of timebins with signal | |
45 | * | |
46 | * - sort-pads Flag to switch on pad sorting(needed by the SORTED clusterfinder) | |
47 | * | |
48 | * @ingroup alihlt_tpc | |
49 | */ | |
50 | class AliHLTTPCZeroSuppressionComponent : public AliHLTProcessor | |
51 | { | |
52 | public: | |
53 | /** constructor */ | |
54 | AliHLTTPCZeroSuppressionComponent(); | |
55 | /** destructor */ | |
56 | virtual ~AliHLTTPCZeroSuppressionComponent(); | |
57 | ||
58 | // Public functions to implement AliHLTComponent's interface. | |
59 | // These functions are required for the registration process | |
60 | ||
61 | /** interface function, see @ref AliHLTComponent for description */ | |
62 | const char* GetComponentID(); | |
63 | /** interface function, see @ref AliHLTComponent for description */ | |
64 | void GetInputDataTypes( vector<AliHLTComponentDataType>& list); | |
65 | /** interface function, see @ref AliHLTComponent for description */ | |
66 | AliHLTComponentDataType GetOutputDataType(); | |
67 | /** interface function, see @ref AliHLTComponent for description */ | |
68 | int GetOutputDataTypes(AliHLTComponentDataTypeList& tgtList); | |
69 | /** interface function, see @ref AliHLTComponent for description */ | |
70 | virtual void GetOutputDataSize( unsigned long& constBase, double& inputMultiplier ); | |
71 | /** interface function, see @ref AliHLTComponent for description */ | |
72 | AliHLTComponent* Spawn(); | |
73 | ||
74 | Int_t DeInitializePadArray(); | |
75 | void InitializePadArray(); | |
76 | protected: | |
77 | ||
78 | // Protected functions to implement AliHLTComponent's interface. | |
79 | // These functions provide initialization as well as the actual processing | |
80 | // capabilities of the component. | |
81 | ||
82 | int DoInit( int argc, const char** argv ); | |
83 | int DoDeinit(); | |
84 | int DoEvent( const AliHLTComponentEventData& evtData, const AliHLTComponentBlockData* blocks, | |
85 | AliHLTComponentTriggerData& trigData, AliHLTUInt8_t* outputPtr, | |
86 | AliHLTUInt32_t& size, vector<AliHLTComponentBlockData>& outputBlocks ); | |
87 | ||
88 | using AliHLTProcessor::DoEvent; | |
89 | ||
90 | private: | |
91 | ||
92 | /** copy constructor prohibited */ | |
93 | AliHLTTPCZeroSuppressionComponent(const AliHLTTPCZeroSuppressionComponent&); | |
94 | ||
95 | /** assignment operator prohibited */ | |
96 | AliHLTTPCZeroSuppressionComponent& operator=(const AliHLTTPCZeroSuppressionComponent&); | |
97 | ||
98 | /** the reader object for data decoding */ | |
99 | AliHLTTPCDigitReader* fDigitReader; //!transient | |
100 | ||
101 | ||
102 | typedef vector<AliHLTTPCPad*> AliHLTTPCPadVector; | |
103 | ||
104 | vector<AliHLTTPCPadVector> fRowPadVector; //! transient | |
105 | ||
106 | UInt_t* fNumberOfPadsInRow; //! transient | |
107 | ||
108 | UInt_t fNumberOfRows; //! transient | |
109 | ||
110 | UInt_t fCurrentPatch; //! transient | |
111 | UInt_t fFirstRow; //! transient | |
112 | UInt_t fLastRow; //! transient | |
113 | ||
114 | ||
115 | Int_t fStartTimeBin; //! transient | |
116 | Int_t fEndTimeBin; //! transient | |
117 | Int_t fNTimeBins; //! transient | |
118 | Double_t fNRMSThreshold; //! transient | |
119 | Int_t fSignalThreshold; //! transient | |
120 | Int_t fMinimumNumberOfSignals; //! transient | |
121 | UInt_t fOldRCUFormat; //! transient | |
122 | Bool_t fSortPads; //! transient | |
123 | Bool_t fVectorInitialized; //! transient | |
124 | ||
125 | Int_t fValueBelowAverage; //! transient | |
126 | Int_t fLeftTimeBin; //! transient | |
127 | Int_t fRightTimeBin; //! transient | |
128 | ClassDef(AliHLTTPCZeroSuppressionComponent, 0) | |
129 | }; | |
130 | #endif |