code documentation; minor enhancement of BlockFilter
[u/mrichter/AliRoot.git] / HLT / comp / AliHLTCOMPHuffmanAltroCalibComponent.h
CommitLineData
c2440081 1//-*- Mode: C++ -*-
90f0bce8 2// $Id$
c2440081 3#ifndef ALIHLTCOMPHUFFMANALTROCALIBCOMPONENT_H
4#define ALIHLTCOMPHUFFMANALTROCALIBCOMPONENT_H
5
a7ad9794 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 *
c2440081 9
10/** @file AliHLTCOMPHuffmanAltroCalibComponent.h
11 @author Jochen Thaeder
12 @author extended by Jenny Wagner
13 @date 20-11-2007
14 @brief A calibration component for the Huffman code creator
15*/
16
17#include "AliHLTCalibrationProcessor.h"
18
19class AliHLTCOMPHuffmanAltro;
20class AliHLTCOMPHuffmanData;
21
22/**
23 * @class AliHLTCOMPHuffmanAltroCalibComponent
c2440081 24 * This class is the calibration component for the AliTPCCalibHuffmanAltro class
25 * used for calibration of the Huffman code table (which is created here).
26 *
a7ad9794 27 * <h2>General properties:</h2>
28 *
29 * Component ID: \b HuffmanAltroCalibComponent <br>
30 * Library: \b libAliHLTComp.so <br>
31 * Input Data Types: ::kAliHLTDataTypeDDLRaw <br>
32 * Output Data Types: AliHLTCompDefinitions::fgkHuffmanAltroCalDataType <br>
33 *
34 * <h2>Mandatory arguments:</h2>
1ac82ce6 35 * <!-- NOTE: ignore the \li. <i> and </i>: it's just doxygen formatting -->
a7ad9794 36 * \li -origin <i> detector </i> <br>
c2440081 37 * set origin of data for code creation to specify output table (parameter transient)
a7ad9794 38 * \li -runnumber <i> decimal number </i> <br>
c2440081 39 * set runnumber to specify output table (parameter transient)
a7ad9794 40 * \li -dataspec <i> 0xYYXXaabb </i> <br>
c2440081 41 * set usual HLT dataspec (last slice, first slice, last patch, first patch)_Hexadezimal to specify output table
a7ad9794 42 * \li -trailerwords <i> decimal number </i> <br>
c2440081 43 * set number of trailerwords of incoming data (ranging from 1 to 3)
44 *
a7ad9794 45 * <h2>Optional arguments:</h2>
1ac82ce6 46 * <!-- NOTE: ignore the \li. <i> and </i>: it's just doxygen formatting -->
a7ad9794 47 * \li -tablepath <i> path to Huffman code table </i> <br>
48 * set path to out put Huffman code table as root file, if no path is given,
49 * output path is set to current path (parameter transient)
c2440081 50 *
51 * It inherits from the @ref AliHLTCalibrationProcessor and uses the high-level
a7ad9794 52 * interface. The output is the class AliHLTCOMPHuffmanData as a TObject which
53 * is written to the data base
c2440081 54 *
a7ad9794 55 * @ingroup alihlt_comp_components
c2440081 56 */
57class AliHLTCOMPHuffmanAltroCalibComponent : public AliHLTCalibrationProcessor
58 {
59 public:
60 /** constructor */
61 AliHLTCOMPHuffmanAltroCalibComponent();
62
63 /** destructor */
64 virtual ~AliHLTCOMPHuffmanAltroCalibComponent();
65
66 // Public functions to implement AliHLTComponent's interface.
67 // These functions are required for the registration process
68
69 const char* GetComponentID();
70 void GetInputDataTypes( vector<AliHLTComponentDataType>& list);
71 AliHLTComponentDataType GetOutputDataType();
72 virtual void GetOutputDataSize( unsigned long& constBase, double& inputMultiplier );
73 AliHLTComponent* Spawn();
74
75 protected:
76
77 // Protected functions to implement AliHLTComponent's interface.
78 // These functions provide initialization as well as the actual processing
79 // capabilities of the component.
80
81 /** Initialize the calibration component. */
82 Int_t InitCalibration();
83
84 /** Scan commandline arguments of the calibration component. */
85 Int_t ScanArgument( Int_t argc, const char** argv );
86
87 /** DeInitialize the calibration component. */
88 Int_t DeinitCalibration();
89
90 /** Process the data in the calibration component. */
91 Int_t ProcessCalibration( const AliHLTComponentEventData& evtData, AliHLTComponentTriggerData& trigData );
92
93 /** Ship the data to the FXS at end of run or eventmodulo. */
94 Int_t ShipDataToFXS( const AliHLTComponentEventData& evtData, AliHLTComponentTriggerData& trigData );
95
96 private:
97
98 /** copy constructor prohibited */
99 AliHLTCOMPHuffmanAltroCalibComponent(const AliHLTCOMPHuffmanAltroCalibComponent&);
100
101 /** assignment operator prohibited */
102 AliHLTCOMPHuffmanAltroCalibComponent& operator=(const AliHLTCOMPHuffmanAltroCalibComponent&);
103
104 /** Huffman compressor class */
105 AliHLTCOMPHuffmanAltro * fHuffmanCompressor; //! instance of Huffman Compressor in this component
106
107 /** pointer to output Huffman code table and occurrence table (togehter in this class) */
108 AliHLTCOMPHuffmanData * fHuffmanData; //! instance of output (Huffman Data, containing code table)
109
110 /** The Specification for this component */
111 /** explicit specification of the origin of the data (transient) */
112 TString fOrigin; // input line argument to determine origin for Huffman table
113 // -> no input --> default taken from incoming data
114 /** explicit specification of the run number */
115 AliHLTUInt64_t fRunNumber; // input line argument to determine run number for Huffman table
116
117 /** specifications of the data */
118 AliHLTUInt64_t fSpecification; // see above
119
120 /** explicit path to Huffman code table which will be put out */
121 TString fTablePath; // input line argument to determine path for Huffman table
122 // -> no input --> default set to current path name
123 //AliHLTUInt8_t fSlice; // slice
124 //AliHLTUInt8_t fPatch; // patch
125
126 /** number of NRCU trailer words of input data */
127 Int_t fNRCUTrailerWords; // see above
128
129 ClassDef(AliHLTCOMPHuffmanAltroCalibComponent, 0)
130
131 };
132#endif