ATLAS Offline Software
Loading...
Searching...
No Matches
TileROD_Encoder Class Reference

Provides conversion from TileRawChannel, TileL2 and TMDB (digits,MF raw channel,decision) to ROD format. More...

#include <TileROD_Encoder.h>

Inheritance diagram for TileROD_Encoder:

Public Member Functions

 TileROD_Encoder ()
 constructor
void setTileHWID (const TileHWID *tileHWID, bool verbose, unsigned int type=4)
 set all necessary parameters for the encoder
void setTileHWID (const TileHWID *tileHWID, int m_runPeriod)
void setTypeAndUnit (TileFragHash::TYPE type, TileRawChannelUnit::UNIT unit)
 set OF algorigtm type and amplitude units for a drawer
void setMaxChannels (int maxChannels)
 set maximum number of channels in a drawer
 ~TileROD_Encoder ()
 destructor
void add (const TileFastRawChannel *rc)
 add TileRawChannels to the current list
void addL2 (const TileL2 *l2)
 add TileL2s to the current list
void addTileMuRcvObj (const TileMuonReceiverObj *tileMuRcvObj)
 add TMBDs ROD sub-fragmens TileMuRcvObj (type3) to the current list
void addDigi (const TileDigits *digi)
 add TileDigits to the current list
void fillROD (std::vector< uint32_t > &v)
 convert all TileRawChannels in the current list to a vector of 32bit words
void fillROD2 (std::vector< uint32_t > &v)
void fillROD3 (std::vector< uint32_t > &v)
void fillROD4 (std::vector< uint32_t > &v)
void fillROD5 (std::vector< uint32_t > &v)
void fillROD10 (std::vector< uint32_t > &v)
 convert all TileL2s in the current list to a vector of 32bit words
void fillROD12 (std::vector< uint32_t > &v)
void fillRODL2 (std::vector< uint32_t > &v)
void fillROD1 (std::vector< uint32_t > &v)
 convert all TileDigits in the current list to a vector of 32bit words
void fillROD5D (std::vector< uint32_t > &v)
void fillRODTileMuRcvDigi (std::vector< uint32_t > &v)
 convert the TMDB objects into a vector of 32bit words: 8bit words/digit, 16bit words/RC, 16bit words/decision
void fillRODTileMuRcvRawChannel (std::vector< uint32_t > &v)
void fillRODTileMuRcvObj (std::vector< uint32_t > &v)
void dumpROD (const std::vector< uint32_t > &v)
 dump contents of the ROD fragment
bool msgLvl (const MSG::Level lvl) const
 Test the output level.
MsgStream & msg () const
 The standard message stream.
MsgStream & msg (const MSG::Level lvl) const
 The standard message stream.
void setLevel (MSG::Level lvl)
 Change the current logging level.

Private Member Functions

void setBit (uint32_t *p, int chan)
 set the bitmap for a channel
bool checkBit (const uint32_t *p, int chan)
 check the bitmap for a channel
void initMessaging () const
 Initialize our message level and MessageSvc.

Private Attributes

std::vector< const TileFastRawChannel * > m_vTileRC
std::vector< const TileL2 * > m_vTileL2
std::vector< const TileDigits * > m_vTileDigi
std::vector< const TileMuonReceiverObj * > m_vTileMuRcvObj
TileDigits2Bytes m_Digi2bytes
TileRawChannel2Bytes2 m_rc2bytes2
TileRawChannel2Bytes m_rc2bytes3
TileRawChannel2Bytes4 m_rc2bytes4
TileRawChannel2Bytes5 m_rc2bytes5
const TileHWIDm_tileHWID
TileRawDataOrdering m_order
bool m_verbose
unsigned int m_type
unsigned int m_unitType
unsigned int m_rChUnit
int m_maxChannels
int m_runPeriod
std::string m_nm
 Message source name.
boost::thread_specific_ptr< MsgStream > m_msg_tls
 MsgStream instance (a std::cout like with print-out levels)
std::atomic< IMessageSvc * > m_imsg { nullptr }
 MessageSvc pointer.
std::atomic< MSG::Level > m_lvl { MSG::NIL }
 Current logging level.
std::atomic_flag m_initialized ATLAS_THREAD_SAFE = ATOMIC_FLAG_INIT
 Messaging initialized (initMessaging)

Detailed Description

Provides conversion from TileRawChannel, TileL2 and TMDB (digits,MF raw channel,decision) to ROD format.

Author
A. Solodkov
Version
0-0-1 , Oct 17, 2002

Modified, Jan 20, 2003 Split from TileROD_Decoder.

Definition at line 44 of file TileROD_Encoder.h.

Constructor & Destructor Documentation

◆ TileROD_Encoder()

TileROD_Encoder::TileROD_Encoder ( )

constructor

Definition at line 56 of file TileROD_Encoder.cxx.

56 :
57 AthMessaging ("TileROD_Encoder"),
58 m_tileHWID(0),
59 m_verbose(false),
60 m_type(0),
61 m_unitType(0),
62 m_rChUnit(0),
64 m_runPeriod(0){
65}
AthMessaging()
Default constructor:
static const unsigned int MAX_CHAN
Number of channels in drawer.
unsigned int m_unitType
const TileHWID * m_tileHWID
unsigned int m_type
unsigned int m_rChUnit

◆ ~TileROD_Encoder()

TileROD_Encoder::~TileROD_Encoder ( )
inline

destructor

Definition at line 69 of file TileROD_Encoder.h.

69{ }

Member Function Documentation

◆ add()

void TileROD_Encoder::add ( const TileFastRawChannel * rc)
inline

add TileRawChannels to the current list

Definition at line 73 of file TileROD_Encoder.h.

73{ m_vTileRC.push_back(rc); }
static Double_t rc
std::vector< const TileFastRawChannel * > m_vTileRC

◆ addDigi()

void TileROD_Encoder::addDigi ( const TileDigits * digi)
inline

add TileDigits to the current list

Definition at line 85 of file TileROD_Encoder.h.

85{ m_vTileDigi.push_back(digi); }
std::vector< const TileDigits * > m_vTileDigi

◆ addL2()

void TileROD_Encoder::addL2 ( const TileL2 * l2)
inline

add TileL2s to the current list

Definition at line 77 of file TileROD_Encoder.h.

77{ m_vTileL2.push_back(l2); }
std::vector< const TileL2 * > m_vTileL2

◆ addTileMuRcvObj()

void TileROD_Encoder::addTileMuRcvObj ( const TileMuonReceiverObj * tileMuRcvObj)
inline

add TMBDs ROD sub-fragmens TileMuRcvObj (type3) to the current list

Definition at line 81 of file TileROD_Encoder.h.

81{ m_vTileMuRcvObj.push_back(tileMuRcvObj); } // decision (d6 and d5+d6) calculated @ TMDB
std::vector< const TileMuonReceiverObj * > m_vTileMuRcvObj

