ATLAS Offline Software
Public Member Functions | Private Member Functions | Private Attributes | List of all members
Muon::TGC_RodDecoderRawdata Class Reference

#include <TGC_RodDecoderRawdata.h>

Inheritance diagram for Muon::TGC_RodDecoderRawdata:
Collaboration diagram for Muon::TGC_RodDecoderRawdata:

Public Member Functions

 TGC_RodDecoderRawdata (const std::string &t, const std::string &n, const IInterface *p)
 Default constructor. More...
 
virtual ~TGC_RodDecoderRawdata ()
 Default destructor. More...
 
virtual StatusCode initialize () override
 Standard AlgTool method. More...
 
virtual StatusCode finalize () override
 Standard AlgTool method. More...
 
virtual StatusCode fillCollection (const OFFLINE_FRAGMENTS_NAMESPACE::ROBFragment &robFrag, TgcRdoContainer &rdoIdc) const override
 Convert ROBFragment to RDO. More...
 

Private Member Functions

TgcRdogetCollection (const OFFLINE_FRAGMENTS_NAMESPACE::ROBFragment &robFrag, TgcRdoContainer &rdoIdc) const
 Retrieve header of ROBFragment. More...
 
void byteStream2Rdo (OFFLINE_FRAGMENTS_NAMESPACE::PointerType bs, TgcRdo &rdo, uint32_t source_id) const
 Convert data contents of ROBFragment to RDO The same byteStream2Rdo method in TGC_RodDecoderReadout is used for checking conversion validation. More...
 
void showStatusWords (const uint32_t source_id, const uint16_t rdoId, const int idHash, const uint32_t nstatus, const uint32_t *status) const
 Show status words. More...
 

Private Attributes

bool m_readSlbHeaderId
 Switch for reading IDs in SLB Header or ROD Header. More...
 
bool m_checkRawData
 Switch for checking rawdata format with readout format. More...
 
TgcRODReadOutm_tgcRODReadOut
 RawData format converter. More...
 
bool m_showStatusWords
 Flag for showStatusWords. More...
 
ServiceHandle< MuonTGC_CablingSvcm_cablingSvc {this, "TGCCablingSvc", "MuonTGC_CablingSvc", ""}
 

Detailed Description

A tool to decode a TGC ROB fragment written in the raw data format into TGC RDO.

Author
Susumu Oda Susum.nosp@m.u.Od.nosp@m.a@cer.nosp@m.n.ch
Hisaya Kurashige

This class was originally developed by Tadashi Maeno based on RpcROD_Decoder written by Ketevi A. Assamagan. Hisaya Kurashige removed TGC ROD Encoder from this and updated decodeRodToRdo in January 2008. Takashi Kubota migrated to MuonTGC_CnvTools package in July 2008. The previous class name was TgcROD_Decoder.

Definition at line 31 of file TGC_RodDecoderRawdata.h.

Constructor & Destructor Documentation

◆ TGC_RodDecoderRawdata()

Muon::TGC_RodDecoderRawdata::TGC_RodDecoderRawdata ( const std::string &  t,
const std::string &  n,
const IInterface *  p 
)

Default constructor.

Definition at line 21 of file TGC_RodDecoderRawdata.cxx.

23  :
24  base_class(t, n, p),
25  m_tgcRODReadOut(nullptr)
26 {
27  declareProperty("ReadSlbHeaderId", m_readSlbHeaderId=false);
28  declareProperty("CheckRawData", m_checkRawData=false);
29  declareProperty("ShowStatusWords", m_showStatusWords=false);
30 }

◆ ~TGC_RodDecoderRawdata()

Muon::TGC_RodDecoderRawdata::~TGC_RodDecoderRawdata ( )
virtualdefault

Default destructor.

Member Function Documentation

◆ byteStream2Rdo()

void Muon::TGC_RodDecoderRawdata::byteStream2Rdo ( OFFLINE_FRAGMENTS_NAMESPACE::PointerType  bs,
TgcRdo rdo,
uint32_t  source_id 
) const
private

Convert data contents of ROBFragment to RDO The same byteStream2Rdo method in TGC_RodDecoderReadout is used for checking conversion validation.

Definition at line 159 of file TGC_RodDecoderRawdata.cxx.

