1 #ifndef ALIHLTMUONCLUSTERFINDERCOMPONENT_H
2 #define ALIHLTMUONCLUSTERFINDERCOMPONENT_H
3 /* This file is property of and copyright by the ALICE HLT Project *
4 * ALICE Experiment at CERN, All rights reserved. *
5 * See cxx source for full Copyright notice */
10 /// @file AliHLTMUONClusterFinderComponent.h
11 /// @author Artur Szostak <artursz@iafrica.com>
13 /// @brief Cluster finder component for the dimuon HLT derived from offline code.
16 #include "AliHLTMUONProcessor.h"
18 #if __GNUC__ && __GNUC__ < 3
22 class AliRawReaderMemory;
23 class AliMUONDigitMaker;
24 class AliMUONGeometryTransformer;
25 class AliMUONCalibrationData;
26 class AliMUONDigitCalibrator;
27 class AliMUONVClusterFinder;
28 class AliMUONSimpleClusterServer;
29 class AliMUONRecoParam;
32 * @class AliHLTMUONClusterFinderComponent
33 * @brief Cluster finding component for the dHLT tracker DDL raw data.
35 * This cluster finder component runs offline algorithms online within HLT.
36 * It processes the raw DDL data from dimuon spectrometer tracker stations
37 * and returns the cluster information in the offline cluster store format or
38 * dHLT internal hit coordinate format.
40 * <h2>General properties:</h2>
42 * Component ID: \b MUONClusterFinder <br>
43 * Library: \b libAliHLTMUON.so <br>
44 * Input Data Types: ('DDL_RAW ', 'MUON') <br>
45 * Output Data Types: ('CLUSTORE', 'MUON'), ('RECHITS ', 'MUON') <br>
47 * <h2>Mandatory arguments:</h2>
50 * <h2>Optional arguments:</h2>
51 * \li -delaysetup <br>
52 * Specifying this option causes the component to initialise from CDB only after
53 * receiving the first (normally Start-of-Run) event to process in DoEvent. <br>
54 * \li -cdbpath <i>path</i> <br>
55 * Specifies the CDB path to use, given by <i>path</i>. This option will override
56 * the CDB path automatically set by the HLT framework. <br>
57 * \li -run <i>number</i> <br>
58 * Specifies the run number to use, given by <i>number</i>. This option will
59 * override the current run number automatically set by the HLT framework. <br>
60 * \li -dumponerror <br>
61 * This flag will cause the component to dump the data blocks it received if
62 * an error occurs during the processing of an event. <br>
63 * \li -dumppath <i>path</i> <br>
64 * Allows one to specify the path in which to dump the received data blocks
65 * if an error occurs. <br>
66 * \li -tryrecover <br>
67 * This is a special option to the raw data decoder to turn on logic which will
68 * try and recover from corrupt raw DDL data. This is off by default. <br>
70 * If specified then the AliMUONVClusterStore object generated by the offline
71 * reconstruction code is not added to the output data. The default to send this object. <br>
73 * If specified then the clusters found by the offline reconstruction algorithm are
74 * converted to internal dHLT reconstructed hit format and a reconstructed hits data
75 * block is generated. The default is not to write in dHLT internal format since the
76 * closter store object is already written by default. <br>
78 * <h2>Standard configuration:</h2>
79 * This component should normally be configured with no extra options in the XML
82 * <h2>Default CDB entries:</h2>
83 * The component loads electronics mapping and calibration information from the MUON
84 * subdirectory in the CDB, MUON/Calib and MUON/Align.
86 * <h2>Performance:</h2>
87 * A few tens of Hertz during online running.
89 * <h2>Memory consumption:</h2>
92 * <h2>Output size:</h2>
93 * Output size is about 25% of incoming raw input data for nominal p+p events.
95 * @ingroup alihlt_muon_components
97 class AliHLTMUONClusterFinderComponent : public AliHLTMUONProcessor
100 AliHLTMUONClusterFinderComponent();
101 virtual ~AliHLTMUONClusterFinderComponent();
103 // Public functions to implement AliHLTComponent's interface.
104 // These functions are required for the registration process
106 virtual const char* GetComponentID();
107 virtual void GetInputDataTypes(AliHLTComponentDataTypeList& list);
108 virtual AliHLTComponentDataType GetOutputDataType();
109 virtual int GetOutputDataTypes(AliHLTComponentDataTypeList& list);
110 virtual void GetOutputDataSize(unsigned long& constBase, double& inputMultiplier);
111 virtual AliHLTComponent* Spawn();
115 // Protected functions to implement AliHLTComponent's interface.
116 // These functions provide initialization as well as the actual processing
117 // capabilities of the component.
119 virtual int DoInit(int argc, const char** argv);
120 virtual int Reconfigure(const char* cdbEntry, const char* componentId);
121 virtual int ReadPreprocessorValues(const char* modules);
122 virtual int DoDeinit();
124 const AliHLTComponentEventData& evtData,
125 const AliHLTComponentBlockData* blocks,
126 AliHLTComponentTriggerData& trigData,
127 AliHLTUInt8_t* outputPtr,
128 AliHLTUInt32_t& size,
129 AliHLTComponentBlockDataList& outputBlocks
132 using AliHLTProcessor::DoEvent;
136 // Do not allow copying of this class.
138 AliHLTMUONClusterFinderComponent(const AliHLTMUONClusterFinderComponent& /*obj*/);
140 AliHLTMUONClusterFinderComponent& operator = (const AliHLTMUONClusterFinderComponent& /*obj*/);
144 int ReadConfigFromCDB(
145 bool loadParams = true,
146 bool loadMapping = true,
147 bool loadGeom = true,
148 bool loadCalib = true
151 AliRawReaderMemory* fRawReader; ///< Raw reader for decoding input data for offline code.
152 AliMUONDigitMaker* fDigitMaker; ///< Digit maker to convert raw DDL data to digits.
153 AliMUONGeometryTransformer* fTransformer; ///< Transformer for geometry information.
154 AliMUONCalibrationData* fCalibrationData; ///< Calibration data object for calibrating digits.
155 AliMUONDigitCalibrator* fDigitCalibrator; ///< The object which performs calibration of digits.
156 AliMUONVClusterFinder* fClusterFinder; ///< Cluster finder implementing offline algorithm.
157 AliMUONSimpleClusterServer* fClusterServer; ///< Object for driving the cluster finder.
158 AliMUONRecoParam* fRecoParam; ///< Reconstruction parameters for offline code.
160 bool fMakeClusterStore; ///< Indicates if the cluster store object will be generated.
161 bool fMakeRecHits; ///< Indicates if the output will be in dHLT internal reconstructed hit format.
163 ClassDef(AliHLTMUONClusterFinderComponent, 0) // Cluster finder component for dHLT running offline algorithms.
166 #endif // ALIHLTMUONCLUSTERFINDERCOMPONENT_H