updated version of the ALTRO channel selector component using AliAltroRawStreamV3
[u/mrichter/AliRoot.git] / HLT / RCU / AliHLTAltroChannelSelectorComponent.h
CommitLineData
3e6ec852 1//-*- Mode: C++ -*-
1ea9f419 2// $Id$
3e6ec852 3
4#ifndef ALIHLTALTROCHANNELSELECTORCOMPONENT_H
5#define ALIHLTALTROCHANNELSELECTORCOMPONENT_H
2a32beb8 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 *
3e6ec852 9
1ea9f419 10/// @file AliHLTAltroChannelSelectorComponent.h
11/// @author Matthias Richter
12/// @date
13/// @brief A filter/selective readout component for Altro data.
14///
3e6ec852 15
3e6ec852 16// visit http://web.ift.uib.no/~kjeks/doc/alice-hlt
17
18#include "AliHLTProcessor.h"
19
20/**
21 * @class AliHLTAltroChannelSelectorComponent
64defa03 22 * A selector component for ALTRO Raw data. The component subscribes
23 * to the RAW data {***:DDL_RAW } and gets in addition a list of channels
24 * to select. The list must be of identical specification as the RAW data
25 * and can be of data type:
64defa03 26 * - {***:HWADDR16}: 16 bit hardware addresses
27 *
2a32beb8 28 * In Oct 2008 the component has been extended in order to select channels
29 * by calculating average/sigma and applying thresholds.
30 *
ff4a65b9 31 * The AliAltroRawStreamV3 is used as input decoder to read and scan the
4ca5858d 32 * Altro Raw data.
3e6ec852 33 *
2a32beb8 34 * <h2>General properties:</h2>
35 *
36 * Component ID: \b AltroChannelSelector <br>
37 * Library: \b libAliHLTRCU <br>
38 * Input Data Types: kAliHLTDataTypeDDLRaw, kAliHLTDataTypeHwAddr16 <br>
39 * Output Data Types: kAliHLTDataTypeDDLRaw <br>
3e6ec852 40 *
41 * Mandatory arguments: <br>
1ac82ce6 42 * <!-- NOTE: ignore the \li. <i> and </i>: it's just doxygen formatting -->
3e6ec852 43 *
44 * Optional arguments: <br>
1ac82ce6 45 * <!-- NOTE: ignore the \li. <i> and </i>: it's just doxygen formatting -->
2a32beb8 46 * \li -keep-corrupted
47 * keep corrupted channels, by default ignored
48 * \li -talkative
49 * be a bit more verbose, prints out statistics message and warnings
50 * \li -start-timebin <i> bin </i>
51 * all time bins below will be ignored
52 * \li -end-timebin <i> bin </i>
53 * all time bins above will be ignored
54 * \li -signal-threshold <i> adc_counts </i>
55 * the average will be calculated from all bins between start and end,
56 * a channel is considered active if the maximum is bigger than averge
57 * plus threshold
58 * \li -rms-threshold <i> sigma </i>
3e6ec852 59 *
2a32beb8 60 * @ingroup alihlt_rcu_components
3e6ec852 61 */
62class AliHLTAltroChannelSelectorComponent : public AliHLTProcessor {
63 public:
64 /** default constructor */
65 AliHLTAltroChannelSelectorComponent();
66 /** destructor */
67 virtual ~AliHLTAltroChannelSelectorComponent();
68
69 // interface functions: property getters
70 const char* GetComponentID();
71 void GetInputDataTypes(AliHLTComponentDataTypeList& list);
72 AliHLTComponentDataType GetOutputDataType();
73 void GetOutputDataSize(unsigned long& constBase, double& inputMultiplier);
74 AliHLTComponent* Spawn();
75
76 protected:
77 // interface functions: processing
78 int DoInit(int argc, const char** argv);
79 int DoDeinit();
80 int DoEvent(const AliHLTComponentEventData& evtData,
81 const AliHLTComponentBlockData* blocks,
82 AliHLTComponentTriggerData& trigData,
83 AliHLTUInt8_t* outputPtr,
84 AliHLTUInt32_t& size,
85 AliHLTComponentBlockDataList& outputBlocks );
86
87
88 private:
89 /** copy constructor prohibited */
90 AliHLTAltroChannelSelectorComponent(const AliHLTAltroChannelSelectorComponent&);
91 /** assignment operator prohibited */
92 AliHLTAltroChannelSelectorComponent& operator=(const AliHLTAltroChannelSelectorComponent&);
93
4ca5858d 94 /** skip corrupted channels */
95 bool fSkipCorrupted; //!transient
e1440dab 96
4ca5858d 97 /** more verbose output */
98 bool fTalkative; //!transient
99
2a32beb8 100 unsigned int fStartTimeBin; //!transient
101 unsigned int fEndTimeBin; //!transient
102 unsigned int fSignalThreshold; //!transient
103 unsigned int fRMSThreshold; //!transient
104
105 ClassDef(AliHLTAltroChannelSelectorComponent, 2);
3e6ec852 106};
107
108#endif