]> git.uio.no Git - u/mrichter/AliRoot.git/blob - HLT/CALO/AliHLTCaloDigitMaker.h
- cleaning up debug output
[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 "AliHLTCaloConstantsHandler.h"\r
39 #include "AliHLTCaloDigitDataStruct.h"\r
40 #include "AliHLTCaloChannelDataStruct.h"\r
41 #include "AliHLTDataTypes.h"\r
42 #include "TString.h"\r
43 \r
44 /**\r
45  * @class AliHLTCaloDigitMaker\r
46  * Digit maker for CALO HLT. Takes input from AliHLTCaloRawAnalyzer, and \r
47  * outputs a block of AliHLTCaloDigitDataStruct container\r
48  * @ingroup alihlt_calo\r
49  */\r
50 \r
51 class TH2F;\r
52 class AliHLTCaloSharedMemoryInterfacev2; // added by PTH\r
53 class AliHLTCaloChannelDataHeaderStruct;\r
54 class AliHLTCaloMapper;\r
55 class AliHLTCaloCoordinate;\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 : 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   /**\r
75    * Sets the pointer to the output\r
76    * @param digitDataPtr the output pointer\r
77    */\r
78   void SetDigitDataPtr(AliHLTCaloDigitDataStruct *digitDataPtr) \r
79   { fDigitStructPtr = digitDataPtr; }\r
80 \r
81   /**\r
82    * Set the global high gain conversion factory \r
83    * @param factor is the conversion factor\r
84    */\r
85   void SetGlobalHighGainFactor(Float_t factor);\r
86 \r
87   /**\r
88    * Set the global low gain conversion factory \r
89    * @param factor is the conversion factor\r
90    */\r
91   void SetGlobalLowGainFactor(Float_t factor);\r
92 \r
93   /**\r
94    * Make the digits for one event.\r
95    * @param channelDataHeader is the data header from the AliHLTCaloRawAnalyzer\r
96    * @return the number of digits found\r
97    */\r
98   Int_t MakeDigits(AliHLTCaloChannelDataHeaderStruct* channelDataHeader, AliHLTUInt32_t availableSize);\r
99 \r
100   /**\r
101    * Set the mask for dead channels\r
102    * @param badChannelHGHist is a pointer to a high gain bad channel histogram\r
103    * @param badChannelLGHist is a pointer to a low gain bad channel histogram\r
104    * @param qCut is the cut \r
105    */\r
106   void SetBadChannelMask(TH2F* badChannelHGHist, TH2F* badChannelLGHist, Float_t qCut);\r
107 \r
108   /** Reset the channel book */\r
109   void Reset();\r
110 \r
111   /** Set the mapper */\r
112   void SetMapper(AliHLTCaloMapper *mapper) { fMapperPtr = mapper; }\r
113 \r
114 private:\r
115   \r
116   AliHLTCaloDigitMaker();\r
117   \r
118   /**\r
119    * Add a new digit\r
120    * @param channelData is the channel data\r
121    * @param coordinates is the coordinates of the channel, including gain and module\r
122    */\r
123   void AddDigit(AliHLTCaloChannelDataStruct* channelData, AliHLTCaloCoordinate &coord);\r
124 \r
125   /**\r
126    * Check if we already have this crystal. If so, keep the high gain as long as it \r
127    * is not in overflow. \r
128    * @param channelCoordinates is a array of coordinates for the channel.\r
129    * @param channel is a pointer to a struct containing channel information\r
130    * @return true if we should use the digit. \r
131    */\r
132   bool UseDigit(AliHLTCaloCoordinate &coord, AliHLTCaloChannelDataStruct *channel);\r
133 \r
134   /** Pointer to shared memory interface */\r
135   AliHLTCaloSharedMemoryInterfacev2* fShmPtr;                    //! transient\r
136 \r
137   /** Pointer to the AliHLTCaloDigitDataStruct */\r
138   AliHLTCaloDigitDataStruct *fDigitStructPtr;                    //! transient\r
139 \r
140   /** Digit count */\r
141   Int_t fDigitCount;                                             //COMMENT\r
142 \r
143   /** Mapper */\r
144   AliHLTCaloMapper* fMapperPtr;                                  //COMMENT\r
145 \r
146   /** High gain energy conversion factors */\r
147   Float_t **fHighGainFactors;                                    //! transient\r
148 \r
149   /** Low gain energy conversion factors */\r
150   Float_t **fLowGainFactors;                                     //!transient\r
151 \r
152   /** Bad channel mask */\r
153   Float_t ***fBadChannelMask;                                    //! transient\r
154 \r
155   /** Channel book keeping variable */\r
156   AliHLTCaloDigitDataStruct ***fChannelBook;                     //! transient\r
157 \r
158   /** Maximum energy we allow in a channel */\r
159   Float_t fMaxEnergy;                                            //COMMENT\r
160 \r
161   /** Assignment operator and copy constructor not implemented */\r
162   AliHLTCaloDigitMaker(const AliHLTCaloDigitMaker &);\r
163   AliHLTCaloDigitMaker & operator = (const AliHLTCaloDigitMaker &);\r
164 \r
165   ClassDef(AliHLTCaloDigitMaker, 0); \r
166 \r
167 };\r
168 \r
169 #endif\r
170  \r