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