]>
Commit | Line | Data |
---|---|---|
881c4032 | 1 | //-*- Mode: C++ -*- |
2 | // $Id$ | |
3 | ||
4 | #ifndef ALIHLTALTROTIMEBINAVERAGECOMPONENT_H | |
5 | #define ALIHLTALTROTIMEBINAVERAGECOMPONENT_H | |
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 * | |
9 | ||
10 | /** @file AliHLTAltroTimebinAverageComponent.h | |
11 | @author Kalliopi Kanaki, Oystein Djuvsland, Matthias Richter | |
12 | @date | |
13 | @brief | |
14 | */ | |
15 | ||
16 | #include "AliHLTProcessor.h" | |
17 | ||
18 | /** | |
19 | * @class AliHLTAltroTimebin Averager Component | |
20 | * The component reduces the RCU/ALTRO raw data by averaging adjacent | |
21 | * timebins. By default, two timebins are averaged. | |
22 | * | |
23 | * @ingroup alihlt_rcu | |
24 | */ | |
25 | class AliHLTAltroTimebinAverageComponent : public AliHLTProcessor { | |
26 | public: | |
27 | /** default constructor */ | |
28 | AliHLTAltroTimebinAverageComponent(); | |
29 | /** destructor */ | |
30 | virtual ~AliHLTAltroTimebinAverageComponent(); | |
31 | ||
32 | /** | |
33 | * The id of the component. | |
34 | * @return component id (string) | |
35 | */ | |
36 | virtual const char* GetComponentID(); | |
37 | ||
38 | /** | |
39 | * Get the input data types of the component. | |
40 | * @return list of data types in the vector reference | |
41 | */ | |
42 | void GetInputDataTypes( AliHLTComponentDataTypeList& ); | |
43 | ||
44 | /** | |
45 | * Get the output data type of the component. | |
e9171232 | 46 | * If kAliHLTMultipleDataType is returned, the framework invokes |
881c4032 | 47 | * @ref GetOutputDataTypes. |
48 | * @return output data type | |
49 | */ | |
50 | AliHLTComponentDataType GetOutputDataType(); | |
51 | ||
52 | /** | |
53 | * Get the output data types of the component. | |
54 | * The function can be implemented to indicate multiple output data types | |
55 | * in the target array. | |
e9171232 | 56 | * @ref GetOutputDataType must return kAliHLTMultipleDataType in order |
881c4032 | 57 | * to invoke this method. |
58 | * @param tgtList list to receive the data types | |
59 | * @return no of output data types, data types in the target list | |
60 | */ | |
61 | int GetOutputDataTypes(AliHLTComponentDataTypeList& tgtList); | |
62 | ||
63 | /** | |
64 | * Get a ratio by how much the data volume is shrinked or enhanced. | |
65 | * @param constBase <i>return</i>: additive part, independent of the | |
66 | * input data volume | |
67 | * @param inputMultiplier <i>return</i>: multiplication ratio | |
68 | * @return values in the reference variables | |
69 | */ | |
70 | void GetOutputDataSize( unsigned long& constBase, double& inputMultiplier ); | |
71 | ||
72 | /** | |
73 | * Spawn function. | |
74 | * @return new class instance | |
75 | */ | |
76 | virtual AliHLTComponent* Spawn(); | |
77 | ||
78 | protected: | |
79 | ||
80 | /** | |
81 | * Data processing method for the component. | |
82 | * Filters the incoming data descriptors according to the rules and forwards | |
83 | * them into the output. | |
84 | * @return neg. error code if failed | |
85 | */ | |
86 | int DoEvent( const AliHLTComponentEventData& evtData, | |
87 | const AliHLTComponentBlockData* blocks, | |
88 | AliHLTComponentTriggerData& trigData, | |
89 | AliHLTUInt8_t* outputPtr, | |
90 | AliHLTUInt32_t& size, | |
91 | AliHLTComponentBlockDataList& outputBlocks ); | |
92 | ||
93 | using AliHLTProcessor::DoEvent; | |
94 | ||
95 | /** | |
96 | * Component initialisation and argument scan. | |
97 | */ | |
98 | int DoInit( int argc, const char** argv ); | |
99 | ||
100 | /** | |
101 | * Component cleanup. | |
102 | */ | |
103 | int DoDeinit(); | |
104 | ||
105 | private: | |
106 | /** copy constructor prohibited */ | |
107 | AliHLTAltroTimebinAverageComponent(const AliHLTAltroTimebinAverageComponent&); | |
108 | /** assignment operator prohibited */ | |
109 | AliHLTAltroTimebinAverageComponent& operator=(const AliHLTAltroTimebinAverageComponent&); | |
110 | ||
111 | /** First timebin to include in zerosuppression */ | |
112 | Int_t fStartTimeBin; //! transient | |
113 | ||
114 | /** Lasr timebin to include in zerosuppression */ | |
115 | Int_t fEndTimeBin; //! transient | |
116 | ||
117 | /** Number of timebins */ | |
118 | Int_t fNTimeBins; //! transient | |
119 | ||
120 | ClassDef(AliHLTAltroTimebinAverageComponent, 0); | |
121 | }; | |
122 | ||
123 | #endif |