Line data Source code
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 6 : ClassDef( AliHLTITSTrackerComponent, 0 );
150 :
151 : };
152 : #endif
|