ATLAS Offline Software
Toggle main menu visibility
Loading...
Searching...
No Matches
LArCalorimeter
LArRawConditions
LArRawConditions
LArCondFEBIdChanMap.h
Go to the documentation of this file.
1
/*
2
Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
3
*/
4
14
15
#ifndef LARRAWCONDITIONS_LARCONDFEBIDCHANMAP_H
16
#define LARRAWCONDITIONS_LARCONDFEBIDCHANMAP_H
41
42
#include <vector>
43
#include <map>
44
#include <ostream>
45
#include "
LArIdentifier/LArOnlineID.h
"
46
47
48
class
LArCondFEBIdChanMap
49
{
50
public
:
51
53
typedef
unsigned
int
FEBId
;
54
typedef
std::vector<FEBId>
FEBIdVector
;
55
typedef
std::vector<FEBIdVector>
ChannelMap
;
56
typedef
std::map<FEBId, unsigned int>
FEBIdMap
;
57
59
enum
CorrectionType
{
60
Original
= 0,
61
PSBA
= 1001,
62
PSBC
= 1002,
63
PSECA
= 1003,
64
PSECC
= 1004,
65
EMBA
= 1005,
66
EMBC
= 1006,
67
EMECA
= 1007,
68
EMECC
= 1008,
69
HECA
= 1009,
70
HECC
= 1010,
71
FCALA
= 1011,
72
FCALC
= 1012,
73
NCORRTYPE
= 12
74
};
75
77
LArCondFEBIdChanMap
( );
78
82
LArCondFEBIdChanMap
(
unsigned
int
nChanPerGain,
83
unsigned
int
minGain
,
84
unsigned
int
nGain);
85
87
virtual
~LArCondFEBIdChanMap
() =
default
;
88
89
91
const
FEBIdVector
&
febIdVector
(
unsigned
int
gain,
92
unsigned
int
coolChannel)
const
;
93
96
bool
getChannel
(
FEBId
febId,
97
unsigned
int
gain,
98
unsigned
int
& coolChannel )
const
;
99
102
bool
getCorrectionSetChannels
(
unsigned
int
gain,
103
std::vector<unsigned int>& coolChannels)
const
;
104
107
unsigned
int
nGroups
()
const
;
108
111
unsigned
int
groupNumber
(
unsigned
int
coolChannel)
const
;
112
113
115
unsigned
int
channelsPerGain
()
const
;
116
118
unsigned
int
minGain
()
const
;
119
121
unsigned
int
nGains
()
const
;
122
124
unsigned
int
nOffsetChannels
()
const
;
125
128
unsigned
int
totalChannels
()
const
;
129
132
void
addFEBIdVector
(
unsigned
int
channel,
const
FEBIdVector
& febIdVec);
133
134
void
dump
(std::ostream& o,
const
LArOnlineID
* onlineID=NULL)
const
;
135
136
private
:
137
139
enum
ChanMapOffets
{
140
NUMOFFSETCHANNELSPERGAIN
= 1,
// Number of special channels per gain
141
CORRECTIONSETCHANNEL
= 0
// Channel for the correction sets
142
};
143
144
147
void
fillMap
(
unsigned
int
channel,
const
FEBIdVector
& febIdVec);
148
150
//void fillMap() const;
151
152
ChannelMap
m_febIdVecs
;
153
FEBIdMap
m_channelMap
;
154
unsigned
int
m_chansPerGain
;
155
unsigned
int
m_totalChannels
;
156
unsigned
int
m_minGain
;
157
unsigned
int
m_maxGain
;
158
unsigned
int
m_nGains
;
159
unsigned
int
m_numOffsetChannels
;
160
FEBIdVector
m_empty
;
161
};
162
163
164
// INLINE FUNCTIONS
165
166
inline
167
LArCondFEBIdChanMap::LArCondFEBIdChanMap
( )
168
:
169
m_febIdVecs
(1),
170
m_chansPerGain
(1),
171
m_totalChannels
(
PSBA
+ 3*
NCORRTYPE
),
172
m_minGain
(0),
173
m_maxGain
(2),
174
m_nGains
(3),
175
m_numOffsetChannels
(3)
176
177
178
{}
179
180
inline
181
LArCondFEBIdChanMap::LArCondFEBIdChanMap
(
unsigned
int
chansPerGain,
182
unsigned
int
minGain
,
183
unsigned
int
nGains
)
184
:
185
m_febIdVecs
(chansPerGain),
186
m_chansPerGain
(chansPerGain),
187
m_totalChannels
(
PSBA
+ 3*
NCORRTYPE
),
188
m_minGain
(
minGain
),
189
m_maxGain
(
minGain
+
nGains
),
190
m_nGains
(
nGains
),
191
m_numOffsetChannels
(
nGains
*
NUMOFFSETCHANNELSPERGAIN
)
192
193
{}
194
195
inline
196
void
197
LArCondFEBIdChanMap::fillMap
(
unsigned
int
channel,
const
FEBIdVector
& febIdVec)
198
{
199
// add channel to map for each feb id
200
for
(
unsigned
int
i = 0; i < febIdVec.size(); ++i) {
201
m_channelMap
[febIdVec[i]] = channel;
202
}
203
}
204
205
#if 0
206
inline
207
void
208
LArCondFEBIdChanMap::fillMap
()
const
209
{
210
// loop over existing vector of feb id vectors and set up map for
211
// each feb id. This is needed, for example on readback
212
// Though these objects are not read directly, so this should
213
// no longer be needed.
214
for
(
unsigned
int
i = 0; i <
m_febIdVecs
.size(); ++i) {
215
for
(
unsigned
int
j = 0; j <
m_febIdVecs
[i].size(); ++j) {
216
m_channelMap
[
m_febIdVecs
[i][j]] = i;
217
}
218
}
219
}
220
#endif
221
222
223
224
inline
225
const
LArCondFEBIdChanMap::FEBIdVector
&
226
LArCondFEBIdChanMap::febIdVector
(
unsigned
int
gain,
unsigned
int
coolChannel)
const
227
{
228
229
unsigned
int
channel =
m_chansPerGain
;
230
if
(coolChannel >= (gain -
m_minGain
)*
m_chansPerGain
+
m_numOffsetChannels
) {
231
channel = coolChannel - (gain -
m_minGain
)*
m_chansPerGain
-
m_numOffsetChannels
;
232
}
233
if
(channel <
m_chansPerGain
) {
234
return
(
m_febIdVecs
[channel]);
235
}
236
return
(
m_empty
);
237
}
238
239
inline
240
bool
241
LArCondFEBIdChanMap::getChannel
(
FEBId
febId,
242
unsigned
int
gain,
243
unsigned
int
& coolChannel )
const
244
{
245
if
(1 ==
m_chansPerGain
) {
246
// All FEB IDs in the same group
247
coolChannel = (gain -
m_minGain
) +
m_numOffsetChannels
;
248
return
(
true
);
249
}
250
coolChannel = 9999;
251
FEBIdMap::const_iterator it =
m_channelMap
.find(febId);
252
if
(it !=
m_channelMap
.end()) {
253
if
(
m_minGain
<= gain && gain <=
m_maxGain
) {
254
coolChannel = (gain -
m_minGain
)*
m_chansPerGain
+ (*it).second +
m_numOffsetChannels
;
255
return
(
true
);
256
}
257
}
258
return
(
false
);
259
}
260
261
inline
262
bool
263
LArCondFEBIdChanMap::getCorrectionSetChannels
(
unsigned
int
gain,
264
std::vector<unsigned int>& coolChannels)
const
265
{
266
coolChannels.clear();
267
if
(
m_minGain
<= gain && gain <=
m_maxGain
) {
268
coolChannels.reserve(1 +
NCORRTYPE
);
269
// loop over all correction types, including the "old" first
270
// one which included everything
271
coolChannels.push_back( (gain -
m_minGain
) +
CORRECTIONSETCHANNEL
);
272
unsigned
int
gainOffset = (gain -
m_minGain
)*
NCORRTYPE
;
273
coolChannels.push_back(
PSBA
+ gainOffset);
274
coolChannels.push_back(
PSBC
+ gainOffset);
275
coolChannels.push_back(
PSECA
+ gainOffset);
276
coolChannels.push_back(
PSECC
+ gainOffset);
277
coolChannels.push_back(
EMBA
+ gainOffset);
278
coolChannels.push_back(
EMBC
+ gainOffset);
279
coolChannels.push_back(
EMECA
+ gainOffset);
280
coolChannels.push_back(
EMECC
+ gainOffset);
281
coolChannels.push_back(
HECA
+ gainOffset);
282
coolChannels.push_back(
HECC
+ gainOffset);
283
coolChannels.push_back(
FCALA
+ gainOffset);
284
coolChannels.push_back(
FCALC
+ gainOffset);
285
return
(
true
);
286
}
287
return
(
false
);
288
}
289
290
inline
291
unsigned
int
292
LArCondFEBIdChanMap::nGroups
()
const
293
{
294
return
(
m_chansPerGain
+
NUMOFFSETCHANNELSPERGAIN
);
295
}
296
297
298
inline
299
unsigned
int
300
LArCondFEBIdChanMap::groupNumber
(
unsigned
int
coolChannel)
const
301
{
302
return
(coolChannel/
m_nGains
);
303
}
304
305
306
inline
307
unsigned
int
308
LArCondFEBIdChanMap::channelsPerGain
()
const
309
{
310
return
(
m_chansPerGain
);
311
}
312
313
inline
314
unsigned
int
315
LArCondFEBIdChanMap::minGain
()
const
316
{
317
return
(
m_minGain
);
318
}
319
320
inline
321
unsigned
int
322
LArCondFEBIdChanMap::nGains
()
const
323
{
324
return
(
m_nGains
);
325
}
326
327
inline
328
unsigned
int
329
LArCondFEBIdChanMap::nOffsetChannels
()
const
330
{
331
return
(
m_numOffsetChannels
);
332
}
333
334
335
inline
336
unsigned
int
337
LArCondFEBIdChanMap::totalChannels
()
const
338
{
339
return
(
m_totalChannels
);
340
}
341
342
inline
343
void
344
LArCondFEBIdChanMap::addFEBIdVector
(
unsigned
int
channel,
const
FEBIdVector
& febIdVec)
345
{
346
// Make sure vector is large enough - should have been sized in
347
// constructor!!
348
if
(channel >=
m_chansPerGain
)
m_febIdVecs
.resize(channel + 1);
349
m_febIdVecs
[channel] = febIdVec;
350
fillMap
(channel, febIdVec);
351
}
352
353
#endif
// LARRAWCONDITIONS_LARCONDFEBIDCHANMAP_H
354
355
356
LArOnlineID.h
LArCondFEBIdChanMap::addFEBIdVector
void addFEBIdVector(unsigned int channel, const FEBIdVector &febIdVec)
Add in a FEBIdVector - channel number should be from 0 to NChannelsPerGain-1.
Definition
LArCondFEBIdChanMap.h:344
LArCondFEBIdChanMap::nOffsetChannels
unsigned int nOffsetChannels() const
Number of offset channels - i.e. correction channels.
Definition
LArCondFEBIdChanMap.h:329
LArCondFEBIdChanMap::m_maxGain
unsigned int m_maxGain
Definition
LArCondFEBIdChanMap.h:157
LArCondFEBIdChanMap::m_empty
FEBIdVector m_empty
Definition
LArCondFEBIdChanMap.h:160
LArCondFEBIdChanMap::m_numOffsetChannels
unsigned int m_numOffsetChannels
Definition
LArCondFEBIdChanMap.h:159
LArCondFEBIdChanMap::FEBIdMap
std::map< FEBId, unsigned int > FEBIdMap
Definition
LArCondFEBIdChanMap.h:56
LArCondFEBIdChanMap::FEBIdVector
std::vector< FEBId > FEBIdVector
Definition
LArCondFEBIdChanMap.h:54
LArCondFEBIdChanMap::minGain
unsigned int minGain() const
Mininum gain value.
Definition
LArCondFEBIdChanMap.h:315
LArCondFEBIdChanMap::~LArCondFEBIdChanMap
virtual ~LArCondFEBIdChanMap()=default
destructor
LArCondFEBIdChanMap::CorrectionType
CorrectionType
Correction type.
Definition
LArCondFEBIdChanMap.h:59
LArCondFEBIdChanMap::Original
@ Original
Definition
LArCondFEBIdChanMap.h:60
LArCondFEBIdChanMap::HECC
@ HECC
Definition
LArCondFEBIdChanMap.h:70
LArCondFEBIdChanMap::EMECA
@ EMECA
Definition
LArCondFEBIdChanMap.h:67
LArCondFEBIdChanMap::EMBC
@ EMBC
Definition
LArCondFEBIdChanMap.h:66
LArCondFEBIdChanMap::FCALA
@ FCALA
Definition
LArCondFEBIdChanMap.h:71
LArCondFEBIdChanMap::PSECC
@ PSECC
Definition
LArCondFEBIdChanMap.h:64
LArCondFEBIdChanMap::EMBA
@ EMBA
Definition
LArCondFEBIdChanMap.h:65
LArCondFEBIdChanMap::PSECA
@ PSECA
Definition
LArCondFEBIdChanMap.h:63
LArCondFEBIdChanMap::PSBA
@ PSBA
Definition
LArCondFEBIdChanMap.h:61
LArCondFEBIdChanMap::EMECC
@ EMECC
Definition
LArCondFEBIdChanMap.h:68
LArCondFEBIdChanMap::PSBC
@ PSBC
Definition
LArCondFEBIdChanMap.h:62
LArCondFEBIdChanMap::NCORRTYPE
@ NCORRTYPE
Definition
LArCondFEBIdChanMap.h:73
LArCondFEBIdChanMap::FCALC
@ FCALC
Definition
LArCondFEBIdChanMap.h:72
LArCondFEBIdChanMap::HECA
@ HECA
Definition
LArCondFEBIdChanMap.h:69
LArCondFEBIdChanMap::LArCondFEBIdChanMap
LArCondFEBIdChanMap()
Default constructor.
Definition
LArCondFEBIdChanMap.h:167
LArCondFEBIdChanMap::febIdVector
const FEBIdVector & febIdVector(unsigned int gain, unsigned int coolChannel) const
Access to a FEB ID vector for a given gain and COOL channel.
Definition
LArCondFEBIdChanMap.h:226
LArCondFEBIdChanMap::getCorrectionSetChannels
bool getCorrectionSetChannels(unsigned int gain, std::vector< unsigned int > &coolChannels) const
Access to the cool channel numbers for the correction sets of a particular gain - bool == false if no...
Definition
LArCondFEBIdChanMap.h:263
LArCondFEBIdChanMap::groupNumber
unsigned int groupNumber(unsigned int coolChannel) const
Group number of a cool channel (0 - correction group, 1-N for FEB ID groups).
Definition
LArCondFEBIdChanMap.h:300
LArCondFEBIdChanMap::m_chansPerGain
unsigned int m_chansPerGain
Definition
LArCondFEBIdChanMap.h:154
LArCondFEBIdChanMap::channelsPerGain
unsigned int channelsPerGain() const
Number of cool channels per gain.
Definition
LArCondFEBIdChanMap.h:308
LArCondFEBIdChanMap::m_channelMap
FEBIdMap m_channelMap
Definition
LArCondFEBIdChanMap.h:153
LArCondFEBIdChanMap::getChannel
bool getChannel(FEBId febId, unsigned int gain, unsigned int &coolChannel) const
Access to the cool channel number for a given FEB ID and gain - bool == false if not found.
Definition
LArCondFEBIdChanMap.h:241
LArCondFEBIdChanMap::ChanMapOffets
ChanMapOffets
Offsets for the special channels.
Definition
LArCondFEBIdChanMap.h:139
LArCondFEBIdChanMap::NUMOFFSETCHANNELSPERGAIN
@ NUMOFFSETCHANNELSPERGAIN
Definition
LArCondFEBIdChanMap.h:140
LArCondFEBIdChanMap::CORRECTIONSETCHANNEL
@ CORRECTIONSETCHANNEL
Definition
LArCondFEBIdChanMap.h:141
LArCondFEBIdChanMap::m_nGains
unsigned int m_nGains
Definition
LArCondFEBIdChanMap.h:158
LArCondFEBIdChanMap::nGroups
unsigned int nGroups() const
Number of groups - minimum is 2 (1 correction group, 1 FEB ID group).
Definition
LArCondFEBIdChanMap.h:292
LArCondFEBIdChanMap::m_totalChannels
unsigned int m_totalChannels
Definition
LArCondFEBIdChanMap.h:155
LArCondFEBIdChanMap::fillMap
void fillMap(unsigned int channel, const FEBIdVector &febIdVec)
Fill map from chan/febid vec - channel here is 0 to chansPerGain-1.
Definition
LArCondFEBIdChanMap.h:197
LArCondFEBIdChanMap::nGains
unsigned int nGains() const
Number of gain values.
Definition
LArCondFEBIdChanMap.h:322
LArCondFEBIdChanMap::ChannelMap
std::vector< FEBIdVector > ChannelMap
Definition
LArCondFEBIdChanMap.h:55
LArCondFEBIdChanMap::totalChannels
unsigned int totalChannels() const
Total number of channels for all gains and includes special offset channels.
Definition
LArCondFEBIdChanMap.h:337
LArCondFEBIdChanMap::FEBId
unsigned int FEBId
Public typedefs.
Definition
LArCondFEBIdChanMap.h:53
LArCondFEBIdChanMap::m_minGain
unsigned int m_minGain
Definition
LArCondFEBIdChanMap.h:156
LArCondFEBIdChanMap::m_febIdVecs
ChannelMap m_febIdVecs
File map from existing ChannelMap - e.g. on read back.
Definition
LArCondFEBIdChanMap.h:152
LArOnlineID
Definition
LArOnlineID.h:21
dump
-event-from-file
Generated on
for ATLAS Offline Software by
1.17.0