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 *
8 //*************************************************************************
10 /// @file AliHLTITSTrackerComponent.h
11 /// @author Sergey Gorbunov <sergey.gorbunov@kip.uni-heidelberg.de>
13 /// @brief An ITS tracker processing component for the HLT
15 #ifndef ALIHLTITSTRACKERCOMPONENT_H
16 #define ALIHLTITSTRACKERCOMPONENT_H
18 #include "AliHLTProcessor.h"
19 #include "AliHLTDataTypes.h"
20 class AliITStrackerHLT;
24 * @class AliHLTITSTrackerComponent
25 * The HL ITS tracker component.
27 * <h2>General properties:</h2>
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>
37 * Output Data Types: <br>
38 * kAliHLTDataTypeTrack|kAliHLTDataOriginITS <br>
40 * <h2>Mandatory arguments:</h2>
41 * <!-- NOTE: ignore the \li. <i> and </i>: it's just doxygen formatting -->
43 * <h2>Optional arguments:</h2>
44 * <!-- NOTE: ignore the \li. <i> and </i>: it's just doxygen formatting -->
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
51 * a configuration argument without parameters
53 * <h2>Default CDB entries:</h2>
58 * ITS/Calib/PITConditions
61 * ITS/Calib/DriftSpeedSDD
63 * ITS/Calib/MapsTimeSDD
66 * ITS/Calib/BadChannelsSSD
68 * <h2>Performance:</h2>
71 * <h2>Memory consumption:</h2>
74 * <h2>Output size:</h2>
77 * @ingroup alihlt_its_components
79 class AliHLTITSTrackerComponent : public AliHLTProcessor
82 /** standard constructor */
83 AliHLTITSTrackerComponent();
85 /** dummy copy constructor, defined according to effective C++ style */
86 AliHLTITSTrackerComponent( const AliHLTITSTrackerComponent& );
88 /** dummy assignment op, but defined according to effective C++ style */
89 AliHLTITSTrackerComponent& operator=( const AliHLTITSTrackerComponent& );
91 /** standard destructor */
92 virtual ~AliHLTITSTrackerComponent();
94 // Public functions to implement AliHLTComponent's interface.
95 // These functions are required for the registration process
97 /** @see component interface @ref AliHLTComponent::GetComponentID */
98 const char* GetComponentID() ;
100 /** @see component interface @ref AliHLTComponent::GetInputDataTypes */
101 void GetInputDataTypes( vector<AliHLTComponentDataType>& list ) ;
103 /** @see component interface @ref AliHLTComponent::GetOutputDataType */
104 AliHLTComponentDataType GetOutputDataType() ;
106 /** @see component interface @ref AliHLTComponent::GetOutputDataType */
107 int GetOutputDataTypes(AliHLTComponentDataTypeList& tgtList);
109 /** @see component interface @ref AliHLTComponent::GetOutputDataSize */
110 virtual void GetOutputDataSize( unsigned long& constBase, double& inputMultiplier ) ;
112 /** @see component interface @ref AliHLTComponent::Spawn */
113 AliHLTComponent* Spawn() ;
117 // Protected functions to implement AliHLTComponent's interface.
118 // These functions provide initialization as well as the actual processing
119 // capabilities of the component.
121 /** @see component interface @ref AliHLTComponent::DoInit */
122 int DoInit( int argc, const char** argv );
124 /** @see component interface @ref AliHLTComponent::DoDeinit */
128 int Reconfigure( const char* cdbEntry, const char* chainId );
130 /** @see component interface @ref AliHLTProcessor::DoEvent */
131 int DoEvent( const AliHLTComponentEventData& evtData, const AliHLTComponentBlockData* blocks,
132 AliHLTComponentTriggerData& trigData, AliHLTUInt8_t* outputPtr,
133 AliHLTUInt32_t& size, vector<AliHLTComponentBlockData>& outputBlocks );
137 /** magnetic field */
138 double fSolenoidBz; // see above
139 double fFullTime; //* total time for DoEvent() [s]
140 double fRecoTime; //* total reconstruction time [s]
141 Long_t fNEvents; //* number of reconstructed events
142 AliITStrackerHLT *fTracker; // the tracker itself
144 /** set configuration parameters **/
145 void SetDefaultConfiguration();
146 int ReadConfigurationString( const char* arguments );
147 int ReadCDBEntry( const char* cdbEntry, const char* chainId );
148 int Configure( const char* cdbEntry, const char* chainId, const char *commandLine );
150 ClassDef( AliHLTITSTrackerComponent, 0 );