//-*- Mode: C++ -*- // $Id$ #ifndef ALIHLTCOMPHUFFMANALTROCALIBCOMPONENT_H #define ALIHLTCOMPHUFFMANALTROCALIBCOMPONENT_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 AliHLTCOMPHuffmanAltroCalibComponent.h @author Jochen Thaeder @author extended by Jenny Wagner @date 20-11-2007 @brief A calibration component for the Huffman code creator */ #include "AliHLTCalibrationProcessor.h" class AliHLTCOMPHuffmanAltro; class AliHLTCOMPHuffmanData; /** * @class AliHLTCOMPHuffmanAltroCalibComponent * This class is the calibration component for the AliTPCCalibHuffmanAltro class * used for calibration of the Huffman code table (which is created here). * *

General properties:

* * Component ID: \b HuffmanAltroCalibComponent
* Library: \b libAliHLTComp.so
* Input Data Types: ::kAliHLTDataTypeDDLRaw
* Output Data Types: AliHLTCompDefinitions::fgkHuffmanAltroCalDataType
* *

Mandatory arguments:

* * \li -origin detector
* set origin of data for code creation to specify output table (parameter transient) * \li -runnumber decimal number
* set runnumber to specify output table (parameter transient) * \li -dataspec 0xYYXXaabb
* set usual HLT dataspec (last slice, first slice, last patch, first patch)_Hexadezimal to specify output table * \li -trailerwords decimal number
* set number of trailerwords of incoming data (ranging from 1 to 3) * *

Optional arguments:

* * \li -tablepath path to Huffman code table
* set path to out put Huffman code table as root file, if no path is given, * output path is set to current path (parameter transient) * * It inherits from the @ref AliHLTCalibrationProcessor and uses the high-level * interface. The output is the class AliHLTCOMPHuffmanData as a TObject which * is written to the data base * * @ingroup alihlt_comp_components */ class AliHLTCOMPHuffmanAltroCalibComponent : public AliHLTCalibrationProcessor { public: /** constructor */ AliHLTCOMPHuffmanAltroCalibComponent(); /** destructor */ virtual ~AliHLTCOMPHuffmanAltroCalibComponent(); // Public functions to implement AliHLTComponent's interface. // These functions are required for the registration process const char* GetComponentID(); void GetInputDataTypes( vector& list); AliHLTComponentDataType GetOutputDataType(); virtual void GetOutputDataSize( unsigned long& constBase, double& inputMultiplier ); AliHLTComponent* Spawn(); protected: // Protected functions to implement AliHLTComponent's interface. // These functions provide initialization as well as the actual processing // capabilities of the component. /** Initialize the calibration component. */ Int_t InitCalibration(); /** Scan commandline arguments of the calibration component. */ Int_t ScanArgument( Int_t argc, const char** argv ); /** DeInitialize the calibration component. */ Int_t DeinitCalibration(); /** Process the data in the calibration component. */ Int_t ProcessCalibration( const AliHLTComponentEventData& evtData, AliHLTComponentTriggerData& trigData ); /** Ship the data to the FXS at end of run or eventmodulo. */ Int_t ShipDataToFXS( const AliHLTComponentEventData& evtData, AliHLTComponentTriggerData& trigData ); private: /** copy constructor prohibited */ AliHLTCOMPHuffmanAltroCalibComponent(const AliHLTCOMPHuffmanAltroCalibComponent&); /** assignment operator prohibited */ AliHLTCOMPHuffmanAltroCalibComponent& operator=(const AliHLTCOMPHuffmanAltroCalibComponent&); /** Huffman compressor class */ AliHLTCOMPHuffmanAltro * fHuffmanCompressor; //! instance of Huffman Compressor in this component /** pointer to output Huffman code table and occurrence table (togehter in this class) */ AliHLTCOMPHuffmanData * fHuffmanData; //! instance of output (Huffman Data, containing code table) /** The Specification for this component */ /** explicit specification of the origin of the data (transient) */ TString fOrigin; // input line argument to determine origin for Huffman table // -> no input --> default taken from incoming data /** explicit specification of the run number */ AliHLTUInt64_t fRunNumber; // input line argument to determine run number for Huffman table /** specifications of the data */ AliHLTUInt64_t fSpecification; // see above /** explicit path to Huffman code table which will be put out */ TString fTablePath; // input line argument to determine path for Huffman table // -> no input --> default set to current path name //AliHLTUInt8_t fSlice; // slice //AliHLTUInt8_t fPatch; // patch /** number of NRCU trailer words of input data */ Int_t fNRCUTrailerWords; // see above ClassDef(AliHLTCOMPHuffmanAltroCalibComponent, 0) }; #endif