4 /**************************************************************************
5 * This file is property of and copyright by the ALICE HLT Project *
6 * All rights reserved. *
8 * Primary Authors: Oystein Djuvsland *
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 ALIHLTPHOSDIGITMAKERCOMPONENT_H
19 #define ALIHLTPHOSDIGITMAKERCOMPONENT_H
21 /** @file AliHLTPHOSDigitMakerComponent.h
22 @author Oystein Djuvsland
24 @brief A digit maker component for PHOS HLT
27 // see below for class documentation
29 // refer to README to build package
31 // visit http://web.ift.uib.no/~kjeks/doc/alice-hlt
34 #include "AliHLTPHOSDefinitions.h" // PTH
35 #include "AliHLTCaloProcessor.h"
36 #include "AliHLTCaloConstantsHandler.h"
39 class AliHLTCaloDigitMaker;
40 class AliHLTCaloDigitContainerDataStruct;
41 class AliPHOSEmcBadChannelsMap;
42 class AliPHOSEmcCalibData;
44 * @class AliHLTPHOSDigitMakerComponent
46 * Creates the digit used for the clusterizer. Digits are equivalent to the ones in
47 * offline reconstruction
49 * <h2>General properties:</h2>
51 * Component ID: \b PhosDigitMaker <br>
52 * Library: \b libAliHLTPHOS.so <br>
53 * Input Data Types: @ref AliHLTPHOSDefinitions::fkgChannelDataType<br>
54 * Output Data Types: @ref AliHLTPHOSDefinitions::fgkDigitDataType<br>
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>
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
69 * <h2>Configuration:</h2>
70 * <!-- NOTE: ignore the \li. <i> and </i>: it's just doxygen formatting -->
71 * \li No configuration arguments
73 * <h2>Default CDB entries:</h2>
74 * \li No CDB entry yet, will come.
76 * <h2>Performance:</h2>
79 * <h2>Memory consumption:</h2>
82 * <h2>Output size:</h2>
83 * Depends on the event...
85 * More detailed description. (Soon)
87 * @ingroup alihlt_phos
90 class AliHLTPHOSDigitMakerComponent : public AliHLTCaloProcessor, public AliHLTCaloConstantsHandler
95 AliHLTPHOSDigitMakerComponent();
98 virtual ~AliHLTPHOSDigitMakerComponent();
100 /** interface function, see @ref AliHLTComponent for description */
101 const char* GetComponentID();
103 /** interface function, see @ref AliHLTComponent for description */
104 void GetInputDataTypes(std::vector<AliHLTComponentDataType>& list);
106 /** interface function, see @ref AliHLTComponent for description */
107 AliHLTComponentDataType GetOutputDataType();
109 /** interface function, see @ref AliHLTComponent for description */
110 void GetOutputDataSize(unsigned long& constBase, double& inputMultiplier);
112 /** interface function, see @ref AliHLTComponent for description */
113 int DoEvent(const AliHLTComponentEventData& evtData, const AliHLTComponentBlockData* blocks,
114 AliHLTComponentTriggerData& trigData, AliHLTUInt8_t* outputPtr, AliHLTUInt32_t& size,
115 std::vector<AliHLTComponentBlockData>& outputBlocks);
117 /** interface function, see @ref AliHLTComponent for description */
118 AliHLTComponent* Spawn();
122 /** interface function, see @ref AliHLTComponent for description */
123 int DoInit(int argc, const char** argv);
125 using AliHLTCaloProcessor::DoEvent;
127 /** interface function, see @ref AliHLTComponent for description */
128 virtual int Deinit(); ////////// PTH WARNING you should Define a class AliHLTPHOSModuleProcessor
130 /** Get bad channel map from CDB */
131 virtual int GetBCMFromCDB();
133 /** Get the ADC <-> Energy (GeV) gain factors */
134 virtual int GetGainsFromCDB();
139 /** Copy constructor, prohibited */
140 AliHLTPHOSDigitMakerComponent(const AliHLTPHOSDigitMakerComponent &);
142 /** Assignment operator, prohibited */
143 AliHLTPHOSDigitMakerComponent & operator = (const AliHLTPHOSDigitMakerComponent);
145 /** Pointer to the digit maker itself */
146 AliHLTCaloDigitMaker *fDigitMakerPtr; //! transient
148 /** The output of the component, digits in a container */
149 AliHLTCaloDigitContainerDataStruct *fDigitContainerPtr; //! transient
151 /** Bad channel map */
152 AliPHOSEmcBadChannelsMap *fBadChannelMap; //! transient
154 // /** Temporary holder for bad channel map */
155 //Bool_t ***fBadChannelMap; //! transient
157 /** Calibration data */
158 AliPHOSEmcCalibData *fCalibData; //! transient
161 /** Is the bad map initialised? */
162 Bool_t fBCMInitialised; //! transient
164 /** Are the gains initialised? */
165 Bool_t fGainsInitialised; //! transient