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 AliHLTITSSAPTrackerComponent.h
11 : /// @author Ruben Shahoyan <ruben.shahoyan@cern.ch>
12 : /// @date August 2014
13 : /// @brief An ITS standalone primaries tracker/vertexer processing component for the HLT
14 : /// Adapted from HLT/ITS/tracking/AliHLTITSTrackerComponent component
15 :
16 : #ifndef ALIHLTITSSAPTRACKERCOMPONENT_H
17 : #define ALIHLTITSSAPTRACKERCOMPONENT_H
18 :
19 : #include "AliHLTProcessor.h"
20 : #include "AliHLTDataTypes.h"
21 : #include "AliHLTComponentBenchmark.h"
22 : #include "AliRecoParam.h"
23 : class AliITSSAPTracker;
24 : class TClonesArray;
25 :
26 : /**
27 : * @class AliHLTITSSAPTrackerComponent
28 : * The HL ITS standalone primaries tracker/vertexer component.
29 : *
30 : * <h2>General properties:</h2>
31 : *
32 : * Component ID: \b ITSSAPTracker <br>
33 : * Library: \b libAliHLTITS.so <br>
34 : * Input Data Types: <br>
35 : * kAliHLTDataTypeTrack|kAliHLTDataOriginTPC <br>
36 : * kAliHLTDataTypeClusters|kAliHLTDataOriginITSSSD <br>
37 : * kAliHLTDataTypeClusters|kAliHLTDataOriginITSSPD <br>
38 : * kAliHLTDataTypeClusters|kAliHLTDataOriginITSSDD <br>
39 : *
40 : * Output Data Types: <br>
41 : * kAliHLTDataTypeTrack|kAliHLTDataOriginITS <br>
42 : *
43 : * <h2>Mandatory arguments:</h2>
44 : * <!-- NOTE: ignore the \li. <i> and </i>: it's just doxygen formatting -->
45 : *
46 : * <h2>Optional arguments:</h2>
47 : * <!-- NOTE: ignore the \li. <i> and </i>: it's just doxygen formatting -->
48 : *
49 : * <h2>Configuration:</h2>
50 : * <!-- NOTE: ignore the \li. <i> and </i>: it's just doxygen formatting -->
51 : * \li -config1 <i> teststring </i> <br>
52 : * a configuration argument with one parameter
53 : * \li -config2 <br>
54 : * a configuration argument without parameters
55 : *
56 : * <h2>Default CDB entries:</h2>
57 : *
58 : * ITS/Align/Data
59 : * ITS/Calib/SPDNoisy
60 : * ITS/Calib/SPDDead
61 : * ITS/Calib/PITConditions
62 : * ITS/Calib/CalibSDD
63 : * ITS/Calib/RespSDD
64 : * ITS/Calib/DriftSpeedSDD
65 : * ITS/Calib/DDLMapSDD
66 : * ITS/Calib/MapsTimeSDD
67 : * ITS/Calib/NoiseSSD
68 : * ITS/Calib/GainSSD
69 : * ITS/Calib/BadChannelsSSD
70 : * ITS/Calib/RecoParam
71 : *
72 : * <h2>Performance:</h2>
73 : * TODO
74 : *
75 : * <h2>Memory consumption:</h2>
76 : * TODO
77 : *
78 : * <h2>Output size:</h2>
79 : * TODO
80 : *
81 : * @ingroup alihlt_its_components
82 : */
83 : class AliHLTITSSAPTrackerComponent : public AliHLTProcessor
84 : {
85 : public:
86 : /** standard constructor */
87 : AliHLTITSSAPTrackerComponent();
88 :
89 : /** dummy copy constructor, defined according to effective C++ style */
90 : AliHLTITSSAPTrackerComponent( const AliHLTITSSAPTrackerComponent& );
91 :
92 : /** dummy assignment op, but defined according to effective C++ style */
93 : AliHLTITSSAPTrackerComponent& operator=( const AliHLTITSSAPTrackerComponent& );
94 :
95 : /** standard destructor */
96 : virtual ~AliHLTITSSAPTrackerComponent();
97 :
98 : // Public functions to implement AliHLTComponent's interface.
99 : // These functions are required for the registration process
100 :
101 : /** @see component interface @ref AliHLTComponent::GetComponentID */
102 : const char* GetComponentID() ;
103 :
104 : /** @see component interface @ref AliHLTComponent::GetInputDataTypes */
105 : void GetInputDataTypes( vector<AliHLTComponentDataType>& list ) ;
106 :
107 : /** @see component interface @ref AliHLTComponent::GetOutputDataType */
108 : AliHLTComponentDataType GetOutputDataType() ;
109 :
110 : /** @see component interface @ref AliHLTComponent::GetOutputDataType */
111 : int GetOutputDataTypes(AliHLTComponentDataTypeList& tgtList);
112 :
113 : /** @see component interface @ref AliHLTComponent::GetOutputDataSize */
114 : virtual void GetOutputDataSize( unsigned long& constBase, double& inputMultiplier ) ;
115 :
116 : /** @see component interface @ref AliHLTComponent::Spawn */
117 : AliHLTComponent* Spawn() ;
118 :
119 : protected:
120 :
121 : // Protected functions to implement AliHLTComponent's interface.
122 : // These functions provide initialization as well as the actual processing
123 : // capabilities of the component.
124 :
125 : /** @see component interface @ref AliHLTComponent::DoInit */
126 : int DoInit( int argc, const char** argv );
127 :
128 : /** @see component interface @ref AliHLTComponent::DoDeinit */
129 : int DoDeinit();
130 :
131 : /** reconfigure **/
132 : int Reconfigure( const char* cdbEntry, const char* chainId );
133 :
134 : /** @see component interface @ref AliHLTProcessor::DoEvent */
135 : int DoEvent( const AliHLTComponentEventData& evtData, const AliHLTComponentBlockData* blocks,
136 : AliHLTComponentTriggerData& trigData, AliHLTUInt8_t* outputPtr,
137 : AliHLTUInt32_t& size, vector<AliHLTComponentBlockData>& outputBlocks );
138 :
139 : private:
140 : /** type of imposed recoparam:
141 : kDefault=1,kLowMult = 2,kHighMult=4,kCosmic=8,kCalib = 16 **/
142 : AliRecoParam::EventSpecie_t fRecoParamType; // event type imposed
143 :
144 : /** if fSkipSDD>=0, forbid or allow to use sdd, otherwise rely on recoparam **/
145 : int fSkipSDD; // skip sdd layers even if data are shipped by HLT
146 :
147 : int fMaxMissL; // max number of active layers track can miss
148 :
149 : int fMaxTrackletsToRun; // don't run tracking if Ntracklets above this value
150 :
151 : int fMaxVtxIter; // max iteration for vertexer
152 :
153 : float fStopScaleChange; // min scale change in vertexer to stop iterations
154 :
155 : float fMaxRSPDVtx; // max R of SPD vertex to accept
156 :
157 : AliHLTComponentBenchmark fBenchmark;// benchmark
158 : AliITSSAPTracker *fTracker; // the tracker itself
159 :
160 : /** set configuration parameters **/
161 : void SetDefaultConfiguration();
162 : int ReadConfigurationString( const char* arguments );
163 : int ReadCDBEntry( const char* cdbEntry, const char* chainId );
164 : int Configure( const char* cdbEntry, const char* chainId, const char *commandLine );
165 :
166 : TClonesArray* fClusters;
167 :
168 6 : ClassDef( AliHLTITSSAPTrackerComponent, 0 );
169 :
170 : };
171 : #endif
|