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 "AliITSDetTypeRec.h"
19 #include "AliITSgeom.h"
20 #include "AliITSInitGeometry.h"
21 #include "TClonesArray.h"
22 #include "AliHLTDataTypes.h"
25 class AliHLTITSClusterFinderSPD;
26 class AliHLTITSClusterFinderSSD;
30 * @class AliHLTITSClusterFinderComponent
31 * HLT Component to run the ITS offline clusterfinders.
33 * <h2>General properties:</h2>
35 * Component ID: \b ITSClusterFinderSPD or ITSClusterFinderSDD or ITSClusterFinderSSD <br>
36 * Library: \b libAliHLTITS.so <br>
37 * Input Data Types: <br>
38 * kAliHLTDataTypeDDLRaw|kAliHLTDataOriginITSSPD or kAliHLTDataTypeDDLRaw|kAliHLTDataOriginITSSDD or kAliHLTDataTypeDDLRaw|kAliHLTDataOriginITSSD <br>
40 * Output Data Types: <br>
41 * kAliHLTDataTypeClusters|kAliHLTDataOriginITSSPD or kAliHLTDataTypeClusters|kAliHLTDataOriginITSSDD or kAliHLTDataTypeClusters|kAliHLTDataOriginITSSSD <br>
43 * <h2>Mandatory arguments:</h2>
44 * <!-- NOTE: ignore the \li. <i> and </i>: it's just doxygen formatting -->
46 * <h2>Optional arguments:</h2>
47 * <!-- NOTE: ignore the \li. <i> and </i>: it's just doxygen formatting -->
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
54 * a configuration argument without parameters
56 * <h2>Default CDB entries:</h2>
59 * <h2>Performance:</h2>
62 * <h2>Memory consumption:</h2>
65 * <h2>Output size:</h2>
68 * @ingroup alihlt_its_components
70 class AliHLTITSClusterFinderComponent : public AliHLTProcessor
74 * Defines for selecting clusterfinder for SPD, SDD or SSD.
83 * ---------------------------------------------------------------------------------
84 * Constructor / Destructor
85 * ---------------------------------------------------------------------------------
89 * @param mode input type see e.g. @ref kClusterFinderSPD
91 AliHLTITSClusterFinderComponent(int mode);
94 virtual ~AliHLTITSClusterFinderComponent();
97 * ---------------------------------------------------------------------------------
98 * Public functions to implement AliHLTComponent's interface.
99 * These functions are required for the registration process
100 * ---------------------------------------------------------------------------------
103 /** interface function, see @ref AliHLTComponent for description */
104 const char* GetComponentID();
106 /** interface function, see @ref AliHLTComponent for description */
107 void GetInputDataTypes( vector<AliHLTComponentDataType>& list);
109 /** interface function, see @ref AliHLTComponent for description */
110 AliHLTComponentDataType GetOutputDataType();
112 /** interface function, see @ref AliHLTComponent for description */
113 virtual void GetOutputDataSize( unsigned long& constBase, double& inputMultiplier );
115 /** interface function, see @ref AliHLTComponent for description */
116 AliHLTComponent* Spawn();
121 * ---------------------------------------------------------------------------------
122 * Protected functions to implement AliHLTComponent's interface.
123 * These functions provide initialization as well as the actual processing
124 * capabilities of the component.
125 * ---------------------------------------------------------------------------------
128 /** Initialization */
129 Int_t DoInit( int argc, const char** argv );
131 /** DeInitialization */
137 const AliHLTComponentEventData& evtData,
138 const AliHLTComponentBlockData* blocks,
139 AliHLTComponentTriggerData& /*trigData*/,
140 AliHLTUInt8_t* outputPtr,
141 AliHLTUInt32_t& size,
142 vector<AliHLTComponentBlockData>& outputBlocks );
144 //Int_t DoEvent( const AliHLTComponentEventData& /*evtData*/, AliHLTComponentTriggerData& /*trigData*/);
146 int Reconfigure(const char* cdbEntry, const char* chainId);
148 using AliHLTProcessor::DoEvent;
150 ///////////////////////////////////////////////////////////////////////////////////
153 /** standard constructor prohibited */
154 AliHLTITSClusterFinderComponent();
155 /** copy constructor prohibited */
156 AliHLTITSClusterFinderComponent(const AliHLTITSClusterFinderComponent&);
157 /** assignment operator prohibited */
158 AliHLTITSClusterFinderComponent& operator=(const AliHLTITSClusterFinderComponent&);
160 * Configure the component.
161 * Parse a string for the configuration arguments and set the component
164 int Configure(const char* arguments);
166 void RecPointToSpacePoint(AliHLTUInt8_t* outputPtr,AliHLTUInt32_t& size);
168 * ---------------------------------------------------------------------------------
170 * ---------------------------------------------------------------------------------
174 * switch to indicated the ClusterFinder
175 * use fModeSwitch = 0 for SPD
176 * use fModeSwitch = 1 for SDD
177 * use fModeSwitch = 2 for SSD
178 * use fModeSwitch = 3 for ClusterFinding on Digits (Full ITS)
180 Int_t fModeSwitch; // !
181 AliHLTComponentDataType fInputDataType; // !
182 AliHLTComponentDataType fOutputDataType; // !
184 Bool_t fUseOfflineFinder; // flag to use the offline clusterfinder
185 Int_t fNModules; // total number of modules
186 Int_t fId; // ddl offset
187 Int_t fNddl; // number of ddl's
189 TClonesArray** fClusters; //!transient
191 /** the reader object for data decoding */
193 AliRawReaderMemory* fRawReader; //!transient
194 AliITSDetTypeRec* fDettype; //!transient
195 AliITSgeom* fgeom; //!transient
196 AliITSInitGeometry* fgeomInit; //!transient
198 AliHLTITSClusterFinderSPD *fSPD; //!transient
199 AliHLTITSClusterFinderSSD *fSSD; //!transient
201 TTree *tD; //!transient
202 TTree *tR; //!transient
204 std::vector<AliITSRecPoint> fclusters; //!transient
210 double fStatTimeAllC;
213 ClassDef(AliHLTITSClusterFinderComponent, 0)