]> git.uio.no Git - u/mrichter/AliRoot.git/blame - HLT/TPCLib/AliHLTTPCZeroSuppressionComponent.h
work on zero suppression; added ZeroSuppressionComponent (Kennth)
[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"
25
26class 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 */
50class 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