ATLAS Offline Software
TileHid2RESrcID.cxx
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2025 CERN for the benefit of the ATLAS collaboration
3 */
4 
5 #include <iostream>
6 #include <cassert>
7 
12 
13 #include "GaudiKernel/MsgStream.h"
14 
15 #include "eformat/SourceIdentifier.h"
16 using eformat::helper::SourceIdentifier;
17 
18 // implementation of Tile Frag ID to RESrcID conversion.
19 //
20 
22  : m_runnum(0)
23 {
24  m_tileHWID = tileHWID;
25  if (m_tileHWID) {
26  // make internal maps
29  }
30 }
31 
33 {
34  if ( m_tileHWID != tileHWID || m_runnum != runnum) {
35  m_tileHWID = tileHWID;
36  if (m_tileHWID) {
37  // make internal maps
39  }
40  }
41 }
42 
43 void TileHid2RESrcID::initialize(const std::vector<std::vector<uint32_t> > & allmap)
44 {
45  for (const std::vector<uint32_t>& v : allmap) {
46  if (v.size()>0) {
47  int id = v[0];
48  if (v.size()>1) {
49  m_frag2ROD[id].assign(v.begin()+1,v.end());
50  } else if ( m_frag2ROD.find(id) != m_frag2ROD.end() ) {
51  m_frag2ROD.erase(id);
52  }
53  }
54  }
55  updateBSmap();
56 }
57 
58 
60 {
61  m_runnum = runnum;
62  eformat::SubDetector detid[6];
63 
64  detid[0] = eformat::TILECAL_LASER_CRATE; // 0x50 - beam crate
65  detid[1] = eformat::TILECAL_BARREL_A_SIDE; // 0x51 - barrel positive
66  detid[2] = eformat::TILECAL_BARREL_C_SIDE; // 0x52 - barrel negative
67  detid[3] = eformat::TILECAL_EXT_A_SIDE; // 0x53 - ext.bar positive
68  detid[4] = eformat::TILECAL_EXT_C_SIDE; // 0x54 - ext.bar negative
69  detid[5] = eformat::TDAQ_BEAM_CRATE; // 0x70 - common beam crate
70 
72  std::vector<HWIdentifier>::const_iterator first = m_tileHWID->drawer_begin();
73  std::vector<HWIdentifier>::const_iterator last = m_tileHWID->drawer_end();
74 
75  for ( ; first!=last; ++first) {
76  int ros = m_tileHWID->ros(*first);
77  int drawer = m_tileHWID->drawer(*first);
78  uint32_t frag = m_tileHWID->frag(*first);
79 
80  uint32_t id = 0; // id is always 0 for Beam ROD (ros=0)
81  if (ros > 0) {
82  if (runnum>318000) {
83  // new frag->ROB mapping since March 2017
84  // put 4 drawers in two subsequent RODs
85  // odd drawers in odd ROD, even drawers in even ROD
86  id = ((drawer & 0xFC) >> 1) | (drawer & 0x1) ;
87  } else {
88  // old mapping
89  // (put 4 drawers in one ROD - remove last 2 bits)
90  id = (drawer >> 2);
91  }
92  } else if (drawer>0x7 && drawer < 0xFF) {
93  ros = 5; // frags from common beam crate
94  }
95 
96  // build ROD id
97  SourceIdentifier sid = SourceIdentifier(detid[ros],id);
98  uint32_t rod_id = sid.code();
99 
100  // add ROD id to the map
101  m_frag2ROD[frag] = {rod_id,frag};
102  }
103 
104  if (runnum>=400000) {
105  // LBA14 is demonstrator in RUN3 - add special flag
106  m_frag2ROD[0x10d].push_back(1);
107 
108  // fragments for EBA61 and EBA63 were swapped in 2021-2023
109  if (runnum<463700) {
110  m_frag2ROD[0x33c][1] = 0x33e;
111  m_frag2ROD[0x33e][1] = 0x33c;
112  }
113  }
114 
115  // laser fragments in specific ROB
116  if (runnum>318000) {
117  // new frag->ROB mapping since March 2017
118  m_frag2ROD[0x16] = {0x520020,0x16};
119  m_frag2ROD[0xff] = {0x520020,0xff};
120  } else {
121  m_frag2ROD[0x16] = {0x520010,0x16};
122  m_frag2ROD[0xff] = {0x520010,0xff};
123  }
124  m_frag2ROD[0x17] = {0,0x17};
125 
126  updateBSmap();
127 }
128 
130 {
132  eformat::SubDetector detid[6];
133 
134  detid[0] = eformat::TILECAL_LASER_CRATE; // 0x50 - beam crate
135  detid[1] = eformat::TILECAL_BARREL_A_SIDE; // 0x51 - barrel positive
136  detid[2] = eformat::TILECAL_BARREL_C_SIDE; // 0x52 - barrel negative
137  detid[3] = eformat::TILECAL_EXT_A_SIDE; // 0x53 - ext.bar positive
138  detid[4] = eformat::TILECAL_EXT_C_SIDE; // 0x54 - ext.bar negative
139  detid[5] = eformat::TDAQ_BEAM_CRATE; // 0x70 - common beam crate
140 
141  // iterator over all drawer Identifiers
142  std::vector<HWIdentifier>::const_iterator first = m_tileHWID->drawer_begin();
143  std::vector<HWIdentifier>::const_iterator last = m_tileHWID->drawer_end();
144 
145  for ( ; first!=last; ++first) {
146  int ros = m_tileHWID->ros(*first);
147  int drawer = m_tileHWID->drawer(*first);
148  int frag = m_tileHWID->frag(*first);
149  uint32_t id = 0;
150 
151  //std::cout << "TileHid2RESrcID::setTileMuRcvHWID ros:" << ros << " drawer: " << std::hex << drawer << " frag: " << frag << std::dec << std::endl;
152 
153  if (ros>2){
154  // Extended Barrel
155  // (put 8 drawers in one ROD - remove last 3 bits)
156  id = (drawer >> 3) + 0x100;
157  } else {
158  // Long Barrel
159  // (put 4 drawers in one ROD - remove last 2 bits)
160  id = (drawer >> 2) + 0x100;
161  }
162  // build ROD id
163  SourceIdentifier sid = SourceIdentifier(detid[ros],id);
164  uint32_t rod_id = sid.code();
165 
166  // add ROD id to the map
167  m_TileMuRcvFrag2ROD[frag] = rod_id;
168  }
169 }
170 
171 void TileHid2RESrcID::setROD2ROBmap(const std::vector<std::string> & ROD2ROB,
172  MsgStream & log)
173 {
174  // overwrite ROD IDs for some frags if they are set in jobOptions
175  // vector ROB2ROD contains (frag,ROB) pairs (note in eformat V3 ROD == ROB ! )
176  int size=ROD2ROB.size();
177  int fragCount = 0;
178  for (int i=1; i<size; i+=2) {
179  uint32_t frag = strtol(ROD2ROB[i-1].data(),NULL,0);
180  uint32_t rob = strtol(ROD2ROB[i].data(),NULL,0) & 0xFFFFFF;
181  if ( frag < 0x2000 ) {
182  // this is actually remapping for fragments inside ROB, bypassing ROD ID
183  int frag_id = this->getOfflineFragID(frag);
184  if (frag_id < 0) {
185  m_frag2ROD[frag] = {rob, frag%0x1000};
186  } else {
187  m_frag2ROD[frag_id][0] = rob;
188  }
189  log << MSG::INFO << "TileHid2RESrcID:: mapping frag 0x"<< MSG::hex
190  << frag << " to ROB 0x" << rob << MSG::dec << endmsg;
191  ++fragCount;
192  } else {
193  log << MSG::ERROR << "You are using obsolete ROD to ROB mapping" << endmsg;
194  log << MSG::ERROR << "Please, replace it by frag -> ROB mapping" << endmsg;
195  assert(0);
196  }
197  }
198  if (fragCount > 0)
199  log << MSG::INFO << "TileHid2RESrcID:: " << fragCount
200  << " frag to ROD remappings set via jobOptions" << endmsg;
201 
202  if (m_frag2ROD[0x17][0] != 0) m_frag2ROD[0x16] = {m_frag2ROD[0x17][0], 0x16};
203  else if (m_frag2ROD.find(0x16) != m_frag2ROD.end()) m_frag2ROD[0x17][0] = m_frag2ROD[0x16][0];
204 }
205 
206 void TileHid2RESrcID::setROD2ROBmap (const eformat::FullEventFragment<const uint32_t*> * event,
207  bool& of2Default,
208  MsgStream & log)
209 {
210 
211  uint32_t runnum = event->run_no();
212  if ( ( (runnum>318000 && m_runnum<=318000) || (runnum<=318000 && m_runnum>318000) ) ) {
213  log << MSG::INFO << "Reinitializing TileHid2RESrcID for run " << runnum << endmsg;
215  }
216 
217  uint32_t nBeamFrag=0, nRODfrag=0, nDataFrag[10]={0,0,0,0,0,0,0,0,0,0}, flags=0xFFFF, flags5=0xFFFF;
218  std::map<int,int> fragMap;
219  std::map<int,int> beamMap;
220  std::vector<int> fragIDs;
221 
222  bool cisparFound = false;
223  uint32_t lascisROB = 0;
224 
225  uint32_t ndet = event->nchildren();
226  for (size_t idet=0; idet<ndet; ++idet) {
227  const uint32_t* fpdet;
228  event->child(fpdet, idet);
229  const eformat::ROBFragment<const uint32_t*> robf(fpdet);
230 
231  uint32_t ROBid = robf.source_id();
232 
233  const auto ROBSubDetID = eformat::helper::SourceIdentifier(ROBid).subdetector_id();
234  const auto ROBSubDetGroup = eformat::helper::SourceIdentifier(ROBid).subdetector_group();
235  if (ROBSubDetGroup == eformat::SubDetectorGroup::TILECAL ||
236  ROBSubDetID == eformat::SubDetector::TDAQ_BEAM_CRATE || ROBSubDetID == 0) { // SubDetID=00 used in testbeam
237 
238  unsigned int source_id = robf.rod_source_id();
239  eformat::helper::SourceIdentifier id = eformat::helper::SourceIdentifier(source_id);
240  unsigned int subdet_id = id.subdetector_id();
241 
242  unsigned int size = robf.rod_ndata();
243  unsigned int max_allowed_size = robf.rod_fragment_size_word();
244  unsigned int delta = robf.rod_header_size_word() + robf.rod_trailer_size_word();
245  if (max_allowed_size > delta) max_allowed_size-=delta; else max_allowed_size=0;
246  if (size > max_allowed_size) size = max_allowed_size;
247  if ( size > 0 ) {
248 
249  const uint32_t * data;
250  if (robf.rod_status_position()==0 &&
251  robf.rod_nstatus() + robf.rod_header_size_word() + robf.rod_trailer_size_word() >= robf.rod_fragment_size_word()) {
252  robf.rod_status(data);
253  } else {
254  robf.rod_data(data);
255  }
256 
257  switch ( subdet_id ) {
258  case TILE_BEAM_ID: // TILE BEAM ROD
259  case COMMON_BEAM_ID: // COMMON BEAM ROD
260  case TILE_POS_ID: // POSITIVE ROD
261  case TILE_NEG_ID: // NEGATIVE ROD
262  case TILE_EBPOS_ID: // POSITIVE EB ROD
263  case TILE_EBNEG_ID: // NEGATIVE EB ROD
264  {
265 
266  unsigned int offset = 0, sizePos = 1, idPos = 2;
267  if ( *(data) != 0xff1234ff ) { // appeared since Sep 2005
268  --sizePos;
269  --idPos;
270  }
271 
272  while ( offset+idPos < size ) {
273 
274  uint32_t fragsize = *(data + offset + sizePos);
275  uint32_t fragid = ( *(data + offset + idPos) ) & 0xFFFF;
276  uint32_t upperhalf = ( *(data + offset + idPos) ) >> 16;
277  offset += fragsize;
278 
279  if ( fragsize <= idPos || fragsize > size) break; // too small or too big frag - ignore and exit
280 
281  int fragtype = upperhalf & 0xFF;
282 
283  if (fragtype >= 0x40 && fragtype < 0x50) { // TMDB fragments
284 
285  int ros = subdet_id&0xF;
286  if (ros>0 && ros<=4) {
287  uint32_t vers = fragid;
288  int nmod = (ros>2)?8:4; // we have 8 modules per fragment in ext.barrel, 4 modules in barrel
289  fragid = (ros<<8) | (source_id&0xF)*nmod;
290 
291  FRAGRODMAP::const_iterator it = m_TileMuRcvFrag2ROD.find(fragid);
292  if(it == m_TileMuRcvFrag2ROD.end()){
293  log << MSG::INFO << "New TMDB frag 0x" << MSG::hex << fragid
294  << " type 0x" << fragtype << " vers 0x"<< vers
295  << " in ROB 0x" << ROBid << MSG::dec << endmsg;
296  } else {
297  if ( (*it).second != ROBid ) {
298  log << MSG::INFO << "TMDB frag 0x" << MSG::hex << fragid
299  << " type 0x" << fragtype << " vers 0x"<< vers
300  << " remapping from ROB 0x" << (*it).second
301  << " to 0x" << ROBid << MSG::dec << endmsg;
302  } else {
303  log << MSG::DEBUG << "TMDB frag 0x" << MSG::hex << fragid
304  << " type 0x" << fragtype << " vers 0x"<< vers
305  << " found in ROB 0x" << (*it).second
306  << " as expected" << MSG::dec << endmsg;
307  }
308  }
309  for (int nf=0; nf<nmod; ++nf) {
310  m_TileMuRcvFrag2ROD[fragid] = ROBid;
311  ++fragid;
312  }
313  }
314  break;
315  }
316 
317  if (fragtype == 6) {
318  fragid += TileCalibUtils::FELIX_FRAGID_OFFSET; // FELIX fragment
319  }
320 
321  FRAGFULLMAP::const_iterator it = m_frag2ROD.find(fragid);
322  if(it == m_frag2ROD.end()){
323  log << MSG::INFO << "New frag 0x" << MSG::hex << fragid
324  << " in ROB 0x" << ROBid << MSG::dec << endmsg;
325  } else {
326  if ( (*it).second[0] != ROBid ) {
327  log << MSG::INFO << "Frag 0x" << MSG::hex << fragid
328  <<" remapping from ROB 0x" << (*it).second[0]
329  << " to 0x" << ROBid << MSG::dec << endmsg;
330  } else {
331  log << MSG::DEBUG << "Frag 0x" << MSG::hex << fragid
332  <<" found in ROB 0x" << (*it).second
333  << " as expected" << MSG::dec << endmsg;
334  }
335  }
336 
337  if (fragid < 0xff) { // all testbeam frags and laser frag
338  ++nBeamFrag;
339  m_frag2ROD[fragid] = {ROBid,fragid};
340  ++beamMap[fragtype];
341  } else if (fragid < 0x100) { // CIS par which can come from two sources
342  ++nBeamFrag;
343  ++beamMap[fragtype];
344  if (fragtype == 0x30) { // CIS par in LAST ROD
345  lascisROB = ROBid;
346  } else {
347  m_frag2ROD[fragid] = {ROBid,fragid}; // separate CIS par in every partition
348  cisparFound = true;
349  }
350  } else if (fragid < 0x500 || fragtype == 6) { // normal drawers
351  ++nRODfrag;
352  int frag_id = this->getOfflineFragID(fragid);
353  if (frag_id < 0) {
354  m_frag2ROD[fragid] = {ROBid,fragid};
355  } else {
356  m_frag2ROD[frag_id][0] = ROBid;
357  }
358  ++fragMap[fragtype];
359  if (fragtype == 4) flags = upperhalf;
360  else if (fragtype == 5) {
361  flags5 = upperhalf;
362  fragIDs.push_back((int)fragid);
363  }
364  }
365  }
366  break;
367  }
368  default:
369  break;
370  }
371  }
372  }
373  }
374  if (!cisparFound) {
375  if (lascisROB) {
376  m_frag2ROD[0xff] = {lascisROB,0xff};
377  log << MSG::INFO << "TileHid2RESrcID: Attention! Taking CISpar from lastROD 0x" << MSG::hex << lascisROB << MSG::dec << endmsg;
378  } else {
379  log << MSG::INFO << "TileHid2RESrcID: no CISpar in the data" << endmsg;
380  }
381  }
382  log << MSG::INFO << "TileHid2RESrcID: " << nBeamFrag << " beam sub-frags (";
383  std::map<int,int>::const_iterator itr=beamMap.begin();
384  std::map<int,int>::const_iterator end=beamMap.end();
385  for (; itr!=end; ++itr) {
386  log << " type=0x" << MSG::hex << itr->first << MSG::dec << " nf="<<itr->second;
387  }
388  log << MSG::INFO << " ) and " << nRODfrag << " ROD sub-frags (";
389  itr=fragMap.begin();
390  end=fragMap.end();
391  for (; itr!=end; ++itr) {
392  log << " type=0x" << MSG::hex << itr->first << MSG::dec << " nf="<<itr->second;
393  if (itr->first < 10) nDataFrag[itr->first]+=itr->second; // id=0 - all digits, id=1 - digits above threshold
394  // id=2,3,4,5 - reco frags
395  }
396  log << " ) was found in the data" << endmsg;
397 
398  if (m_frag2ROD[0x17][0] != 0) m_frag2ROD[0x16] = {m_frag2ROD[0x17][0], 0x16};
399  else if (m_frag2ROD.find(0x16) != m_frag2ROD.end()) m_frag2ROD[0x17][0] = m_frag2ROD[0x16][0];
400 
401  bool of2=true; // default for RUN1 data
402  if (nDataFrag[4]!=0) {
403  if ((flags & 0x3000) < 0x3000) // real data
404  of2 = ((flags & 0x400) != 0);
405  } else if (nDataFrag[5]!=0) {
406  if ((flags5 & 0x3000) < 0x3000) // real data
407  of2 = ((flags5 & 0x400) != 0);
408  }
409  log << MSG::DEBUG << "OF2 flag in data is " << ((of2)?"True":"False") << endmsg;
410 
411  if (of2 != of2Default) {
412  log << MSG::INFO << "Setting OF2 flag in in TileROD_Decoder to " << ((of2) ? "True" : "False")
413  << " instead of " << ((of2Default) ? "True" : "False") << endmsg;
414  of2Default = of2;
415  }
416 
417  updateBSmap();
418 }
419 
420 void TileHid2RESrcID::setBSfrag(int frag_id, uint32_t bs_frag)
421 {
422  FRAGFULLMAP::iterator it = m_frag2ROD.find(frag_id);
423  if(it == m_frag2ROD.end()){
424  std::cout <<" TileHid2RESrcID invalid FRAG ID 0x"<<std::hex<<frag_id<<std::dec<<std::endl;
425  assert(0);
426  return;
427  }
428 
429  if (it->second.size() < 2) {
430  it->second.resize(2);
431  }
432  it->second[1] = bs_frag;
433  m_bs2offline[bs_frag] = frag_id;
434 }
435 
437 {
438  FRAGFULLMAP::iterator it = m_frag2ROD.find(frag_id);
439  if(it == m_frag2ROD.end()){
440  std::cout <<" TileHid2RESrcID invalid FRAG ID 0x"<<std::hex<<frag_id<<std::dec<<std::endl;
441  assert(0);
442  return;
443  }
444 
445  size_t siz = it->second.size();
446  if (siz < 3) {
447  it->second.resize(3);
448  if (siz < 2) {
449  it->second[1] = frag_id;
450  m_bs2offline[frag_id] = frag_id;
451  }
452  }
453  it->second[2] = type;
454 }
455 
457 {
458  // this method returns a RESrcID of the ROB, for a given fragment ID
459  // in eformat V3 ROB and ROD IDs are the same
460  return getRodID(frag_id);
461 }
462 
464 {
465  // this method returns a RESrcID for the ROD, for a given fragment ID
466 
467  FRAGFULLMAP::const_iterator it = m_frag2ROD.find(frag_id);
468  if(it == m_frag2ROD.end()){
469  if (frag_id < static_cast<int>(TileCalibUtils::FELIX_FRAGID_OFFSET)) {
470  std::cout <<" TileHid2RESrcID invalid FRAG ID 0x"<<std::hex<<frag_id<<std::dec<<std::endl;
471  assert(0);
472  }
473  return 0;
474  }
475 
476  return ( (*it).second[0] ) ;
477 }
478 
480 {
481  // this method returns fragment ID in bytestream for a given transient fragment ID
482 
483  FRAGFULLMAP::const_iterator it = m_frag2ROD.find(frag_id);
484  if(it == m_frag2ROD.end()){
485  if (frag_id < static_cast<int>(TileCalibUtils::FELIX_FRAGID_OFFSET)) {
486  std::cout <<" TileHid2RESrcID invalid FRAG ID 0x"<<std::hex<<frag_id<<std::dec<<std::endl;
487  assert(0);
488  }
489  return 0;
490  }
491 
492  return ((((*it).second.size()>1) ? (*it).second[1] : frag_id) ) ;
493 }
494 
496 {
497  // this method returns drawer type (legacy/demonstrator/...) for a given transient fragment ID
498 
499  FRAGFULLMAP::const_iterator it = m_frag2ROD.find(frag_id);
500  if(it == m_frag2ROD.end()){
501  std::cout <<" TileHid2RESrcID invalid FRAG ID 0x"<<std::hex<<frag_id<<std::dec<<std::endl;
502  assert(0);
503  return 0;
504  }
505 
506  return (((*it).second.size()>2) ? (*it).second[2] : 0);
507 }
508 
509 const std::vector<uint32_t> & TileHid2RESrcID::getDrawerInfo(int frag_id) const
510 {
511  // this method returns drawer type (legacy/demonstrator/...) for a given transient fragment ID
512 
513  FRAGFULLMAP::const_iterator it = m_frag2ROD.find(frag_id);
514  if(it == m_frag2ROD.end()){
515  std::cout <<" TileHid2RESrcID invalid FRAG ID 0x"<<std::hex<<frag_id<<std::dec<<std::endl;
516  assert(0);
517  return m_defaultDrawer;
518  }
519 
520  return (*it).second;
521 }
522 
524 {
525  // this method returns offine ID for given bytestream ID
526 
527  BS2OFFLINEMAP::const_iterator it = m_bs2offline.find(bs_frag_id);
528  if(it == m_bs2offline.end()){
529  return -1;
530  }
531 
532  return (*it).second;
533 }
534 
536 {
537  m_bs2offline.clear();
538  for (auto v : m_frag2ROD) {
539  if (v.second.size()>1) {
540  m_bs2offline[v.second[1]] = v.first;
541  } else {
542  m_bs2offline[v.first] = v.first;
543  }
544  }
545 }
546 
550 {
551  // in eformat V3 ROB and ROD IDs are the same
552  return rod_id;
553 }
554 
558 {
559 // Change Module Type to ROS, moduleid = 0
560 
561  SourceIdentifier id = SourceIdentifier(rob_id);
562  SourceIdentifier id2 = SourceIdentifier(id.subdetector_id(),0);
563  return id2.code();
564 
565 }
566 
570 {
571 // ROS to DET
572 
573  SourceIdentifier id = SourceIdentifier(ros_id);
574  SourceIdentifier id2 = SourceIdentifier(id.subdetector_id(),0);
575  return id2.code();
576 }
577 
579 {
580  // this method returns a RESrcID of the ROB, for a given fragment ID
581  // in eformat V3 ROB and ROD IDs are the same
582  return getRodTileMuRcvID(frag_id);
583 }
584 
586 {
587  // this method returns a RESrcID for the ROD, for a given fragment ID
588 
589  FRAGRODMAP::const_iterator it = m_TileMuRcvFrag2ROD.find(frag_id);
590  if(it == m_TileMuRcvFrag2ROD.end()){
591  std::cout <<" TileHid2RESrcID invalid FRAG ID 0x"<<std::hex<<frag_id<<std::dec<<std::endl;
592  assert(0);
593  return 0;
594  }
595 
596  return ( (*it).second ) ;
597 }
598 
600 {
601  const char * names[] = {"Legacy", "Demo", "DemoEB", "Unknown"};
602  for (const auto& it : m_frag2ROD) {
603  const std::vector<uint32_t> & v = it.second;
604  if (v.size()>1) {
605  if (it.first != static_cast<int>(v[1])) {
606  log << MSG::INFO << "Frag 0x" << std::hex << it.first << " is taken from bytestream frag 0x" << v[1] << std::dec << endmsg;
607  }
608  if (v.size()>2) {
609  log << MSG::INFO << "Frag 0x" << std::hex << it.first << " fragment type is "
610  << std::dec << v[2] << " - " << names[std::min(3U,v[2])] << endmsg;
611  }
612  }
613  }
614 
615 }
xAOD::iterator
JetConstituentVector::iterator iterator
Definition: JetConstituentVector.cxx:68
TileHid2RESrcID::initialize
void initialize(uint32_t runnum)
Definition: TileHid2RESrcID.cxx:59
python.utils.AtlRunQueryDQUtils.runnum
runnum
Definition: AtlRunQueryDQUtils.py:213
data
char data[hepevt_bytes_allocation_ATLAS]
Definition: HepEvt.cxx:11
TileHid2RESrcID::getRodTileMuRcvID
uint32_t getRodTileMuRcvID(int frag_id) const
Definition: TileHid2RESrcID.cxx:585
TileHid2RESrcID::getRobID
uint32_t getRobID(uint32_t rod_id) const
Make a ROB Source ID from a ROD source ID.
Definition: TileHid2RESrcID.cxx:549
TileHWID::drawer_end
std::vector< HWIdentifier >::const_iterator drawer_end() const
end iterator for drawer Identifiers
Definition: TileHWID.h:294
TileHid2RESrcID::getOfflineFragID
int getOfflineFragID(uint32_t bs_frag_id) const
Retrieve extra info - ByteStream frag ID and drawer typefor a given transient fragment ID.
Definition: TileHid2RESrcID.cxx:523
TileHid2RESrcID::setBSfrag
void setBSfrag(int frag_id, uint32_t bs_frag)
Definition: TileHid2RESrcID.cxx:420
TILE_NEG_ID
#define TILE_NEG_ID
Definition: TileTBFrag.h:16
TileHid2RESrcID::getDetID
uint32_t getDetID(uint32_t ros_id) const
Make a SubDetector ID from ROS source ID.
Definition: TileHid2RESrcID.cxx:569
xAOD::uint32_t
setEventNumber uint32_t
Definition: EventInfo_v1.cxx:127
TileHid2RESrcID::m_TileMuRcvRunnum
uint32_t m_TileMuRcvRunnum
Definition: TileHid2RESrcID.h:100
AthenaPoolTestRead.flags
flags
Definition: AthenaPoolTestRead.py:8
TileHid2RESrcID::setROD2ROBmap
void setROD2ROBmap(const std::vector< std::string > &ROD2ROB, MsgStream &log)
Definition: TileHid2RESrcID.cxx:171
min
constexpr double min()
Definition: ap_fixedTest.cxx:26
TileHid2RESrcID::getRobFromFragID
uint32_t getRobFromFragID(int frag_id) const
make a ROB SrcID for a fragment ID
Definition: TileHid2RESrcID.cxx:456
TRT::Track::event
@ event
Definition: InnerDetector/InDetCalibEvent/TRT_CalibData/TRT_CalibData/TrackInfo.h:74
TileHid2RESrcID::getRobFromTileMuRcvFragID
uint32_t getRobFromTileMuRcvFragID(int frag_id) const
Definition: TileHid2RESrcID.cxx:578
skel.it
it
Definition: skel.GENtoEVGEN.py:407
ReadBchFromCrest.nmod
nmod
Definition: ReadBchFromCrest.py:286
TileHid2RESrcID::updateBSmap
void updateBSmap()
Definition: TileHid2RESrcID.cxx:535
python.LArRecUtilsConfig.flags5
flags5
Definition: LArRecUtilsConfig.py:201
TileHWID::frag
int frag(const HWIdentifier &id) const
extract frag field from HW identifier
Definition: TileHWID.h:181
TileCalibUtils.h
ReadBchFromCrest.ros
ros
Definition: ReadBchFromCrest.py:73
TileHid2RESrcID::printSpecial
void printSpecial(MsgStream &log)
Definition: TileHid2RESrcID.cxx:599
TileHid2RESrcID::setDrawerType
void setDrawerType(int frag_id, uint32_t type)
Definition: TileHid2RESrcID.cxx:436
Example_ReadSampleNoise.drawer
drawer
Definition: Example_ReadSampleNoise.py:39
python.CaloAddPedShiftConfig.type
type
Definition: CaloAddPedShiftConfig.py:42
mergePhysValFiles.end
end
Definition: DataQuality/DataQualityUtils/scripts/mergePhysValFiles.py:92
TileHWID::ros
int ros(const HWIdentifier &id) const
extract ros field from HW identifier
Definition: TileHWID.h:167
TileHid2RESrcID::setTileHWID
void setTileHWID(const TileHWID *tileHWID, uint32_t runnum=0)
Definition: TileHid2RESrcID.cxx:32
TILE_EBPOS_ID
#define TILE_EBPOS_ID
Definition: TileTBFrag.h:17
python.setupRTTAlg.size
int size
Definition: setupRTTAlg.py:39
TileHWID
Helper class for TileCal online (hardware) identifiers.
Definition: TileHWID.h:49
TileHid2RESrcID::m_defaultDrawer
std::vector< uint32_t > m_defaultDrawer
Definition: TileHid2RESrcID.h:101
TileHWID.h
TileHid2RESrcID::getRodID
uint32_t getRodID(int frag_id) const
make a ROD SrcID for a fragment ID
Definition: TileHid2RESrcID.cxx:463
id2
HWIdentifier id2
Definition: LArRodBlockPhysicsV0.cxx:562
eformat::ROBFragment< const uint32_t * >
lumiFormat.i
int i
Definition: lumiFormat.py:85
TILE_EBNEG_ID
#define TILE_EBNEG_ID
Definition: TileTBFrag.h:18
TileHid2RESrcID::m_bs2offline
BS2OFFLINEMAP m_bs2offline
Definition: TileHid2RESrcID.h:98
endmsg
#define endmsg
Definition: AnalysisConfig_Ntuple.cxx:63
python.subdetectors.mmg.names
names
Definition: mmg.py:8
TileHid2RESrcID::initializeMuRcv
void initializeMuRcv(uint32_t runnum)
Definition: TileHid2RESrcID.cxx:129
TileHid2RESrcID::m_tileHWID
const TileHWID * m_tileHWID
Definition: TileHid2RESrcID.h:93
TILE_BEAM_ID
#define TILE_BEAM_ID
definition of various fragments expected in BS files from testbeam
Definition: TileTBFrag.h:14
TileHid2RESrcID.h
TileCalibUtils::FELIX_FRAGID_OFFSET
static const unsigned int FELIX_FRAGID_OFFSET
Offset for frag ID used for FELIX in frag ID to ROB ID map.
Definition: TileCalibUtils.h:157
id
SG::auxid_t id
Definition: Control/AthContainers/Root/debug.cxx:239
TileTBFrag.h
TILE_POS_ID
#define TILE_POS_ID
Definition: TileTBFrag.h:15
TileHid2RESrcID::m_TileMuRcvFrag2ROD
FRAGRODMAP m_TileMuRcvFrag2ROD
Definition: TileHid2RESrcID.h:97
python.PyAthena.v
v
Definition: PyAthena.py:154
RunTileTBMonitoring.fragIDs
fragIDs
Definition: RunTileTBMonitoring.py:212
TileHid2RESrcID::getBSfragID
uint32_t getBSfragID(int frag_id) const
Definition: TileHid2RESrcID.cxx:479
TileHWID::drawer_begin
std::vector< HWIdentifier >::const_iterator drawer_begin() const
begin iterator for drawer Identifiers
Definition: TileHWID.h:290
TileHWID::drawer
int drawer(const HWIdentifier &id) const
extract drawer field from HW identifier
Definition: TileHWID.h:171
TileHid2RESrcID::m_frag2ROD
FRAGFULLMAP m_frag2ROD
Definition: TileHid2RESrcID.h:99
python.Constants.INFO
int INFO
Definition: Control/AthenaCommon/python/Constants.py:15
DeMoScan.first
bool first
Definition: DeMoScan.py:534
DEBUG
#define DEBUG
Definition: page_access.h:11
python.CaloCondTools.log
log
Definition: CaloCondTools.py:20
convertTimingResiduals.offset
offset
Definition: convertTimingResiduals.py:71
TileHid2RESrcID::TileHid2RESrcID
TileHid2RESrcID(const TileHWID *tileHWID=0, uint32_t runnum=0)
constrcutor
Definition: TileHid2RESrcID.cxx:21
TileHid2RESrcID::getDrawerInfo
const std::vector< uint32_t > & getDrawerInfo(int frag_id) const
Definition: TileHid2RESrcID.cxx:509
TileHid2RESrcID::getDrawerType
uint32_t getDrawerType(int frag_id) const
Definition: TileHid2RESrcID.cxx:495
TileHid2RESrcID::getRosID
uint32_t getRosID(uint32_t rob_id) const
Make a ROS Source ID from a ROB source ID.
Definition: TileHid2RESrcID.cxx:557
COMMON_BEAM_ID
#define COMMON_BEAM_ID
Definition: TileTBFrag.h:19
TileHid2RESrcID::m_runnum
uint32_t m_runnum
Definition: TileHid2RESrcID.h:100