162 {
163  ATH_MSG_DEBUG( "Muon::TGC_RodDecoder::byteStream2Rdo" );
164 
165  // Check that we are filling the right collection
167  fromBS32(source_id, sid);
168 
169  if(rdo.identify() != TgcRdo::calculateOnlineId(sid.side, sid.rodid))
170  {
171  ATH_MSG_DEBUG( "Error: input TgcRdo id does not match bytestream id" );
172  return;
173  }
174 
175  //rdo.setOnlineId(sid.side, sid.rodid); // Standard data
176 
177  TGC_BYTESTREAM_FRAGMENTCOUNT counters[7] = {
178  {0, 1}, {0, 2}, {0, 3}, {0, 4}, {0, 5}, {0, 8}, {0, 9}
179  };
181 
182  int iBs = 0;
183  for(int iCnt = 0; iCnt < 7; iCnt++)
184  {
185  fromBS32(bs[iBs], counter);
186  if(counter.id == counters[iCnt].id)
187  {
188  counters[iCnt].count = counter.count;
189  iBs++;
190  }
191  }
192 
193  //iBs--;
194  for(int iCnt = 0; iCnt < 7; iCnt++)
195  {
196  if(counters[iCnt].count == 0)
197  continue;
198  switch(counters[iCnt].id)
199  {
200  case 1: // Raw data format (SSW format)
201  {
202  ATH_MSG_VERBOSE( "fragment" << counters[iCnt].id <<
203  " " << counters[iCnt].count << "words" );
204  for(unsigned iFrag = 0; iFrag < counters[iCnt].count; iFrag++)
205  {
206  ATH_MSG_VERBOSE( "WORD" << iFrag << ":" << MSG::hex << bs[iBs] );
207  iBs++;
208  }
209  break;
210  }
211  case 2: // TgcRawData::TYPE_HIT
212  {
213  ATH_MSG_VERBOSE( "fragment" << counters[iCnt].id <<
214  " " << counters[iCnt].count << "words" );
215 
217  for(unsigned iFrag = 0; iFrag < counters[iCnt].count; iFrag++)
218  {
219  ATH_MSG_VERBOSE( "WORD" << iFrag << ":" << MSG::hex << bs[iBs] );
220  fromBS32(bs[iBs++], roh);
221 
222  ATH_MSG_VERBOSE( " rdo.subDetectorId():" << rdo.subDetectorId()
223  << " rdo.rodId():" <<rdo.rodId()
224  << " roh.ldbId:" <<roh.ldbId
225  << " roh.sbId:" <<roh.sbId
226  << " rdo.l1Id():"<<rdo.l1Id()
227  << " rdo.bcId():"<<rdo.bcId() );
228 
229  uint16_t slbId = roh.sbId;
230  // SBLOCs for EIFI are different in online (ByteStream) and offline (RDO).
231  // bug #57051: Wrong numbering of SBLOC for Inner Stations (EI/FI) in 12-fold TGC cablings
232  // ByteStream : slbId = SBLOC + ip*2 (ip=0, 1, 2), SBLOC = 8 or 9 (EI), 0 or 1 (FI)
233  // slbId = 8, 10, 12, 9, 11, 13, 0, 2, 4, 1, 3, 5
234  // RDO : slbId = SBLOC + ip*4 (ip=0, 1, 2), SBLOC = 1 or 3 (EI), 0 or 2 (FI)
235  // slbId = 1, 5, 9, 3, 7, 11, 0, 4, 8, 2, 6, 10
238  if(roh.sbId<8) slbId = roh.sbId *2;
239  else slbId = (roh.sbId-8)*2+1;
240  }
241 
242  TgcRawData* raw = new TgcRawData(bcTag(roh.bcBitmap),
243  rdo.subDetectorId(),
244  rdo.rodId(),
245  roh.ldbId,
246  slbId,
247  rdo.l1Id(),
248  rdo.bcId(),
249  // http://cern.ch/atlas-tgc/doc/ROBformat.pdf
250  // Table 7 : SB type, bits 15..13
251  // 0,1: doublet wire, strip
252  // 2,3: triplet wire, strip triplet;
253  // 4 : inner wire and strip
254  // TgcRawData::SlbType is defined in TgcRawData.h
255  // 0: SLB_TYPE_DOUBLET_WIRE,
256  // 1: SLB_TYPE_DOUBLET_STRIP,
257  // 2: SLB_TYPE_TRIPLET_WIRE,
258  // 3: SLB_TYPE_TRIPLET_STRIP,
259  // 4: SLB_TYPE_INNER_WIRE,
260  // 5: SLB_TYPE_INNER_STRIP,
261  // 6: SLB_TYPE_UNKNOWN
263  (bool)roh.adj,
264  roh.tracklet,
265  roh.channel+40);
266  rdo.push_back(raw);
267  }
268  break;
269  }
270  case 3: // TgcRawData::TYPE_TRACKLET
271  {
272  ATH_MSG_VERBOSE( "fragment" << counters[iCnt].id <<
273  " " << counters[iCnt].count << "words" );
276  for(unsigned iFrag = 0; iFrag < counters[iCnt].count; iFrag++)
277  {
278  ATH_MSG_VERBOSE( "WORD" << iFrag << ":" << MSG::hex << bs[iBs] );
279  fromBS32(bs[iBs], rostrip);
280 
282  {
283  TgcRawData* raw = new TgcRawData(bcTag(rostrip.bcBitmap),
284  rdo.subDetectorId(),
285  rdo.rodId(),
286  rostrip.ldbId,
287  rostrip.sbId,
288  rdo.l1Id(),
289  rdo.bcId(),
291  0,
292  rostrip.seg,
293  rostrip.subc,
294  rostrip.phi);
295  rdo.push_back(raw);
296  }
297  else
298  {
299  fromBS32(bs[iBs], rotrk);
300  TgcRawData* raw = new TgcRawData(bcTag(rotrk.bcBitmap),
301  rdo.subDetectorId(),
302  rdo.rodId(),
303  rotrk.ldbId,
304  rotrk.sbId,
305  rdo.l1Id(),
306  rdo.bcId(),
307  // http://cern.ch/atlas-tgc/doc/ROBformat.pdf
308  // Table 8 : Slave Board type, bits 30..28
309  // 0,1: doublet wire, strip
310  // 2,3: triplet wire, strip triplet;
311  // 4,5: inner wire, strip
312  // TgcRawData::SlbType is defined in TgcRawData.h
313  // 0: SLB_TYPE_DOUBLET_WIRE,
314  // 1: SLB_TYPE_DOUBLET_STRIP,
315  // 2: SLB_TYPE_TRIPLET_WIRE,
316  // 3: SLB_TYPE_TRIPLET_STRIP,
317  // 4: SLB_TYPE_INNER_WIRE,
318  // 5: SLB_TYPE_INNER_STRIP,
319  // 6: SLB_TYPE_UNKNOWN
321  rotrk.delta,
322  rotrk.seg,
323  rotrk.subm,
324  rotrk.rphi);
325  rdo.push_back(raw);
326  }
327  iBs++;
328  }
329  break;
330  }
331  case 8: // TgcRawData::TYPE_HIPT
332  {
333  ATH_MSG_VERBOSE( "fragment" << counters[iCnt].id <<
334  " " << counters[iCnt].count << "words" );
336  TGC_BYTESTREAM_HIPT_INNER hptinner;
337  for(unsigned iFrag = 0; iFrag < counters[iCnt].count; iFrag++)
338  {
339  ATH_MSG_VERBOSE( "WORD" << iFrag << ":" << MSG::hex << bs[iBs] );
340  fromBS32(bs[iBs], hptinner);
341 
342  if(hptinner.sector & 4){
343  TgcRawData* raw = new TgcRawData(bcTag(hptinner.bcBitmap),
344  rdo.subDetectorId(),
345  rdo.rodId(),
346  rdo.l1Id(),
347  rdo.bcId(),
348  hptinner.strip,
349  0,
350  hptinner.sector,
351  0,
352  0,
353  0,
354  0,
355  0,
356  0,
357  hptinner.inner);
358  rdo.push_back(raw);
359  }else{
360  fromBS32(bs[iBs], hpt);
361  TgcRawData* raw = new TgcRawData(bcTag(hpt.bcBitmap),
362  rdo.subDetectorId(),
363  rdo.rodId(),
364  rdo.l1Id(),
365  rdo.bcId(),
366  hpt.strip,
367  hpt.fwd,
368  hpt.sector,
369  hpt.chip,
370  hpt.cand,
371  hpt.hipt,
372  hpt.hitId,
373  hpt.sub,
374  hpt.delta,
375  0);
376  rdo.push_back(raw);
377  }
378  iBs++;
379  }
380  break;
381  }
382  case 9: // TgcRawData::TYPE_SL
383  {
384  ATH_MSG_VERBOSE( "fragment" << counters[iCnt].id <<
385  " " << counters[iCnt].count << "words" );
387  for(unsigned iFrag = 0; iFrag < counters[iCnt].count; iFrag++)
388  {
389  ATH_MSG_VERBOSE( "WORD" << iFrag << ":" << MSG::hex << bs[iBs] );
390  fromBS32(bs[iBs++], sl);
391 
392  TgcRawData* raw = new TgcRawData(bcTag(sl.bcBitmap),
393  rdo.subDetectorId(),
394  rdo.rodId(),
395  rdo.l1Id(),
396  rdo.bcId(),
397  sl.cand2plus,
398  static_cast<bool>(sl.fwd),
399  sl.sector,
400  sl.cand,
401  sl.sign,
402  sl.threshold,
403  sl.overlap,
404  sl.veto,
405  sl.roi);
406  rdo.push_back(raw);
407  }
408  break;
409  }
410  default:
411  ATH_MSG_VERBOSE( "Error: Muon::TGC_RodDecoder::byteStream2Rdo Unsupported fragment type "
412  << counters[iCnt].id);
413  break;
414  }
415  }
416 
417  ATH_MSG_VERBOSE( "Decoded " << MSG::dec << rdo.size() << " elements" );
418  ATH_MSG_VERBOSE( "Muon::TGC_RodDecoder::byteStream2Rdo done" );
419 }

