]> git.uio.no Git - u/mrichter/AliRoot.git/blame - HLT/TPCLib/AliHLTTPCZeroSuppressionComponent.h
Typo corrected.
[u/mrichter/AliRoot.git] / HLT / TPCLib / AliHLTTPCZeroSuppressionComponent.h
CommitLineData
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"
a74855c2 25#include "AliHLTDataTypes.h"
afa4418c 26
27class AliHLTTPCDigitReader;
28
29/**
30 * @class AliHLTTPCZeroSuppressionComponent
31 * Implementation of the zero suppression component.
32 * The component implements the interface methods of the @ref AliHLTProcessor.
33 * It reads the data pad by pad and zerosuppress the data. The output is unpacked which is
34 * sent to the clulsterfinder.
35 *
36 * The component has the following component arguments:
37 * - adc-threshold ADC count threshold for zero suppression.
38 *
39 * - rms-threshold RMS threshold for zero suppression.
40 *
41 * - first-timebin The first timebin for zero suppression
42 *
43 * - last-timebin The last timebin for zero suppression
44 *
45 * - occupancy-limit Minimum number of timebins with signal
46 *
47 * - sort-pads Flag to switch on pad sorting(needed by the SORTED clusterfinder)
48 *
49 * @ingroup alihlt_tpc
50 */
51class AliHLTTPCZeroSuppressionComponent : public AliHLTProcessor
52 {
53 public:
54 /** constructor */
55 AliHLTTPCZeroSuppressionComponent();
56 /** destructor */
57 virtual ~AliHLTTPCZeroSuppressionComponent();
58
59 // Public functions to implement AliHLTComponent's interface.
60 // These functions are required for the registration process
61
62 /** interface function, see @ref AliHLTComponent for description */
63 const char* GetComponentID();
64 /** interface function, see @ref AliHLTComponent for description */
65 void GetInputDataTypes( vector<AliHLTComponentDataType>& list);
66 /** interface function, see @ref AliHLTComponent for description */
67 AliHLTComponentDataType GetOutputDataType();
68 /** interface function, see @ref AliHLTComponent for description */
69 int GetOutputDataTypes(AliHLTComponentDataTypeList& tgtList);
70 /** interface function, see @ref AliHLTComponent for description */
71 virtual void GetOutputDataSize( unsigned long& constBase, double& inputMultiplier );
72 /** interface function, see @ref AliHLTComponent for description */
73 AliHLTComponent* Spawn();
74
75 Int_t DeInitializePadArray();
76 void InitializePadArray();
77 protected:
78
79 // Protected functions to implement AliHLTComponent's interface.
80 // These functions provide initialization as well as the actual processing
81 // capabilities of the component.
82
83 int DoInit( int argc, const char** argv );
84 int DoDeinit();
85 int DoEvent( const AliHLTComponentEventData& evtData, const AliHLTComponentBlockData* blocks,
86 AliHLTComponentTriggerData& trigData, AliHLTUInt8_t* outputPtr,
87 AliHLTUInt32_t& size, vector<AliHLTComponentBlockData>& outputBlocks );
88
89 using AliHLTProcessor::DoEvent;
90
91 private:
92
a74855c2 93 /** copy constructor prohibited */
94 AliHLTTPCZeroSuppressionComponent(const AliHLTTPCZeroSuppressionComponent&);
afa4418c 95
a74855c2 96 /** assignment operator prohibited */
97 AliHLTTPCZeroSuppressionComponent& operator=(const AliHLTTPCZeroSuppressionComponent&);
afa4418c 98
a74855c2 99 /** the reader object for data decoding */
100 AliHLTTPCDigitReader* fDigitReader; //!transient
afa4418c 101
a74855c2 102 /** Vector of pointers to pad objects */
103 typedef vector<AliHLTTPCPad*> AliHLTTPCPadVector;
104
105 /** 2D vector of pointers to pad objects (vector of vectors)*/
afa4418c 106 vector<AliHLTTPCPadVector> fRowPadVector; //! transient
107
a74855c2 108 /** Array containing number of pads in the different rows */
109 Int_t* fNumberOfPadsInRow; //! transient
afa4418c 110
a74855c2 111 /** Number of rows the patch has */
112 Int_t fNumberOfRows; //! transient
afa4418c 113
a74855c2 114 /** Current patch number */
afa4418c 115 UInt_t fCurrentPatch; //! transient
a74855c2 116
117 /** First row in patch */
afa4418c 118 UInt_t fFirstRow; //! transient
a74855c2 119
120 /** Last row in patch */
afa4418c 121 UInt_t fLastRow; //! transient
122
a74855c2 123 /** First timebin to include in zerosuppression */
124 Int_t fStartTimeBin; //! transient
125
126 /** Lasr timebin to include in zerosuppression */
127 Int_t fEndTimeBin; //! transient
128
129 /** Number of timebins */
130 Int_t fNTimeBins; //! transient
131
132 /** Number of RMS the signal has to be larger than */
133 Double_t fNRMSThreshold; //! transient
afa4418c 134
a74855c2 135 /** Signal threshold (signal has to be greater than average + this number) */
136 Int_t fSignalThreshold; //! transient
137
138 /** Minimum number of signals to do zerosuppression */
139 Int_t fMinimumNumberOfSignals; //! transient
140
141 /** OldRCUFormat flag */
afa4418c 142 UInt_t fOldRCUFormat; //! transient
a74855c2 143
144 /** Sort pads flag */
afa4418c 145 Bool_t fSortPads; //! transient
a74855c2 146
147 /** Flag to check if the 2d vector is initialized */
afa4418c 148 Bool_t fVectorInitialized; //! transient
149
a74855c2 150 /** Value below average (useful for noisy pads to get the tails of a signal) */
afa4418c 151 Int_t fValueBelowAverage; //! transient
a74855c2 152
153 /** Number of timebins to look left(decreasing time direction) for tails */
afa4418c 154 Int_t fLeftTimeBin; //! transient
a74855c2 155
156 /** Number of timebins to look right(increasing time direction) for tails */
afa4418c 157 Int_t fRightTimeBin; //! transient
a74855c2 158
159 /** Flag to switch on active pads selection */
160 Bool_t fGetActivePads; //! transient
161
162 /** Vector of active pad hardware addresses */
163 vector<Int_t> fHwAddressList; //! transient
164
afa4418c 165 ClassDef(AliHLTTPCZeroSuppressionComponent, 0)
166 };
167#endif