compilation error fixed
[u/mrichter/AliRoot.git] / HLT / ITS / tracking / AliHLTITSTrackerComponent.h
1 //-*- Mode: C++ -*-
2 // $Id$
3 // ************************************************************************
4 // This file is property of and copyright by the ALICE HLT Project        *
5 // ALICE Experiment at CERN, All rights reserved.                         *
6 // See cxx source for full Copyright notice                               *
7 //                                                                        *
8 //*************************************************************************
9
10 ///  @file   AliHLTITSTrackerComponent.h
11 ///  @author Sergey Gorbunov <sergey.gorbunov@kip.uni-heidelberg.de>
12 ///  @date   June 2009
13 ///  @brief  An ITS tracker processing component for the HLT
14
15 #ifndef ALIHLTITSTRACKERCOMPONENT_H
16 #define ALIHLTITSTRACKERCOMPONENT_H
17
18 #include "AliHLTProcessor.h"
19 #include "AliHLTDataTypes.h"
20 class AliITStrackerHLT;
21
22
23 /**
24  * @class AliHLTITSTrackerComponent
25  * The HL ITS tracker component.
26  *
27  * <h2>General properties:</h2>
28  *
29  * Component ID: \b ITSTracker                              <br>
30  * Library: \b libAliHLTITS.so                              <br>
31  * Input Data Types:                                        <br> 
32  *    kAliHLTDataTypeTrack|kAliHLTDataOriginTPC             <br>
33  *    kAliHLTDataTypeClusters|kAliHLTDataOriginITSSSD       <br>
34  *    kAliHLTDataTypeClusters|kAliHLTDataOriginITSSPD       <br>
35  *    kAliHLTDataTypeClusters|kAliHLTDataOriginITSSDD       <br>
36  *      
37  * Output Data Types:                                       <br>
38  *    kAliHLTDataTypeTrack|kAliHLTDataOriginITS             <br>
39  *
40  * <h2>Mandatory arguments:</h2>
41  * <!-- NOTE: ignore the \li. <i> and </i>: it's just doxygen formatting -->
42  *
43  * <h2>Optional arguments:</h2>
44  * <!-- NOTE: ignore the \li. <i> and </i>: it's just doxygen formatting -->
45  *
46  * <h2>Configuration:</h2>
47  * <!-- NOTE: ignore the \li. <i> and </i>: it's just doxygen formatting -->
48  * \li -config1      <i> teststring   </i> <br>
49  *      a configuration argument with one parameter
50  * \li -config2                            <br>
51  *      a configuration argument without parameters
52  *
53  * <h2>Default CDB entries:</h2>
54  * TODO
55  *
56  * <h2>Performance:</h2>
57  * TODO
58  *
59  * <h2>Memory consumption:</h2>
60  * TODO
61  *
62  * <h2>Output size:</h2>
63  * TODO
64  * 
65  * @ingroup alihlt_its_components
66  */
67 class AliHLTITSTrackerComponent : public AliHLTProcessor
68 {
69   public:
70     /** standard constructor */
71     AliHLTITSTrackerComponent();
72
73     /** dummy copy constructor, defined according to effective C++ style */
74     AliHLTITSTrackerComponent( const AliHLTITSTrackerComponent& );
75
76     /** dummy assignment op, but defined according to effective C++ style */
77     AliHLTITSTrackerComponent& operator=( const AliHLTITSTrackerComponent& );
78
79     /** standard destructor */
80     virtual ~AliHLTITSTrackerComponent();
81
82     // Public functions to implement AliHLTComponent's interface.
83     // These functions are required for the registration process
84
85     /** @see component interface @ref AliHLTComponent::GetComponentID */
86     const char* GetComponentID() ;
87
88     /** @see component interface @ref AliHLTComponent::GetInputDataTypes */
89     void GetInputDataTypes( vector<AliHLTComponentDataType>& list )  ;
90
91     /** @see component interface @ref AliHLTComponent::GetOutputDataType */
92     AliHLTComponentDataType GetOutputDataType() ;
93
94     /** @see component interface @ref AliHLTComponent::GetOutputDataType */
95     int  GetOutputDataTypes(AliHLTComponentDataTypeList& tgtList);
96
97     /** @see component interface @ref AliHLTComponent::GetOutputDataSize */
98     virtual void GetOutputDataSize( unsigned long& constBase, double& inputMultiplier ) ;
99
100     /** @see component interface @ref AliHLTComponent::Spawn */
101     AliHLTComponent* Spawn() ;
102
103   protected:
104
105     // Protected functions to implement AliHLTComponent's interface.
106     // These functions provide initialization as well as the actual processing
107     // capabilities of the component.
108
109     /** @see component interface @ref AliHLTComponent::DoInit */
110     int DoInit( int argc, const char** argv );
111
112     /** @see component interface @ref AliHLTComponent::DoDeinit */
113     int DoDeinit();
114
115     /** reconfigure **/
116     int Reconfigure( const char* cdbEntry, const char* chainId );
117
118     /** @see component interface @ref AliHLTProcessor::DoEvent */
119     int DoEvent( const AliHLTComponentEventData& evtData, const AliHLTComponentBlockData* blocks,
120                  AliHLTComponentTriggerData& trigData, AliHLTUInt8_t* outputPtr,
121                  AliHLTUInt32_t& size, vector<AliHLTComponentBlockData>& outputBlocks );
122
123   private:
124
125     /** magnetic field */
126     double fSolenoidBz;                                            // see above
127     double fFullTime; //* total time for DoEvent() [s]
128     double fRecoTime; //* total reconstruction time [s]
129     Long_t    fNEvents;  //* number of reconstructed events
130     AliITStrackerHLT *fTracker; // the tracker itself
131
132     /** set configuration parameters **/
133     void SetDefaultConfiguration();
134     int ReadConfigurationString(  const char* arguments );
135     int ReadCDBEntry( const char* cdbEntry, const char* chainId );
136     int Configure( const char* cdbEntry, const char* chainId, const char *commandLine  );
137
138     ClassDef( AliHLTITSTrackerComponent, 0 );
139
140 };
141 #endif