Line data Source code
1 : //-*- Mode: C++ -*-
2 : // $Id: AliHLTCaloClusterizerComponent.h 36636 2009-11-11 02:16:41Z odjuvsla $
3 :
4 :
5 : /**************************************************************************
6 : * This file is property of and copyright by the ALICE HLT Project *
7 : * All rights reserved. *
8 : * *
9 : * Primary Authors: Oystein Djuvsland *
10 : * *
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 : **************************************************************************/
19 :
20 : #ifndef ALIHLTCALOCLUSTERIZERCOMPONENT_H
21 : #define ALIHLTCALOCLUSTERIZERCOMPONENT_H
22 :
23 :
24 :
25 : /**
26 : * Clusterizer component for PHOS HLT
27 : *
28 : * @file AliHLTCaloClusterizerComponent.h
29 : * @author Oystein Djuvsland
30 : * @date
31 : * @brief A clusterizer component for PHOS HLT
32 : */
33 :
34 : // see below for class documentation
35 : // or
36 : // refer to README to build package
37 : // or
38 : // visit http://web.ift.uib.no/~kjeks/doc/alice-hlt
39 :
40 : #include "AliHLTCaloConstantsHandler.h"
41 : #include "AliHLTCaloProcessor.h"
42 :
43 : class AliHLTCaloRecoParamHandler;
44 : class AliHLTCaloDigitDataStruct;
45 : class AliHLTCaloDigitContainerDataStruct;
46 : class AliHLTCaloClusterizer;
47 : class AliHLTCaloClusterAnalyser;
48 : class AliHLTCaloRecPointDataStruct;
49 : class AliHLTPHOSHistoProdClusterEnergy;
50 :
51 : /**
52 : * @class AliHLTCaloClusterizerComponent
53 : *
54 : * Class for running clusterization for PHOS in HLT. It takes digits as input and
55 : * gives reconstruction points as output.
56 : *
57 : * The component has the following component arguments:
58 : * -clusterthreshold The energy threshold for starting a new rec point
59 : * -energythreshold The energy threshold for including a digit in a
60 : * rec point
61 : * @ingroup alihlt_phos
62 : */
63 :
64 : /**
65 : * @class AliHLTCaloClusterizerComponent
66 : *
67 : * Class for running clusterization for PHOS in HLT.
68 : *
69 : * <h2>General properties:</h2>
70 : *
71 : * Component ID: \b PhosClusterizer <br>
72 : * Library: \b libAliHLTPHOS.so <br>
73 : * Input Data Types: @ref AliHLTPHOSDefinitions::fgkDigitDataType<br>
74 : * Output Data Types: @ref AliHLTPHOSDefinitions::fgkRecPointDataType<br>
75 : *
76 : * <h2>Mandatory arguments:</h2>
77 : * <!-- NOTE: ignore the \li. <i> and </i>: it's just doxygen formatting -->
78 : * \li No mandatory arguments for component <br>
79 : *
80 : * <h2>Optional arguments:</h2>
81 : * <!-- NOTE: ignore the \li. <i> and </i>: it's just doxygen formatting -->
82 : * \li -digitthreshold <i> value </i> <br>
83 : * threshold for a digit to be added to a rec point in GeV (default value: 0.03)
84 : * \li -recpointthreshold <i> value </i> <br>
85 : * threshold for starting a new rec point (default value: 0.2)
86 : * \li -partitionmode
87 : * if we want to do clusterisation on the partition level (not available...) (defaul value: false)
88 : *
89 : * <h2>Configuration:</h2>
90 : * <!-- NOTE: ignore the \li. <i> and </i>: it's just doxygen formatting -->
91 : * \li No configuration arguments
92 : *
93 : * <h2>Default CDB entries:</h2>
94 : * \li No CDB entry yet, will come.
95 : *
96 : * <h2>Performance:</h2>
97 : * Pretty good (~ 3 kHz), depends on amount of data...
98 : *
99 : * <h2>Memory consumption:</h2>
100 : * Depends on the amount of data, but pretty godd
101 : *
102 : * <h2>Output size:</h2>
103 : * Depends on the amount of data...
104 : *
105 : * More detailed description. (At some point...)
106 : *
107 : * @ingroup alihlt_phos
108 : */
109 :
110 : //class AliHLTCaloClusterizerComponent : public AliHLTCaloConstantsHandler, public AliHLTCaloProcessor
111 : class AliHLTCaloClusterizerComponent : public AliHLTCaloProcessor, public AliHLTCaloConstantsHandler
112 : {
113 : public:
114 :
115 : /** Constructor */
116 : AliHLTCaloClusterizerComponent(TString det);
117 :
118 : /** Destructor */
119 : virtual ~AliHLTCaloClusterizerComponent();
120 :
121 : /** interface function, see @ref AliHLTComponent for description */
122 :
123 : using AliHLTCaloProcessor::DoEvent;
124 :
125 : int DoEvent ( const AliHLTComponentEventData& evtData, const AliHLTComponentBlockData* blocks,
126 : AliHLTComponentTriggerData& trigData, AliHLTUInt8_t* outputPtr, AliHLTUInt32_t& size,
127 : std::vector<AliHLTComponentBlockData>& outputBlocks );
128 :
129 : /**
130 : * Compare two digits, used during the sorting
131 : */
132 : static Int_t CompareDigits(const void *dig0, const void *dig);
133 :
134 : protected:
135 :
136 : /** interface function, see @ref AliHLTComponent for
137 : description */
138 : virtual int DoInit ( int argc, const char** argv );
139 :
140 : /** interface function, see @ref AliHLTComponent for description */
141 : virtual int DoDeinit();
142 :
143 : /** Initialise geometry objects */
144 : virtual Int_t InitialiseGeometry() = 0;
145 :
146 : /** interface function, see @ref AliHLTComponent for description */
147 : int Reconfigure ( const char* cdbEntry, const char* chainId );
148 :
149 : /** interface function, see @ref AliHLTComponent for description */
150 : int ScanConfigurationArgument ( int argc, const char** argv );
151 :
152 : /** The data origin */
153 : char* fDataOrigin; //COMMENT
154 :
155 : /** Pointer to the cluster analyser */
156 : AliHLTCaloClusterAnalyser *fAnalyserPtr; //! transient
157 :
158 : /** Pointer to reconstruction parameters handler */
159 : AliHLTCaloRecoParamHandler *fRecoParamsPtr; //! transient
160 :
161 : /** Pointer to the clusterizer it self */
162 : AliHLTCaloClusterizer* fClusterizerPtr; //! transient
163 :
164 : private:
165 :
166 : /** Array of pointers to our digits */
167 : AliHLTCaloDigitDataStruct **fDigitsPointerArray; //! transient
168 :
169 : /** Array of pointers to our digits */
170 : AliHLTCaloDigitDataStruct *fOutputDigitsArray; //! transient
171 :
172 : /** Number of digits in event */
173 : Int_t fDigitCount; //COMMENT
174 :
175 : /** Copy digits to output? */
176 : Bool_t fCopyDigitsToOuput; //COMMENT
177 :
178 : /** Use input specification as output specification */
179 : Bool_t fUseInputSpec;
180 :
181 :
182 : /** Default constructor, not implemented */
183 : AliHLTCaloClusterizerComponent(); //COMMENT
184 :
185 : /** Copy constructor not implemented */
186 : AliHLTCaloClusterizerComponent ( const AliHLTCaloClusterizerComponent &); // not implemented
187 :
188 : /** Assignment */
189 : AliHLTCaloClusterizerComponent & operator = ( const AliHLTCaloClusterizerComponent &); // not implemented
190 :
191 6 : ClassDef(AliHLTCaloClusterizerComponent, 0);
192 :
193 : };
194 :
195 : #endif
|