Show status words.
655 {
656 static const unsigned int maxNStatus = 5;
657 static const std::string statusDataWord[maxNStatus] = {
658 "First status word specific|generic:",
659 "TGC ROD event status :",
660 "ROD VME fileter bits | SSW timeout:",
661 "Local status word | presence :",
662 "orbit count :"
663 };
664
665 static const unsigned int maxFirstStatus = 5;
666 static const std::string firstStatus[maxFirstStatus] = {
667 "incorrect BCID",
668 "incorrect L1AID",
669 "Timeout occurred in at least one of the FE links. Fragment is incomplete.",
670 "Data may be incorrect, see TGC ROD event status word",
671 "An overflow in one of the ROD internal buffers has occurred. The fragment is incomplete."
672 };
673
674 static const unsigned int maxTgcRodEventStatus = 31;
675 static const std::string tgcRodEventStatus[maxTgcRodEventStatus] = {
676 "EC_RXsend : Error in request to send an event via RXlink",
677 "EC_FELdown : A Front End link has gone down - abandoned",
678 "EC_frame : Invalid FE link framing words",
679 "EC_Glnk : Front End link G-link error",
680 "EC_xor : Invalid XOR event checksum",
681 "EC_ovfl : Input FE event is too long or FE FIFO overflow",
682 "EC_timeout : Timeout expired for at least one FE link",
683 "EC_xormezz : Bad XOR checksum from mezz board",
684 "EC_wc0 : Event has WC=0 or WX>max WC",
685 "EC_L1ID : L1ID mismatch (TTC EVID FIFO vs local).",
686 "EC_nohdr : First word is not header",
687 "EC_rectype : Unrecognized record type",
688 "EC_null : Unexpected nulls in FE input",
689 "EC_order : Word is out of order",
690 "EC_LDB : Invalid or unexpected Star Switch ID",
691 "EC_RXovfl : RXfifo has overflowed",
692 "EC_SSWerr : SSW reports T1C, NRC, T2C, or GlinkNoLock error",
693 "EC_sbid : SBid does not match SBinfo table",
694 "EC_SBtype : SBtype does not match SBinfo table",
695 "EC_duprx : RX ID is duplicated in the event",
696 "EC_ec4 : Unexpected SB L1 Event ID(lo 4)",
697 "EC_bc : Unexpected SB BCID",
698 "EC_celladr : Invalid cell address",
699 "EC_hitovfl : Too many hits in event",
700 "EC_trgbit : Unexpected trigger bits",
701 "EC_badEoE : Bad End-of-event marker received, not 0xFCA",
702 "EC_endWCnot0 : WC not 0 after End-of-event marker",
703 "EC_noEoE : No End-of-event marker received",
704 "EC_SLGlink : Sector Logic reports G-Link error",
705 "EC_SLbc : Sector Logic BCID[2:0] does not match its SB BCID",
706 "EC_unxrxid : Data from disabled SSW RX ID"
707 };
708
709 static const unsigned int maxSSWs = 12;
710
711 static const unsigned int maxPresence = 10;
712 static const std::string presence[maxPresence] = {
713 "",
714 "raw data",
715 "hits in readout fmt",
716 "tracklets in readout fmt",
717 "hits in chamber fmt",
718 "tracklets in chamber fmt",
719 "",
720 "",
721 "HipT output",
722 "Sector Logic"
723 };
724
725 static const unsigned int maxLocalStatus = 16;
726 static const std::string localStatus[maxLocalStatus] = {
727 "hit BCs are merged",
728 "tracklet BCs are merged",
729 "hits are sorted",
730 "tracklets are sorted",
731 "",
732 "",
733 "",
734 "",
735 "",
736 "",
737 "",
738 "",
739 "",
740 "",
741 "ROI in this fragment",
742 "no L1AID, BCID check wrt ROD"
743 };
744
746 << "source_id=0x" << source_id << ", "
747 << "rdoId=0x" << rdoId << (rdoId<16 ? " , " : ", ")
748 << "idHash=0x" << idHash << (idHash<16 ? " , " : ", ")
749 << (idHash<12 ? "A" : "C") << (idHash%12+1<10 ? "0" : "") << std::dec << idHash%12+1
750 << " ******");
751 ATH_MSG_INFO(
"***** Based on http://cern.ch/atlas-tgc/doc/ROBformat.pdf ****************************");
752
753 for(uint32_t i=0;
i<nstatus &&
i<maxNStatus;
i++) {
754 ATH_MSG_INFO(statusDataWord[i] <<
" status[" << i <<
"]=0x" << std::hex << status[i]);
755
756 if(i==0) {
757
758 for(unsigned int j=0; j<maxFirstStatus; j++) {
759 if((status[i] >> j) & 0x1) {
760 ATH_MSG_INFO(std::dec << std::setw(3) << j <<
" : " << firstStatus[j]);
761 }
762 }
763 } else if(i==1) {
764
765 for(unsigned int j=0; j<maxTgcRodEventStatus; j++) {
766 if((status[i] >> j) & 0x1) {
767 ATH_MSG_INFO(std::dec << std::setw(3) << j <<
" : " << tgcRodEventStatus[j]);
768 }
769 }
770 } else if(i==2) {
771
772 for(unsigned int j=0; j<maxSSWs; j++) {
773 if((status[i] >> j) & 0x1) {
774 ATH_MSG_INFO(std::dec << std::setw(3) << j <<
" : " <<
"time-out for SSW" << j);
775 }
776 }
777 for(unsigned int j=0+16; j<=maxSSWs+16; j++) {
778 if((status[i] >> j) & 0x1) {
779 ATH_MSG_INFO(std::dec << std::setw(3) << j <<
" : " <<
"data from SSW" << j-16 <<
" gave filter \"accept\"");
780 }
781 }
782 } else if(i==3) {
783
784 for(unsigned int j=0; j<maxPresence; j++) {
785 if(j==0 || j==6 || j==7) continue;
786 if((status[i] >> j) & 0x1) {
787 ATH_MSG_INFO(std::dec << std::setw(3) << j <<
" : " << presence[j]);
788 }
789 }
790
791
792 for(unsigned int j=0+16; j<maxLocalStatus+16; j++) {
793 if((j>=4+16 && j<=13+16)) continue;
794 if((status[i] >> j) & 0x1) {
795 ATH_MSG_INFO(std::dec << std::setw(3) << j <<
" : " << localStatus[j-16]);
796 }
797 }
798 }
799 }
800
801 ATH_MSG_INFO(
"**************************************************************************************");
802}