◆ fillCollection()

StatusCode Muon::TGC_RodDecoderRawdata::fillCollection ( const OFFLINE_FRAGMENTS_NAMESPACE::ROBFragment robFrag,
TgcRdoContainer rdoIdc 
) const
overridevirtual

Convert ROBFragment to RDO.

Definition at line 62 of file TGC_RodDecoderRawdata.cxx.

63 {
64  try
65  {
66  robFrag.check();
67  } catch (eformat::Issue &ex) {// error in fragment
68  ATH_MSG_WARNING(ex.what());
69  return StatusCode::SUCCESS;
70  }
71 
72  uint32_t source_id = robFrag.rod_source_id();
73  SourceIdentifier sid(robFrag.rod_source_id());
74 
75  // do not convert if the TGC collection is already in the converter
76  uint16_t rdoId = TgcRdo::calculateOnlineId(sid.subdetector_id(), sid.module_id());
77  TgcRdoIdHash rdoIdHash;
78  int idHash = rdoIdHash(rdoId);
79 
80  if(rdoIdc.indexFindPtr(idHash) == nullptr)
81  {
83  robFrag.rod_data(bs);
84  TgcRdo* rdo = getCollection(robFrag, rdoIdc);
85 
86  if(!rdo) {
87  ATH_MSG_WARNING( "Pointer of RDO is NULL. Skip decoding of this ROD in this event..." );
88  return StatusCode::SUCCESS;
89  }
90 
91  if(m_checkRawData){
92  byteStream2Rdo(bs, *rdo, robFrag.rod_source_id());
93  if( !m_tgcRODReadOut->check(bs, *rdo, robFrag.rod_source_id())){
94  ATH_MSG_WARNING( " Can't Check the contents of TgcRdo: Skip decoding of remaining hits of this event..." );
95  return StatusCode::SUCCESS;
96  }
97  } else {
98  if( !m_tgcRODReadOut->byteStream2Rdo(bs, *rdo, robFrag.rod_source_id())){
99  ATH_MSG_WARNING( " Can't Convert the TGC BS to Rdo: Skip decoding of remaining hits of this event..." );
100  return StatusCode::SUCCESS;
101  }
102  }
103  }
104  else
105  {
106  ATH_MSG_DEBUG( " Collection ID = " << source_id
107  << "already found into the container; do not convert" );
108  }
109 
110  return StatusCode::SUCCESS;
111 }

◆ finalize()

