]> git.uio.no Git - u/mrichter/AliRoot.git/blob - HLT/TPCLib/calibration/AliHLTTPCCalibPulserComponent.h
Update master to aliroot
[u/mrichter/AliRoot.git] / HLT / TPCLib / calibration / 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 // see header file for class documentation
16 // or
17 // refer to README to build package
18 // or
19 // visit http://web.ift.uib.no/~kjeks/doc/alice-hlt   
20
21 #include "AliHLTCalibrationProcessor.h"
22 #include "AliHLTTPCDefinitions.h"
23
24 class AliTPCRawStream;
25 class AliRawReaderMemory;
26 class AliTPCCalibPulser;
27
28 /**
29  * @class AliHLTTPCCalibPulserComponent
30  * 
31  * This class is the calibration component for the AliTPCCalibPulser class 
32  * used for pulser calibration of the TPC. 
33  * 
34  * It inherits from the AliHLTCalibrationProcessor and uses the high-level 
35  * interface. The output is the class AliTPCCalibPulser as a TObject.
36  *
37  * The component has the following component arguments:
38  *   -enableanalysis       : Wether to enable analyis before shipping data to FXS
39  *
40  * @ingroup alihlt_tpc_components
41  */
42 class AliHLTTPCCalibPulserComponent : public AliHLTCalibrationProcessor
43     {
44     public:
45       /** constructor */
46       AliHLTTPCCalibPulserComponent();
47       /** destructor */
48       virtual ~AliHLTTPCCalibPulserComponent();
49       
50       // Public functions to implement AliHLTComponent's interface.
51       // These functions are required for the registration process
52
53       const char* GetComponentID();
54       void GetInputDataTypes( vector<AliHLTComponentDataType>& list);
55       AliHLTComponentDataType GetOutputDataType();
56       virtual void GetOutputDataSize( unsigned long& constBase, double& inputMultiplier );
57       AliHLTComponent* Spawn();
58
59     protected:
60
61       using AliHLTCalibrationProcessor::ProcessCalibration;
62       using AliHLTCalibrationProcessor::ShipDataToFXS;
63       
64       // Protected functions to implement AliHLTComponent's interface.
65       // These functions provide initialization as well as the actual processing
66       // capabilities of the component. 
67       
68       /** Initialize the calibration component. */
69       Int_t InitCalibration();
70
71       /** Scan commandline arguments of the calibration component. */
72       Int_t ScanArgument( Int_t argc, const char** argv );
73
74       /** DeInitialize the calibration component. */
75       Int_t DeinitCalibration();
76
77       /** Process the data in the calibration component. */
78       Int_t ProcessCalibration( const AliHLTComponentEventData& evtData, AliHLTComponentTriggerData& trigData );
79
80       /** Ship the data to the FXS at end of run or eventmodulo. */
81       Int_t ShipDataToFXS( const AliHLTComponentEventData& evtData, AliHLTComponentTriggerData& trigData );
82
83     private:
84       /** copy constructor prohibited */
85       AliHLTTPCCalibPulserComponent(const AliHLTTPCCalibPulserComponent&);
86       /** assignment operator prohibited */
87       AliHLTTPCCalibPulserComponent& operator=(const AliHLTTPCCalibPulserComponent&);
88
89       /** The reader object for reading from memory */
90       AliRawReaderMemory* fRawReader;                                              //!transient
91
92       /** The reader object for reading TPC raw data */  
93       AliTPCRawStream* fRawStream;                                                 //!transient
94
95       /** Pulser Calibration class */
96       AliTPCCalibPulser * fCalibPulser;                                        //!transient
97       
98       /** Minimum patch specifcation for this component */
99       AliHLTUInt8_t fMinPatch;                                                     // see above
100
101       /** Minimum patch specifcation for this component */
102       AliHLTUInt8_t fMaxPatch;                                                     // see above
103
104       /** The Specification for this component */
105       AliHLTUInt32_t fSpecification;                                               // see above
106
107       /** Analysze calibration data before shipping to FXS */
108       Bool_t fEnableAnalysis;                                                      // see above
109
110       ClassDef(AliHLTTPCCalibPulserComponent, 0)
111
112     };
113
114 #endif