Added some more component and structs that were needed, compiles and load beautifully
[u/mrichter/AliRoot.git] / HLT / CALO / AliHLTCaloDigitMaker.h
1 //-*- Mode: C++ -*-\r
2 // $Id$\r
3 \r
4 \r
5 /**************************************************************************\r
6  * This file is property of and copyright by the ALICE HLT Project        *\r
7  * All rights reserved.                                                   *\r
8  *                                                                        *\r
9  * Primary Authors: Oystein Djuvsland                                     *\r
10  *                                                                        *\r
11  * Permission to use, copy, modify and distribute this software and its   *\r
12  * documentation strictly for non-commercial purposes is hereby granted   *\r
13  * without fee, provided that the above copyright notice appears in all   *\r
14  * copies and that both the copyright notice and this permission notice   *\r
15  * appear in the supporting documentation. The authors make no claims     *\r
16  * about the suitability of this software for any purpose. It is          *\r
17  * provided "as is" without express or implied warranty.                  *\r
18  **************************************************************************/\r
19 #ifndef ALIHLTCALODIGITMAKER_H\r
20 #define ALIHLTCALODIGITMAKER_H\r
21 \r
22 /**\r
23  * Class makes digits from information from raw data\r
24  *\r
25  * @file   AliHLTCaloDigitMaker.h\r
26  * @author Oystein Djuvsland\r
27  * @date\r
28  * @brief  Digit maker for Calo HLT\r
29  */\r
30 \r
31 // see below for class documentation\r
32 // or\r
33 // refer to README to build package\r
34 // or\r
35 // visit http://web.ift.uib.no/~kjeks/doc/alice-hlt\r
36 \r
37 //#include "AliHLTCaloBase.h"\r
38 #include "AliHLTCaloConstants.h"\r
39 #include "AliHLTCaloDigitDataStruct.h"\r
40 #include "AliHLTCaloChannelDataStruct.h"\r
41 #include "AliHLTDataTypes.h"\r
42 #include "TString.h"\r
43 #include "AliHLTCaloConstantsHandler.h"\r
44 \r
45 /**\r
46  * @class AliHLTCaloDigitMaker\r
47  * Digit maker for CALO HLT. Takes input from AliHLTCaloRawAnalyzer, and \r
48  * outputs a block of AliHLTCaloDigitDataStruct container\r
49  * @ingroup alihlt_calo\r
50  */\r
51 \r
52 class TH2F;\r
53 class AliHLTCaloSharedMemoryInterfacev2; // added by PTH\r
54 class AliHLTCaloChannelDataHeaderStruct;\r
55 class AliHLTCaloMapper;\r
56 class TString;\r
57 \r
58 //using namespace CaloHLTConst;\r
59 //class AliHLTCaloDigitMaker : public AliHLTCaloBase\r
60 \r
61 \r
62 \r
63 class AliHLTCaloDigitMaker : public AliHLTCaloConstantsHandler\r
64 {\r
65 \r
66 public:\r
67 \r
68   /** Constructor */\r
69   AliHLTCaloDigitMaker(TString det);\r
70 \r
71   /** Destructor */\r
72   virtual ~AliHLTCaloDigitMaker();\r
73 \r
74 //   /** Copy constructor */  \r
75 //   AliHLTCaloDigitMaker(const AliHLTCaloDigitMaker &) : \r
76 //     //    AliHLTCaloBase(),\r
77 //     fShmPtr(0),\r
78 //     fDigitStructPtr(0),\r
79 //     fDigitCount(0),\r
80 //     fOrdered(true),\r
81 //     fMapperPtr(0),\r
82 //     fHighGainFactors(0),\r
83 //     fLowGainFactors(0),\r
84 //     fBadChannelMask(0),\r
85 //     fChannelBook(0)\r
86 //   {\r
87 //     //Copy constructor not implemented\r
88 //   }\r
89   \r
90   /** Assignment */\r
91   AliHLTCaloDigitMaker & operator = (const AliHLTCaloDigitMaker)\r
92   {\r
93     //Assignment\r
94     return *this; \r
95   }\r
96 \r
97   /**\r
98    * Sets the pointer to the output\r
99    * @param the output pointer\r
100    */\r
101   void SetDigitDataPtr(AliHLTCaloDigitDataStruct *digitDataPtr) \r
102   { fDigitStructPtr = digitDataPtr; }\r
103 \r
104   /**\r
105    * Set the global high gain conversion factory \r
106    * @param factor is the conversion factor\r
107    */\r
108   void SetGlobalHighGainFactor(Float_t factor);\r
109 \r
110   /**\r
111    * Set the global low gain conversion factory \r
112    * @param factor is the conversion factor\r
113    */\r
114   void SetGlobalLowGainFactor(Float_t factor);\r
115 \r
116   /**\r
117    * Make the digits for one event.\r
118    * @param channelDataHeader is the data header from the AliHLTCaloRawAnalyzer\r
119    * @return the number of digits found\r
120    */\r
121   Int_t MakeDigits(AliHLTCaloChannelDataHeaderStruct* channelDataHeader, AliHLTUInt32_t availableSize);\r
122 \r
123 \r
124   /**\r
125    * Set the mask for dead channels\r
126    * @param badChannelHGHist is a pointer to a high gain bad channel histogram\r
127    * @param badChannelLGHist is a pointer to a low gain bad channel histogram\r
128    * @param qCut is the cut \r
129    */\r
130   void SetBadChannelMask(TH2F* badChannelHGHist, TH2F* badChannelLGHist, Float_t qCut);\r
131 \r
132   /**\r
133    * Set ordering of gains or not\r
134    */\r
135   void SetOrdered(bool val) { fOrdered = val; }\r
136   \r
137   void Reset();\r
138 \r
139 private:\r
140   \r
141   AliHLTCaloDigitMaker();\r
142   \r
143   /**\r
144    * Add a new digit\r
145    * @param channelData is the channel data\r
146    * @param coordinates is the coordinates of the channel, including gain and module\r
147    */\r
148   void AddDigit(AliHLTCaloChannelDataStruct* channelData, UShort_t* channelCoordinates, Float_t* localCoordinates);\r
149 \r
150   /**\r
151    * Check if we already have this crystal. If so, keep the high gain as long as it \r
152    * is not in overflow. \r
153    * @param channelCoordinates is a array of coordinates for the channel.\r
154    * @param channel is a pointer to a struct containing channel information\r
155    * @return true if we should use the digit. \r
156    */\r
157   bool UseDigit(UShort_t *channelCoordinates, AliHLTCaloChannelDataStruct *channel);\r
158 \r
159 \r
160   /** Pointer to shared memory interface */\r
161   AliHLTCaloSharedMemoryInterfacev2* fShmPtr;                    //! transient\r
162 \r
163   /** Pointer to the AliHLTCaloDigitDataStruct */\r
164   AliHLTCaloDigitDataStruct *fDigitStructPtr;                    //! transient\r
165 \r
166   /** Digit count */\r
167   Int_t fDigitCount;                                             //COMMENT\r
168 \r
169   /** Are the gains ordered? */\r
170   bool fOrdered;                                                 //COMMENT\r
171 \r
172   /** Mapper */\r
173   AliHLTCaloMapper* fMapperPtr;                                  //COMMENT\r
174 \r
175   /** High gain energy conversion factors */\r
176   Float_t **fHighGainFactors;                                    //! transient\r
177 \r
178   /** Low gain energy conversion factors */\r
179   Float_t **fLowGainFactors;                                     //!transient\r
180 \r
181   /** Bad channel mask */\r
182   Float_t ***fBadChannelMask;                                    //! transient\r
183 \r
184   /** Channel book keeping variable */\r
185   AliHLTCaloDigitDataStruct ***fChannelBook;                     //! transient\r
186 \r
187 \r
188   ClassDef(AliHLTCaloDigitMaker, 0); \r
189 \r
190 };\r
191 \r
192 \r
193 #endif\r
194  \r