]> git.uio.no Git - u/mrichter/AliRoot.git/blob - HLT/ITS/tracking/AliHLTITSTrackerComponent.h
extra benchmarks are added
[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 #include "AliHLTComponentBenchmark.h"
21 class AliITStrackerHLT;
22
23
24 /**
25  * @class AliHLTITSTrackerComponent
26  * The HL ITS tracker component.
27  *
28  * <h2>General properties:</h2>
29  *
30  * Component ID: \b ITSTracker                              <br>
31  * Library: \b libAliHLTITS.so                              <br>
32  * Input Data Types:                                        <br> 
33  *    kAliHLTDataTypeTrack|kAliHLTDataOriginTPC             <br>
34  *    kAliHLTDataTypeClusters|kAliHLTDataOriginITSSSD       <br>
35  *    kAliHLTDataTypeClusters|kAliHLTDataOriginITSSPD       <br>
36  *    kAliHLTDataTypeClusters|kAliHLTDataOriginITSSDD       <br>
37  *      
38  * Output Data Types:                                       <br>
39  *    kAliHLTDataTypeTrack|kAliHLTDataOriginITS             <br>
40  *
41  * <h2>Mandatory arguments:</h2>
42  * <!-- NOTE: ignore the \li. <i> and </i>: it's just doxygen formatting -->
43  *
44  * <h2>Optional arguments:</h2>
45  * <!-- NOTE: ignore the \li. <i> and </i>: it's just doxygen formatting -->
46  *
47  * <h2>Configuration:</h2>
48  * <!-- NOTE: ignore the \li. <i> and </i>: it's just doxygen formatting -->
49  * \li -config1      <i> teststring   </i> <br>
50  *      a configuration argument with one parameter
51  * \li -config2                            <br>
52  *      a configuration argument without parameters
53  *
54  * <h2>Default CDB entries:</h2>
55  *
56  * ITS/Align/Data
57  * ITS/Calib/SPDNoisy
58  * ITS/Calib/SPDDead
59  * ITS/Calib/PITConditions
60  * ITS/Calib/CalibSDD
61  * ITS/Calib/RespSDD
62  * ITS/Calib/DriftSpeedSDD
63  * ITS/Calib/DDLMapSDD
64  * ITS/Calib/MapsTimeSDD
65  * ITS/Calib/NoiseSSD
66  * ITS/Calib/GainSSD
67  * ITS/Calib/BadChannelsSSD
68  *
69  * <h2>Performance:</h2>
70  * TODO
71  *
72  * <h2>Memory consumption:</h2>
73  * TODO
74  *
75  * <h2>Output size:</h2>
76  * TODO
77  * 
78  * @ingroup alihlt_its_components
79  */
80 class AliHLTITSTrackerComponent : public AliHLTProcessor
81 {
82   public:
83     /** standard constructor */
84     AliHLTITSTrackerComponent();
85
86     /** dummy copy constructor, defined according to effective C++ style */
87     AliHLTITSTrackerComponent( const AliHLTITSTrackerComponent& );
88
89     /** dummy assignment op, but defined according to effective C++ style */
90     AliHLTITSTrackerComponent& operator=( const AliHLTITSTrackerComponent& );
91
92     /** standard destructor */
93     virtual ~AliHLTITSTrackerComponent();
94
95     // Public functions to implement AliHLTComponent's interface.
96     // These functions are required for the registration process
97
98     /** @see component interface @ref AliHLTComponent::GetComponentID */
99     const char* GetComponentID() ;
100
101     /** @see component interface @ref AliHLTComponent::GetInputDataTypes */
102     void GetInputDataTypes( vector<AliHLTComponentDataType>& list )  ;
103
104     /** @see component interface @ref AliHLTComponent::GetOutputDataType */
105     AliHLTComponentDataType GetOutputDataType() ;
106
107     /** @see component interface @ref AliHLTComponent::GetOutputDataType */
108     int  GetOutputDataTypes(AliHLTComponentDataTypeList& tgtList);
109
110     /** @see component interface @ref AliHLTComponent::GetOutputDataSize */
111     virtual void GetOutputDataSize( unsigned long& constBase, double& inputMultiplier ) ;
112
113     /** @see component interface @ref AliHLTComponent::Spawn */
114     AliHLTComponent* Spawn() ;
115
116   protected:
117
118     // Protected functions to implement AliHLTComponent's interface.
119     // These functions provide initialization as well as the actual processing
120     // capabilities of the component.
121
122     /** @see component interface @ref AliHLTComponent::DoInit */
123     int DoInit( int argc, const char** argv );
124
125     /** @see component interface @ref AliHLTComponent::DoDeinit */
126     int DoDeinit();
127
128     /** reconfigure **/
129     int Reconfigure( const char* cdbEntry, const char* chainId );
130
131     /** @see component interface @ref AliHLTProcessor::DoEvent */
132     int DoEvent( const AliHLTComponentEventData& evtData, const AliHLTComponentBlockData* blocks,
133                  AliHLTComponentTriggerData& trigData, AliHLTUInt8_t* outputPtr,
134                  AliHLTUInt32_t& size, vector<AliHLTComponentBlockData>& outputBlocks );
135
136   private:
137
138     /** magnetic field */
139     double fSolenoidBz;                                            // see above
140     AliHLTComponentBenchmark fBenchmark;// benchmark
141     AliITStrackerHLT *fTracker; // the tracker itself
142
143     /** set configuration parameters **/
144     void SetDefaultConfiguration();
145     int ReadConfigurationString(  const char* arguments );
146     int ReadCDBEntry( const char* cdbEntry, const char* chainId );
147     int Configure( const char* cdbEntry, const char* chainId, const char *commandLine  );
148
149     ClassDef( AliHLTITSTrackerComponent, 0 );
150
151 };
152 #endif