StatusCode Muon::TGC_RodDecoderRawdata::finalize ( )
overridevirtual

Standard AlgTool method.

Definition at line 52 of file TGC_RodDecoderRawdata.cxx.

53 {
54  delete m_tgcRODReadOut; m_tgcRODReadOut=nullptr;
55 
57  return sc;
58 }

◆ getCollection()

TgcRdo * Muon::TGC_RodDecoderRawdata::getCollection ( const OFFLINE_FRAGMENTS_NAMESPACE::ROBFragment robFrag,
TgcRdoContainer rdoIdc 
) const
private

Retrieve header of ROBFragment.

Definition at line 115 of file TGC_RodDecoderRawdata.cxx.

116 {
117  TgcRdo* theColl = nullptr;
118 
119  uint32_t source_id = robFrag.rod_source_id();
120  SourceIdentifier sid(source_id);
121 
122  uint16_t rdoId = TgcRdo::calculateOnlineId(sid.subdetector_id(), sid.module_id());
123  TgcRdoIdHash rdoIdHash;
124  int idHash = rdoIdHash(rdoId);
125 
126  ATH_MSG_DEBUG( " Created new Collection ID = " << sid.human() << " Hash = " << idHash );
127 
128  // create new collection
129  theColl = new TgcRdo(rdoId, idHash);
130  // add collection into IDC
131  if(rdoIdc.addCollection(theColl, idHash).isFailure())
132  {
133  ATH_MSG_WARNING( "Failed to add TGC RDO collection to container" );
134  delete theColl; theColl = nullptr;
135  return nullptr;
136  }
137  theColl->setL1Id(robFrag.rod_lvl1_id());
138  theColl->setBcId(robFrag.rod_bc_id());
139  theColl->setTriggerType(robFrag.rod_lvl1_trigger_type());
140  theColl->setOnlineId(sid.subdetector_id(), sid.module_id());
141 
142  uint32_t nstatus = robFrag.rod_nstatus();
143  const uint32_t* status;
144  robFrag.rod_status(status);
145  theColl->setErrors(nstatus > 0 ? status[0] : 0);
146  theColl->setRodStatus(nstatus > 1 ? status[1] : 0);
147  theColl->setLocalStatus(nstatus > 3 ? status[3] : 0);
148  theColl->setOrbit(nstatus > 4 ? status[4] : 0);
149 
150  if(m_showStatusWords) {
151  showStatusWords(source_id, rdoId, idHash, nstatus, status);
152  }
153 
154  return theColl;
155 }

◆ initialize()

StatusCode Muon::TGC_RodDecoderRawdata::initialize ( )
overridevirtual

Standard AlgTool method.

Definition at line 39 of file TGC_RodDecoderRawdata.cxx.

40 {
42 
43  ATH_CHECK( m_cablingSvc.retrieve() );
44  m_tgcRODReadOut = new TgcRODReadOut(*(m_cablingSvc.get()));
45 
46  ATH_MSG_INFO( "initialize() successful in " << name() );
47  return StatusCode::SUCCESS;
48 }

◆ showStatusWords()

void Muon::TGC_RodDecoderRawdata::showStatusWords ( const uint32_t  source_id,
const uint16_t  rdoId,
const int  idHash,
const uint32_t  nstatus,
const uint32_t *  status 
) const
private

Show status words.

Definition at line 421 of file TGC_RodDecoderRawdata.cxx.

