ATLAS Offline Software
TileRODMonitorAlgorithm.cxx
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
3 */
4 
8 
9 #include "StoreGate/ReadHandle.h"
11 
13 
14  ATH_MSG_DEBUG("in initialize()");
15 
16  // initialize superclass
18 
20 
22 
23  ATH_CHECK( m_cablingSvc.retrieve() );
24  m_cabling = m_cablingSvc->cablingService();
25 
32 
35  }
36 
37  if (m_timeRange.size() != 2) {
38  ATH_MSG_FATAL( "Size of TimeRange should be 2 (from,to), but is " << m_timeRange.size() );
39  return StatusCode::FAILURE;
40  }
41 
42  using namespace Monitored;
43  using Tile = TileCalibUtils;
44 
45  int nL1Triggers = getNumberOfL1Triggers();
46 
47  m_energyDiffGroups = buildToolMap<std::vector<int>>(m_tools, "TileDspEnergyDiff",
48  Tile::MAX_ROS - 1, nL1Triggers);
49 
50  m_energyDiffVsTimeGroups = buildToolMap<std::vector<int>>(m_tools, "TileDspEnergyDiffVsTime",
51  Tile::MAX_ROS - 1, nL1Triggers);
52 
53  m_energyDiffVsEnergyGroups = buildToolMap<std::vector<int>>(m_tools, "TileDspEnergyDiffVsEnergy",
54  Tile::MAX_ROS - 1, nL1Triggers);
55 
56  m_timeDiffGroups = buildToolMap<std::vector<int>>(m_tools, "TileDspTimeDiff",
57  Tile::MAX_ROS - 1, nL1Triggers);
58 
59  m_timeDiffVsTimeGroups = buildToolMap<std::vector<int>>(m_tools, "TileDspTimeDiffVsTime",
60  Tile::MAX_ROS - 1, nL1Triggers);
61 
62  m_timeDiffVsEnergyGroups = buildToolMap<std::vector<int>>(m_tools, "TileDspTimeDiffVsEnergy",
63  Tile::MAX_ROS - 1, nL1Triggers);
64 
65  m_dspChanTimeGroups = buildToolMap<std::vector<int>>(m_tools, "TileDspChannelTime",
66  Tile::MAX_ROS - 1, nL1Triggers);
67 
69  ATH_CHECK( m_robSvc.retrieve() );
70 
71  if (m_nROBs > MAX_TILE_ROBS) {
72  int nROBsSetUp = m_nROBs;
74  ATH_MSG_INFO( "Decreasing number of ROBs from " << nROBsSetUp << " to " << m_nROBs );
75  }
76 
77  m_tileRobIds.reserve((Tile::MAX_ROS - 1) * m_nROBs); // Partitions * fragments
78  for (unsigned int rodId : {0x510000, 0x520000, 0x530000, 0x540000}) {
79  for (unsigned int fragment = 0; fragment < m_nROBs; ++fragment) {
80  m_tileRobIds.push_back(rodId + fragment);
81  }
82  }
83 
84  m_rodFragSizeMapGroups = buildToolMap<int>(m_tools, "TileRodFragmentMapSize", nL1Triggers);
85  m_rodFragSizeLBGroups = buildToolMap<int>(m_tools, "TileRodFragmentSizeLB", nL1Triggers);
86  }
87 
88  return StatusCode::SUCCESS;
89 }
90 
91 
92 StatusCode TileRODMonitorAlgorithm::fillHistograms( const EventContext& ctx ) const {
93 
94  using Tile = TileCalibUtils;
95 
96  // In case you want to measure the execution time
97  auto timer = Monitored::Timer("TIME_execute");
98 
99  const xAOD::EventInfo* eventInfo = GetEventInfo(ctx).get();
100 
101  ATH_MSG_DEBUG(*eventInfo);
102 
103  const TileDQstatus* dqStatus = SG::makeHandle(m_DQstatusKey, ctx).get();
104  const TileDCSState* dcsState = m_checkDCS ? SG::ReadCondHandle(m_DCSStateKey, ctx).cptr() : nullptr;
105 
108 
110  ATH_CHECK( rawChannelContainer.isValid() );
111 
112  TileRawChannelUnit::UNIT rawChannelUnit = rawChannelContainer->get_unit();
113 
114  float referenceTimes[Tile::MAX_ROS - 1][Tile::MAX_DRAWER][Tile::MAX_CHAN] = {{{0}}};
115  float referenceEnergies[Tile::MAX_ROS - 1][Tile::MAX_DRAWER][Tile::MAX_CHAN] = {{{0}}};
116 
117  for (const TileRawChannelCollection* rawChannelCollection : *rawChannelContainer) {
118  if (rawChannelCollection->empty() ) continue;
119 
120  HWIdentifier adc_id = rawChannelCollection->front()->adc_HWID();
121  int ros = m_tileHWID->ros(adc_id);
122  int drawer = m_tileHWID->drawer(adc_id);
123  unsigned int drawerIdx = TileCalibUtils::getDrawerIdx(ros, drawer);
124  int partition = ros - 1;
125 
126  bool checkDQ = true;
127 
128  int fragId = rawChannelCollection->identify();
129  if (std::binary_search(m_fragIDsToIgnoreDMUerrors.begin(), m_fragIDsToIgnoreDMUerrors.end(), fragId)) {
130  checkDQ = false;
131  }
132 
133  for (const TileRawChannel* rawChannel : *rawChannelCollection) {
134 
135  adc_id = rawChannel->adc_HWID();
136  int channel = m_tileHWID->channel(adc_id);
137  int adc = m_tileHWID->adc(adc_id);
138 
140  ATH_MSG_VERBOSE(m_tileHWID->to_string(adc_id) << ": channlel is disconnected => skipping!");
141  continue;
142  }
143 
144  if (checkDQ && !(dqStatus->isAdcDQgood(ros, drawer, channel, adc))) {
145  ATH_MSG_VERBOSE(m_tileHWID->to_string(adc_id) << ": DQ is BAD => skipping!");
146  continue;
147  }
148 
149  if (m_checkDCS && dcsState->isStatusBad(ros, drawer, channel)) {
150  ATH_MSG_VERBOSE(m_tileHWID->to_string(adc_id) << ": DCS is Bad => skipping!");
151  continue;
152  }
153 
154  if (badChannels->getAdcStatus(adc_id).isBad()) {
155  ATH_MSG_VERBOSE(m_tileHWID->to_string(adc_id) << ": Status is BAD => skipping!");
156  continue;
157  }
158 
159  if (ros > 2) { // Check if channel is MBTS, no MBTS in LB
160  int pmt;
161  int index;
163  if (index < -1) {
164  ATH_MSG_VERBOSE(m_tileHWID->to_string(adc_id) << ": MBTS => skipping!");
165  continue;
166  }
167  }
168 
169  float amplitude = rawChannel->amplitude();
170  if (rawChannelUnit != m_comparisonUnit) {
171  amplitude = emScale->calibrateChannel(drawerIdx, channel, adc, amplitude, rawChannelUnit, m_finalRawChannelUnit);
172  }
173 
174  float time = rawChannel->uncorrTime();
175  if (amplitude > m_energyThreshold && time > m_timeRange[0] && time < m_timeRange[1]) {
176  referenceEnergies[partition][drawer][channel] = amplitude;
177  referenceTimes[partition][drawer][channel] = time;
178  }
179  }
180  }
181 
182  std::vector<float> timeDiffs[Tile::MAX_ROS - 1];
183  std::vector<float> energyDiffs[Tile::MAX_ROS - 1];
184  std::vector<float> offlineEnergies[Tile::MAX_ROS - 1];
185  std::vector<float> offlineTimes[Tile::MAX_ROS - 1];
186 
187  std::vector<float> dspTimes[Tile::MAX_ROS - 1];
188  std::vector<float> dspTimesChannels[Tile::MAX_ROS - 1];
189  std::vector<float> dspTimesDrawers[Tile::MAX_ROS - 1];
190 
192  ATH_CHECK( dspRawChannelContainer.isValid() );
193 
194  TileRawChannelUnit::UNIT dspRawChannelUnit = dspRawChannelContainer->get_unit();
195  for (const TileRawChannelCollection* rawChannelCollection : *dspRawChannelContainer) {
196  if (rawChannelCollection->empty() ) continue;
197 
198  HWIdentifier adc_id = rawChannelCollection->front()->adc_HWID();
199  int ros = m_tileHWID->ros(adc_id);
200  int drawer = m_tileHWID->drawer(adc_id);
201  unsigned int drawerIdx = TileCalibUtils::getDrawerIdx(ros, drawer);
202  int partition = ros - 1;
203 
204  for (const TileRawChannel* rawChannel : *rawChannelCollection) {
205  adc_id = rawChannel->adc_HWID();
206  int channel = m_tileHWID->channel(adc_id);
207  int adc = m_tileHWID->adc(adc_id);
208 
209  float offlineEnergy = referenceEnergies[partition][drawer][channel];
210  if (offlineEnergy > m_energyThreshold) {
211  offlineEnergies[partition].push_back(offlineEnergy);
212 
213  float offlineTime = referenceTimes[partition][drawer][channel];
214  offlineTimes[partition].push_back(offlineTime);
215 
216  float dspEnergy = rawChannel->amplitude();
217  float dspTime = rawChannel->uncorrTime();
218  dspTimes[partition].push_back(dspTime);
219  dspTimesDrawers[partition].push_back(drawer);
220  dspTimesChannels[partition].push_back(channel);
221 
222  if (dspRawChannelUnit != m_finalRawChannelUnit) {
223  dspEnergy = emScale->calibrateChannel(drawerIdx, channel, adc, dspEnergy, dspRawChannelUnit, m_finalRawChannelUnit);
224  }
225 
226  float energyDiff = (dspEnergy - offlineEnergy) / offlineEnergy;
227  energyDiffs[partition].push_back(energyDiff);
228 
229  float timeDiff = dspTime - offlineTime;
230  timeDiffs[partition].push_back(timeDiff);
231 
232  ATH_MSG_VERBOSE(m_tileHWID->to_string(adc_id) << ": (DSP/OFFLINE)"
233  << ", energy " << dspEnergy << "/" << offlineEnergy
234  << ", time " << dspTime << "/" << offlineTime);
235  }
236  }
237  }
238 
239  // Indices of L1 trigger histograms to be filled in the current event
240  std::vector<int> l1TriggersIndices = getL1TriggerIndices(eventInfo->level1TriggerType());
241 
242  for (unsigned int partition = 0; partition < Tile::MAX_ROS - 1; ++partition) {
243  if (!energyDiffs[partition].empty()) {
244  auto monTime = Monitored::Collection("time", offlineTimes[partition]);
245  auto monEnergy = Monitored::Collection("energy", offlineEnergies[partition]);
246  auto monEnergyDiff = Monitored::Collection("energyDiff", energyDiffs[partition]);
247  for (int l1TriggerIdx : l1TriggersIndices) {
248  fill(m_tools[m_energyDiffGroups[partition][l1TriggerIdx]], monEnergyDiff);
249  fill(m_tools[m_energyDiffVsTimeGroups[partition][l1TriggerIdx]], monTime, monEnergyDiff);
250  fill(m_tools[m_energyDiffVsEnergyGroups[partition][l1TriggerIdx]], monEnergy, monEnergyDiff);
251  }
252  }
253 
254  if (!timeDiffs[partition].empty()) {
255  auto monTime = Monitored::Collection("time", offlineTimes[partition]);
256  auto monEnergy = Monitored::Collection("energy", offlineEnergies[partition]);
257  auto monTimeDiff = Monitored::Collection("timeDiff", timeDiffs[partition]);
258  for (int l1TriggerIdx : l1TriggersIndices) {
259  fill(m_tools[m_timeDiffGroups[partition][l1TriggerIdx]], monTimeDiff);
260  fill(m_tools[m_timeDiffVsTimeGroups[partition][l1TriggerIdx]], monTime, monTimeDiff);
261  fill(m_tools[m_timeDiffVsEnergyGroups[partition][l1TriggerIdx]], monEnergy, monTimeDiff);
262  }
263  }
264  if (!timeDiffs[partition].empty()) {
265  auto monTime = Monitored::Collection("time", offlineTimes[partition]);
266  auto monEnergy = Monitored::Collection("energy", offlineEnergies[partition]);
267  auto monTimeDiff = Monitored::Collection("timeDiff", timeDiffs[partition]);
268  for (int l1TriggerIdx : l1TriggersIndices) {
269  fill(m_tools[m_timeDiffGroups[partition][l1TriggerIdx]], monTimeDiff);
270  fill(m_tools[m_timeDiffVsTimeGroups[partition][l1TriggerIdx]], monTime, monTimeDiff);
271  fill(m_tools[m_timeDiffVsEnergyGroups[partition][l1TriggerIdx]], monEnergy, monTimeDiff);
272  }
273  }
274 
275  if (!dspTimes[partition].empty()) {
276  auto monTime = Monitored::Collection("time", dspTimes[partition]);
277  auto monModule = Monitored::Collection("module", dspTimesDrawers[partition]);
278  auto monChannel = Monitored::Collection("channel", dspTimesChannels[partition]);
279  for (int l1TriggerIdx : l1TriggersIndices) {
280  fill(m_tools[m_dspChanTimeGroups[partition][l1TriggerIdx]], monModule, monChannel, monTime);
281  }
282  }
283 
284  }
285 
286 
288  int allTileRodFragsSize = 0;
289  std::vector<int> roses;
290  std::vector<int> fragments;
291  std::vector<int> fragmentSizes;
292 
293  std::vector<const OFFLINE_FRAGMENTS_NAMESPACE::ROBFragment*> robFragments;
294  m_robSvc->getROBData(m_tileRobIds, robFragments);
295 
296  for (const OFFLINE_FRAGMENTS_NAMESPACE::ROBFragment* robFragment : robFragments) {
297  uint32_t rodSourceId = robFragment->rod_source_id();
298  unsigned int ros = (rodSourceId & 0x0F0000) >> 16;
299  unsigned int fragment = rodSourceId & 0x0000FF;
300  int rodFragmentSize = robFragment->rod_fragment_size_word();
301 
302  allTileRodFragsSize += rodFragmentSize;
303  if (ros > 0 && ros < Tile::MAX_ROS && fragment < m_nROBs) {
304  roses.push_back(ros);
305  fragments.push_back(fragment);
306  fragmentSizes.push_back(rodFragmentSize);
307  ATH_MSG_VERBOSE("ROS = " << ros << ", ROD fragment = " << fragment << ", size = " << rodFragmentSize);
308  }
309  }
310 
311  ATH_MSG_DEBUG( "All Tile ROD fragemsts size: " << allTileRodFragsSize << " in LB " << eventInfo->lumiBlock());
312 
313  auto lumiBlock = Monitored::Scalar<int>("lumiBlock", eventInfo->lumiBlock());
314  auto monRodFragsSize = Monitored::Scalar<int>("allRodFragsSize", allTileRodFragsSize);
315  for (int l1TriggerIdx : l1TriggersIndices) {
316  fill(m_tools[m_rodFragSizeLBGroups[l1TriggerIdx]], lumiBlock, monRodFragsSize);
317  }
318 
319  if (!fragmentSizes.empty()) {
320  auto monPartition = Monitored::Collection("partition", roses);
321  auto monFragment = Monitored::Collection("fragment", fragments);
322  auto monFragmentSize = Monitored::Collection("rodFragSize", fragmentSizes);
323  for (int l1TriggerIdx : l1TriggersIndices) {
324  fill(m_tools[m_rodFragSizeMapGroups[l1TriggerIdx]], monFragment, monPartition, monFragmentSize);
325  }
326  }
327  }
328 
329 
330  fill("TileRODMonExecuteTime", timer);
331 
332  return StatusCode::SUCCESS;
333 }
python.PyKernel.retrieve
def retrieve(aClass, aKey=None)
Definition: PyKernel.py:110
TileMonitorAlgorithm::getL1TriggerIndices
std::vector< int > getL1TriggerIndices(uint32_t lvl1TriggerType) const
Return indices of histograms to be filled according fired L1 trigger type.
Definition: TileMonitorAlgorithm.cxx:67
ATH_MSG_FATAL
#define ATH_MSG_FATAL(x)
Definition: AthMsgStreamMacros.h:34
TileRODMonitorAlgorithm::m_finalRawChannelUnit
TileRawChannelUnit::UNIT m_finalRawChannelUnit
Definition: TileRODMonitorAlgorithm.h:103
plotting.yearwise_efficiency.channel
channel
Definition: yearwise_efficiency.py:28
TileRODMonitorAlgorithm::m_nROBs
Gaudi::Property< unsigned int > m_nROBs
Definition: TileRODMonitorAlgorithm.h:56
SG::ReadCondHandle
Definition: ReadCondHandle.h:44
ATH_MSG_INFO
#define ATH_MSG_INFO(x)
Definition: AthMsgStreamMacros.h:31
TileRODMonitorAlgorithm::m_comparisonUnit
Gaudi::Property< unsigned int > m_comparisonUnit
Definition: TileRODMonitorAlgorithm.h:47
TileRODMonitorAlgorithm::m_tileHWID
const TileHWID * m_tileHWID
Definition: TileRODMonitorAlgorithm.h:101
xAOD::uint32_t
setEventNumber uint32_t
Definition: EventInfo_v1.cxx:127
SG::ReadHandle
Definition: StoreGate/StoreGate/ReadHandle.h:70
index
Definition: index.py:1
TileRODMonitorAlgorithm::m_energyDiffVsTimeGroups
std::vector< std::vector< int > > m_energyDiffVsTimeGroups
Definition: TileRODMonitorAlgorithm.h:110
ReadBchFromCool.pmt
pmt
Definition: ReadBchFromCool.py:62
TileRODMonitorAlgorithm::fillHistograms
virtual StatusCode fillHistograms(const EventContext &ctx) const override
adds event to the monitoring histograms
Definition: TileRODMonitorAlgorithm.cxx:92
TileRODMonitorAlgorithm::m_DCSStateKey
SG::ReadCondHandleKey< TileDCSState > m_DCSStateKey
Name of TileDCSState object in condition store.
Definition: TileRODMonitorAlgorithm.h:68
TileRODMonitorAlgorithm::m_timeDiffGroups
std::vector< std::vector< int > > m_timeDiffGroups
Definition: TileRODMonitorAlgorithm.h:112
TileCablingService::h2s_cell_id_index
Identifier h2s_cell_id_index(const HWIdentifier &id, int &index, int &pmt) const
Definition: TileCablingService.cxx:2418
TileCalibUtils.h
ATH_MSG_VERBOSE
#define ATH_MSG_VERBOSE(x)
Definition: AthMsgStreamMacros.h:28
TileRODMonitorAlgorithm::m_DQstatusKey
SG::ReadHandleKey< TileDQstatus > m_DQstatusKey
Definition: TileRODMonitorAlgorithm.h:62
TileRODMonitorAlgorithm::m_timeDiffVsTimeGroups
std::vector< std::vector< int > > m_timeDiffVsTimeGroups
Definition: TileRODMonitorAlgorithm.h:113
empty
bool empty(TH1 *h)
Definition: computils.cxx:294
TileDCSState::isStatusBad
bool isStatusBad(unsigned int ros, unsigned int drawer) const
Return true if given Tile drawer considered as bad by summary drawer states per LVPS otherwise return...
Definition: TileDCSState.h:320
Example_ReadSampleNoise.drawer
drawer
Definition: Example_ReadSampleNoise.py:39
ReadCondHandle.h
TileHWID::channel
int channel(const HWIdentifier &id) const
extract channel field from HW identifier
Definition: TileHWID.h:189
TileRODMonitorAlgorithm::m_checkDCS
Gaudi::Property< bool > m_checkDCS
Definition: TileRODMonitorAlgorithm.h:40
python.utils.AtlRunQueryTimer.timer
def timer(name, disabled=False)
Definition: AtlRunQueryTimer.py:86
AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::detStore
const ServiceHandle< StoreGateSvc > & detStore() const
The standard StoreGateSvc/DetectorStore Returns (kind of) a pointer to the StoreGateSvc.
Definition: AthCommonDataStore.h:95
Monitored::Collection
ValuesCollection< T > Collection(std::string name, const T &collection)
Declare a monitored (double-convertible) collection.
Definition: MonitoredCollection.h:38
TileHWID::ros
int ros(const HWIdentifier &id) const
extract ros field from HW identifier
Definition: TileHWID.h:167
TileRODMonitorAlgorithm::m_energyDiffVsEnergyGroups
std::vector< std::vector< int > > m_energyDiffVsEnergyGroups
Definition: TileRODMonitorAlgorithm.h:111
TileMonitorAlgorithm::initialize
virtual StatusCode initialize() override
initialize
Definition: TileMonitorAlgorithm.cxx:10
SG::makeHandle
SG::ReadCondHandle< T > makeHandle(const SG::ReadCondHandleKey< T > &key, const EventContext &ctx=Gaudi::Hive::currentContext())
Definition: ReadCondHandle.h:270
TileRODMonitorAlgorithm::m_timeDiffVsEnergyGroups
std::vector< std::vector< int > > m_timeDiffVsEnergyGroups
Definition: TileRODMonitorAlgorithm.h:114
TileEMScale::calibrateChannel
float calibrateChannel(unsigned int drawerIdx, unsigned int channel, unsigned int adc, float amplitude, TileRawChannelUnit::UNIT rawDataUnitIn, TileRawChannelUnit::UNIT rawDataUnitOut) const
Calibrate a Tile channel.
Definition: TileEMScale.cxx:136
TileDQstatus
Class that holds Data Quality fragment information and provides functions to extract the data quality...
Definition: TileDQstatus.h:49
TileHWID::adc
int adc(const HWIdentifier &id) const
extract adc field from HW identifier
Definition: TileHWID.h:193
Tile
Definition: TileVolumeBuilder.h:43
TileHWID.h
eformat::ROBFragment
Definition: L1CaloBsDecoderUtil.h:12
Monitored
Generic monitoring tool for athena components.
Definition: GenericMonitoringTool.h:30
TileRODMonitorAlgorithm::m_cabling
const TileCablingService * m_cabling
Definition: TileRODMonitorAlgorithm.h:102
TileRODMonitorAlgorithm::m_fillRODfragSizeHistograms
Gaudi::Property< bool > m_fillRODfragSizeHistograms
Definition: TileRODMonitorAlgorithm.h:59
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
TileRawChannel
Definition: TileRawChannel.h:35
ATH_CHECK
#define ATH_CHECK
Definition: AthCheckMacros.h:40
TileRODMonitorAlgorithm::m_energyDiffGroups
std::vector< std::vector< int > > m_energyDiffGroups
Definition: TileRODMonitorAlgorithm.h:109
TileRODMonitorAlgorithm::initialize
virtual StatusCode initialize() override
initialize
Definition: TileRODMonitorAlgorithm.cxx:12
AthMonitorAlgorithm::fill
void fill(const ToolHandle< GenericMonitoringTool > &groupHandle, std::vector< std::reference_wrapper< Monitored::IMonitoredVariable >> &&variables) const
Fills a vector of variables to a group by reference.
SG::VarHandleKey::initialize
StatusCode initialize(bool used=true)
If this object is used as a property, then this should be called during the initialize phase.
Definition: AthToolSupport/AsgDataHandles/Root/VarHandleKey.cxx:103
TileRODMonitorAlgorithm::m_badChannelsKey
SG::ReadCondHandleKey< TileBadChannels > m_badChannelsKey
Name of TileBadChannels in condition store.
Definition: TileRODMonitorAlgorithm.h:80
maskDeadModules.ros
ros
Definition: maskDeadModules.py:35
AthMonitorAlgorithm::GetEventInfo
SG::ReadHandle< xAOD::EventInfo > GetEventInfo(const EventContext &) const
Return a ReadHandle for an EventInfo object (get run/event numbers, etc.)
Definition: AthMonitorAlgorithm.cxx:107
TileRODMonitorAlgorithm::m_emScaleKey
SG::ReadCondHandleKey< TileEMScale > m_emScaleKey
Name of TileEMScale in condition store.
Definition: TileRODMonitorAlgorithm.h:86
TileRawChannelUnit::UNIT
UNIT
Definition: TileRawChannelUnit.h:16
TileRODMonitorAlgorithm::m_energyThreshold
Gaudi::Property< float > m_energyThreshold
Definition: TileRODMonitorAlgorithm.h:50
xAOD::EventInfo_v1::lumiBlock
uint32_t lumiBlock() const
The current event's luminosity block number.
SG::ReadHandle::isValid
virtual bool isValid() override final
Can the handle be successfully dereferenced?
TileDQstatus::isAdcDQgood
bool isAdcDQgood(int partition, int drawer, int ch, int gain) const
returns status of single ADC returns False if there are any errors
Definition: TileDQstatus.cxx:178
TileRODMonitorAlgorithm::m_timeRange
Gaudi::Property< std::vector< float > > m_timeRange
Definition: TileRODMonitorAlgorithm.h:53
TileRODMonitorAlgorithm::m_rodFragSizeMapGroups
std::vector< int > m_rodFragSizeMapGroups
Definition: TileRODMonitorAlgorithm.h:105
AthMonitorAlgorithm::m_tools
ToolHandleArray< GenericMonitoringTool > m_tools
Array of Generic Monitoring Tools.
Definition: AthMonitorAlgorithm.h:338
TileRawChannelCollection
Definition: TileRawChannelCollection.h:12
SG::CondHandleKey::initialize
StatusCode initialize(bool used=true)
TileRODMonitorAlgorithm::m_cablingSvc
ServiceHandle< TileCablingSvc > m_cablingSvc
Name of Tile cabling service.
Definition: TileRODMonitorAlgorithm.h:92
xAOD::EventInfo_v1
Class describing the basic event information.
Definition: EventInfo_v1.h:43
TileBadChannels::getAdcStatus
const TileBchStatus & getAdcStatus(const HWIdentifier adc_id) const
Return Tile ADC status.
Definition: TileBadChannels.cxx:24
TileRODMonitorAlgorithm.h
DeMoScan.index
string index
Definition: DeMoScan.py:362
TileCablingService::isDisconnected
bool isDisconnected(int ros, int drawer, int channel) const
Definition: TileCablingService.cxx:2461
TileHWID::drawer
int drawer(const HWIdentifier &id) const
extract drawer field from HW identifier
Definition: TileHWID.h:171
CaloSwCorrections.time
def time(flags, cells_name, *args, **kw)
Definition: CaloSwCorrections.py:242
TileMonitorAlgorithm::getNumberOfL1Triggers
int getNumberOfL1Triggers(void) const
Return number of L1 triggers for which histograms should be filled.
Definition: TileMonitorAlgorithm.h:66
ReadFloatFromCool.adc
adc
Definition: ReadFloatFromCool.py:48
TileRawDataContainer::get_unit
UNIT get_unit() const
Definition: TileRawDataContainer.h:60
TileRODMonitorAlgorithm::m_rawChannelContainerKey
SG::ReadHandleKey< TileRawChannelContainer > m_rawChannelContainerKey
Definition: TileRODMonitorAlgorithm.h:71
TileRODMonitorAlgorithm::m_tileRobIds
std::vector< uint32_t > m_tileRobIds
Definition: TileRODMonitorAlgorithm.h:117
python.Classes.TileCalibUtils
TileCalibUtils
Definition: TileCalib/TileCalibBlobObjs/python/Classes.py:5
StateLessPT_NewConfig.partition
partition
Definition: StateLessPT_NewConfig.py:49
xAOD::EventInfo_v1::level1TriggerType
uint16_t level1TriggerType() const
The Level-1 trigger type.
TileRODMonitorAlgorithm::m_robSvc
ServiceHandle< IROBDataProviderSvc > m_robSvc
Name of ROB data provider service.
Definition: TileRODMonitorAlgorithm.h:98
TileDCSState
Condition object to keep Tile DCS status from DB.
Definition: TileDCSState.h:24
TileRODMonitorAlgorithm::MAX_TILE_ROBS
static constexpr int MAX_TILE_ROBS
Definition: TileRODMonitorAlgorithm.h:118
TileRODMonitorAlgorithm::m_fragIDsToIgnoreDMUerrors
Gaudi::Property< std::vector< int > > m_fragIDsToIgnoreDMUerrors
Definition: TileRODMonitorAlgorithm.h:44
TileCalibUtils::getDrawerIdx
static unsigned int getDrawerIdx(unsigned int ros, unsigned int drawer)
Returns a drawer hash.
Definition: TileCalibUtils.cxx:60
TileAANtupleConfig.rawChannelContainer
rawChannelContainer
Definition: TileAANtupleConfig.py:120
Monitored::Scalar
Declare a monitored scalar variable.
Definition: MonitoredScalar.h:34
TileHWID::to_string
std::string to_string(const HWIdentifier &id, int level=0) const
extract all fields from HW identifier HWIdentifier get_all_fields ( const HWIdentifier & id,...
Definition: TileHWID.cxx:49
ReadHandle.h
Handle class for reading from StoreGate.
xAOD::lumiBlock
setTeId lumiBlock
Definition: L2StandAloneMuon_v1.cxx:327
TileRODMonitorAlgorithm::m_dspRawChannelContainerKey
SG::ReadHandleKey< TileRawChannelContainer > m_dspRawChannelContainerKey
Definition: TileRODMonitorAlgorithm.h:74
TileRODMonitorAlgorithm::m_dspChanTimeGroups
std::vector< std::vector< int > > m_dspChanTimeGroups
Definition: TileRODMonitorAlgorithm.h:115
Monitored::Timer
A monitored timer.
Definition: MonitoredTimer.h:32
TileRODMonitorAlgorithm::m_rodFragSizeLBGroups
std::vector< int > m_rodFragSizeLBGroups
Definition: TileRODMonitorAlgorithm.h:106
TileRawChannelUnit::OnlineMegaElectronVolts
@ OnlineMegaElectronVolts
Definition: TileRawChannelUnit.h:24
SG::ReadCondHandle::cptr
const_pointer_type cptr()
Definition: ReadCondHandle.h:67