◆ checkBit()

bool TileROD_Encoder::checkBit ( const uint32_t * p,
int chan )
private

check the bitmap for a channel

Definition at line 965 of file TileROD_Encoder.cxx.

965 {
966// chan = (0,47)
967 int a = chan / 32;
968 int r = chan % 32;
969// a = (0,1), r = ( 0, 31 )
970 return *(p + a) & (1 << r);
971
972}
static Double_t a
int r
Definition globals.cxx:22

◆ dumpROD()

void TileROD_Encoder::dumpROD ( const std::vector< uint32_t > & v)

dump contents of the ROD fragment

Definition at line 974 of file TileROD_Encoder.cxx.

974 {
975 msg(MSG::VERBOSE) << " Dump of Tile ROD block, size = " << v.size() << endmsg;
976
977 int count = 0, newCount = 3;
978 for (const uint32_t data : v) {
979 if (count == 0) {
980 msg(MSG::VERBOSE) << "Frag delim = 0x" << std::hex << data << std::dec << endmsg;
981 } else if (count == -1) {
982 newCount = data;
983 msg(MSG::VERBOSE) << "Word count = " << newCount << endmsg;
984 } else if (count == -2) {
985 count += newCount;
986 msg(MSG::VERBOSE) << "Frag ID = 0x" << std::hex << data << std::dec << endmsg;
987 } else {
988 msg(MSG::VERBOSE) << " WORD[" << newCount - count << "] = "
989 << data << " = 0x" << std::hex << data
990 << std::dec << endmsg;
991 }
992 --count;
993 }
994}
#define endmsg
char data[hepevt_bytes_allocation_ATLAS]
Definition HepEvt.cxx:11
MsgStream & msg() const
The standard message stream.
int count(std::string s, const std::string &regx)
count how many occurances of a regx are in a string
Definition hcg.cxx:146

◆ fillROD()

void TileROD_Encoder::fillROD ( std::vector< uint32_t > & v)

convert all TileRawChannels in the current list to a vector of 32bit words

Definition at line 140 of file TileROD_Encoder.cxx.

140 {
141 switch (m_type) {
142 case 4:
143 fillROD4(v);
144 break;
145 case 5:
146 fillROD5(v);
147 break;
148 case 3:
149 fillROD3(v);
150 break;
151 case 2:
152 fillROD2(v);
153 break;
154 case 1:
155 fillROD1(v);
156 break;
157 case 0x10:
158 fillROD10(v);
159 break;
160 case 0x12:
161 fillROD12(v);
162 break;
163 default:
164 ATH_MSG_ERROR( "fillROD -> Unknown packing type " << m_type );
165 assert(0);
166 break;
167 // return;
168 }
169}
#define ATH_MSG_ERROR(x)
void fillROD5(std::vector< uint32_t > &v)
void fillROD10(std::vector< uint32_t > &v)
convert all TileL2s in the current list to a vector of 32bit words
void fillROD12(std::vector< uint32_t > &v)
void fillROD1(std::vector< uint32_t > &v)
convert all TileDigits in the current list to a vector of 32bit words
void fillROD2(std::vector< uint32_t > &v)
void fillROD3(std::vector< uint32_t > &v)
void fillROD4(std::vector< uint32_t > &v)

◆ fillROD1()

void TileROD_Encoder::fillROD1 ( std::vector< uint32_t > & v)

convert all TileDigits in the current list to a vector of 32bit words

Definition at line 494 of file TileROD_Encoder.cxx.

494 {
495
496 std::sort(m_vTileDigi.begin(), m_vTileDigi.end(), m_order);
497
498 int currentFrag = -1, pos = 0, size = 0;
499 for (const TileDigits* digi : m_vTileDigi) {
500
501 HWIdentifier adcID = digi->adc_HWID();
502 int frag = m_tileHWID->frag(adcID) | (0x01 << 16); // FRAG TYPE = 1 in upper half of the word
503 if (frag != currentFrag) {
504 if (currentFrag != -1) v[pos] = size;
505 currentFrag = frag;
506 // first word is start of fragment identifier
507 v.push_back(0xFF1234FF);
508 // next word is frag size
509 pos = v.size();
510 v.push_back(0);
511 // next word is frag ID
512 v.push_back(frag);
513 size = 3;
514 }
515 size += m_Digi2bytes.getBytes(digi, m_tileHWID, v);
516 }
517 if (currentFrag != -1) v[pos] = size;
518 return;
519}
TileRawDataOrdering m_order
TileDigits2Bytes m_Digi2bytes
void sort(typename DataModel_detail::iterator< DVL > beg, typename DataModel_detail::iterator< DVL > end)
Specialization of sort for DataVector/List.

◆ fillROD10()

void TileROD_Encoder::fillROD10 ( std::vector< uint32_t > & v)

convert all TileL2s in the current list to a vector of 32bit words

Definition at line 172 of file TileROD_Encoder.cxx.

172 {
173
174 int currentFrag(-1);
175 std::vector<uint32_t>::size_type start = 0;
176
177 int NMuons1 = 0, NMuons2 = 0, frag = 0;
178
179 for (const TileL2* l2 : m_vTileL2) {
180
181 int ros = ((l2->identify()) | 0xff) >> 8;
182 int drawer = (l2->identify()) & 0xff;
183
184 if ((drawer % 2) == 0) frag = 0x00100000 + (ros << 12) + ((drawer + 1) << 6) + drawer;
185
186 if (frag != currentFrag) { // superdrawer is even
187
188 currentFrag = frag;
189
190 // fragment marker
191 v.push_back(0xff1234ff);
192
193 // fragment size (variable depending on the number of muons found)
194 v.push_back(5);
195
196 // fragment ID
197 v.push_back(frag);
198
199 // first word after fragment header
200 start = v.size();
201
202 // reserve 2 words for Et
203 for (int i = 0; i < 2; ++i)
204 v.push_back(0);
205
206 // Et superdrawer #1
207 int wet = (int) round(l2->sumEt());
208 v[start] = (unsigned int) (wet + 9000); // shift by 9000 to be compatible with frag 0x10 format
209
210 // MTag superdrawer #1
211 NMuons1 = l2->NMuons();
212 for (int i = 0; i < 2 * NMuons1; ++i)
213 v.push_back(l2->val(i));
214
215 } else { // superdrawer is odd
216
217 // Et superdrawer #2
218 int wet = (int) round(l2->sumEt());
219 v[start + 1] = (unsigned int) (wet + 9000); // shift by 9000 to be compatible with frag 0x10 format
220
221 // MTag superdrawer #2
222 NMuons2 = l2->NMuons();
223 for (int i = 0; i < 2 * NMuons2; ++i)
224 v.push_back(l2->val(i));
225
226 // re-write fragment size
227 // start should be >= 3 here, but coverity can't prove it.
228 //coverity[INTEGER_OVERFLOW]
229 v[start - 2] = 5 + 2 * NMuons1 + 2 * NMuons2;
230
231 }
232
233 }
234
235 //assert(0);
236}
float round(const float toRound, const unsigned int decimals)
Definition Mdt.cxx:27