422  {
423  static const unsigned int maxNStatus = 5;
424  static const std::string statusDataWord[maxNStatus] = {
425  "First status word specific|generic:", // 0
426  "TGC ROD event status :", // 1
427  "ROD VME fileter bits | SSW timeout:", // 2
428  "Local status word | presence :", // 3
429  "orbit count :" // 4
430  };
431 
432  static const unsigned int maxFirstStatus = 5;
433  static const std::string firstStatus[maxFirstStatus] = {
434  "incorrect BCID", // 0
435  "incorrect L1AID", // 1
436  "Timeout occurred in at least one of the FE links. Fragment is incomplete.", // 2
437  "Data may be incorrect, see TGC ROD event status word", // 3
438  "An overflow in one of the ROD internal buffers has occurred. The fragment is incomplete." // 4
439  };
440 
441  static const unsigned int maxTgcRodEventStatus = 31;
442  static const std::string tgcRodEventStatus[maxTgcRodEventStatus] = {
443  "EC_RXsend : Error in request to send an event via RXlink", // 0
444  "EC_FELdown : A Front End link has gone down - abandoned", // 1
445  "EC_frame : Invalid FE link framing words", // 2
446  "EC_Glnk : Front End link G-link error", // 3
447  "EC_xor : Invalid XOR event checksum", // 4
448  "EC_ovfl : Input FE event is too long or FE FIFO overflow", // 5
449  "EC_timeout : Timeout expired for at least one FE link", // 6
450  "EC_xormezz : Bad XOR checksum from mezz board", // 7
451  "EC_wc0 : Event has WC=0 or WX>max WC", // 8
452  "EC_L1ID : L1ID mismatch (TTC EVID FIFO vs local).", // 9
453  "EC_nohdr : First word is not header", // 10
454  "EC_rectype : Unrecognized record type", // 11
455  "EC_null : Unexpected nulls in FE input", // 12
456  "EC_order : Word is out of order", // 13
457  "EC_LDB : Invalid or unexpected Star Switch ID", // 14
458  "EC_RXovfl : RXfifo has overflowed", // 15
459  "EC_SSWerr : SSW reports T1C, NRC, T2C, or GlinkNoLock error", // 16
460  "EC_sbid : SBid does not match SBinfo table", // 17
461  "EC_SBtype : SBtype does not match SBinfo table", // 18
462  "EC_duprx : RX ID is duplicated in the event", // 19
463  "EC_ec4 : Unexpected SB L1 Event ID(lo 4)", // 20
464  "EC_bc : Unexpected SB BCID", // 21
465  "EC_celladr : Invalid cell address", // 22
466  "EC_hitovfl : Too many hits in event", // 23
467  "EC_trgbit : Unexpected trigger bits", // 24
468  "EC_badEoE : Bad End-of-event marker received, not 0xFCA", // 25
469  "EC_endWCnot0 : WC not 0 after End-of-event marker", // 26
470  "EC_noEoE : No End-of-event marker received", // 27
471  "EC_SLGlink : Sector Logic reports G-Link error", // 28
472  "EC_SLbc : Sector Logic BCID[2:0] does not match its SB BCID", // 29
473  "EC_unxrxid : Data from disabled SSW RX ID" // 30
474  };
475 
476  static const unsigned int maxSSWs = 12;
477 
478  static const unsigned int maxPresence = 10;
479  static const std::string presence[maxPresence] = {
480  "", // 0
481  "raw data", // 1
482  "hits in readout fmt", // 2
483  "tracklets in readout fmt", // 3
484  "hits in chamber fmt", // 4
485  "tracklets in chamber fmt", // 5
486  "", // 6
487  "", // 7
488  "HipT output", // 8
489  "Sector Logic" // 9
490  };
491 
492  static const unsigned int maxLocalStatus = 16;
493  static const std::string localStatus[maxLocalStatus] = {
494  "hit BCs are merged", // 0
495  "tracklet BCs are merged", // 1
496  "hits are sorted", // 2
497  "tracklets are sorted", // 3
498  "", // 4
499  "", // 5
500  "", // 6
501  "", // 7
502  "", // 8
503  "", // 9
504  "", // 10
505  "", // 11
506  "", // 12
507  "", // 13
508  "ROI in this fragment", // 14
509  "no L1AID, BCID check wrt ROD" // 15
510  };
511 
512  ATH_MSG_INFO("***** TGC ROD STATUS WORDS for "
513  << "source_id=0x" << source_id << ", "
514  << "rdoId=0x" << rdoId << (rdoId<16 ? " , " : ", ")
515  << "idHash=0x" << idHash << (idHash<16 ? " , " : ", ")
516  << (idHash<12 ? "A" : "C") << (idHash%12+1<10 ? "0" : "") << std::dec << idHash%12+1
517  << " ******");
518  ATH_MSG_INFO("***** Based on http://cern.ch/atlas-tgc/doc/ROBformat.pdf ****************************");
519 
520  for(uint32_t i=0; i<nstatus && i<maxNStatus; i++) {
521  ATH_MSG_INFO(statusDataWord[i] << " status[" << i << "]=0x" << std::hex << status[i]);
522 
523  if(i==0) {
524  // Table 2 ATLAS standard, first status word, all zero means no known errors
525  for(unsigned int j=0; j<maxFirstStatus; j++) {
526  if((status[i] >> j) & 0x1) {
527  ATH_MSG_INFO(std::dec << std::setw(3) << j << " : " << firstStatus[j]);
528  }
529  }
530  } else if(i==1) {
531  // Table 3 TGC ROD event status word
532  for(unsigned int j=0; j<maxTgcRodEventStatus; j++) {
533  if((status[i] >> j) & 0x1) {
534  ATH_MSG_INFO(std::dec << std::setw(3) << j << " : " << tgcRodEventStatus[j]);
535  }
536  }
537  } else if(i==2) {
538  // Table 4 Star switch time-out status and ROD VME filter bits
539  for(unsigned int j=0; j<maxSSWs; j++) {
540  if((status[i] >> j) & 0x1) {
541  ATH_MSG_INFO(std::dec << std::setw(3) << j << " : " << "time-out for SSW" << j);
542  }
543  }
544  for(unsigned int j=0+16; j<=maxSSWs+16; j++) {
545  if((status[i] >> j) & 0x1) {
546  ATH_MSG_INFO(std::dec << std::setw(3) << j << " : " << "data from SSW" << j-16 << " gave filter \"accept\"");
547  }
548  }
549  } else if(i==3) {
550  // Table 6 Presence bits
551  for(unsigned int j=0; j<maxPresence; j++) {
552  if(j==0 || j==6 || j==7) continue;
553  if((status[i] >> j) & 0x1) {
554  ATH_MSG_INFO(std::dec << std::setw(3) << j << " : " << presence[j]);
555  }
556  }
557 
558  // Table 5 Local status word
559  for(unsigned int j=0+16; j<maxLocalStatus+16; j++) {
560  if((j>=4+16 && j<=13+16)) continue;
561  if((status[i] >> j) & 0x1) {
562  ATH_MSG_INFO(std::dec << std::setw(3) << j << " : " << localStatus[j-16]);
563  }
564  }
565  }
566  }
567 
568  ATH_MSG_INFO("**************************************************************************************");
569 }

Member Data Documentation

◆ m_cablingSvc

ServiceHandle<MuonTGC_CablingSvc> Muon::TGC_RodDecoderRawdata::m_cablingSvc {this, "TGCCablingSvc", "MuonTGC_CablingSvc", ""}
private

Definition at line 64 of file TGC_RodDecoderRawdata.h.

◆ m_checkRawData

bool Muon::TGC_RodDecoderRawdata::m_checkRawData
private

Switch for checking rawdata format with readout format.

Definition at line 58 of file TGC_RodDecoderRawdata.h.

◆ m_readSlbHeaderId

