Show status words.
362 {
363 static const unsigned int maxNStatus = 5;
364 static const std::string statusDataWord[maxNStatus] = {
365 "First status word specific|generic:",
366 "TGC ROD event status :",
367 "ROD VME fileter bits | SSW timeout:",
368 "Local status word | presence :",
369 "orbit count :"
370 };
371
372 static const unsigned int maxFirstStatus = 5;
373 static const std::string firstStatus[maxFirstStatus] = {
374 "incorrect BCID",
375 "incorrect L1AID",
376 "Timeout occurred in at least one of the FE links. Fragment is "
377 "incomplete.",
378 "Data may be incorrect, see TGC ROD event status word",
379 "An overflow in one of the ROD internal buffers has occurred. The "
380 "fragment is incomplete."
381 };
382
383 static const unsigned int maxTgcRodEventStatus = 31;
384 static const std::string tgcRodEventStatus[maxTgcRodEventStatus] = {
385 "EC_RXsend : Error in request to send an event via RXlink",
386 "EC_FELdown : A Front End link has gone down - abandoned",
387 "EC_frame : Invalid FE link framing words",
388 "EC_Glnk : Front End link G-link error",
389 "EC_xor : Invalid XOR event checksum",
390 "EC_ovfl : Input FE event is too long or FE FIFO overflow",
391 "EC_timeout : Timeout expired for at least one FE link",
392 "EC_xormezz : Bad XOR checksum from mezz board",
393 "EC_wc0 : Event has WC=0 or WX>max WC",
394 "EC_L1ID : L1ID mismatch (TTC EVID FIFO vs local).",
395 "EC_nohdr : First word is not header",
396 "EC_rectype : Unrecognized record type",
397 "EC_null : Unexpected nulls in FE input",
398 "EC_order : Word is out of order",
399 "EC_LDB : Invalid or unexpected Star Switch ID",
400 "EC_RXovfl : RXfifo has overflowed",
401 "EC_SSWerr : SSW reports T1C, NRC, T2C, or GlinkNoLock error",
402 "EC_sbid : SBid does not match SBinfo table",
403 "EC_SBtype : SBtype does not match SBinfo table",
404 "EC_duprx : RX ID is duplicated in the event",
405 "EC_ec4 : Unexpected SB L1 Event ID(lo 4)",
406 "EC_bc : Unexpected SB BCID",
407 "EC_celladr : Invalid cell address",
408 "EC_hitovfl : Too many hits in event",
409 "EC_trgbit : Unexpected trigger bits",
410 "EC_badEoE : Bad End-of-event marker received, not 0xFCA",
411 "EC_endWCnot0 : WC not 0 after End-of-event marker",
412 "EC_noEoE : No End-of-event marker received",
413 "EC_SLGlink : Sector Logic reports G-Link error",
414 "EC_SLbc : Sector Logic BCID[2:0] does not match its SB BCID",
415 "EC_unxrxid : Data from disabled SSW RX ID"
416 };
417
418 static const unsigned int maxSSWs = 12;
419
420 static const unsigned int maxPresence = 10;
421 static const std::string presence[maxPresence] = {
422 "",
423 "raw data",
424 "hits in readout fmt",
425 "tracklets in readout fmt",
426 "hits in chamber fmt",
427 "tracklets in chamber fmt",
428 "",
429 "",
430 "HipT output",
431 "Sector Logic"
432 };
433
434 static const unsigned int maxLocalStatus = 16;
435 static const std::string localStatus[maxLocalStatus] = {
436 "hit BCs are merged",
437 "tracklet BCs are merged",
438 "hits are sorted",
439 "tracklets are sorted",
440 "",
441 "",
442 "",
443 "",
444 "",
445 "",
446 "",
447 "",
448 "",
449 "",
450 "ROI in this fragment",
451 "no L1AID, BCID check wrt ROD"
452 };
453
455 << "source_id=0x" << source_id << ", "
456 << "rdoId=0x" << rdoId << (rdoId < 16 ? " , " : ", ")
457 << "idHash=0x" << idHash << (idHash < 16 ? " , " : ", ")
458 << (idHash < 12 ? "A" : "C")
459 << (idHash % 12 + 1 < 10 ? "0" : "") << std::dec
460 << idHash % 12 + 1 << " ******");
462 "***** Based on http://cern.ch/atlas-tgc/doc/ROBformat.pdf "
463 "****************************");
464
465 for (uint32_t i = 0;
i < nstatus &&
i < maxNStatus;
i++) {
466 ATH_MSG_INFO(statusDataWord[i] <<
" status[" << i <<
"]=0x" << std::hex
467 << status[i]);
468
469 if (i == 0) {
470
471
472 for (
unsigned int j = 0;
j < maxFirstStatus;
j++) {
473 if ((status[i] >> j) & 0x1) {
475 << firstStatus[j]);
476 }
477 }
478 } else if (i == 1) {
479
480 for (
unsigned int j = 0;
j < maxTgcRodEventStatus;
j++) {
481 if ((status[i] >> j) & 0x1) {
483 << tgcRodEventStatus[j]);
484 }
485 }
486 } else if (i == 2) {
487
488 for (
unsigned int j = 0;
j < maxSSWs;
j++) {
489 if ((status[i] >> j) & 0x1) {
491 << "time-out for SSW" << j);
492 }
493 }
494 for (
unsigned int j = 0 + 16;
j <= maxSSWs + 16;
j++) {
495 if ((status[i] >> j) & 0x1) {
497 << "data from SSW" << j - 16
498 << " gave filter \"accept\"");
499 }
500 }
501 } else if (i == 3) {
502
503 for (
unsigned int j = 0;
j < maxPresence;
j++) {
504 if (j == 0 || j == 6 || j == 7) {
505 continue;
506 }
507 if ((status[i] >> j) & 0x1) {
509 << presence[j]);
510 }
511 }
512
513
514 for (
unsigned int j = 0 + 16;
j < maxLocalStatus + 16;
j++) {
515 if ((j >= 4 + 16 && j <= 13 + 16)) {
516 continue;
517 }
518 if ((status[i] >> j) & 0x1) {
520 << localStatus[j - 16]);
521 }
522 }
523 }
524 }
525
527 "**********************************************************************"
528 "****************");
529}
float j(const xAOD::IParticle &, const xAOD::TrackMeasurementValidation &hit, const Eigen::Matrix3d &jab_inv)