0b4830685b8d64c8f5526a3f080ee2682a0c1388
[u/mrichter/AliRoot.git] / HLT / TPCLib / offline / AliHLTTPCOfflineCalibrationComponent.h
1 //-*- Mode: C++ -*-
2 // $Id$
3 #ifndef ALIHLTTPCOFFLINECALIBRATIONCOMPONENT_H
4 #define ALIHLTTPCOFFLINECALIBRATIONCOMPONENT_H
5
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                               *
9
10 /** @file   AliHLTTPCOfflineCalibrationComponent.h
11     @author Jacek Otwinowski
12     @date   
13     @brief  TPC calibration component
14 */
15
16 #include "AliHLTCalibrationProcessor.h"
17
18 /**
19  * @class AliHLTTPCOfflineCalibrationComponent
20  * TPC calibration component
21  *
22  * The component interfaces of the TPC offline calibration components
23  * to the online HLT. The component expects a TPCseed object.
24  * The outputs are calibration components.
25  *
26  * <h2>General properties:</h2>
27  *
28  * Component ID: \b TPCOfflineCalibration <br>
29  * Library: \b libAliHLTTPC.so     <br>
30  * Input Data Types: @ref kAliHLTDataTypeTObjArray|kAliHLTDataOriginTPC <br>
31  * Output Data Types: @ref AliHLTTPCDefinitions::fgkOfflineCalibAlignDataType|kAliHLTDataOriginTPC <br>
32  * Output Data Types: @ref AliHLTTPCDefinitions::fgkOfflineCalibTracksDataType|kAliHLTDataOriginTPC <br>
33  * Output Data Types: @ref AliHLTTPCDefinitions::fgkOfflineCalibTracksGainDataType|kAliHLTDataOriginTPC <br>
34  *
35  * <h2>Mandatory arguments:</h2>
36  * <!-- NOTE: ignore the \li. <i> and </i>: it's just doxygen formatting -->
37  *
38  * <h2>Optional arguments:</h2>
39  * <!-- NOTE: ignore the \li. <i> and </i>: it's just doxygen formatting -->
40  *
41  * <h2>Configuration:</h2>
42  * <!-- NOTE: ignore the \li. <i> and </i>: it's just doxygen formatting -->
43  *
44  * <h2>Default CDB entries:</h2>
45  * - loads magnetic field value from <tt>HLT/ConfigHLT/SolenoidBz</tt>.
46  *
47  * <h2>Performance:</h2>
48  * To be determined.
49  *
50  * <h2>Memory consumption:</h2>
51  * To be determined.
52  *
53  * <h2>Output size:</h2>
54  * To be determined.
55  *
56  */
57
58 class  AliTPCClusterParam;
59 class  AliTPCcalibTracksCuts;
60
61 class AliTPCcalibAlign;
62 class AliTPCcalibTracksGain;
63 class AliTPCcalibTracks;
64
65 class AliHLTTPCOfflineCalibrationComponent : public AliHLTCalibrationProcessor {
66 public:
67   AliHLTTPCOfflineCalibrationComponent();
68   virtual ~AliHLTTPCOfflineCalibrationComponent();
69
70   // AliHLTComponent interface functions
71   const char* GetComponentID();
72   void GetInputDataTypes(vector<AliHLTComponentDataType>& list);
73   AliHLTComponentDataType GetOutputDataType();
74   int GetOutputDataTypes(AliHLTComponentDataTypeList& tgtList);
75   void GetOutputDataSize(unsigned long& constBase, double& inputMultiplier);
76
77   // Spawn function, return new class instance
78   AliHLTComponent* Spawn();
79
80 protected:
81   // AliHLTComponent interface functions
82
83
84    /** Initialize the calibration component. */
85    Int_t InitCalibration();
86
87    /** Scan commandline arguments of the calibration component. */
88    Int_t ScanArgument( Int_t argc, const char** argv );
89
90    /** DeInitialize the calibration component. */
91    Int_t DeinitCalibration();
92
93    /** Process the data in the calibration component. */
94    Int_t ProcessCalibration( const AliHLTComponentEventData& evtData, AliHLTComponentTriggerData& trigData );
95
96    /** Ship the data to the FXS at end of run or eventmodulo. */
97    Int_t ShipDataToFXS( const AliHLTComponentEventData& evtData, AliHLTComponentTriggerData& trigData );
98
99    using AliHLTCalibrationProcessor::ProcessCalibration;
100    using AliHLTCalibrationProcessor::ShipDataToFXS;
101
102 private:
103   /** copy constructor prohibited */
104   AliHLTTPCOfflineCalibrationComponent(const AliHLTTPCOfflineCalibrationComponent&);
105   /** assignment operator prohibited */
106   AliHLTTPCOfflineCalibrationComponent& operator=(const AliHLTTPCOfflineCalibrationComponent&);
107   
108   Bool_t fEnableAnalysis;               //! enable component analysis
109
110   AliTPCClusterParam * fClustParam;  //! TPC cluster parameters
111   AliTPCcalibTracksCuts* fTrackCuts; //! TPC track cuts 
112
113   AliTPCcalibAlign *fTPCcalibAlign;     //! TPC geometry params
114   AliTPCcalibTracksGain *fTPCcalibTracksGain;  //! TPC tracker
115   AliTPCcalibTracks *fTPCcalibTracks;          //! AliESDEvent needed by TPC tracker
116
117   /**
118    * Configure the component.
119    * Parse a string for the configuration arguments and set the component
120    * properties.
121    */
122   int Configure(const char* arguments);
123   int Reconfigure(const char* /*cdbEntry*/, const char* /*chainId*/);
124
125   ClassDef(AliHLTTPCOfflineCalibrationComponent, 0)
126 };
127 #endif