//-*- Mode: C++ -*- // $Id$ #ifndef ALIHLTALTROCHANNELSELECTORCOMPONENT_H #define ALIHLTALTROCHANNELSELECTORCOMPONENT_H //* This file is property of and copyright by the ALICE HLT Project * //* ALICE Experiment at CERN, All rights reserved. * //* See cxx source for full Copyright notice * /// @file AliHLTAltroChannelSelectorComponent.h /// @author Matthias Richter /// @date /// @brief A filter/selective readout component for Altro data. /// // visit http://web.ift.uib.no/~kjeks/doc/alice-hlt #include "AliHLTProcessor.h" /** * @class AliHLTAltroChannelSelectorComponent * A selector component for ALTRO Raw data. The component subscribes * to the RAW data {***:DDL_RAW } and gets in addition a list of channels * to select. The list must be of identical specification as the RAW data * and can be of data type: * - {***:HWADDR16}: 16 bit hardware addresses * * In Oct 2008 the component has been extended in order to select channels * by calculating average/sigma and applying thresholds. * * The AliAltroRawStreamV3 is used as input decoder to read and scan the * Altro Raw data. * *

General properties:

* * Component ID: \b AltroChannelSelector
* Library: \b libAliHLTRCU
* Input Data Types: kAliHLTDataTypeDDLRaw, kAliHLTDataTypeHwAddr16
* Output Data Types: kAliHLTDataTypeDDLRaw
* * Mandatory arguments:
* * * Optional arguments:
* * \li -keep-corrupted * keep corrupted channels, by default ignored * \li -talkative * be a bit more verbose, prints out statistics message and warnings * \li -start-timebin bin * all time bins below will be ignored * \li -end-timebin bin * all time bins above will be ignored * \li -signal-threshold adc_counts * the average will be calculated from all bins between start and end, * a channel is considered active if the maximum is bigger than averge * plus threshold * \li -rms-threshold sigma * * @ingroup alihlt_rcu_components */ class AliHLTAltroChannelSelectorComponent : public AliHLTProcessor { public: /** default constructor */ AliHLTAltroChannelSelectorComponent(); /** destructor */ virtual ~AliHLTAltroChannelSelectorComponent(); // interface functions: property getters const char* GetComponentID(); void GetInputDataTypes(AliHLTComponentDataTypeList& list); AliHLTComponentDataType GetOutputDataType(); void GetOutputDataSize(unsigned long& constBase, double& inputMultiplier); AliHLTComponent* Spawn(); protected: // interface functions: processing int DoInit(int argc, const char** argv); int DoDeinit(); int DoEvent(const AliHLTComponentEventData& evtData, const AliHLTComponentBlockData* blocks, AliHLTComponentTriggerData& trigData, AliHLTUInt8_t* outputPtr, AliHLTUInt32_t& size, AliHLTComponentBlockDataList& outputBlocks ); private: /** copy constructor prohibited */ AliHLTAltroChannelSelectorComponent(const AliHLTAltroChannelSelectorComponent&); /** assignment operator prohibited */ AliHLTAltroChannelSelectorComponent& operator=(const AliHLTAltroChannelSelectorComponent&); /** skip corrupted channels */ bool fSkipCorrupted; //!transient /** more verbose output */ bool fTalkative; //!transient unsigned int fStartTimeBin; //!transient unsigned int fEndTimeBin; //!transient unsigned int fSignalThreshold; //!transient unsigned int fRMSThreshold; //!transient ClassDef(AliHLTAltroChannelSelectorComponent, 2); }; #endif