treatment of MC labels added
[u/mrichter/AliRoot.git] / HLT / EMCAL / AliHLTEMCALDigitMakerComponent.h
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   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 */
155   AliHLTCaloDigitMaker *fDigitMakerPtr;                    //! 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; //! transient
168
169    /** Are the gains initialised? */
170   Bool_t fGainsInitialised; //! transient
171
172   ClassDef(AliHLTEMCALDigitMakerComponent, 1);
173
174 };
175 #endif
176