◆ fillROD12()

void TileROD_Encoder::fillROD12 ( std::vector< uint32_t > & v)

Definition at line 238 of file TileROD_Encoder.cxx.

238 {
239
240 int currentFrag(-1);
241 std::vector<uint32_t>::size_type start = 0;
242
243 int frag = 0;
244
245 for (const TileL2* l2 : m_vTileL2) {
246
247 int ros = (l2->identify()) >> 8;
248 int drawer = (l2->identify()) & 0xff;
249
250 if ((drawer % 2) == 0)
251 frag = 0x120000 + (ros << 12) + ((drawer + 1) << 6) + drawer;
252 else
253 frag = 0x120000 + (ros << 12) + (drawer << 6) + (drawer - 1);
254
255 if (frag != currentFrag) { // superdrawer is even
256
257 currentFrag = frag;
258
259 // fragment marker
260 v.push_back(0xff1234ff);
261
262 // fragment size (variable depending on the number of muons found)
263 v.push_back(3);
264
265 // fragment ID
266 v.push_back(frag);
267
268 // first word after fragment header
269 start = v.size();
270 }
271
272 // MTag data
273 int Ndata = l2->Ndata();
274 if (Ndata) {
275 for (int i = 0; i < Ndata; ++i)
276 v.push_back(l2->val(i));
277
278 // re-write fragment size
279 // start should be >= 3 here, but coverity can't prove it.
280 //coverity[INTEGER_OVERFLOW]
281 v[start - 2] += Ndata;
282 }
283 }
284
285 //assert(0);
286}

◆ fillROD2()

void TileROD_Encoder::fillROD2 ( std::vector< uint32_t > & v)

Definition at line 288 of file TileROD_Encoder.cxx.

288 {
289 //std::sort(m_vTileRC.begin(), m_vTileRC.end(), m_order);
290
291 int currentFrag(-1);
292 std::vector<uint32_t>::size_type start = 0;
293
294 for (const TileFastRawChannel* rc : m_vTileRC) {
295
296 int frag = rc->frag() | m_unitType; // FRAG TYPE in upper half of the word
297
298 if (frag != currentFrag) {
299 currentFrag = frag;
300
301 // very first word is size of the fragment, which is 50 words
302 v.push_back(50);
303 // next word is frag ID
304 v.push_back(frag);
305
306 // remember where is the first channel
307 start = v.size();
308 // reserve maximum number of channels in a drawer words
309 // for all channels in the drawer
310 v.resize(start + m_maxChannels, 0);
311
312 }
313
314 // FIXME:: protection against both low and high gain amplitude
315 // for the same raw channel,
316 // if this is the case all channels should have both
317 // low and high gain and we should use different fragment type
318
319 int chan = rc->channel();
320 int gain = rc->adc();
321 if (chan < m_maxChannels) {
322 v[start + chan] = m_rc2bytes2.getWord(rc, gain);
323 }
324
325 } // end of all TileRawChannel
326
327 // dumpROD (v) ;
328
329 return;
330}
TileRawChannel2Bytes2 m_rc2bytes2

◆ fillROD3()

void TileROD_Encoder::fillROD3 ( std::vector< uint32_t > & v)

Definition at line 332 of file TileROD_Encoder.cxx.

332 {
333 ShortVecAdapter v16 (v);
334
335 //std::sort(m_vTileRC.begin(), m_vTileRC.end(), m_order);
336
337 int currentFrag(-1);
338 bool first = true;
339 std::vector<uint32_t>::size_type head = 0;
340 std::vector<uint32_t>::size_type count = 0;
341
342 std::vector<short> vshort;
343
344 for (const TileFastRawChannel* rc : m_vTileRC) {
345
346
347 int frag = rc->frag() | m_unitType; // FRAG TYPE in upper half of the word
348 int chan = rc->channel();
349 int gain = rc->adc();
350
351 if (frag != currentFrag) {
352 currentFrag = frag;
353 // a new frag
354 if (!first) {
355 // close the current frag
356 v16.align();
357 // inclusive word (32bit) for this frag
358 v[count] = v.size();
359 } else
360 first = false;
361
362 // very first word is size of the fragment
363 // remember where it is
364 count = v.size();
365 v.push_back(0);
366 // add frag ID
367 v.push_back(frag);
368
369 // remember where map starts
370 head = v.size();
371 // 2 words (64 bits) for channel map
372 v.push_back(0);
373 v.push_back(0);
374 }
375
376 // FIXME:: protection against both low and high gain amplitude
377 // for the same raw channel,
378 // if this is the case all channels should have both
379 // low and high gain and we should use different fragment type
380
381 if (checkBit(&(v[head]), chan)) {
382 // the same channel with another gain already exists, ignore second one
383 } else {
384 vshort.clear();
385 m_rc2bytes3.getBytes(rc, gain, vshort);
386 for (short x : vshort)
387 v16.push_back (x);
388 // set bitmap for this channel
389 setBit(&(v[head]), chan);
390 }
391
392 } // end of all TileRawChannel
393
394 if (!first) {
395 // close the last Frag
396 v16.align();
397 // inclusive word (32bit) for this frag
398 v[count] = v.size();
399 }
400
401 // dumpROD (v) ;
402
403 return;
404}
#define x
TileRawChannel2Bytes m_rc2bytes3
void setBit(uint32_t *p, int chan)
set the bitmap for a channel
bool checkBit(const uint32_t *p, int chan)
check the bitmap for a channel
std::string head(std::string s, const std::string &pattern)
head of a string
bool first
Definition DeMoScan.py:534

◆ fillROD4()

void TileROD_Encoder::fillROD4 ( std::vector< uint32_t > & v)

Definition at line 406 of file TileROD_Encoder.cxx.

