ATLAS Offline Software
TileBchStatus.h
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2025 CERN for the benefit of the ATLAS collaboration
3 */
4 
5 #ifndef TILECALIBBLOBOBJS_TILEBCHSTATUS_H
6 #define TILECALIBBLOBOBJS_TILEBCHSTATUS_H
7 
15 #include <set>
16 #include <string>
17 #include <mutex>
18 
20 {
21  public:
23  typedef std::set<Prb> PrbSet;
24 
25  TileBchStatus();
26  TileBchStatus(const PrbSet& prbSet);
27 
32  bool operator==(const TileBchStatus &other) const;
33  bool operator!=(const TileBchStatus &other) const;
34 
35  const PrbSet& getPrbs() const;
36  PrbSet testFor(const PrbSet& prbSet) const;
37  bool contains(const Prb& prb) const;
38  std::string getString() const;
39 
40  static void initClassifierDefinitions();
41  static void defineBad( const TileBchStatus& status);
42  static void defineNoisy(const TileBchStatus& status);
43  static void defineNoGainL1(const TileBchStatus& status);
44  static void defineBadTiming(const TileBchStatus& status);
45  static void defineTimingDmuBcOffset(const TileBchStatus& status);
46  static void defineWrongBCID(const TileBchStatus& status);
47  // cppcheck-suppress returnByReference; not actually returning member
49  // cppcheck-suppress returnByReference; not actually returning member
51  // cppcheck-suppress returnByReference; not actually returning member
53  // cppcheck-suppress returnByReference; not actually returning member
55  // cppcheck-suppress returnByReference; not actually returning member
57  // cppcheck-suppress returnByReference; not actually returning member
59 
60  bool isGood() const;
61  bool isBad() const;
62  bool isAffected() const;
63  bool isNoisy() const;
64  bool isIgnoredInDsp() const;
65  bool isIgnoredInHlt() const;
66  bool isNoGainL1() const;
67  bool isHalfGainL1() const;
68  bool isBadTiming() const;
69  bool isTimingDmuBcOffset() const;
70  bool isTimingDmuBcOffsetPos() const;
71  bool isTimingDmuBcOffsetNeg() const;
72  bool isWrongBCID() const;
73 
74  private:
76  //=== reference sets
77  struct LockedPrbSet
78  {
79  size_t size() const
80  {
81  std::lock_guard lock (m_mutex);
82  return m_set.size();
83  }
84  void set (const PrbSet& s)
85  {
86  std::lock_guard lock (m_mutex);
87  m_set = s;
88  }
89  void set (PrbSet&& s)
90  {
91  std::lock_guard lock (m_mutex);
92  m_set = std::move(s);
93  }
94  operator TileBchStatus() const
95  {
96  std::lock_guard lock (m_mutex);
97  return TileBchStatus (m_set, true);
98  }
99  bool test (const PrbSet& s) const;
100 
101  private:
104  };
105 
106  TileBchStatus (const PrbSet& s, bool) : m_prbSet (s) {}
107 
109  static LockedPrbSet s_refNoisy ATLAS_THREAD_SAFE;
110  static LockedPrbSet s_refNoGainL1 ATLAS_THREAD_SAFE;
111  static LockedPrbSet s_refBadTiming ATLAS_THREAD_SAFE;
112  static LockedPrbSet s_refWrongBCID ATLAS_THREAD_SAFE;
113  static LockedPrbSet s_refTimingDmuBcOffset ATLAS_THREAD_SAFE;
114 };
115 
116 //
117 //_________________________________________________________
118 inline const TileBchStatus::PrbSet&
120 {
121  return m_prbSet;
122 }
123 
124 //
125 //_________________________________________________________
126 inline bool
127 TileBchStatus::contains(const Prb& prb) const
128 {
129  return (m_prbSet.find(prb) != m_prbSet.end());
130 }
131 
132 //
133 //_________________________________________________________
134 inline bool
136 {
137  return (m_prbSet.size() == 0);
138 }
139 
140 //
141 //_________________________________________________________
142 inline bool
144 {
145  return (!isGood());
146 }
147 
148 //
149 //_________________________________________________________
150 inline bool
152 {
153  return m_prbSet.size() ? (s_refBad.test (m_prbSet)) : false;
154 }
155 
156 //
157 //_________________________________________________________
158 inline bool
160 {
161  return m_prbSet.size() ? (s_refNoisy.test (m_prbSet)) : false;
162 }
163 
164 //
165 //_________________________________________________________
166 inline bool
168 {
169  return m_prbSet.size() ? contains(TileBchPrbs::IgnoredInDsp) : false;
170 }
171 
172 //
173 //_________________________________________________________
174 inline bool
176 {
177  return m_prbSet.size() ? contains(TileBchPrbs::IgnoredInHlt) : false;
178 }
179 
180 //
181 //_________________________________________________________
182 inline bool
184 {
185  return m_prbSet.size() ? (s_refNoGainL1.test (m_prbSet)) : false;
186 }
187 
188 //
189 //_________________________________________________________
190 inline bool
192 {
193  return m_prbSet.size() ? contains(TileBchPrbs::TrigHalfGain) : false;
194 }
195 
196 //
197 //_________________________________________________________
198 inline bool
200 {
201  return m_prbSet.size() ? (s_refBadTiming.test (m_prbSet)) : false;
202 }
203 
204 //
205 //_________________________________________________________
206 inline bool
208 {
209  return m_prbSet.size() ? (s_refTimingDmuBcOffset.test (m_prbSet)) : false;
210 }
211 
212 //
213 //_________________________________________________________
214 inline bool
216 {
218 }
219 
220 //
221 //_________________________________________________________
222 inline bool
224 {
226 }
227 
228 //
229 //_________________________________________________________
230 inline bool
232 {
233  return m_prbSet.size() ? (s_refWrongBCID.test (m_prbSet)) : false;
234 }
235 
236 #endif
TileBchStatus::ATLAS_THREAD_SAFE
static LockedPrbSet s_refNoisy ATLAS_THREAD_SAFE
Definition: TileBchStatus.h:109
TileBchStatus::getDefinitionTimingDmuBcOffset
static TileBchStatus getDefinitionTimingDmuBcOffset()
Definition: TileBchStatus.cxx:237
TileBchPrbs::TrigHalfGain
@ TrigHalfGain
Definition: TileBchPrbs.h:81
TileBchStatus::getPrbs
const PrbSet & getPrbs() const
Definition: TileBchStatus.h:119
TileBchStatus::ATLAS_THREAD_SAFE
static LockedPrbSet s_refNoGainL1 ATLAS_THREAD_SAFE
Definition: TileBchStatus.h:110
TileBchStatus::isTimingDmuBcOffset
bool isTimingDmuBcOffset() const
Definition: TileBchStatus.h:207
TileBchStatus::operator!=
bool operator!=(const TileBchStatus &other) const
Definition: TileBchStatus.cxx:83
TileBchStatus::isNoisy
bool isNoisy() const
Definition: TileBchStatus.h:159
TileBchStatus::defineTimingDmuBcOffset
static void defineTimingDmuBcOffset(const TileBchStatus &status)
Definition: TileBchStatus.cxx:189
TileBchStatus::getDefinitionBadTiming
static TileBchStatus getDefinitionBadTiming()
Definition: TileBchStatus.cxx:229
TileBchStatus::initClassifierDefinitions
static void initClassifierDefinitions()
Definition: TileBchStatus.cxx:91
TileBchStatus::getDefinitionWrongBCID
static TileBchStatus getDefinitionWrongBCID()
Definition: TileBchStatus.cxx:245
TileBchPrbs::IgnoredInDsp
@ IgnoredInDsp
Definition: TileBchPrbs.h:87
BeamSpot::mutex
std::mutex mutex
Definition: InDetBeamSpotVertex.cxx:18
TileBchStatus::isTimingDmuBcOffsetPos
bool isTimingDmuBcOffsetPos() const
Definition: TileBchStatus.h:215
TileBchPrbs::OnlineTimingDmuBcOffsetNeg
@ OnlineTimingDmuBcOffsetNeg
Definition: TileBchPrbs.h:93
TileBchPrbs::TimingDmuBcOffsetPos
@ TimingDmuBcOffsetPos
Definition: TileBchPrbs.h:72
TileBchStatus::LockedPrbSet::set
void set(PrbSet &&s)
Definition: TileBchStatus.h:89
TileBchStatus
Class holding bad channel problems.
Definition: TileBchStatus.h:20
TileBchStatus::ATLAS_THREAD_SAFE
static LockedPrbSet s_refTimingDmuBcOffset ATLAS_THREAD_SAFE
Definition: TileBchStatus.h:113
TileBchStatus::LockedPrbSet::size
size_t size() const
Definition: TileBchStatus.h:79
TileBchStatus::ATLAS_THREAD_SAFE
static LockedPrbSet s_refWrongBCID ATLAS_THREAD_SAFE
Definition: TileBchStatus.h:112
TileBchStatus::LockedPrbSet
Definition: TileBchStatus.h:78
python.RatesEmulationExample.lock
lock
Definition: RatesEmulationExample.py:148
TileBchStatus::isIgnoredInDsp
bool isIgnoredInDsp() const
Definition: TileBchStatus.h:167
TileBchStatus::isGood
bool isGood() const
Definition: TileBchStatus.h:135
TileBchStatus::operator-=
TileBchStatus & operator-=(const TileBchStatus &rhs)
Definition: TileBchStatus.cxx:54
TileBchStatus::PrbSet
std::set< Prb > PrbSet
Definition: TileBchStatus.h:23
TileBchStatus::isNoGainL1
bool isNoGainL1() const
Definition: TileBchStatus.h:183
TileBchStatus::LockedPrbSet::set
void set(const PrbSet &s)
Definition: TileBchStatus.h:84
TileBchStatus::ATLAS_THREAD_SAFE
static LockedPrbSet s_refBad ATLAS_THREAD_SAFE
Definition: TileBchStatus.h:108
TileBchStatus::defineBadTiming
static void defineBadTiming(const TileBchStatus &status)
Definition: TileBchStatus.cxx:181
TileBchStatus::TileBchStatus
TileBchStatus(const PrbSet &s, bool)
Definition: TileBchStatus.h:106
TileBchStatus::getDefinitionNoisy
static TileBchStatus getDefinitionNoisy()
Definition: TileBchStatus.cxx:213
TileBchPrbs::IgnoredInHlt
@ IgnoredInHlt
Definition: TileBchPrbs.h:88
TileBchStatus::TileBchStatus
TileBchStatus()
Definition: TileBchStatus.cxx:18
TileBchStatus::defineNoisy
static void defineNoisy(const TileBchStatus &status)
Definition: TileBchStatus.cxx:165
TileBchStatus::testFor
PrbSet testFor(const PrbSet &prbSet) const
Definition: TileBchStatus.cxx:253
TileBchPrbs::Prb
Prb
Definition: TileBchPrbs.h:24
TileBchStatus::Prb
TileBchPrbs::Prb Prb
Definition: TileBchStatus.h:22
TileBchStatus::defineNoGainL1
static void defineNoGainL1(const TileBchStatus &status)
Definition: TileBchStatus.cxx:173
TileBchStatus::isAffected
bool isAffected() const
Definition: TileBchStatus.h:143
TileBchStatus::defineBad
static void defineBad(const TileBchStatus &status)
Definition: TileBchStatus.cxx:157
TileBchPrbs::OnlineTimingDmuBcOffsetPos
@ OnlineTimingDmuBcOffsetPos
Definition: TileBchPrbs.h:92
TileBchStatus::LockedPrbSet::m_set
PrbSet m_set
Definition: TileBchStatus.h:102
TileBchStatus::operator+=
TileBchStatus & operator+=(const TileBchStatus &rhs)
Definition: TileBchStatus.cxx:34
TileBchStatus::m_prbSet
PrbSet m_prbSet
Definition: TileBchStatus.h:75
TileBchStatus::operator==
bool operator==(const TileBchStatus &other) const
Definition: TileBchStatus.cxx:75
TileBchStatus::LockedPrbSet::test
bool test(const PrbSet &s) const
Definition: TileBchStatus.cxx:275
TileBchStatus::isIgnoredInHlt
bool isIgnoredInHlt() const
Definition: TileBchStatus.h:175
TileBchStatus::defineWrongBCID
static void defineWrongBCID(const TileBchStatus &status)
Definition: TileBchStatus.cxx:197
TileBchStatus::ATLAS_THREAD_SAFE
static LockedPrbSet s_refBadTiming ATLAS_THREAD_SAFE
Definition: TileBchStatus.h:111
TileBchStatus::isHalfGainL1
bool isHalfGainL1() const
Definition: TileBchStatus.h:191
TileBchStatus::LockedPrbSet::m_mutex
std::mutex m_mutex
Definition: TileBchStatus.h:103
TileBchStatus::getDefinitionNoGainL1
static TileBchStatus getDefinitionNoGainL1()
Definition: TileBchStatus.cxx:221
TileBchStatus::getDefinitionBad
static TileBchStatus getDefinitionBad()
Definition: TileBchStatus.cxx:205
TileBchStatus::contains
bool contains(const Prb &prb) const
Definition: TileBchStatus.h:127
TileBchPrbs.h
InDetDD::other
@ other
Definition: InDetDD_Defs.h:16
TileBchPrbs::TimingDmuBcOffsetNeg
@ TimingDmuBcOffsetNeg
Definition: TileBchPrbs.h:73
TileBchStatus::isTimingDmuBcOffsetNeg
bool isTimingDmuBcOffsetNeg() const
Definition: TileBchStatus.h:223
python.SystemOfUnits.s
float s
Definition: SystemOfUnits.py:147
TileBchStatus::isBadTiming
bool isBadTiming() const
Definition: TileBchStatus.h:199
merge.status
status
Definition: merge.py:16
TileBchStatus::isWrongBCID
bool isWrongBCID() const
Definition: TileBchStatus.h:231
checker_macros.h
Define macros for attributes used to control the static checker.
TileBchStatus::getString
std::string getString() const
Definition: TileBchStatus.cxx:264
TileBchStatus::isBad
bool isBad() const
Definition: TileBchStatus.h:151