ATLAS Offline Software
TileBadChanTool.cxx
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2023 CERN for the benefit of the ATLAS collaboration
3 */
4 
5 // Tile includes
10 
11 // Calo includes
12 #include "CaloDetDescr/CaloDetDescrElement.h"
13 
14 // Athena incldues
17 
18 // Gaudi includes
19 #include "GaudiKernel/EventContext.h"
20 
21 #include <string>
22 #include <algorithm>
23 
24 
25 //
26 //____________________________________________________________________
27 TileBadChanTool::TileBadChanTool(const std::string& type, const std::string& name, const IInterface* parent)
28  : base_class(type, name, parent)
29  , m_tileMgr(nullptr)
30  , m_tileHWID(nullptr)
31  , m_defaultStatus(TileBchStatus())
32  , m_defaultTripsProbs(TileCalibUtils::MAX_DRAWER, 0.0F)
33 {
34 
35 }
36 
37 //
38 //____________________________________________________________________
40 
41 }
42 
43 
44 //
45 //____________________________________________________________________
47  ATH_MSG_DEBUG( "in initialize()" );
48 
49  //=== Initialize bad channels key
51 
52  //=== TileDetDescrManager
54 
55  //=== TileDetDescrManager
57 
60 
61  for (unsigned int ros = 0; ros < TileCalibUtils::MAX_ROS; ++ros) {
62  for (unsigned int drawer = 0; drawer < TileCalibUtils::getMaxDrawer(ros); ++drawer) {
63  unsigned int drawerIdx = TileCalibUtils::getDrawerIdx(ros, drawer);
64  m_roses[drawerIdx] = ros;
65  m_drawers[drawerIdx] = drawer;
66  }
67  }
68 
69 
70  return StatusCode::SUCCESS;
71 }
72 
73 //
74 //____________________________________________________________________
76 
77  ATH_MSG_DEBUG( "finalize called" );
78  return StatusCode::SUCCESS;
79 
80 }
81 
82 //
83 //____________________________________________________________________
85 TileBadChanTool::caloStatus(const EventContext& ctx, Identifier cell_id) const
86 {
87 
89 
90  //=== get the TileHWIDs of the two channels connected to the caloCellnxs id
91  const CaloDetDescrElement* elem = m_tileMgr->get_cell_element(cell_id);
92 
93  if (!elem) {
94  //=== this should never happen
95  ATH_MSG_ERROR( "CaloMgr returns NULL CaloDetDescrElement" );
96  std::abort();
97  }
98 
100 
101  IdentifierHash hash1_id(elem->onl1());
102  IdentifierHash hash2_id(elem->onl2());
103 
104  //=== status of 1. connected channel
105  TileBchStatus channel1_status = (hash1_id != TileHWID::NOT_VALID_HASH) ?
106  badChannels->getChannelStatus(m_tileHWID->channel_id(hash1_id)) : m_defaultStatus;
107 
108  //=== status of 2. connected channel
109  TileBchStatus channel2_status = (hash2_id != TileHWID::NOT_VALID_HASH) ?
110  badChannels->getChannelStatus(m_tileHWID->channel_id(hash2_id)) : m_defaultStatus;
111 
112  //=== set cell status depending on channel status
113  if (channel1_status.isBad() && channel2_status.isBad()) {
115  } else if (channel1_status.isAffected() || channel2_status.isAffected()) {
117  }
118 
119  return CaloBadChannel(res);
120 }
121 
122 //
123 //____________________________________________________________________
124 const TileBchStatus&
125 TileBadChanTool::getAdcStatus(const HWIdentifier& adc_id, const EventContext& ctx) const {
126 
128  return badChannels->getAdcStatus(adc_id);
129 
130 }
131 
132 //
133 //____________________________________________________________________
134 const TileBchStatus&
136 
137  const EventContext& ctx{Gaudi::Hive::currentContext()};
138  return getAdcStatus(adc_id, ctx);
139 
140 }
141 
142 //
143 //____________________________________________________________________
144 const TileBchStatus&
145 TileBadChanTool::getAdcStatus(IdentifierHash hash_id, unsigned int adc) const {
146 
147  if (hash_id != TileHWID::NOT_VALID_HASH) {
148  HWIdentifier adc_id = m_tileHWID->adc_id(hash_id, adc);
149 
151  return badChannels->getAdcStatus(adc_id);
152  } else {
153  return m_defaultStatus;
154  }
155 
156 }
157 
158 //
159 //____________________________________________________________________
160 const TileBchStatus&
162 
163  if (hash_id != TileHWID::NOT_VALID_HASH) {
165 
167  return badChannels->getChannelStatus(channel_id);
168  } else {
169  return m_defaultStatus;
170  }
171 
172 }
173 
174 //
175 //____________________________________________________________________
176 const TileBchStatus&
177 TileBadChanTool::getChannelStatus(const HWIdentifier& channel_id, const EventContext& ctx) const {
178 
180  return badChannels->getChannelStatus(channel_id);
181 
182 }
183 
184 //
185 //____________________________________________________________________
186 const TileBchStatus&
188 
189  const EventContext& ctx{Gaudi::Hive::currentContext()};
190  return getChannelStatus(channel_id, ctx);
191 
192 }
193 
194 //
195 //____________________________________________________________________
196 const TileBchStatus&
197 TileBadChanTool::getChannelStatus(unsigned int drawerIdx, unsigned int channel, const EventContext& ctx) const {
198 
200 
202  return badChannels->getChannelStatus(channel_id);
203 
204 }
205 
206 //
207 //____________________________________________________________________
208 const TileBchStatus&
209 TileBadChanTool::getChannelStatus(unsigned int drawerIdx, unsigned int channel) const {
210 
211  const EventContext& ctx{Gaudi::Hive::currentContext()};
212  return getChannelStatus(drawerIdx, channel, ctx);
213 
214 }
215 
216 //
217 //____________________________________________________________________
218 const TileBchStatus&
219 TileBadChanTool::getAdcStatus(unsigned int drawerIdx, unsigned int channel, unsigned int adc, const EventContext& ctx) const {
220 
221  HWIdentifier adc_id = m_tileHWID->adc_id(m_roses[drawerIdx], m_drawers[drawerIdx], channel, adc);
222 
224  return badChannels->getAdcStatus(adc_id);
225 
226 }
227 
228 //
229 //____________________________________________________________________
230 const TileBchStatus&
231 TileBadChanTool::getAdcStatus(unsigned int drawerIdx, unsigned int channel, unsigned int adc) const {
232 
233  const EventContext& ctx{Gaudi::Hive::currentContext()};
234  return getAdcStatus(drawerIdx, channel, adc, ctx);
235 
236 }
237 
238 
241 }
242 
243 const std::vector<float>& TileBadChanTool::getTripsProbabilities(unsigned int ros, const EventContext& ctx) const {
244 
246 
247  const std::vector<std::vector<float>>& tripsProbs = badChannels->getTripsProbabilities();
248 
249  if (!tripsProbs.empty()) {
250  return tripsProbs.at(ros - 1);
251  }
252 
253  return m_defaultTripsProbs;
254 }
255 
256 const std::vector<float>& TileBadChanTool::getTripsProbabilities(unsigned int ros) const {
257 
258  const EventContext& ctx{Gaudi::Hive::currentContext()};
259  return getTripsProbabilities(ros, ctx);
260 
261 }
262 
263 
264 bool TileBadChanTool::isDrawerMasked(unsigned int frag_id, const EventContext& ctx) const {
265 
267  const std::vector<int>& maskedDrawers = badChannels->getMaskedDrawers();
268 
269  return std::binary_search (maskedDrawers.begin(),
270  maskedDrawers.end(),
271  frag_id);
272 }
273 
274 bool TileBadChanTool::isDrawerMasked(unsigned int frag_id) const {
275 
276  const EventContext& ctx{Gaudi::Hive::currentContext()};
277  return isDrawerMasked(frag_id, ctx);
278 
279 }
python.PyKernel.retrieve
def retrieve(aClass, aKey=None)
Definition: PyKernel.py:110
CaloDetDescrElement::onl2
IdentifierHash onl2() const
cell online identifier 2
Definition: Calorimeter/CaloDetDescr/CaloDetDescr/CaloDetDescrElement.h:408
TileBadChannels::getTripsProbabilities
const std::vector< std::vector< float > > & getTripsProbabilities(void) const
Return trips probabilities for all Tile drawers.
Definition: TileBadChannels.h:64
TileBadChanTool::caloStatus
virtual CaloBadChannel caloStatus(const EventContext &ctx, Identifier cell_id) const override
Definition: TileBadChanTool.cxx:85
TileCalibUtils::getMaxDrawer
static unsigned int getMaxDrawer(unsigned int ros)
Returns the maximal channel number for a given drawer.
Definition: TileCalibUtils.cxx:136
plotting.yearwise_efficiency.channel
channel
Definition: yearwise_efficiency.py:24
SG::ReadCondHandle
Definition: ReadCondHandle.h:44
xAOD::uint32_t
setEventNumber uint32_t
Definition: EventInfo_v1.cxx:127
TileCalibUtils::MAX_DRAWERIDX
static const unsigned int MAX_DRAWERIDX
Maximal drawer index
Definition: TileCalibUtils.h:143
TileBadChanTool::isDrawerMasked
virtual bool isDrawerMasked(unsigned int frag_id, const EventContext &ctx) const override
Check if Tile drawer is masked completely.
Definition: TileBadChanTool.cxx:264
TileCalibUtils
Static class providing several utility functions and constants.
Definition: TileCalibUtils.h:15
TileBadChannels::getMaskedDrawers
const std::vector< int > & getMaskedDrawers(void) const
Return Tile drawers masked completely.
Definition: TileBadChannels.h:77
CaloDetDescrElement
This class groups all DetDescr information related to a CaloCell. Provides a generic interface for al...
Definition: Calorimeter/CaloDetDescr/CaloDetDescr/CaloDetDescrElement.h:66
TileBchStatus
Class holding bad channel problems.
Definition: TileBchStatus.h:20
CaloBadChannel::deadBit
@ deadBit
Definition: CaloBadChannel.h:14
TileBadChanTool::getTripsProbabilities
virtual const std::vector< float > & getTripsProbabilities(unsigned int ros, const EventContext &ctx) const override
Return trips probabilities for all Tile drawers.
Definition: TileBadChanTool.cxx:243
CaloBadChannel::affectedBit
@ affectedBit
Definition: CaloBadChannel.h:14
TileCalibUtils.h
TileBadChanTool.h
HWIdentifier
Definition: HWIdentifier.h:13
TileBadChanTool::getAdcStatus
const TileBchStatus & getAdcStatus(IdentifierHash hash_id, unsigned int adc) const
Definition: TileBadChanTool.cxx:145
TileBadChanTool::m_drawers
std::vector< unsigned int > m_drawers
Definition: TileBadChanTool.h:151
TileBadChanTool::TileBadChanTool
TileBadChanTool(const std::string &type, const std::string &name, const IInterface *parent)
Definition: TileBadChanTool.cxx:27
Example_ReadSampleNoise.drawer
drawer
Definition: Example_ReadSampleNoise.py:39
ReadCondHandle.h
TileDetDescrManager.h
CaloDetDescrElement::onl1
IdentifierHash onl1() const
cell online identifier 1
Definition: Calorimeter/CaloDetDescr/CaloDetDescr/CaloDetDescrElement.h:404
TileBadChanTool::getChannelStatus
const TileBchStatus & getChannelStatus(IdentifierHash hash_id) const
Definition: TileBadChanTool.cxx:161
TileHWID.h
ATH_MSG_ERROR
#define ATH_MSG_ERROR(x)
Definition: AthMsgStreamMacros.h:33
TileBadChanTool::~TileBadChanTool
virtual ~TileBadChanTool()
Definition: TileBadChanTool.cxx:39
TileBadChanTool::m_tileHWID
const TileHWID * m_tileHWID
Definition: TileBadChanTool.h:142
TileBadChanTool::finalize
virtual StatusCode finalize() override
Definition: TileBadChanTool.cxx:75
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
ATH_MSG_DEBUG
#define ATH_MSG_DEBUG(x)
Definition: AthMsgStreamMacros.h:29
TileBadChannels::encodeStatus
static uint32_t encodeStatus(const TileBchStatus &status)
Definition: TileBadChannels.cxx:52
TileBadChanTool::initialize
virtual StatusCode initialize() override
Definition: TileBadChanTool.cxx:46
res
std::pair< std::vector< unsigned int >, bool > res
Definition: JetGroupProductTest.cxx:14
createCoolChannelIdFile.channel_id
channel_id
Definition: createCoolChannelIdFile.py:52
test_pyathena.parent
parent
Definition: test_pyathena.py:15
TileBchStatus::isAffected
bool isAffected() const
Definition: TileBchStatus.h:137
CaloBadChannel::BitWord
unsigned int BitWord
Definition: CaloBadChannel.h:12
ATH_CHECK
#define ATH_CHECK
Definition: AthCheckMacros.h:40
TileBadChanTool::m_tileMgr
const TileDetDescrManager * m_tileMgr
Definition: TileBadChanTool.h:140
TileCalibUtils::MAX_ROS
static const unsigned int MAX_ROS
Number of ROSs
Definition: TileCalibUtils.h:138
maskDeadModules.ros
ros
Definition: maskDeadModules.py:35
TileDetDescrManager::get_cell_element
CaloDetDescrElement * get_cell_element(unsigned int cell_hash) const
Definition: TileDetDescrManager.h:156
TileBadChannels::getChannelStatus
const TileBchStatus & getChannelStatus(const HWIdentifier channel_id) const
Return Tile channel status.
Definition: TileBadChannels.cxx:35
TileHWID::NOT_VALID_HASH
@ NOT_VALID_HASH
Definition: TileHWID.h:314
python.PyKernel.detStore
detStore
Definition: PyKernel.py:41
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:228
TileHWID::channel_id
HWIdentifier channel_id(int ros, int drawer, int channel) const
channel HWIdentifer
Definition: TileHWID.cxx:199
errorcheck.h
Helpers for checking error return status codes and reporting errors.
SG::CondHandleKey::initialize
StatusCode initialize(bool used=true)
TileBadChanTool::m_roses
std::vector< unsigned int > m_roses
Definition: TileBadChanTool.h:150
TileBadChanTool::m_defaultTripsProbs
std::vector< float > m_defaultTripsProbs
Definition: TileBadChanTool.h:148
CaloBadChannel::setBit
static void setBit(ProblemType pb, BitWord &word, bool value=true)
Sets the bit corresponding to "pb" inside the word passed as second argument to "value".
Definition: CaloBadChannel.h:38
TileBadChannels::getAdcStatus
const TileBchStatus & getAdcStatus(const HWIdentifier adc_id) const
Return Tile ADC status.
Definition: TileBadChannels.cxx:24
TileHWID::adc_id
HWIdentifier adc_id(int ros, int drawer, int channel, int adc) const
adc HWIdentifer
Definition: TileHWID.cxx:229
TileBadChanTool::m_badChannelsKey
SG::ReadCondHandleKey< TileBadChannels > m_badChannelsKey
Name of TileBadChannels in condition store.
Definition: TileBadChanTool.h:137
ReadFloatFromCool.adc
adc
Definition: ReadFloatFromCool.py:48
python.CaloScaleNoiseConfig.type
type
Definition: CaloScaleNoiseConfig.py:78
F
#define F(x, y, z)
Definition: MD5.cxx:112
TileBadChanTool::encodeStatus
virtual uint32_t encodeStatus(const TileBchStatus &status) const override
Definition: TileBadChanTool.cxx:239
CaloBadChannel
Definition: CaloBadChannel.h:8
merge.status
status
Definition: merge.py:17
TileCalibUtils::getDrawerIdx
static unsigned int getDrawerIdx(unsigned int ros, unsigned int drawer)
Returns a drawer hash.
Definition: TileCalibUtils.cxx:60
IdentifierHash
This is a "hash" representation of an Identifier. This encodes a 32 bit index which can be used to lo...
Definition: IdentifierHash.h:25
TileBadChanTool::m_defaultStatus
TileBchStatus m_defaultStatus
Definition: TileBadChanTool.h:143
TileBchStatus::isBad
bool isBad() const
Definition: TileBchStatus.h:145
Identifier
Definition: IdentifierFieldParser.cxx:14