406 {
407 //std::sort(m_vTileRC.begin(), m_vTileRC.end(), m_order);
408
409 int currentFrag(-1);
410 std::vector<uint32_t>::size_type start = 0;
411
412 for (const TileFastRawChannel* rc : m_vTileRC) {
413
414 int frag = rc->frag() | m_unitType; // FRAG TYPE in upper half of the word
415
416 if (frag != currentFrag) {
417 currentFrag = frag;
418
419 // very first word is start fragment identifier
420 v.push_back(0xff1234ff);
421 // next word is frag size:
422 // (maximum number of channels in a drawer) + ...
423 // ... + (6 = start frag + frag size + frag ID + 3 sumE words)
424 v.push_back(m_maxChannels + 6);
425 // next word is frag ID
426 v.push_back(frag);
427
428 // remember where is the first channel
429 start = v.size();
430
431 // reserve (maximum number of channels in a drawer) words
432 // for all channels in the drawer and 3 sumE words
433 v.resize(start + m_maxChannels + 3, 0);
434
435 }
436
437 // FIXME:: protection against both low and high gain amplitude
438 // for the same raw channel,
439 // if this is the case all channels should have both
440 // low and high gain and we should use different fragment type
441
442 int chan = rc->channel();
443 int gain = rc->adc();
444 if (chan < m_maxChannels) {
445 v[start + chan] = m_rc2bytes4.getWord(*rc, m_rChUnit, gain);
446 }
447
448 } // end of all TileRawChannel
449
450 // dumpROD (v) ;
451
452 return;
453}
TileRawChannel2Bytes4 m_rc2bytes4

◆ fillROD5()

void TileROD_Encoder::fillROD5 ( std::vector< uint32_t > & v)

Definition at line 521 of file TileROD_Encoder.cxx.

521 {
522 ATH_MSG_ERROR( "fillROD5 -> store raw channels in frag5 - not yet implemented " );
523}

◆ fillROD5D()

void TileROD_Encoder::fillROD5D ( std::vector< uint32_t > & v)

Definition at line 525 of file TileROD_Encoder.cxx.

525 {
526 ATH_MSG_ERROR( "fillROD5D -> store digits in frag5 - not yet implemented " );
527}

◆ fillRODL2()

void TileROD_Encoder::fillRODL2 ( std::vector< uint32_t > & v)

Definition at line 455 of file TileROD_Encoder.cxx.

455 {
456
457 std::map<int, const TileL2*> l2_map;
458
459 for (const TileL2* l2 : m_vTileL2) {
460 l2_map[l2->identify()] = l2;
461 //std::cout << "l2 id=0x"<<std::hex<<l2->identify()<<std::dec<<std::endl;
462 }
463
464 std::vector<uint32_t>::size_type start = 3;
465
466 while (start <= v.size()) {
467 uint32_t size = v[start - 2];
468 uint32_t fragtype = v[start - 1];
469 int type = (fragtype >> 16) & 0xFF;
470 //std::cout <<std::hex<<"frag 0x"<<fragtype<<std::dec<<" size "<<size<<std::endl;
471 if ((type == 4 && size > 53) || (type == 5 && ((fragtype >> 27) & 7) > 2)) {
472 int frag = fragtype & 0xFFFF;
473 std::map<int, const TileL2*>::const_iterator l2_it = l2_map.find(frag);
474 if (l2_it != l2_map.end()) {
475 int unit = (fragtype >> 30);
476 const TileL2* l2 = l2_it->second;
477 int et = round(l2->sumEt() * AMPLITUDE_FACTOR5_HG[unit]);
478 v[start + 48] = (uint32_t) et;
479 int ez = round(l2->sumEz() * AMPLITUDE_FACTOR5_HG[unit]);
480 v[start + 49] = (uint32_t) ez;
481 int e = round(l2->sumE() * AMPLITUDE_FACTOR5_HG[unit]);
482 v[start + 50] = (uint32_t) e;
483 //std::cout << "Found "<<et<<","<<ez<<","<<e<<std::endl;
484 }
485 }
486 start += size;
487 }
488
489 if (msgLvl(MSG::VERBOSE)) dumpROD(v);
490
491 return;
492}
const PlainObject unit() const
This is a plugin that makes Eigen look like CLHEP & defines some convenience methods.
float et(const xAOD::jFexSRJetRoI *j)
const double AMPLITUDE_FACTOR5_HG[4]
bool msgLvl(const MSG::Level lvl) const
Test the output level.
void dumpROD(const std::vector< uint32_t > &v)
dump contents of the ROD fragment
setEventNumber uint32_t

◆ fillRODTileMuRcvDigi()

void TileROD_Encoder::fillRODTileMuRcvDigi ( std::vector< uint32_t > & v)

convert the TMDB objects into a vector of 32bit words: 8bit words/digit, 16bit words/RC, 16bit words/decision

Definition at line 533 of file TileROD_Encoder.cxx.