bool Muon::TGC_RodDecoderRawdata::m_readSlbHeaderId
private

Switch for reading IDs in SLB Header or ROD Header.

Definition at line 56 of file TGC_RodDecoderRawdata.h.

◆ m_showStatusWords

bool Muon::TGC_RodDecoderRawdata::m_showStatusWords
private

Flag for showStatusWords.

Definition at line 62 of file TGC_RodDecoderRawdata.h.

◆ m_tgcRODReadOut

TgcRODReadOut* Muon::TGC_RodDecoderRawdata::m_tgcRODReadOut
private

RawData format converter.

Definition at line 60 of file TGC_RodDecoderRawdata.h.


The documentation for this class was generated from the following files:
TGC_BYTESTREAM_SOURCEID::rodid
unsigned rodid
Definition: TgcByteStreamData.h:23
TgcRdo::identify
uint16_t identify() const
Definition: TgcRdo.h:107
plotBeamSpotCompare.x1
x1
Definition: plotBeamSpotCompare.py:216
Muon::TGC_RodDecoderRawdata::showStatusWords
void showStatusWords(const uint32_t source_id, const uint16_t rdoId, const int idHash, const uint32_t nstatus, const uint32_t *status) const
Show status words.
Definition: TGC_RodDecoderRawdata.cxx:421
TGC_BYTESTREAM_HIPT::hitId
unsigned hitId
Definition: TgcByteStreamData.h:134
python.tests.PyTestsLib.finalize
def finalize(self)
_info( "content of StoreGate..." ) self.sg.dump()
Definition: PyTestsLib.py:53
TgcRdo
Athena::TPCnvVers::Old Athena::TPCnvVers::Current Athena::TPCnvVers::Old Athena::TPCnvVers::Current Athena::TPCnvVers::Old Athena::TPCnvVers::Current Athena::TPCnvVers::Current Athena::TPCnvVers::Current Athena::TPCnvVers::Current Athena::TPCnvVers::Current Athena::TPCnvVers::Old Athena::TPCnvVers::Old TgcRdo
Definition: MuonEventAthenaPoolTPCnv.cxx:188
TGC_BYTESTREAM_HIPT_INNER::sector
unsigned sector
Definition: TgcByteStreamData.h:155
TGC_BYTESTREAM_READOUTTRACKLET::seg
unsigned seg
Definition: TgcByteStreamData.h:97
python.PerfMonSerializer.p
def p
Definition: PerfMonSerializer.py:743
TGC_BYTESTREAM_SL::cand2plus
unsigned cand2plus
Definition: TgcByteStreamData.h:177
ATH_MSG_INFO
#define ATH_MSG_INFO(x)
Definition: AthMsgStreamMacros.h:31
TgcRdo::setL1Id
void setL1Id(uint32_t v)
Definition: TgcRdo.h:119
TgcRdo::calculateOnlineId
static uint16_t calculateOnlineId(uint16_t subDetectorId, uint16_t rodId)
Definition: TgcRdo.cxx:58
TgcRdo::setRodStatus
void setRodStatus(uint32_t data)
Definition: TgcRdo.h:178
TGC_BYTESTREAM_READOUTHIT::sbId
unsigned sbId
Definition: TgcByteStreamData.h:80
IdentifiableContainerMT::addCollection
virtual StatusCode addCollection(const T *coll, IdentifierHash hashId) override final
insert collection into container with id hash if IDC should not take ownership of collection,...
Definition: IdentifiableContainerMT.h:300
TGC_BYTESTREAM_READOUTTRIPLETSTRIP::slbType
unsigned slbType
Definition: TgcByteStreamData.h:123
xAOD::uint32_t
setEventNumber uint32_t
Definition: EventInfo_v1.cxx:127
Muon::TGC_RodDecoderRawdata::m_readSlbHeaderId
bool m_readSlbHeaderId
Switch for reading IDs in SLB Header or ROD Header.
Definition: TGC_RodDecoderRawdata.h:56
Issue
Configuration Issue
Definition: PscIssues.h:31
TGC_BYTESTREAM_HIPT_INNER::bcBitmap
unsigned bcBitmap
Definition: TgcByteStreamData.h:158
initialize
void initialize()
Definition: run_EoverP.cxx:894
TGC_BYTESTREAM_READOUTTRACKLET::sbId
unsigned sbId
Definition: TgcByteStreamData.h:99
TGC_BYTESTREAM_READOUTHIT::ldbId
unsigned ldbId
Definition: TgcByteStreamData.h:83
TGC_BYTESTREAM_HIPT::sector
unsigned sector
Definition: TgcByteStreamData.h:138
TGC_BYTESTREAM_READOUTTRACKLET::delta
signed delta
Definition: TgcByteStreamData.h:98
TGC_BYTESTREAM_SL::overlap
unsigned overlap
Definition: TgcByteStreamData.h:168
TgcRdo::setTriggerType
void setTriggerType(uint16_t v)
Definition: TgcRdo.h:127
TGC_BYTESTREAM_READOUTHIT::adj
unsigned adj
Definition: TgcByteStreamData.h:82
TGC_BYTESTREAM_READOUTTRACKLET::slbType
unsigned slbType
Definition: TgcByteStreamData.h:104
TGC_BYTESTREAM_READOUTTRIPLETSTRIP::bcBitmap
unsigned bcBitmap
Definition: TgcByteStreamData.h:120
read_hist_ntuple.t
t
Definition: read_hist_ntuple.py:5
ATH_MSG_VERBOSE
#define ATH_MSG_VERBOSE(x)
Definition: AthMsgStreamMacros.h:28
TGC_BYTESTREAM_HIPT::cand
unsigned cand
Definition: TgcByteStreamData.h:136
TGC_BYTESTREAM_SL::threshold
unsigned threshold
Definition: TgcByteStreamData.h:169
Muon::TGC_RodDecoderRawdata::m_showStatusWords
bool m_showStatusWords
Flag for showStatusWords.
Definition: TGC_RodDecoderRawdata.h:62
TgcRdo::l1Id
uint16_t l1Id() const
Definition: TgcRdo.h:150
XMLtoHeader.count
count
Definition: XMLtoHeader.py:85
AthenaPoolTestRead.sc
sc
Definition: AthenaPoolTestRead.py:27
TGC_BYTESTREAM_HIPT::hipt
unsigned hipt
Definition: TgcByteStreamData.h:135
TGC_BYTESTREAM_HIPT::bcBitmap
unsigned bcBitmap
Definition: TgcByteStreamData.h:141
Muon::TGC_RodDecoderRawdata::m_cablingSvc
ServiceHandle< MuonTGC_CablingSvc > m_cablingSvc
Definition: TGC_RodDecoderRawdata.h:64
TGC_BYTESTREAM_READOUTTRIPLETSTRIP
The struct for triplet strip in ByteStream.
Definition: TgcByteStreamData.h:112
TgcRdo::setErrors
void setErrors(uint16_t data)
Definition: TgcRdo.h:162
TGC_BYTESTREAM_HIPT::sub
unsigned sub
Definition: TgcByteStreamData.h:133
TGC_BYTESTREAM_READOUTTRACKLET
The struct for tracklet in ByteStream.
Definition: TgcByteStreamData.h:94
TGC_BYTESTREAM_READOUTTRIPLETSTRIP::sbId
unsigned sbId
Definition: TgcByteStreamData.h:118
OFFLINE_FRAGMENTS_NAMESPACE::PointerType
const DataType * PointerType
Definition: RawEvent.h:25
TGC_BYTESTREAM_HIPT
The struct for HiPt in ByteStream.
Definition: TgcByteStreamData.h:131
TgcRdoIdHash
Definition: TgcRdoIdHash.h:18
TgcRdo::subDetectorId
uint16_t subDetectorId() const
Definition: TgcRdo.h:134
TGC_BYTESTREAM_SOURCEID
The struct for source ID in ByteStream.
Definition: TgcByteStreamData.h:22
TgcRdo::setOrbit
void setOrbit(uint32_t orbit)
Definition: TgcRdo.h:210
xAOD::uint16_t
setWord1 uint16_t
Definition: eFexEMRoI_v1.cxx:88
TGC_BYTESTREAM_HIPT::chip
unsigned chip
Definition: TgcByteStreamData.h:137
Muon::TGC_RodDecoderRawdata::getCollection
TgcRdo * getCollection(const OFFLINE_FRAGMENTS_NAMESPACE::ROBFragment &robFrag, TgcRdoContainer &rdoIdc) const
Retrieve header of ROBFragment.
Definition: TGC_RodDecoderRawdata.cxx:115
lumiFormat.i
int i
Definition: lumiFormat.py:92
TGC_BYTESTREAM_READOUTTRIPLETSTRIP::seg
unsigned seg
Definition: TgcByteStreamData.h:116
beamspotman.n
n
Definition: beamspotman.py:731
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
ATH_MSG_DEBUG
#define ATH_MSG_DEBUG(x)
Definition: AthMsgStreamMacros.h:29
fromBS32
void fromBS32(uint32_t data, T &s)
Definition: TgcByteStreamData.h:324
Muon::TGC_RodDecoderRawdata::m_tgcRODReadOut
TgcRODReadOut * m_tgcRODReadOut
RawData format converter.
Definition: TGC_RodDecoderRawdata.h:60
TGC_BYTESTREAM_HIPT_INNER::strip
unsigned strip
Definition: TgcByteStreamData.h:157
TGC_BYTESTREAM_READOUTTRIPLETSTRIP::ldbId
unsigned ldbId
Definition: TgcByteStreamData.h:119
TGC_BYTESTREAM_READOUTHIT
The struct for hit in ByteStream.
Definition: TgcByteStreamData.h:78
TGC_BYTESTREAM_READOUTHIT::tracklet
unsigned tracklet
Definition: TgcByteStreamData.h:85
TGC_BYTESTREAM_SL::sign
unsigned sign
Definition: TgcByteStreamData.h:172
ATH_CHECK
#define ATH_CHECK
Definition: AthCheckMacros.h:40
TGC_BYTESTREAM_READOUTTRIPLETSTRIP::phi
unsigned phi
Definition: TgcByteStreamData.h:113
TGC_BYTESTREAM_SL::veto
unsigned veto
Definition: TgcByteStreamData.h:178
TGC_BYTESTREAM_HIPT_INNER
The struct for Inner trigger bits in ByteStream.
Definition: TgcByteStreamData.h:149
TGC_BYTESTREAM_SL::fwd
unsigned fwd
Definition: TgcByteStreamData.h:175
Muon::TGC_RodDecoderRawdata::byteStream2Rdo
void byteStream2Rdo(OFFLINE_FRAGMENTS_NAMESPACE::PointerType bs, TgcRdo &rdo, uint32_t source_id) const
Convert data contents of ROBFragment to RDO The same byteStream2Rdo method in TGC_RodDecoderReadout i...
Definition: TGC_RodDecoderRawdata.cxx:159
TGC_BYTESTREAM_SL::bcBitmap
unsigned bcBitmap
Definition: TgcByteStreamData.h:176
TGC_BYTESTREAM_READOUTHIT::bcBitmap
unsigned bcBitmap
Definition: TgcByteStreamData.h:84
Muon::TGC_RodDecoderRawdata::m_checkRawData
bool m_checkRawData
Switch for checking rawdata format with readout format.
Definition: TGC_RodDecoderRawdata.h:58
TGC_BYTESTREAM_SL::sector
unsigned sector
Definition: TgcByteStreamData.h:174
TGC_BYTESTREAM_FRAGMENTCOUNT::count
unsigned count
Definition: TgcByteStreamData.h:72
TGC_BYTESTREAM_READOUTHIT::sbType
unsigned sbType
Definition: TgcByteStreamData.h:81
TgcRdo::bcId
uint16_t bcId() const
Definition: TgcRdo.h:146
TGC_BYTESTREAM_READOUTTRACKLET::ldbId
unsigned ldbId
Definition: TgcByteStreamData.h:100
TGC_BYTESTREAM_HIPT::strip
unsigned strip
Definition: TgcByteStreamData.h:140
TGC_BYTESTREAM_READOUTTRACKLET::subm
unsigned subm
Definition: TgcByteStreamData.h:96
TGC_BYTESTREAM_SL::cand
unsigned cand
Definition: TgcByteStreamData.h:173
TGC_BYTESTREAM_READOUTTRACKLET::rphi
unsigned rphi
Definition: TgcByteStreamData.h:95
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:195
TGC_BYTESTREAM_HIPT::delta
signed delta
Definition: TgcByteStreamData.h:132
DataVector::push_back
value_type push_back(value_type pElem)
Add an element to the end of the collection.
Muon::TgcRODReadOut::byteStream2Rdo
StatusCode byteStream2Rdo(const ByteStream &bs, TgcRdo &tgcRdo, uint32_t source_id) const
Convert BS (ROB fragment) to RDO.
Definition: TgcRODReadOut.cxx:64
TgcRdo::setOnlineId
void setOnlineId(uint16_t subDetectorId, uint16_t rodId)
Definition: TgcRdo.cxx:35
IdentifiableContainerMT::indexFindPtr
virtual const T * indexFindPtr(IdentifierHash hashId) const override final
return pointer on the found entry or null if out of range using hashed index - fast version,...
Definition: IdentifiableContainerMT.h:292
TGC_BYTESTREAM_READOUTTRIPLETSTRIP::subc
unsigned subc
Definition: TgcByteStreamData.h:114
TGC_BYTESTREAM_SL
The struct for SL in ByteStream.
Definition: TgcByteStreamData.h:166
ATH_MSG_WARNING
#define ATH_MSG_WARNING(x)
Definition: AthMsgStreamMacros.h:32
TgcRawData
An unit object of TGC ROD output.
Definition: TgcRawData.h:23
bcTag
unsigned bcTag(unsigned bcBitMap)
Definition: TgcByteStreamData.h:367
TGC_BYTESTREAM_READOUTHIT::channel
unsigned channel
Definition: TgcByteStreamData.h:79
TGC_BYTESTREAM_SOURCEID::side
unsigned side
Definition: TgcByteStreamData.h:25
TgcRawData::SLB_TYPE_INNER_STRIP
@ SLB_TYPE_INNER_STRIP
Definition: TgcRawData.h:37
TGC_BYTESTREAM_HIPT::fwd
unsigned fwd
Definition: TgcByteStreamData.h:139
declareProperty
#define declareProperty(n, p, h)
Definition: BaseFakeBkgTool.cxx:15
TgcRdo::setBcId
void setBcId(uint16_t v)
Definition: TgcRdo.h:123
TgcRdo::setLocalStatus
void setLocalStatus(uint32_t data)
Definition: TgcRdo.h:194
TgcRawData::SLB_TYPE_INNER_WIRE
@ SLB_TYPE_INNER_WIRE
Definition: TgcRawData.h:36
merge.status
status
Definition: merge.py:17
TgcRdo
Definition: TgcRdo.h:22
TgcRawData
Athena::TPCnvVers::Old Athena::TPCnvVers::Current Athena::TPCnvVers::Old Athena::TPCnvVers::Current Athena::TPCnvVers::Old Athena::TPCnvVers::Current Athena::TPCnvVers::Current Athena::TPCnvVers::Current Athena::TPCnvVers::Current Athena::TPCnvVers::Current TgcRawData
Definition: MuonEventAthenaPoolTPCnv.cxx:168
test_pyathena.counter
counter
Definition: test_pyathena.py:15
TgcRawData::SLB_TYPE_TRIPLET_STRIP
@ SLB_TYPE_TRIPLET_STRIP
Definition: TgcRawData.h:35
TGC_BYTESTREAM_FRAGMENTCOUNT
The struct for fragment count in ByteStream.
Definition: TgcByteStreamData.h:71
DataVector::size
size_type size() const noexcept
Returns the number of elements in the collection.
TgcRdo::rodId
uint16_t rodId() const
Definition: TgcRdo.h:138
TGC_BYTESTREAM_SL::roi
unsigned roi
Definition: TgcByteStreamData.h:167
TGC_BYTESTREAM_HIPT_INNER::inner
unsigned inner
Definition: TgcByteStreamData.h:150
Muon::TgcRODReadOut::check
StatusCode check(const ByteStream &bs, TgcRdo &tgcRdo, uint32_t source_id) const
Convert BS (ROB fragment) to RDO and compare decoded RDO container and another RDO container decoded ...
Definition: TgcRODReadOut.cxx:105
TGC_BYTESTREAM_READOUTTRACKLET::bcBitmap
unsigned bcBitmap
Definition: TgcByteStreamData.h:101
TgcRawData::SlbType
SlbType
Definition: TgcRawData.h:31