40c6c6e132f63330104a04947a31a51b4e269816
[u/mrichter/AliRoot.git] / HLT / TPCLib / offline / AliHLTTPCOfflineTrackerCalibComponent.h
1 //-*- Mode: C++ -*-
2 // $Id$
3 #ifndef ALIHLTTPCOFFLINETRACKERCALIBCOMPONENT_H
4 #define ALIHLTTPCOFFLINETRACKERCALIBCOMPONENT_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   AliHLTTPCOfflineTrackerCalibComponent.h
11     @author Jacek Otwinowski & Matthias Richter
12     @date   
13     @brief  Wrapper component to the TPC offline tracker (ONLY CALIBRATION)
14 */
15
16 #include "AliHLTProcessor.h"
17
18 /**
19  * @class AliHLTTPCOfflineTrackerCalibComponent
20  * Wrapper component to a TPC offline tracker for calibration
21  *
22  * The component interfaces the AliTPCtrackerMI of the TPC offline code
23  * to the online HLT (ONLY FOR CALIBRATION). The component expects a TClonesArray containing the
24  * cluster information. The output are TPC seed in TObjArray.
25  *
26  * <h2>General properties:</h2>
27  *
28  * Component ID: \b TPCOfflineTrackerCalib <br>
29  * Library: \b libAliHLTTPC.so     <br>
30  * Input Data Types: ::kAliHLTDataTypeTObjArray|::kAliHLTDataOriginTPC <br>
31  * Output Data Types: ::kAliHLTDataTypeTObjArray|::kAliHLTDataOriginTPC <br>
32  *
33  * <h2>Mandatory arguments:</h2>
34  * <!-- NOTE: ignore the \li. <i> and </i>: it's just doxygen formatting -->
35  *
36  * <h2>Optional arguments:</h2>
37  * <!-- NOTE: ignore the \li. <i> and </i>: it's just doxygen formatting -->
38  *
39  * <h2>Configuration:</h2>
40  * <!-- NOTE: ignore the \li. <i> and </i>: it's just doxygen formatting -->
41  *
42  * <h2>Default CDB entries:</h2>
43  * - loads magnetic field value from <tt>HLT/ConfigHLT/SolenoidBz</tt>.
44  *
45  * <h2>Performance:</h2>
46  * To be determined.
47  *
48  * <h2>Memory consumption:</h2>
49  * To be determined.
50  *
51  * <h2>Output size:</h2>
52  * To be determined.
53  *
54  * @ingroup alihlt_tpc_components
55  */
56
57 class AliTPCParam;
58 class AliTPCtrackerMI;
59 class AliESDEvent;
60
61 class AliHLTTPCOfflineTrackerCalibComponent : public AliHLTProcessor {
62 public:
63   AliHLTTPCOfflineTrackerCalibComponent();
64   virtual ~AliHLTTPCOfflineTrackerCalibComponent();
65
66   // AliHLTComponent interface functions
67   const char* GetComponentID();
68   void GetInputDataTypes( vector<AliHLTComponentDataType>& list);
69   AliHLTComponentDataType GetOutputDataType();
70   void GetOutputDataSize( unsigned long& constBase, double& inputMultiplier );
71
72   // Spawn function, return new class instance
73   AliHLTComponent* Spawn();
74
75  protected:
76   // AliHLTComponent interface functions
77   int DoInit( int argc, const char** argv );
78   int DoDeinit();
79   int DoEvent( const AliHLTComponentEventData& evtData, AliHLTComponentTriggerData& trigData);
80   int Reconfigure(const char* cdbEntry, const char* chainId);
81
82   using AliHLTProcessor::DoEvent;
83
84 private:
85   /** copy constructor prohibited */
86   AliHLTTPCOfflineTrackerCalibComponent(const AliHLTTPCOfflineTrackerCalibComponent&);
87   /** assignment operator prohibited */
88   AliHLTTPCOfflineTrackerCalibComponent& operator=(const AliHLTTPCOfflineTrackerCalibComponent&);
89   
90   string fGeometryFileName;   //! Geometry file with full path
91   AliTPCParam *fTPCGeomParam; //! TPC geometry params
92
93   AliTPCtrackerMI *fTracker;  //! TPC tracker
94   AliESDEvent *fESD;          //! AliESDEvent needed by TPC tracker
95
96   /**
97    * Configure the component.
98    * Parse a string for the configuration arguments and set the component
99    * properties.
100    */
101   int Configure(const char* arguments);
102
103   ClassDef(AliHLTTPCOfflineTrackerCalibComponent, 0)
104 };
105 #endif