533 {
534
535 ATH_MSG_DEBUG( "TMDB encoding sub-fragment 0x40: loop over " << m_vTileDigi.size() << " objects" );
536
537 // sub-fragment marker
538 //
539 v.push_back(0xff1234ff);
540
541 // sub-fragment size
542 // set the size for the sub-fragment (3 [header] + 8 [# 32bit word/digit/pmt/module] x N [# digit/pmt/module])
543 uint32_t size = m_vTileDigi.size() * 7; // assume 7 samples
544 size = (size+3)>>2; // convert numner of bytes into number of 32bit words
545 v.push_back(3+size);
546 uint savepos=v.size()-1;
547
548 // type & version: the version is a 16-bit number and is set by fixing the 3th hexadecimal digit (8-12 in bits) to 5 and leaving all other free
549 //
550 uint32_t verfrag = 0x500;
551 uint32_t type_version = (0x40 << 16) + verfrag;
552 v.push_back(type_version);
553
554 v.resize(v.size()+size); // prepare place for extra words
555
556 // counters and temporary words
557 //
558 int word8bit_cnt = 0;// number of 8bit words collected 1..4
559 int wc = 0;// number of blocks of 7 32-bit words saved in ROD fragment 1..8
560 int chc = 0;// number of digits inside the tile digits collection
561 int nwc = (m_vTileDigi.size() + 3)>>2; // convert number of channels into number of 4-byte blocks
562 uint nsamp = 7;
563 uint32_t word[7];
564 memset(word, 0, sizeof(word));
565
566 for (const TileDigits* digi : m_vTileDigi) {
567
568 if (wc==nwc) {
569 ATH_MSG_WARNING( "Too many channels per fragment for TMDB frag 0x40 - ignoring all the rest" );
570 break;
571 }
572
573 // Get identifier(s) and digits for later usage
574 //
575 std::vector<float> digits = digi->samples();
576 nsamp = digits.size();
577 if (nsamp>7) {
578 ATH_MSG_WARNING( "Too many samples in digits for TMDB frag 0x40, using first 7 instead of "<<nsamp );
579 nsamp=7;
580 digits.resize(nsamp);
581 }
582
583 // Digits from TMDB come to fragment in the reverse order i.e. s1->s7 ... s7->s1
584 //
585 std::reverse(digits.begin(),digits.end());
586
587 // Define two counters: (a) to count for the 8bit sub-fragments (each word has 4 8bit sub-fragments)
588 // (b) to count for the 32bit words (each digit has 7 32bit words)
589 //
590 // | s(i)-m(j)-d6r | s(i)-m(j)-d6l | s(i)-m(j)-d5r | s(i)-m(j)-d5l |
591 //
592 int shift = word8bit_cnt * 8;
593 for ( uint i=0; i<nsamp; ++i ) {
594 word[i] += ((int) digits[i]) << shift;
595 }
596
597 if (msgLvl(MSG::DEBUG)) {
598 HWIdentifier hwid = digi->adc_HWID();
599 int ros = m_tileHWID->ros(hwid);
600 int drawer = m_tileHWID->drawer(hwid);
601 int channel = m_tileHWID->channel(hwid);
602 const char * strchannel[5] = {" d5L "," d5R "," d6L "," d6R ", " xxx "};
603 int j=std::min(channel,4);
604 if (ros<3) j=4;
605 for ( uint i=0; i<nsamp; ++i ) {
606 msg(MSG::DEBUG) << ros << "/" << drawer << "/" << channel << strchannel[j]
607 <<"\tSample "<<7-i<<" bits |" << std::setfill('0') << std::setw(2)
608 << shift << "-" << std::setw(2) << shift+7 << std::setfill('0')
609 << "| of 32-bit word "<<3 + nwc*i + wc<<" "<<digits[i]
610 <<" "<<MSG::hex<<word[i]<<MSG::dec << endmsg;
611 }
612 }
613
614 ++word8bit_cnt;
615
616 // When word8bit_cnt=4 a set of 32bit words word[0..6] are completed and are saved at a position inside the ROD fragment vector:
617 //
618 // 1st 32 bit word holds : | digit0 pmt3 mod0 | digit0 pmt2 mod0 | digit0 pmt1 mod0 | digit0 pmt0 mod0 |
619 // 2nd 32 bit word holds : | digit0 pmt3 mod1 | digit0 pmt2 mod1 | digit0 pmt1 mod1 | digit0 pmt0 mod1 |
620 // ...
621 // 8th 32 bit word holds : | digit0 pmt3 mod7 | digit0 pmt2 mod7 | digit0 pmt1 mod7 | digit0 pmt0 mod7 |
622 // ...
623 //
624 // word8bit_cnt is reset to 0 and a new set of words[0..6] is restarted.
625 //
626 if ( word8bit_cnt == 4 ) {
627 for ( uint i=0; i<nsamp; ++i ) {
628 v.at( 3 + nwc*i + wc ) = word[i];
629 }
630 ++wc;
631 word8bit_cnt=0;
632 memset(word, 0, sizeof(word));
633 }
634 ++chc;
635 }
636
637 if ( word8bit_cnt != 0 && wc<nwc ) { // some extra channels
638 ATH_MSG_WARNING( "Unexpected number of channels for TMDB frag 0x40" << wc*4 + word8bit_cnt );
639 for ( uint i=0; i<nsamp; ++i ) {
640 v.at( 3 + nwc*i + wc ) = word[i];
641 }
642 ++wc;
643 word8bit_cnt=0;
644 memset(word, 0 ,sizeof(word));
645 }
646
647 v.at(savepos)=3+size; // not actually needed - size was already set correctly
648
649 ATH_MSG_DEBUG( "Check version and counters: "<<MSG::hex<< verfrag <<MSG::dec<<" "<< chc <<" "<< wc << " save in position: " << savepos );
650
651 // dump fragment
652 //
653 if (msgLvl(MSG::VERBOSE)) {
654 msg(MSG::VERBOSE) << "Check content of ROD fragment after including sub-fragment (0x40)... " << v.size() << endmsg;
655 for (size_t i=0; i<v.size(); ++i)
656 msg(MSG::VERBOSE) << i << "\t" << v.at(i) << MSG::hex << " 0x" << v.at(i) << MSG::dec << endmsg;
657 }
658
659 return;
660}
#define ATH_MSG_WARNING(x)
#define ATH_MSG_DEBUG(x)
unsigned int uint
void reverse(typename DataModel_detail::iterator< DVL > beg, typename DataModel_detail::iterator< DVL > end)
Specialization of reverse for DataVector/List.

◆ fillRODTileMuRcvObj()

void TileROD_Encoder::fillRODTileMuRcvObj ( std::vector< uint32_t > & v)

Definition at line 788 of file TileROD_Encoder.cxx.

