Show status words.
585 {
586 static const unsigned int maxNStatus = 5;
587 static const std::string statusDataWord[maxNStatus] = {
588 "First status word specific|generic:",
589 "TGC ROD event status :",
590 "ROD VME fileter bits | SSW timeout:",
591 "Local status word | presence :",
592 "orbit count :"
593 };
594
595 static const unsigned int maxFirstStatus = 5;
596 static const std::string firstStatus[maxFirstStatus] = {
597 "incorrect BCID",
598 "incorrect L1AID",
599 "Timeout occurred in at least one of the FE links. Fragment is "
600 "incomplete.",
601 "Data may be incorrect, see TGC ROD event status word",
602 "An overflow in one of the ROD internal buffers has occurred. The "
603 "fragment is incomplete."
604 };
605
606 static const unsigned int maxTgcRodEventStatus = 31;
607 static const std::string tgcRodEventStatus[maxTgcRodEventStatus] = {
608 "EC_RXsend : Error in request to send an event via RXlink",
609 "EC_FELdown : A Front End link has gone down - abandoned",
610 "EC_frame : Invalid FE link framing words",
611 "EC_Glnk : Front End link G-link error",
612 "EC_xor : Invalid XOR event checksum",
613 "EC_ovfl : Input FE event is too long or FE FIFO overflow",
614 "EC_timeout : Timeout expired for at least one FE link",
615 "EC_xormezz : Bad XOR checksum from mezz board",
616 "EC_wc0 : Event has WC=0 or WX>max WC",
617 "EC_L1ID : L1ID mismatch (TTC EVID FIFO vs local).",
618 "EC_nohdr : First word is not header",
619 "EC_rectype : Unrecognized record type",
620 "EC_null : Unexpected nulls in FE input",
621 "EC_order : Word is out of order",
622 "EC_LDB : Invalid or unexpected Star Switch ID",
623 "EC_RXovfl : RXfifo has overflowed",
624 "EC_SSWerr : SSW reports T1C, NRC, T2C, or GlinkNoLock error",
625 "EC_sbid : SBid does not match SBinfo table",
626 "EC_SBtype : SBtype does not match SBinfo table",
627 "EC_duprx : RX ID is duplicated in the event",
628 "EC_ec4 : Unexpected SB L1 Event ID(lo 4)",
629 "EC_bc : Unexpected SB BCID",
630 "EC_celladr : Invalid cell address",
631 "EC_hitovfl : Too many hits in event",
632 "EC_trgbit : Unexpected trigger bits",
633 "EC_badEoE : Bad End-of-event marker received, not 0xFCA",
634 "EC_endWCnot0 : WC not 0 after End-of-event marker",
635 "EC_noEoE : No End-of-event marker received",
636 "EC_SLGlink : Sector Logic reports G-Link error",
637 "EC_SLbc : Sector Logic BCID[2:0] does not match its SB BCID",
638 "EC_unxrxid : Data from disabled SSW RX ID"
639 };
640
641 static const unsigned int maxSSWs = 12;
642
643 static const unsigned int maxPresence = 10;
644 static const std::string presence[maxPresence] = {
645 "",
646 "raw data",
647 "hits in readout fmt",
648 "tracklets in readout fmt",
649 "hits in chamber fmt",
650 "tracklets in chamber fmt",
651 "",
652 "",
653 "HipT output",
654 "Sector Logic"
655 };
656
657 static const unsigned int maxLocalStatus = 16;
658 static const std::string localStatus[maxLocalStatus] = {
659 "hit BCs are merged",
660 "tracklet BCs are merged",
661 "hits are sorted",
662 "tracklets are sorted",
663 "",
664 "",
665 "",
666 "",
667 "",
668 "",
669 "",
670 "",
671 "",
672 "",
673 "ROI in this fragment",
674 "no L1AID, BCID check wrt ROD"
675 };
676
678 << "source_id=0x" << source_id << ", "
679 << "rdoId=0x" << rdoId << (rdoId < 16 ? " , " : ", ")
680 << "idHash=0x" << idHash << (idHash < 16 ? " , " : ", ")
681 << (idHash < 12 ? "A" : "C")
682 << (idHash % 12 + 1 < 10 ? "0" : "") << std::dec
683 << idHash % 12 + 1 << " ******");
685 "***** Based on http://cern.ch/atlas-tgc/doc/ROBformat.pdf "
686 "****************************");
687
688 for (uint32_t i = 0;
i < nstatus &&
i < maxNStatus;
i++) {
689 ATH_MSG_INFO(statusDataWord[i] <<
" status[" << i <<
"]=0x" << std::hex
690 << status[i]);
691
692 if (i == 0) {
693
694
695 for (
unsigned int j = 0;
j < maxFirstStatus;
j++) {
696 if ((status[i] >> j) & 0x1) {
698 << firstStatus[j]);
699 }
700 }
701 } else if (i == 1) {
702
703 for (
unsigned int j = 0;
j < maxTgcRodEventStatus;
j++) {
704 if ((status[i] >> j) & 0x1) {
706 << tgcRodEventStatus[j]);
707 }
708 }
709 } else if (i == 2) {
710
711 for (
unsigned int j = 0;
j < maxSSWs;
j++) {
712 if ((status[i] >> j) & 0x1) {
714 << "time-out for SSW" << j);
715 }
716 }
717 for (
unsigned int j = 0 + 16;
j <= maxSSWs + 16;
j++) {
718 if ((status[i] >> j) & 0x1) {
720 << "data from SSW" << j - 16
721 << " gave filter \"accept\"");
722 }
723 }
724 } else if (i == 3) {
725
726 for (
unsigned int j = 0;
j < maxPresence;
j++) {
727 if (j == 0 || j == 6 || j == 7) {
728 continue;
729 }
730 if ((status[i] >> j) & 0x1) {
732 << presence[j]);
733 }
734 }
735
736
737 for (
unsigned int j = 0 + 16;
j < maxLocalStatus + 16;
j++) {
738 if ((j >= 4 + 16 && j <= 13 + 16)) {
739 continue;
740 }
741 if ((status[i] >> j) & 0x1) {
743 << localStatus[j - 16]);
744 }
745 }
746 }
747 }
748
750 "**********************************************************************"
751 "****************");
752}
float j(const xAOD::IParticle &, const xAOD::TrackMeasurementValidation &hit, const Eigen::Matrix3d &jab_inv)