4 #ifndef ALIHLTALTROCHANNELSELECTORCOMPONENT_H
5 #define ALIHLTALTROCHANNELSELECTORCOMPONENT_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 */
10 /** @file AliHLTAltroChannelSelectorComponent.h
11 @author Matthias Richter
13 @brief Special file writer converting TPC digit input to ASCII.
16 // see below for class documentation
18 // refer to README to build package
20 // visit http://web.ift.uib.no/~kjeks/doc/alice-hlt
22 #include "AliHLTProcessor.h"
25 * @class AliHLTAltroChannelSelectorComponent
26 * A selector component for ALTRO Raw data. The component subscribes
27 * to the RAW data {***:DDL_RAW } and gets in addition a list of channels
28 * to select. The list must be of identical specification as the RAW data
29 * and can be of data type:
30 * - {***:HWADDR16}: 16 bit hardware addresses
32 * TheAliAltroDecoder is used as input decoder to read and scan the
35 * Component ID: \b AltroChannelSelector <br>
36 * Library: \b libAliHLTTPC
38 * Mandatory arguments: <br>
39 * <!-- NOTE: ignore the \li. <i> and </i>: it's just doxygen formating -->
41 * Optional arguments: <br>
42 * <!-- NOTE: ignore the \li. <i> and </i>: it's just doxygen formating -->
45 class AliHLTAltroChannelSelectorComponent : public AliHLTProcessor {
47 /** default constructor */
48 AliHLTAltroChannelSelectorComponent();
50 virtual ~AliHLTAltroChannelSelectorComponent();
52 // interface functions: property getters
53 const char* GetComponentID();
54 void GetInputDataTypes(AliHLTComponentDataTypeList& list);
55 AliHLTComponentDataType GetOutputDataType();
56 void GetOutputDataSize(unsigned long& constBase, double& inputMultiplier);
57 AliHLTComponent* Spawn();
60 // interface functions: processing
61 int DoInit(int argc, const char** argv);
63 int DoEvent(const AliHLTComponentEventData& evtData,
64 const AliHLTComponentBlockData* blocks,
65 AliHLTComponentTriggerData& trigData,
66 AliHLTUInt8_t* outputPtr,
68 AliHLTComponentBlockDataList& outputBlocks );
72 /** copy constructor prohibited */
73 AliHLTAltroChannelSelectorComponent(const AliHLTAltroChannelSelectorComponent&);
74 /** assignment operator prohibited */
75 AliHLTAltroChannelSelectorComponent& operator=(const AliHLTAltroChannelSelectorComponent&);
78 * Copy a data block at the end of a buffer.
79 * The source buffer is inserted at given position relative to the buffer
81 * @param pTgt target buffer
82 * @param capacity capacity (size) of the buffer
83 * @param position porition relative to the END of the buffer
84 * @param pSrc source buffer to be copied
85 * @param size size of the source buffer
86 * @return copied size, neg error code if failed
88 int CopyBlockToEnd(AliHLTUInt8_t* pTgt, unsigned capacity, unsigned position, void* pSrc, unsigned size);
90 /** skip corrupted channels */
91 bool fSkipCorrupted; //!transient
93 /** more verbose output */
94 bool fTalkative; //!transient
96 ClassDef(AliHLTAltroChannelSelectorComponent, 1);