3 #ifndef ALIHLTCOMPHUFFMANALTROCALIBCOMPONENT_H
4 #define ALIHLTCOMPHUFFMANALTROCALIBCOMPONENT_H
6 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
7 * See cxx source for full Copyright notice */
9 /** @file AliHLTCOMPHuffmanAltroCalibComponent.h
10 @author Jochen Thaeder
11 @author extended by Jenny Wagner
13 @brief A calibration component for the Huffman code creator
16 #include "AliHLTCalibrationProcessor.h"
18 class AliHLTCOMPHuffmanAltro;
19 class AliHLTCOMPHuffmanData;
22 * @class AliHLTCOMPHuffmanAltroCalibComponent
23 * Component ID: \b HuffmanAltroCalibComponent <br>
24 * Library: \b libAliHLTComp
25 * This class is the calibration component for the AliTPCCalibHuffmanAltro class
26 * used for calibration of the Huffman code table (which is created here).
28 * Mandatory arguments: <br>
29 * <!-- NOTE: ignore the \li. <i> and </i>: it's just doxygen formatting -->
30 * \li -origin <i> detector <\i> <br>
31 * set origin of data for code creation to specify output table (parameter transient)
32 * \li -runnumber <i> decimal number <\i> <br>
33 * set runnumber to specify output table (parameter transient)
34 * \li -dataspec <i> 0xYYXXaabb <\i> <br>
35 * set usual HLT dataspec (last slice, first slice, last patch, first patch)_Hexadezimal to specify output table
36 * \li -trailerwords <i> decimal number <\i> <br>
37 * set number of trailerwords of incoming data (ranging from 1 to 3)
39 * Optional arguments: <br>
40 * <!-- NOTE: ignore the \li. <i> and </i>: it's just doxygen formatting -->
41 * \li -tablepath <i> path to Huffman code table <\i> <br>
42 * 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)
44 * It inherits from the @ref AliHLTCalibrationProcessor and uses the high-level
45 * interface. The output is the class @ref HuffmanData as a TObject which is written to the data base
47 * @ingroup alihlt_comp
49 class AliHLTCOMPHuffmanAltroCalibComponent : public AliHLTCalibrationProcessor
53 AliHLTCOMPHuffmanAltroCalibComponent();
56 virtual ~AliHLTCOMPHuffmanAltroCalibComponent();
58 // Public functions to implement AliHLTComponent's interface.
59 // These functions are required for the registration process
61 const char* GetComponentID();
62 void GetInputDataTypes( vector<AliHLTComponentDataType>& list);
63 AliHLTComponentDataType GetOutputDataType();
64 virtual void GetOutputDataSize( unsigned long& constBase, double& inputMultiplier );
65 AliHLTComponent* Spawn();
69 // Protected functions to implement AliHLTComponent's interface.
70 // These functions provide initialization as well as the actual processing
71 // capabilities of the component.
73 /** Initialize the calibration component. */
74 Int_t InitCalibration();
76 /** Scan commandline arguments of the calibration component. */
77 Int_t ScanArgument( Int_t argc, const char** argv );
79 /** DeInitialize the calibration component. */
80 Int_t DeinitCalibration();
82 /** Process the data in the calibration component. */
83 Int_t ProcessCalibration( const AliHLTComponentEventData& evtData, AliHLTComponentTriggerData& trigData );
85 /** Ship the data to the FXS at end of run or eventmodulo. */
86 Int_t ShipDataToFXS( const AliHLTComponentEventData& evtData, AliHLTComponentTriggerData& trigData );
90 /** copy constructor prohibited */
91 AliHLTCOMPHuffmanAltroCalibComponent(const AliHLTCOMPHuffmanAltroCalibComponent&);
93 /** assignment operator prohibited */
94 AliHLTCOMPHuffmanAltroCalibComponent& operator=(const AliHLTCOMPHuffmanAltroCalibComponent&);
96 /** Huffman compressor class */
97 AliHLTCOMPHuffmanAltro * fHuffmanCompressor; //! instance of Huffman Compressor in this component
99 /** pointer to output Huffman code table and occurrence table (togehter in this class) */
100 AliHLTCOMPHuffmanData * fHuffmanData; //! instance of output (Huffman Data, containing code table)
102 /** The Specification for this component */
103 /** explicit specification of the origin of the data (transient) */
104 TString fOrigin; // input line argument to determine origin for Huffman table
105 // -> no input --> default taken from incoming data
106 /** explicit specification of the run number */
107 AliHLTUInt64_t fRunNumber; // input line argument to determine run number for Huffman table
109 /** specifications of the data */
110 AliHLTUInt64_t fSpecification; // see above
112 /** explicit path to Huffman code table which will be put out */
113 TString fTablePath; // input line argument to determine path for Huffman table
114 // -> no input --> default set to current path name
115 //AliHLTUInt8_t fSlice; // slice
116 //AliHLTUInt8_t fPatch; // patch
118 /** number of NRCU trailer words of input data */
119 Int_t fNRCUTrailerWords; // see above
121 ClassDef(AliHLTCOMPHuffmanAltroCalibComponent, 0)