]> git.uio.no Git - u/mrichter/AliRoot.git/blob - HLT/comp/AliHLTCOMPHuffmanAltroCalibComponent.h
AliESDCaloCluster.cxx,.h: Removed fM11 and related getter and setter,
[u/mrichter/AliRoot.git] / HLT / comp / AliHLTCOMPHuffmanAltroCalibComponent.h
1 //-*- Mode: C++ -*-
2 // $Id$
3 #ifndef ALIHLTCOMPHUFFMANALTROCALIBCOMPONENT_H
4 #define ALIHLTCOMPHUFFMANALTROCALIBCOMPONENT_H
5
6 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
7  * See cxx source for full Copyright notice                               */
8
9 /** @file   AliHLTCOMPHuffmanAltroCalibComponent.h
10     @author Jochen Thaeder
11     @author extended by Jenny Wagner
12     @date   20-11-2007
13     @brief  A calibration component for the Huffman code creator 
14 */
15
16 #include "AliHLTCalibrationProcessor.h"
17
18 class AliHLTCOMPHuffmanAltro;
19 class AliHLTCOMPHuffmanData;
20
21 /**
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). 
27  *
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)
38  *
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)
43  *
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
46  *
47  * @ingroup alihlt_comp
48  */
49 class AliHLTCOMPHuffmanAltroCalibComponent : public AliHLTCalibrationProcessor
50     {
51     public:
52       /** constructor */
53       AliHLTCOMPHuffmanAltroCalibComponent();
54       
55       /** destructor */
56       virtual ~AliHLTCOMPHuffmanAltroCalibComponent();
57       
58       // Public functions to implement AliHLTComponent's interface.
59       // These functions are required for the registration process
60
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();
66
67     protected:
68       
69       // Protected functions to implement AliHLTComponent's interface.
70       // These functions provide initialization as well as the actual processing
71       // capabilities of the component. 
72       
73       /** Initialize the calibration component. */
74       Int_t InitCalibration();
75
76       /** Scan commandline arguments of the calibration component. */
77       Int_t ScanArgument( Int_t argc, const char** argv );
78
79       /** DeInitialize the calibration component. */
80       Int_t DeinitCalibration();
81
82       /** Process the data in the calibration component. */
83       Int_t ProcessCalibration( const AliHLTComponentEventData& evtData, AliHLTComponentTriggerData& trigData );
84
85       /** Ship the data to the FXS at end of run or eventmodulo. */
86       Int_t ShipDataToFXS( const AliHLTComponentEventData& evtData, AliHLTComponentTriggerData& trigData );
87
88     private:
89
90       /** copy constructor prohibited */
91       AliHLTCOMPHuffmanAltroCalibComponent(const AliHLTCOMPHuffmanAltroCalibComponent&);
92
93       /** assignment operator prohibited */
94       AliHLTCOMPHuffmanAltroCalibComponent& operator=(const AliHLTCOMPHuffmanAltroCalibComponent&);
95
96       /** Huffman compressor class */
97       AliHLTCOMPHuffmanAltro * fHuffmanCompressor; //! instance of Huffman Compressor in this component
98       
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)
101
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
108
109       /** specifications of the data */
110       AliHLTUInt64_t fSpecification;      // see above
111
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   
117
118       /** number of NRCU trailer words of input data */
119       Int_t fNRCUTrailerWords;          // see above
120
121       ClassDef(AliHLTCOMPHuffmanAltroCalibComponent, 0)
122
123     };
124 #endif