]> git.uio.no Git - u/mrichter/AliRoot.git/blob - HLT/TPCLib/AliHLTTPCCalibPulserComponent.h
Calibration Processor and TPC calibration components (Jochen)
[u/mrichter/AliRoot.git] / HLT / TPCLib / AliHLTTPCCalibPulserComponent.h
1 //-*- Mode: C++ -*-
2 #ifndef ALIHLTTPCCALIBPULSERCOMPONENT_H
3 #define ALIHLTTPCCALIBPULSERCOMPONENT_H
4
5 /* This file is property of and copyright by the ALICE HLT Project        * 
6  * ALICE Experiment at CERN, All rights reserved.                         *
7  * See cxx source for full Copyright notice                               */
8
9 /** @file   AliHLTTPCCalibPulserComponent.h
10     @author Jochen Thaeder
11     @date   
12     @brief  A pulser calibration component for the TPC.
13 */
14
15 #include "AliHLTCalibrationProcessor.h"
16 #include "AliHLTTPCDefinitions.h"
17
18 class AliTPCRawStream;
19 class AliRawReaderMemory;
20 class AliTPCCalibPulser;
21
22 /**
23  * @class AliHLTTPCCalibPulserComponent
24  * 
25  * This class is the calibration component for the AliTPCCalibPulser class 
26  * used for pulser calibration of the TPC. 
27  * 
28  * It inherits from the @ref AliHLTCalibrationProcessor and uses the high-level 
29  * interface. The output is the class @ref AliTPCCalibPulser as a TObject.
30  *
31  * The component has the following component arguments:
32  *   -rcuformat <old/new>  : Wether to use old or new rcuformat ( default is new )
33  *   -enableanalysis       : Wether to enable analyis before shipping data to FXS
34  *
35  * @ingroup alihlt_tpc
36  */
37 class AliHLTTPCCalibPulserComponent : public AliHLTCalibrationProcessor
38     {
39     public:
40       /** constructor */
41       AliHLTTPCCalibPulserComponent();
42       /** not a valid copy constructor, defined according to effective C++ style */
43       AliHLTTPCCalibPulserComponent(const AliHLTTPCCalibPulserComponent&);
44       /** not a valid assignment op, but defined according to effective C++ style */
45       AliHLTTPCCalibPulserComponent& operator=(const AliHLTTPCCalibPulserComponent&);
46       /** destructor */
47       virtual ~AliHLTTPCCalibPulserComponent();
48       
49       // Public functions to implement AliHLTComponent's interface.
50       // These functions are required for the registration process
51
52       const char* GetComponentID();
53       void GetInputDataTypes( vector<AliHLTComponentDataType>& list);
54       AliHLTComponentDataType GetOutputDataType();
55       virtual void GetOutputDataSize( unsigned long& constBase, double& inputMultiplier );
56       AliHLTComponent* Spawn();
57
58     protected:
59       
60       // Protected functions to implement AliHLTComponent's interface.
61       // These functions provide initialization as well as the actual processing
62       // capabilities of the component. 
63       
64       /** Initialize the calibration component. */
65       Int_t InitCalibration();
66
67       /** Scan commandline arguments of the calibration component. */
68       Int_t ScanArgument( Int_t argc, const char** argv );
69
70       /** DeInitialize the calibration component. */
71       Int_t DeinitCalibration();
72
73       /** Process the data in the calibration component. */
74       Int_t ProcessCalibration( const AliHLTComponentEventData& evtData, AliHLTComponentTriggerData& trigData );
75
76       /** Ship the data to the FXS at end of run or eventmodulo. */
77       Int_t ShipDataToFXS( const AliHLTComponentEventData& evtData, AliHLTComponentTriggerData& trigData );
78
79     private:
80
81       /** The reader object for reading from memory */
82       AliRawReaderMemory* fRawReader;                                              //!transient
83
84       /** The reader object for reading TPC raw data */  
85       AliTPCRawStream* fRawStream;                                                 //!transient
86
87       /** Pulser Calibration class */
88       AliTPCCalibPulser * fCalibPulser;                                        //!transient
89       
90       /** Wether to use old RCU format */
91       Bool_t fRCUFormat;                                                           // see above
92
93       /** Minimum patch specifcation for this component */
94       AliHLTUInt8_t fMinPatch;                                                     // see above
95
96       /** Minimum patch specifcation for this component */
97       AliHLTUInt8_t fMaxPatch;                                                     // see above
98
99       /** The Specification for this component */
100       AliHLTUInt32_t fSpecification;                                               // see above
101
102       /** Analysze calibration data before shipping to FXS */
103       Bool_t fEnableAnalysis;                                                      // see above
104
105       ClassDef(AliHLTTPCCalibPulserComponent, 0)
106
107     };
108
109 #endif