788 {
789
790 // this is the subfragment type 0x42
791
792 ATH_MSG_INFO( "TMDB encoding sub-fragment 0x42: loop over " << m_vTileMuRcvObj.size() << " objects" );
793
794 // sub-fragment marker
795 //
796 v.push_back(0xff1234ff);
797
798 // type & version
799 //
800 v.push_back(5);
801 uint savepos = v.size()-1;
802 uint32_t verfrag = 0x500;
803 uint32_t type_version = (0x42 << 16) + verfrag;
804 v.push_back(type_version);
805
806 // counters and temporary words
807 //
808 int wc = 0;
809 int chc= 0;
810 uint32_t result1 = 0x0;
811 uint32_t result2 = 0x0;
812 uint32_t result3 = 0x0;
813
814 switch (m_runPeriod) {
815
816 case 2:// RUN2
817
818 msg(MSG::INFO) << "Going trough RUN2 encoding procedure for TMDB data" << endmsg;
819
820 for (const TileMuonReceiverObj* tmurcv : m_vTileMuRcvObj) {
821
822 // VERSION RUN2: results are hold in 3 16-bit words. Two 32 bit words.
823 //
824 // 32nd bit -> | results2 || results1 | <- 1st bit
825 // | 0x0 || results3 |
826 //
827 // 32nd bit -> | m-5 | m-4 | m-3 | m-2 || m-2 | m-1 | m-0 | 0x0 | <- 1st bit
828 // | 0x0 || 0x0 | m-7 | m-6 | m-5 |
829 //
830 // each 4 bit word is
831 //
832 // 0 1 2 3 <-- in Obj
833 // | d56h | d56l | d6h | d6l |
834 // bit3 bit2 bit1 bit0
835 //
836
837 int modid = tmurcv->identify() & 0xff;
838
839 const std::vector<bool> & slin = tmurcv->GetDecision();
840 int imax = std::min((int)slin.size(),4);
841 uint32_t word4b = 0x0;
842 for (int i=0;i<imax;++i){
843 if (slin[i]) word4b |= 1 << (3-i);
844 }
845
846 if (msgLvl(MSG::INFO)) {
847 std::stringstream ss;
848 for (const bool val : slin) {
849 ss<<std::setw(2)<<val;
850 }
851 msg(MSG::INFO) << "Result for module: "<<modid<<" in TMDB board "<<modid%8<<MSG::hex<<": 0x"<<word4b<<MSG::dec<<" from "<<ss.str() << endmsg;
852 }
853
854 switch (modid%8) {
855 case 0: result1 |= word4b << 4 ; break;
856 case 1: result1 |= word4b << 8 ; break;
857 case 2: result1 |= word4b << 12 ; result2 |= word4b; break;
858 case 3: result2 |= word4b << 4 ; break;
859 case 4: result2 |= word4b << 8 ; break;
860 case 5: result2 |= word4b << 12 ; result3 |= word4b; break;
861 case 6: result3 |= word4b << 4 ; break;
862 case 7: result3 |= word4b << 8 ; break;
863 }
864 ++chc;
865 }
866
867 ATH_MSG_INFO( "Summary : "<<MSG::hex<<" Results 1: 0x"<<result1<<" Results 2: 0x"<<result2<<" Results 3: 0x"<<result3<< MSG::dec );
868
869 v.push_back( result1 | (result2 << 16) ); ++wc;// | 5 4 3 2 | 2 1 0 - |
870 v.push_back( result3 ); ++wc; // | - - - - | - 7 6 5 | '-' means free/not set/0x0
871 v.at(savepos)=3+wc;
872
873 break;
874
875 case 3:// RUN3
876
877 msg(MSG::INFO) << "Going trough RUN3 encoding procedure for TMDB data" << endmsg;
878
879 for (const TileMuonReceiverObj* tmurcv : m_vTileMuRcvObj) {
880 // VERSION RUN3: results are hold in two 32-bit word to cover a TMDB board holding 8 TileCal modules.
881 //
882 // 32nd bit -> | results2 [16:31] || results1 [0:15] | <- 1st bit
883 // 32nd bit -> | 0x0 [16:31] || results3 [0:15] | <- 1st bit
884 //
885 // 32nd bit -> | 0x0 [12:15] | m-5 | m-4 | m-3 | m-2 || 0x0 [12:15] | m-3 | m-2 | m-1 | m-0 | <- 1st bit
886 // | 0x0 [16:31] || 0x0 [12:15] | m-7 | m-6 | m-5 | m-4 |
887 //
888 // For each module m-X there is a 3-bit word with the result for a threshold
889 //
890 // | d5+d6 | d6 | d5 |
891 // | bit2 | bit1 | bit0 |
892 //
893
894 // counters and temporary words
895 //
896
897/*
898 *
899 * Comment on implementation...
900 * In Athena the container size is kept to 4. It is fully used for run2 but for run3 the first position is left empty.
901 * The most significative bit is placed in first position [0] of a container so the position reverse while encoding.
902 *
903 * */
904
905 int modid = tmurcv->identify() & 0xff;
906 const std::vector<bool> & slin = tmurcv->GetDecision();
907 int imax = std::min((int)slin.size(),4);
908 uint32_t word3b = 0x0;
909 for (int i=1;i<imax;++i) {
910 // slin d56 d6 d5
911 // word3b bit2 bit1 bit0
912 // bit 4 is always 0 since iteration starts at 1
913 if (slin[i]) word3b |= 1 << (3-i);
914 }
915
916 switch (modid%8) {
917 case 0: result1 |= word3b ; break;
918 case 1: result1 |= word3b << 3 ; break;
919 case 2: result1 |= word3b << 6 ; result2 |= word3b ; break;
920 case 3: result1 |= word3b << 9 ; result2 |= word3b << 3 ; break;
921 case 4: result2 |= word3b << 6 ; result3 |= word3b ; break;
922 case 5: result2 |= word3b << 9 ; result3 |= word3b << 3 ; break;
923 case 6: result3 |= word3b << 6 ; break;
924 case 7: result3 |= word3b << 9 ; break;
925 }
926 ++chc;
927 }
928
929 ATH_MSG_INFO( "Summary : "<<MSG::hex<<" Results 1: 0x"<<result1<<" Results 2: 0x"<<result2<<" Results 3: 0x"<<result3<< MSG::dec );
930
931 v.push_back( result1 | (result2 << 16) ); ++wc;
932 v.push_back( result3 ); ++wc;
933 v.at(savepos) = 3+wc;
934
935 break;
936
937 case 0://not defined
938 ATH_MSG_INFO("Tile Muon Decision Board (TMDB) fragment versions are only available for RUN2 and RUN3");
939 break;
940 }
941 if (msgLvl(MSG::INFO)){
942 msg(MSG::INFO) << "Check version and counters: "<<MSG::hex<<verfrag<<MSG::dec<<" "<<chc<<" "<<wc<<" save in position: "<<savepos<<endmsg;
943 msg(MSG::INFO) << "Check content of ROD fragment after including sub-fragment (0x42)... " << v.size() << endmsg;
944 for (size_t i=0; i<v.size(); ++i) {
945 msg(MSG::INFO) << i << "\t" << v.at(i) << MSG::hex << " 0x" << v.at(i) << MSG::dec << endmsg;
946 }
947 }
948 return;
949}
#define ATH_MSG_INFO(x)
static Double_t ss
int imax(int i, int j)

◆ fillRODTileMuRcvRawChannel()

void TileROD_Encoder::fillRODTileMuRcvRawChannel ( std::vector< uint32_t > & v)

Definition at line 664 of file TileROD_Encoder.cxx.

