3 #ifndef ALIHLTITSCLUSTERFINDERCOMPONENT_H
4 #define ALIHLTITSCLUSTERFINDERCOMPONENT_H
6 //* This file is property of and copyright by the ALICE HLT Project *
7 //* ALICE Experiment at CERN, All rights reserved. *
8 //* See cxx source for full Copyright notice *
10 /** @file AliHLTITSClusterFinderComponent.cxx
11 @author Gaute Øvrebekk <st05886@alf.uib.no>
13 @brief Component to run the offline clusterfinder.
16 #include "AliHLTProcessor.h"
17 #include "AliRawReaderMemory.h"
18 #include "AliITSClusterFinder.h"
19 #include "AliITSDetTypeRec.h"
20 #include "AliITSgeom.h"
21 #include "AliITSInitGeometry.h"
24 * @class AliHLTITSClusterFinderComponent
25 * HLT Component to run the ITS offline clusterfinders.
27 * <h2>General properties:</h2>
29 * Component ID: \b ITSClusterFinderSPD or ITSClusterFinderSDD or ITSClusterFinderSSD <br>
30 * Library: \b libAliHLTITS.so <br>
31 * Input Data Types: <br>
32 * kAliHLTDataTypeDDLRaw|kAliHLTDataOriginITSSPD or kAliHLTDataTypeDDLRaw|kAliHLTDataOriginITSSDD or kAliHLTDataTypeDDLRaw|kAliHLTDataOriginITSSD <br>
34 * Output Data Types: <br>
35 * kAliHLTDataTypeClusters|kAliHLTDataOriginITSSPD or kAliHLTDataTypeClusters|kAliHLTDataOriginITSSDD or kAliHLTDataTypeClusters|kAliHLTDataOriginITSSSD <br>
37 * <h2>Mandatory arguments:</h2>
38 * <!-- NOTE: ignore the \li. <i> and </i>: it's just doxygen formatting -->
40 * <h2>Optional arguments:</h2>
41 * <!-- NOTE: ignore the \li. <i> and </i>: it's just doxygen formatting -->
43 * <h2>Configuration:</h2>
44 * <!-- NOTE: ignore the \li. <i> and </i>: it's just doxygen formatting -->
45 * \li -config1 <i> teststring </i> <br>
46 * a configuration argument with one parameter
48 * a configuration argument without parameters
50 * <h2>Default CDB entries:</h2>
53 * <h2>Performance:</h2>
56 * <h2>Memory consumption:</h2>
59 * <h2>Output size:</h2>
62 * @ingroup alihlt_its_components
64 class AliHLTITSClusterFinderComponent : public AliHLTProcessor
68 * Defines for selecting clusterfinder for SPD, SDD or SSD.
76 * ---------------------------------------------------------------------------------
77 * Constructor / Destructor
78 * ---------------------------------------------------------------------------------
82 * @param mode input type see e.g. @ref kClusterFinderSPD
84 AliHLTITSClusterFinderComponent(int mode);
87 virtual ~AliHLTITSClusterFinderComponent();
90 * ---------------------------------------------------------------------------------
91 * Public functions to implement AliHLTComponent's interface.
92 * These functions are required for the registration process
93 * ---------------------------------------------------------------------------------
96 /** interface function, see @ref AliHLTComponent for description */
97 const char* GetComponentID();
99 /** interface function, see @ref AliHLTComponent for description */
100 void GetInputDataTypes( vector<AliHLTComponentDataType>& list);
102 /** interface function, see @ref AliHLTComponent for description */
103 AliHLTComponentDataType GetOutputDataType();
105 /** interface function, see @ref AliHLTComponent for description */
106 virtual void GetOutputDataSize( unsigned long& constBase, double& inputMultiplier );
108 /** interface function, see @ref AliHLTComponent for description */
109 AliHLTComponent* Spawn();
114 * ---------------------------------------------------------------------------------
115 * Protected functions to implement AliHLTComponent's interface.
116 * These functions provide initialization as well as the actual processing
117 * capabilities of the component.
118 * ---------------------------------------------------------------------------------
121 /** Initialization */
122 Int_t DoInit( int argc, const char** argv );
124 /** DeInitialization */
128 //Int_t DoEvent( const AliHLTComponentEventData& evtData, const AliHLTComponentBlockData* blocks,
129 // AliHLTComponentTriggerData& trigData, AliHLTUInt8_t* outputPtr
130 // ,AliHLTUInt32_t& size, AliHLTComponentBlockList& outputBlocks);
132 Int_t DoEvent( const AliHLTComponentEventData& /*evtData*/, AliHLTComponentTriggerData& /*trigData*/);
134 int Reconfigure(const char* cdbEntry, const char* chainId);
136 using AliHLTProcessor::DoEvent;
138 ///////////////////////////////////////////////////////////////////////////////////
141 /** standard constructor prohibited */
142 AliHLTITSClusterFinderComponent();
143 /** copy constructor prohibited */
144 AliHLTITSClusterFinderComponent(const AliHLTITSClusterFinderComponent&);
145 /** assignment operator prohibited */
146 AliHLTITSClusterFinderComponent& operator=(const AliHLTITSClusterFinderComponent&);
148 * Configure the component.
149 * Parse a string for the configuration arguments and set the component
152 int Configure(const char* arguments);
154 * ---------------------------------------------------------------------------------
156 * ---------------------------------------------------------------------------------
160 * switch to indicated the ClusterFinder
161 * use fModeSwitch = 0 for SPD
162 * use fModeSwitch = 1 for SDD
163 * use fModeSwitch = 2 for SSD
167 Int_t fNModules; // total number of modules
168 Int_t fId; // ddl offset
169 Int_t fNddl; // number of ddl's
171 /** the cluster finder object */
172 AliITSClusterFinder* fClusterFinder; //!transient
174 /** the reader object for data decoding */
175 AliRawReaderMemory* fRawReader; //!transient
177 AliITSDetTypeRec* fDettype; //!transient
179 AliITSgeom* fgeom; //!transient
181 AliITSInitGeometry* fgeomInit; //!transient
183 ClassDef(AliHLTITSClusterFinderComponent, 0)