2 // $Id: AliHLTCaloClusterizerComponent.h 36636 2009-11-11 02:16:41Z odjuvsla $
5 /**************************************************************************
6 * This file is property of and copyright by the ALICE HLT Project *
7 * All rights reserved. *
9 * Primary Authors: Oystein Djuvsland *
11 * Permission to use, copy, modify and distribute this software and its *
12 * documentation strictly for non-commercial purposes is hereby granted *
13 * without fee, provided that the above copyright notice appears in all *
14 * copies and that both the copyright notice and this permission notice *
15 * appear in the supporting documentation. The authors make no claims *
16 * about the suitability of this software for any purpose. It is *
17 * provided "as is" without express or implied warranty. *
18 **************************************************************************/
20 #ifndef ALIHLTPHOSCLUSTERIZERCOMPONENT_H
21 #define ALIHLTPHOSCLUSTERIZERCOMPONENT_H
26 * Clusterizer component for PHOS HLT
28 * @file AliHLTCaloClusterizerComponent.h
29 * @author Oystein Djuvsland
31 * @brief A clusterizer component for PHOS HLT
34 // see below for class documentation
36 // refer to README to build package
38 // visit http://web.ift.uib.no/~kjeks/doc/alice-hlt
40 #include "AliHLTPHOSProcessor.h"
42 class AliHLTCaloDigitDataStruct;
43 class AliHLTCaloDigitContainerStruct;
44 class AliHLTCaloClusterizer;
45 class AliHLTCaloRecPointDataStruct;
48 * @class AliHLTCaloClusterizerComponent
50 * Class for running clusterization for PHOS in HLT. It takes digits as input and
51 * gives reconstruction points as output.
53 * The component has the following component arguments:
54 * -clusterthreshold The energy threshold for starting a new rec point
55 * -energythreshold The energy threshold for including a digit in a
57 * @ingroup alihlt_phos
61 * @class AliHLTCaloClusterizerComponent
63 * Class for running clusterization for PHOS in HLT.
65 * <h2>General properties:</h2>
67 * Component ID: \b PhosClusterizer <br>
68 * Library: \b libAliHLTPHOS.so <br>
69 * Input Data Types: @ref AliHLTPHOSDefinitions::fgkDigitDataType<br>
70 * Output Data Types: @ref AliHLTPHOSDefinitions::fgkRecPointDataType<br>
72 * <h2>Mandatory arguments:</h2>
73 * <!-- NOTE: ignore the \li. <i> and </i>: it's just doxygen formatting -->
74 * \li No mandatory arguments for component <br>
76 * <h2>Optional arguments:</h2>
77 * <!-- NOTE: ignore the \li. <i> and </i>: it's just doxygen formatting -->
78 * \li -digitthreshold <i> value </i> <br>
79 * threshold for a digit to be added to a rec point in GeV (default value: 0.03)
80 * \li -recpointthreshold <i> value </i> <br>
81 * threshold for starting a new rec point (default value: 0.2)
83 * if we want to do clusterisation on the partition level (not available...) (defaul value: false)
85 * <h2>Configuration:</h2>
86 * <!-- NOTE: ignore the \li. <i> and </i>: it's just doxygen formatting -->
87 * \li No configuration arguments
89 * <h2>Default CDB entries:</h2>
90 * \li No CDB entry yet, will come.
92 * <h2>Performance:</h2>
93 * Pretty good (~ 3 kHz), depends on amount of data...
95 * <h2>Memory consumption:</h2>
96 * Depends on the amount of data, but pretty godd
98 * <h2>Output size:</h2>
99 * Depends on the amount of data...
101 * More detailed description. (At some point...)
103 * @ingroup alihlt_phos
106 class AliHLTCaloClusterizerComponent: public AliHLTPHOSProcessor
111 AliHLTCaloClusterizerComponent();
114 virtual ~AliHLTCaloClusterizerComponent();
116 /** Copy constructor */
117 AliHLTCaloClusterizerComponent ( const AliHLTCaloClusterizerComponent & ) :
118 AliHLTPHOSProcessor(),
120 fClusterizerPtr ( 0 ),
121 // fRecPointStructArrayPtr(0),
124 //Copy constructor not implemented
128 AliHLTCaloClusterizerComponent & operator = ( const AliHLTCaloClusterizerComponent )
134 /** interface function, see @ref AliHLTComponent for description */
135 void GetInputDataTypes ( std::vector<AliHLTComponentDataType>& list ) = 0;
137 /** interface function, see @ref AliHLTComponent for description */
138 AliHLTComponentDataType GetOutputDataType();
140 /** interface function, see @ref AliHLTComponent for description */
141 void GetOutputDataSize ( unsigned long& constBase, double& inputMultiplier );
143 /** interface function, see @ref AliHLTComponent for description */
145 using AliHLTPHOSProcessor::DoEvent;
146 int DoEvent ( const AliHLTComponentEventData& evtData, const AliHLTComponentBlockData* blocks,
147 AliHLTComponentTriggerData& trigData, AliHLTUInt8_t* outputPtr, AliHLTUInt32_t& size,
148 std::vector<AliHLTComponentBlockData>& outputBlocks );
152 /** interface function, see @ref AliHLTComponent for description */
153 int DoInit ( int argc, const char** argv );
155 /** interface function, see @ref AliHLTComponent for description */
158 /** interface function, see @ref AliHLTComponent for description */
159 int Reconfigure ( const char* cdbEntry, const char* chainId );
161 /** interface function, see @ref AliHLTComponent for description */
162 int ScanConfigurationArgument ( int argc, const char** argv );
164 /** The data type we want */
165 AliHLTComponentDataType fDataType; //COMMENT
169 /** Pointer to our digits */
170 AliHLTCaloDigitContainerStruct *fAllDigitsPtr; //! transient
172 /** Pointer to the clusterizer it self */
173 AliHLTCaloClusterizer* fClusterizerPtr; //! transient
175 /** Number of digits in event */
176 Int_t fDigitCount; //COMMENT