664 {
665
666 ATH_MSG_DEBUG( "TMDB encoding sub-fragment 0x41: loop over " << m_vTileRC.size() << " objects" );
667
668 const float TMDB_AMPLITUDE_FACTOR = 1.0;
669
670 // sub-fragment marker
671 //
672 v.push_back(0xff1234ff);
673
674 // sub-fragment size
675 //
676 v.push_back(3);
677 uint savepos=v.size()-1;
678
679 // type & version: the version is a 16-bit number and is set by fixing the 3th hexadecimal digit (8-12 in bits) to 5 and leaving all other free
680 //
681 uint32_t verfrag = 0x500;
682 // FIXME: for the moment (July 2015) we use 32-bit packing only, so we hide 16-bit version under ifdef
683 // if we decide to use 16-bit version, additional flag for encoder should be passed from top-level algorithm
684#ifdef ALLOW16BIT
685 if (use_16bit_packing) verfrag += 2;
686 int32_t word16 = 0x0;
687#endif
688 uint32_t type_version = (0x41 << 16) + verfrag;
689 v.push_back(type_version);
690
691 // counters and temporary words
692 //
693 int wc = 0;
694 int chc = 0;
695 uint32_t word = 0x0;
696
697 for (const TileFastRawChannel* rc : m_vTileRC) {
698
699 // energies of individual pmts 2 words per module | d5r(16) | d5l(17) |
700 // | d6r(37) | d6l(38) |
701 //
702 float f_amp = rc -> amplitude();
703 int32_t i_amp = lround(f_amp*TMDB_AMPLITUDE_FACTOR) ;
704
705 // FIXME: for the moment (July 2015) we use 32-bit packing only, so we hide 16-bit version under ifdef
706#ifdef ALLOW16BIT
707 switch (verfrag){
708 case 0x502:
709 // 2's complement (binary conversion for negative numbers)
710 // x in R and bin_x the binary conversion of x ; (if x<0) then bin_x = 0xffff - abs(x) + 1 (else) bin_x = abs(x)
711 //
712 // v0 : - Feb'15: each 32-bit words holds a cell of a module 16-bit for left side PMT 16 bit for right side pmt
713 //
714 // 1st 32 bit word holds : | d5r m0 | d5l m0 |
715 // 2nd 32 bit word holds : | d6r m0 | d6l m0 |
716 // ...
717 // 7th 32 bit word holds : | d5r m3 | d5l m3 |
718 // 8th 32 bit word holds : | d6r m3 | d6l m3 |
719 // ...
720 // - While reading the FPGA it was noticed a longer word coming out larger that 16-bit
721 // - Keep this (for now) just for history but it may be that later we understand better the FPGA output
722 //
723 //limit to the range of 16-bit integer
724 if (i_amp>0x7FFF) word16 = 0x7FFF;
725 else if (i_amp<-0x8000) word16 = -0x8000;
726 else word16 = i_amp;
727
728 if (chc&1) {
729 word |= word16 << 16;
730 v.push_back(word);
731 ++wc;
732 } else {
733 word = word16 & 0xFFFF;
734 }
735 break;
736
737 //case 0x500:
738 default:
739#else
740 {
741#endif
742 // vMay'15 current version each 32-bit word is a channel
743 word = (uint32_t)i_amp;
744 v.push_back(word);
745 ++wc;
746 }
747
748 if (msgLvl(MSG::DEBUG)) {
749 int frag_id = rc->frag();
750 int drawer = (frag_id&0xFF);
751 int ros = frag_id>>8;
752 int channel = rc->channel();
753 const char * strchannel[5] = {" d5L "," d5R "," d6L "," d6R ", " xxx "};
754 int j=std::min(channel,4);
755 if (ros<3) j=4;
756 msg(MSG::DEBUG) << ros << "/" << drawer << "/" << channel << strchannel[j]
757 <<"\tAmp " << f_amp << " " << i_amp << " "
758 <<" ch cnt " << chc << " word cnt " << wc
759 << " word 0x" <<MSG::hex<< word <<MSG::dec<<endmsg;
760 }
761
762 ++chc;
763 }
764
765 // FIXME: for the moment (July 2015) we use 32-bit packing only, so we hide 16-bit version under ifdef
766#ifdef ALLOW16BIT
767 if (verfrag==0x502 && wc*2 != chc) { // odd number of channels for 16-bit frags
768 v.push_back(word); // saving last channel
769 ++wc;
770 }
771#endif
772
773 v.at(savepos)=3+wc;
774
775 ATH_MSG_DEBUG("Check version and counters: "<<MSG::hex<< verfrag <<MSG::dec<<" "<< chc <<" "<< wc <<" save in position: "<< savepos );
776
777 if (msgLvl(MSG::VERBOSE)) {
778 msg(MSG::VERBOSE) << "Check content of ROD fragment after including sub-fragment (0x41)... "<< m_vTileRC.size() <<" "<< v.size() << endmsg;
779 for (size_t i=0; i<v.size(); ++i) {
780 msg(MSG::VERBOSE) << i <<"\t"<< v.at(i) << MSG::hex << " 0x" << v.at(i) << MSG::dec << endmsg;
781 }
782 }
783 return;
784}

◆ initMessaging()

void AthMessaging::initMessaging ( ) const
privateinherited

Initialize our message level and MessageSvc.

This method should only be called once.

Definition at line 39 of file AthMessaging.cxx.

40{
42 // If user did not set an explicit level, set a default
43 if (m_lvl == MSG::NIL) {
44 m_lvl = m_imsg ?
45 static_cast<MSG::Level>( m_imsg.load()->outputLevel(m_nm) ) :
46 MSG::INFO;
47 }
48}
std::string m_nm
Message source name.
std::atomic< IMessageSvc * > m_imsg
MessageSvc pointer.
std::atomic< MSG::Level > m_lvl
Current logging level.
IMessageSvc * getMessageSvc(bool quiet=false)

◆ msg() [1/2]

MsgStream & AthMessaging::msg ( ) const
inlineinherited

The standard message stream.

Returns a reference to the default message stream May not be invoked before sysInitialize() has been invoked.

Definition at line 163 of file AthMessaging.h.

164{
165 MsgStream* ms = m_msg_tls.get();
166 if (!ms) {
167 if (!m_initialized.test_and_set()) initMessaging();
168 ms = new MsgStream(m_imsg,m_nm);
169 m_msg_tls.reset( ms );
170 }
171
172 ms->setLevel (m_lvl);
173 return *ms;
174}
boost::thread_specific_ptr< MsgStream > m_msg_tls
MsgStream instance (a std::cout like with print-out levels)
void initMessaging() const
Initialize our message level and MessageSvc.

◆ msg() [2/2]

MsgStream & AthMessaging::msg ( const MSG::Level lvl) const
inlineinherited

The standard message stream.

Returns a reference to the default message stream May not be invoked before sysInitialize() has been invoked.

Definition at line 178 of file AthMessaging.h.

179{ return msg() << lvl; }

◆ msgLvl()

bool AthMessaging::msgLvl ( const MSG::Level lvl) const
inlineinherited

Test the output level.

Parameters
lvlThe message level to test against
Returns
boolean Indicating if messages at given level will be printed
Return values
trueMessages at level "lvl" will be printed

Definition at line 151 of file AthMessaging.h.

152{
153 if (m_lvl <= lvl) {
154 msg() << lvl;
155 return true;
156 } else {
157 return false;
158 }
159}

◆ setBit()

void TileROD_Encoder::setBit ( uint32_t * p,
int chan )
private

set the bitmap for a channel

Definition at line 955 of file TileROD_Encoder.cxx.

955 {
956// chan = (0,47)
957 int a = chan / 32;
958 int r = chan % 32;
959// a = (0,1), r = ( 0, 31 )
960 *(p + a) |= (1 << r);
961 return;
962}

◆ setLevel()

void AthMessaging::setLevel ( MSG::Level lvl)
inherited

Change the current logging level.

Use this rather than msg().setLevel() for proper operation with MT.

Definition at line 28 of file AthMessaging.cxx.

29{
30 m_lvl = lvl;
31}

◆ setMaxChannels()

void TileROD_Encoder::setMaxChannels ( int maxChannels)

set maximum number of channels in a drawer

Definition at line 132 of file TileROD_Encoder.cxx.

132 {
133 m_maxChannels = maxChannels;
134}

◆ setTileHWID() [1/2]

void TileROD_Encoder::setTileHWID ( const TileHWID * tileHWID,
bool verbose,
unsigned int type = 4 )

set all necessary parameters for the encoder

Definition at line 68 of file TileROD_Encoder.cxx.

68 {
69 m_tileHWID = tileHWID;
71 m_type = type;
72 m_unitType = (m_type << 16);
73
74 switch (type) {
75 case 4:
76 m_rc2bytes4.setVerbose(verbose);
77 break;
78 case 5:
79 m_rc2bytes5.setVerbose(verbose);
80 break;
81 case 3:
82 m_rc2bytes3.setVerbose(verbose);
83 break;
84 case 2:
85 m_rc2bytes2.setVerbose(verbose);
86 break;
87 default:
88 break;
89 }
90}
TileRawChannel2Bytes5 m_rc2bytes5
bool verbose
Definition hcg.cxx:73

◆ setTileHWID() [2/2]

void TileROD_Encoder::setTileHWID ( const TileHWID * tileHWID,
int m_runPeriod )

Definition at line 92 of file TileROD_Encoder.cxx.

92 {
93 m_tileHWID = tileHWID;
94 m_runPeriod = runPeriod;
95}

◆ setTypeAndUnit()

void TileROD_Encoder::setTypeAndUnit ( TileFragHash::TYPE type,
TileRawChannelUnit::UNIT unit )

set OF algorigtm type and amplitude units for a drawer

Definition at line 97 of file TileROD_Encoder.cxx.

97 {
98
99 unsigned int OFType = (unsigned int) type;
100 if (OFType > 7) {
101 OFType = 0;
102 ATH_MSG_ERROR( "setTypeAndUnit Incorrect raw data type =" << type
103 << " using type=0 instead " );
104 }
105
106 unsigned int rChUnit = (unsigned int) unit % (unsigned int) TileRawChannelUnit::OnlineOffset;
107
108 // make sure that we use frag type 4 for units which are not ADC counts
109 if (rChUnit != 0 && m_type < 4) m_type = 4;
110 if (m_type == 4) { // new fragments have non-zero upper byte
111 // 8 upper bits:
112 // UUPPSTTT
113 // 31,30 - units
114 // 29,28 - pulse type ( = 3 for simulated data)
115 // 27 - 7(=0) or 9(=1) samples (assume 7 samples for now)
116 // 24,25,26 - OF type
117 // next 8 bits - frag type ( 2,3,4, ... )
118 m_unitType = (rChUnit << 30) | (3 << 28) | (0 << 27) | (OFType << 24) | (m_type << 16);
119 m_rChUnit = rChUnit;
120 } else if (m_type == 5) {
121 // 8 upper bits:
122 // UULLLTTT
123 // 31,30 - units
124 // 29,28,27 - length of Level2 part ( = 3 - sumEt, sumEz, sumE )
125 // 24,25,26 - OF type
126 m_unitType = (rChUnit << 30) | (3 << 27) | (OFType << 24) | (m_type << 16);
127 m_rChUnit = rChUnit;
128 }
129
130}

Member Data Documentation

◆ ATLAS_THREAD_SAFE

std::atomic_flag m_initialized AthMessaging::ATLAS_THREAD_SAFE = ATOMIC_FLAG_INIT
mutableprivateinherited

Messaging initialized (initMessaging)

Definition at line 141 of file AthMessaging.h.

◆ m_Digi2bytes

TileDigits2Bytes TileROD_Encoder::m_Digi2bytes
private

Definition at line 132 of file TileROD_Encoder.h.

◆ m_imsg

std::atomic<IMessageSvc*> AthMessaging::m_imsg { nullptr }
mutableprivateinherited

MessageSvc pointer.

Definition at line 135 of file AthMessaging.h.

135{ nullptr };

◆ m_lvl

std::atomic<MSG::Level> AthMessaging::m_lvl { MSG::NIL }
mutableprivateinherited

Current logging level.

Definition at line 138 of file AthMessaging.h.

138{ MSG::NIL };

◆ m_maxChannels

int TileROD_Encoder::m_maxChannels
private

Definition at line 149 of file TileROD_Encoder.h.

◆ m_msg_tls

boost::thread_specific_ptr<MsgStream> AthMessaging::m_msg_tls
mutableprivateinherited

MsgStream instance (a std::cout like with print-out levels)

Definition at line 132 of file AthMessaging.h.

◆ m_nm

std::string AthMessaging::m_nm
privateinherited

Message source name.

Definition at line 129 of file AthMessaging.h.

◆ m_order

TileRawDataOrdering TileROD_Encoder::m_order
private

Definition at line 142 of file TileROD_Encoder.h.

◆ m_rc2bytes2

TileRawChannel2Bytes2 TileROD_Encoder::m_rc2bytes2
private

Definition at line 133 of file TileROD_Encoder.h.

◆ m_rc2bytes3

TileRawChannel2Bytes TileROD_Encoder::m_rc2bytes3
private

Definition at line 134 of file TileROD_Encoder.h.

◆ m_rc2bytes4

TileRawChannel2Bytes4 TileROD_Encoder::m_rc2bytes4
private

Definition at line 135 of file TileROD_Encoder.h.

◆ m_rc2bytes5

TileRawChannel2Bytes5 TileROD_Encoder::m_rc2bytes5
private

Definition at line 136 of file TileROD_Encoder.h.

◆ m_rChUnit

unsigned int TileROD_Encoder::m_rChUnit
private

Definition at line 147 of file TileROD_Encoder.h.

◆ m_runPeriod

int TileROD_Encoder::m_runPeriod
private

Definition at line 150 of file TileROD_Encoder.h.

◆ m_tileHWID

const TileHWID* TileROD_Encoder::m_tileHWID
private

Definition at line 138 of file TileROD_Encoder.h.

◆ m_type

unsigned int TileROD_Encoder::m_type
private

Definition at line 145 of file TileROD_Encoder.h.

◆ m_unitType

unsigned int TileROD_Encoder::m_unitType
private

Definition at line 146 of file TileROD_Encoder.h.

◆ m_verbose

bool TileROD_Encoder::m_verbose
private

Definition at line 144 of file TileROD_Encoder.h.

◆ m_vTileDigi

std::vector<const TileDigits*> TileROD_Encoder::m_vTileDigi
private

Definition at line 128 of file TileROD_Encoder.h.

◆ m_vTileL2

std::vector<const TileL2*> TileROD_Encoder::m_vTileL2
private

Definition at line 127 of file TileROD_Encoder.h.

◆ m_vTileMuRcvObj

std::vector<const TileMuonReceiverObj*> TileROD_Encoder::m_vTileMuRcvObj
private

Definition at line 130 of file TileROD_Encoder.h.

◆ m_vTileRC

std::vector<const TileFastRawChannel*> TileROD_Encoder::m_vTileRC
private

Definition at line 126 of file TileROD_Encoder.h.


The documentation for this class was generated from the following files: