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"
24 #include "AliHLTComponentBenchmark.h"
26 class AliHLTITSClusterFinderSPD;
27 class AliHLTITSClusterFinderSSD;
31 * @class AliHLTITSClusterFinderComponent
32 * HLT Component to run the ITS offline clusterfinders.
34 * <h2>General properties:</h2>
36 * Component ID: \b ITSClusterFinderSPD or ITSClusterFinderSDD or ITSClusterFinderSSD <br>
37 * Library: \b libAliHLTITS.so <br>
38 * Input Data Types: <br>
39 * kAliHLTDataTypeDDLRaw|kAliHLTDataOriginITSSPD or kAliHLTDataTypeDDLRaw|kAliHLTDataOriginITSSDD or kAliHLTDataTypeDDLRaw|kAliHLTDataOriginITSSD <br>
41 * Output Data Types: <br>
42 * kAliHLTDataTypeClusters|kAliHLTDataOriginITSSPD or kAliHLTDataTypeClusters|kAliHLTDataOriginITSSDD or kAliHLTDataTypeClusters|kAliHLTDataOriginITSSSD <br>
44 * <h2>Mandatory arguments:</h2>
45 * <!-- NOTE: ignore the \li. <i> and </i>: it's just doxygen formatting -->
47 * <h2>Optional arguments:</h2>
48 * <!-- NOTE: ignore the \li. <i> and </i>: it's just doxygen formatting -->
50 * <h2>Configuration:</h2>
51 * <!-- NOTE: ignore the \li. <i> and </i>: it's just doxygen formatting -->
52 * \li -config1 <i> teststring </i> <br>
53 * a configuration argument with one parameter
55 * a configuration argument without parameters
57 * <h2>Default CDB entries:</h2>
60 * TRIGGER/SPD/PITConditions
63 * ITS/Calib/DriftSpeedSDD
65 * ITS/Calib/MapsTimeSDD
68 * ITS/Calib/BadChannelsSSD
71 * <h2>Performance:</h2>
74 * <h2>Memory consumption:</h2>
77 * <h2>Output size:</h2>
80 * @ingroup alihlt_its_components
82 class AliHLTITSClusterFinderComponent : public AliHLTProcessor
86 * Defines for selecting clusterfinder for SPD, SDD or SSD.
95 * ---------------------------------------------------------------------------------
96 * Constructor / Destructor
97 * ---------------------------------------------------------------------------------
101 * @param mode input type see e.g. @ref kClusterFinderSPD
103 AliHLTITSClusterFinderComponent(int mode);
106 virtual ~AliHLTITSClusterFinderComponent();
109 * ---------------------------------------------------------------------------------
110 * Public functions to implement AliHLTComponent's interface.
111 * These functions are required for the registration process
112 * ---------------------------------------------------------------------------------
115 /** interface function, see @ref AliHLTComponent for description */
116 const char* GetComponentID();
118 /** interface function, see @ref AliHLTComponent for description */
119 void GetInputDataTypes( vector<AliHLTComponentDataType>& list);
121 /** interface function, see @ref AliHLTComponent for description */
122 AliHLTComponentDataType GetOutputDataType();
124 /** interface function, see @ref AliHLTComponent for description */
125 virtual void GetOutputDataSize( unsigned long& constBase, double& inputMultiplier );
127 /** interface function, see @ref AliHLTComponent for description */
128 AliHLTComponent* Spawn();
133 * ---------------------------------------------------------------------------------
134 * Protected functions to implement AliHLTComponent's interface.
135 * These functions provide initialization as well as the actual processing
136 * capabilities of the component.
137 * ---------------------------------------------------------------------------------
140 /** Initialization */
141 Int_t DoInit( int argc, const char** argv );
143 /** DeInitialization */
149 const AliHLTComponentEventData& evtData,
150 const AliHLTComponentBlockData* blocks,
151 AliHLTComponentTriggerData& /*trigData*/,
152 AliHLTUInt8_t* outputPtr,
153 AliHLTUInt32_t& size,
154 vector<AliHLTComponentBlockData>& outputBlocks );
156 //Int_t DoEvent( const AliHLTComponentEventData& /*evtData*/, AliHLTComponentTriggerData& /*trigData*/);
158 int Reconfigure(const char* cdbEntry, const char* chainId);
160 using AliHLTProcessor::DoEvent;
162 ///////////////////////////////////////////////////////////////////////////////////
165 /** standard constructor prohibited */
166 AliHLTITSClusterFinderComponent();
167 /** copy constructor prohibited */
168 AliHLTITSClusterFinderComponent(const AliHLTITSClusterFinderComponent&);
169 /** assignment operator prohibited */
170 AliHLTITSClusterFinderComponent& operator=(const AliHLTITSClusterFinderComponent&);
172 * Configure the component.
173 * Parse a string for the configuration arguments and set the component
176 int Configure(const char* arguments);
178 void RecPointToSpacePoint(AliHLTUInt8_t* outputPtr,AliHLTUInt32_t& size);
180 * ---------------------------------------------------------------------------------
182 * ---------------------------------------------------------------------------------
186 * switch to indicated the ClusterFinder
187 * use fModeSwitch = 0 for SPD
188 * use fModeSwitch = 1 for SDD
189 * use fModeSwitch = 2 for SSD
190 * use fModeSwitch = 3 for ClusterFinding on Digits (Full ITS)
192 Int_t fModeSwitch; // !
193 AliHLTComponentDataType fInputDataType; // !
194 AliHLTComponentDataType fOutputDataType; // !
196 Bool_t fUseOfflineFinder; // flag to use the offline clusterfinder
197 Int_t fNModules; // total number of modules
198 Int_t fId; // ddl offset
199 Int_t fNddl; // number of ddl's
201 TClonesArray** fClusters; //!transient
203 /** the reader object for data decoding */
205 AliRawReaderMemory* fRawReader; //!transient
206 AliITSDetTypeRec* fDettype; //!transient
207 AliITSgeom* fgeom; //!transient
208 AliITSInitGeometry* fgeomInit; //!transient
210 AliHLTITSClusterFinderSPD *fSPD; //!transient
211 AliHLTITSClusterFinderSSD *fSSD; //!transient
213 TTree *tD; //!transient
214 TTree *tR; //!transient
216 std::vector<AliITSRecPoint> fclusters; //!transient
218 AliHLTComponentBenchmark fBenchmark;// benchmark
220 ClassDef(AliHLTITSClusterFinderComponent, 0)