ATLAS Offline Software
Loading...
Searching...
No Matches
DataError.cxx
Go to the documentation of this file.
1/*
2 Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
3*/
4
6
7namespace LVL1 {
8
13
17
21
25
26// Set an error bit or data
27
28void DataError::set(ErrorBit bit, int value)
29{
30 if (bit == SubStatusWord) {
32 m_error |= (value & s_subStatusMask) << GLinkParity;
33 bit = FailingBCN;
34 value >>= s_subStatusBcn;
35 }
36 int mask = 0x1;
37 if (bit == FailingBCN) mask = s_failingBcnMask;
38 else if (bit == PPMErrorWord) {
39 bit = ChannelDisabled;
40 mask = s_ppmErrorMask;
41 }
42 m_error &= ~(mask << bit);
43 m_error |= (value & mask) << bit;
44}
45
46// Return an error bit or data
47
49{
50 if (bit == SubStatusWord) return 0;
51 int mask = 0x1;
52 if (bit == FailingBCN) mask = s_failingBcnMask;
53 else if (bit == PPMErrorWord) {
54 bit = ChannelDisabled;
55 mask = s_ppmErrorMask;
56 }
57 return (m_error >> bit) & mask;
58}
59
60// Return an error bit or data
61
62int DataError::get(int bit) const
63{
64 int mask = (bit == FailingBCN) ? s_failingBcnMask : 0x1;
65 return (m_error >> bit) & mask;
66}
67
68// Return the name of an error bit
69
70std::string DataError::bitName(int bit) const
71{
72 std::string name;
73 switch (bit) {
74 case Overflow: name = "Overflow"; break;
75 case Parity: name = "Parity"; break;
76 case LinkDown: name = "LinkDown"; break;
77 case ChannelDisabled: name = "ChannelDisabled"; break;
78 case MCMAbsent: name = "MCMAbsent"; break;
79 case Timeout: name = "Timeout"; break;
80 case ASICFull: name = "ASICFull"; break;
81 case EventMismatch: name = "EventMismatch"; break;
82 case BunchMismatch: name = "BunchMismatch"; break;
83 case FIFOCorrupt: name = "FIFOCorrupt"; break;
84 case PinParity: name = "PinParity"; break;
85 //case ParityMerge: name = "ParityMerge"; break;
86 //case ParityPhase0: name = "ParityPhase0"; break;
87 //case ParityPhase1: name = "ParityPhase1"; break;
88 //case ParityPhase2: name = "ParityPhase2"; break;
89 //case ParityPhase3: name = "ParityPhase3"; break;
90 case GLinkParity: name = "GLinkParity"; break;
91 case GLinkProtocol: name = "GLinkProtocol"; break;
92 case BCNMismatch: name = "BCNMismatch"; break;
93 case FIFOOverflow: name = "FIFOOverflow"; break;
94 case ModuleError: name = "ModuleError"; break;
95 case GLinkDown: name = "GLinkDown"; break;
96 case GLinkTimeout: name = "GLinkTimeout"; break;
97 default: name = ""; break;
98 }
99 return name;
100}
101
102} // end namespace
static const int s_subStatusMask
Mask for error bits from sub-status word.
Definition DataError.h:69
static const int s_ppmErrorMask
Mask for PPM error bits.
Definition DataError.h:67
static const int s_subStatusBcn
Bit position of failing BCN in sub-status word.
Definition DataError.h:71
static const int s_failingBcnMask
Mask for Failing BCN.
Definition DataError.h:65
std::string bitName(int bit) const
Return the name of an error bit or data.
Definition DataError.cxx:70
int m_error
Error word.
Definition DataError.h:74
void set(ErrorBit bit, int value=1)
Set an error bit or data.
Definition DataError.cxx:28
int get(ErrorBit bit) const
Return an error bit or data.
Definition DataError.cxx:48
eFexTowerBuilder creates xAOD::eFexTowerContainer from supercells (LATOME) and triggerTowers (TREX) i...