Line data Source code
1 : //-*- Mode: C++ -*-
2 : // $Id$
3 :
4 : /**************************************************************************
5 : * This file is property of and copyright by the ALICE HLT Project *
6 : * All rights reserved. *
7 : * *
8 : * Primary Authors: Oystein Djuvsland *
9 : * *
10 : * Permission to use, copy, modify and distribute this software and its *
11 : * documentation strictly for non-commercial purposes is hereby granted *
12 : * without fee, provided that the above copyright notice appears in all *
13 : * copies and that both the copyright notice and this permission notice *
14 : * appear in the supporting documentation. The authors make no claims *
15 : * about the suitability of this software for any purpose. It is *
16 : * provided "as is" without express or implied warranty. *
17 : **************************************************************************/
18 : #ifndef ALIHLTEMCALDIGITMAKERCOMPONENT_H
19 : #define ALIHLTEMCALDIGITMAKERCOMPONENT_H
20 :
21 : /** @file AliHLTEMCALDigitMakerComponent.h
22 : @author Oystein Djuvsland
23 : @date
24 : @brief A digit maker component for EMCAL HLT
25 : */
26 :
27 : // see below for class documentation
28 : // or
29 : // refer to README to build package
30 : // or
31 : // visit http://web.ift.uib.no/~kjeks/doc/alice-hlt
32 :
33 : #include "AliHLTCaloProcessor.h"
34 :
35 : //#include "AliHLTCaloConstantsHandler.h"
36 :
37 : class AliEMCALCalibData;
38 : class AliCaloCalibPedestal;
39 :
40 : class AliHLTCaloDigitMaker;
41 : class AliHLTCaloDigitContainerDataStruct;
42 :
43 : /**
44 : * @class AliHLTEMCALDigitMakerComponent
45 : *
46 : * Creates the digit used for the clusterizer. Digits are equivalent to the ones in
47 : * offline reconstruction
48 : *
49 : * <h2>General properties:</h2>
50 : *
51 : * Component ID: \b PhosDigitMaker <br>
52 : * Library: \b libAliHLTEMCAL.so <br>
53 : * Input Data Types: @ref AliHLTEMCALDefinitions::fkgChannelDataType<br>
54 : * Output Data Types: @ref AliHLTEMCALDefinitions::fgkDigitDataType<br>
55 : *
56 : * <h2>Mandatory arguments:</h2>
57 : * <!-- NOTE: ignore the \li. <i> and </i>: it's just doxygen formatting -->
58 : * \li No mandatory arguments for component <br>
59 : *
60 : * <h2>Optional arguments:</h2>
61 : * <!-- NOTE: ignore the \li. <i> and </i>: it's just doxygen formatting -->
62 : * \li -lowgainfactor <i> value </i> <br>
63 : * sets a global low gain factor
64 : * \li -highgainfactor <i> value </i> <br>
65 : * sets a global high gain factor
66 : * \li -reverseorder <br>
67 : * set if one expects the low gain channels to come before the high gain ones
68 : *
69 : * <h2>Configuration:</h2>
70 : * <!-- NOTE: ignore the \li. <i> and </i>: it's just doxygen formatting -->
71 : * \li No configuration arguments
72 : *
73 : * <h2>Default CDB entries:</h2>
74 : * \li No CDB entry yet, will come.
75 : *
76 : * <h2>Performance:</h2>
77 : * Pretty good
78 : *
79 : * <h2>Memory consumption:</h2>
80 : * Pretty low
81 : *
82 : * <h2>Output size:</h2>
83 : * Depends on the event...
84 : *
85 : * More detailed description. (Soon)
86 : *
87 : * @ingroup alihlt_emcal
88 : */
89 :
90 : //class AliHLTEMCALDigitMakerComponent : public AliHLTCaloProcessor, public AliHLTCaloConstantsHandler
91 : class AliHLTEMCALDigitMakerComponent : public AliHLTCaloProcessor
92 : {
93 : public:
94 :
95 : /** Constructor */
96 : AliHLTEMCALDigitMakerComponent();
97 :
98 : /** Destructor */
99 : virtual ~AliHLTEMCALDigitMakerComponent();
100 :
101 : /** interface function, see @ref AliHLTComponent for description */
102 : const char* GetComponentID();
103 :
104 : /** interface function, see @ref AliHLTComponent for description */
105 : void GetInputDataTypes(std::vector<AliHLTComponentDataType>& list);
106 :
107 : /** interface function, see @ref AliHLTComponent for description */
108 : AliHLTComponentDataType GetOutputDataType();
109 :
110 : /** interface function, see @ref AliHLTComponent for description */
111 : void GetOutputDataSize(unsigned long& constBase, double& inputMultiplier);
112 :
113 : /// inherited from AliHLTComponent, scan one argument and
114 : /// its parameters
115 : // int ScanConfigurationArgument(int argc, const char** argv);
116 :
117 :
118 : /** interface function, see @ref AliHLTComponent for description */
119 : int DoEvent(const AliHLTComponentEventData& evtData, const AliHLTComponentBlockData* blocks,
120 : AliHLTComponentTriggerData& trigData, AliHLTUInt8_t* outputPtr, AliHLTUInt32_t& size,
121 : std::vector<AliHLTComponentBlockData>& outputBlocks);
122 :
123 : /** interface function, see @ref AliHLTComponent for description */
124 : AliHLTComponent* Spawn();
125 :
126 : protected:
127 :
128 : /** interface function, see @ref AliHLTComponent for description */
129 : virtual int DoInit(int argc, const char** argv);
130 :
131 : using AliHLTCaloProcessor::DoEvent;
132 :
133 : /** interface function, see @ref AliHLTComponent for description */
134 : virtual int Deinit(); ////////// PTH WARNING you should Define a class AliHLTEMCALModuleProcessor
135 :
136 : // virtual int DoInit(int, const char**) {;}
137 0 : virtual int DoDeinit(){return 0;}
138 :
139 : /** Get bad channel map from CDB */
140 : virtual int GetBCMFromCDB();
141 :
142 : /** Get the ADC <-> Energy (GeV) gain factors */
143 : virtual int GetGainsFromCDB();
144 :
145 :
146 : private:
147 :
148 : /** Copy constructor, prohibited */
149 : AliHLTEMCALDigitMakerComponent(const AliHLTEMCALDigitMakerComponent &);
150 :
151 : /** Assignment operator, prohibited */
152 : AliHLTEMCALDigitMakerComponent & operator = (const AliHLTEMCALDigitMakerComponent);
153 :
154 : /** Pointer to the digit maker itself, one per module */
155 : AliHLTCaloDigitMaker *fDigitMakerPtr[20]; //! transient
156 :
157 : /** The output of the component, digits in a container */
158 : AliHLTCaloDigitContainerDataStruct *fDigitContainerPtr; //! transient
159 :
160 : /** Pedestal data (contains BCM) */
161 : AliCaloCalibPedestal *fPedestalData;
162 :
163 : /** Calib data (contains gain factors) */
164 : AliEMCALCalibData *fCalibData;
165 :
166 : /** Is the bad map initialised? */
167 : Bool_t fBCMInitialised[20]; //! transient
168 :
169 : /** Are the gains initialised? */
170 : Bool_t fGainsInitialised[20]; //! transient
171 :
172 6 : ClassDef(AliHLTEMCALDigitMakerComponent, 1);
173 :
174 : };
175 : #endif
176 :
|