adding AliHLTAltroTimebinAverageComponent
[u/mrichter/AliRoot.git] / HLT / RCU / AliHLTAltroTimebinAverageComponent.h
CommitLineData
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 */
25class 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.
46 * If @ref kAliHLTMultipleDataType is returned, the framework invokes
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.
56 * @ref GetOutputDataType must return @ref kAliHLTMultipleDataType in order
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