ATLAS Offline Software
TileTBCellMonitorAlgorithm.cxx
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration
3 */
4 
6 #include "AthenaKernel/Units.h"
11 #include "TileEvent/TileCell.h"
12 
13 #include "CaloIdentifier/TileID.h"
14 #include "StoreGate/ReadHandle.h"
15 
16 #include <algorithm>
17 #include <string>
18 
19 using Athena::Units::GeV;
20 
22 
23  ATH_MSG_INFO("in initialize()");
25 
27 
28  ATH_CHECK( m_cablingSvc.retrieve() );
29  m_cabling = m_cablingSvc->cablingService();
30 
33 
34  std::vector<std::string> modules;
35  for (int fragID : m_fragIDs) {
36  int ros = fragID >> 8;
37  int drawer = fragID & 0x3F;
38  modules.push_back(TileCalibUtils::getDrawerString(ros, drawer));
40  }
41 
42  std::ostringstream os;
43  if ( m_fragIDs.size() != 0) {
44  std::sort(m_fragIDs.begin(), m_fragIDs.end());
45  for (int fragID : m_fragIDs) {
46  unsigned int ros = fragID >> 8;
47  unsigned int drawer = fragID & 0xFF;
49  os << " " << module << "/0x" << std::hex << fragID << std::dec;
50  }
51  } else {
52  os << "NONE";
53  }
54 
55  ATH_MSG_INFO("Monitored modules/frag ID:" << os.str());
56 
57 
58  std::map<std::string, unsigned int> roses = { {"AUX", 0}, {"LBA", 1}, {"LBC", 2}, {"EBA", 3}, {"EBC", 4} };
59  for (const std::string& maskedModuleChannels : m_masked) {
60 
61  std::string module = maskedModuleChannels.substr(0, 5);
62  std::string partition = module.substr(0, 3);
63  if (roses.count(partition) != 1) {
64  ATH_MSG_WARNING("There no such partition: " << partition << " in module: " << module
65  << " => skip because of bad format: " << maskedModuleChannels);
66  continue;
67  }
68 
69  unsigned int drawer = std::stoi(module.substr(3, 2)) - 1;
71  ATH_MSG_WARNING("There no such drawer: " << drawer + 1 << " in module: " << module
72  << " => skip because of bad format: " << maskedModuleChannels);
73  continue;
74  }
75 
76  unsigned int ros = roses.at(partition);
77  unsigned int drawerIdx = TileCalibUtils::getDrawerIdx(ros, drawer);
78 
79  std::string gain = maskedModuleChannels.substr(5,7);
80  unsigned int adc = std::stoi(gain);
81 
83  ATH_MSG_WARNING("There no such gain: " << gain << " => skip because of bad format: " << maskedModuleChannels);
84  continue;
85  }
86 
87  std::stringstream channels(maskedModuleChannels.substr(7));
88  std::string channel;
89  while (std::getline(channels, channel, ',')) {
90  if (!channel.empty()) {
91  unsigned int chan = std::stoi(channel);
93  ATH_MSG_WARNING("There no such channel: " << chan << " in channels: " << channels.str()
94  << " => skip because of bad format: " << maskedModuleChannels);
95  continue;
96  }
97  m_maskedChannels[drawerIdx][chan] |= (1U << adc);
98  ATH_MSG_INFO(TileCalibUtils::getDrawerString(ros, drawer) << " ch" << chan << (adc ? " HG" : " LG") << ": masked!");
99  }
100  }
101 
102  }
103 
104  for (unsigned int ros = 0; ros < TileCalibUtils::MAX_ROS; ++ros) {
105  for (unsigned int drawer = 0; drawer < TileCalibUtils::getMaxDrawer(ros); ++drawer) {
106  unsigned int drawerIdx = TileCalibUtils::getDrawerIdx(ros, drawer);
107  m_drawerIdxToROS[drawerIdx] = ros;
108  m_drawerIdxToDrawer[drawerIdx] = drawer;
109  }
110  }
111 
112  using namespace Monitored;
113 
114  m_sampleEnergyGroups = buildToolMap<int>(m_tools, "TileSampleEnergy", modules);
115  m_energyGroups = buildToolMap<int>(m_tools, "TileCellEnergy", modules);
116  m_energyDiffGroups = buildToolMap<int>(m_tools, "TileCellEnergyDiff", modules);
117  m_energy2VsEnergy1Groups = buildToolMap<int>(m_tools, "TileCellEnergyLeftVsRightPMT", modules);
118  m_timeGroups = buildToolMap<int>(m_tools, "TileCellTime", modules);
119  m_timeDiffGroups = buildToolMap<int>(m_tools, "TileCellTimeDiff", modules);
120  m_time2VsTime1Groups = buildToolMap<int>(m_tools, "TileCellTimeLeftVsRightPMT", modules);
121 
123  m_channelEnergyGroups = buildToolMap<int>(m_tools, "TileChannelEnergy", modules);
124  m_channelTimeGroups = buildToolMap<int>(m_tools, "TileChannelTime", modules);
125  }
126 
128 
129  return StatusCode::SUCCESS;
130 }
131 
132 
133 StatusCode TileTBCellMonitorAlgorithm::fillHistograms( const EventContext& ctx ) const {
134 
135  // In case you want to measure the execution time
136  auto timer = Monitored::Timer("TIME_execute");
137 
138  constexpr int allSamples = TileID::SAMP_E; // To be used to keep total energy from all samples
139  constexpr int nSamples = allSamples + 1;
140 
141  double sampleEnergy[TileCalibUtils::MAX_DRAWERIDX][nSamples] = {{0}};
142 
144  ATH_CHECK( caloCellContainer.isValid() );
145 
146  if (!caloCellContainer->empty()) {
147  for (const CaloCell* cell : *caloCellContainer) {
148  Identifier id = cell->ID();
149  if (m_tileID->is_tile(id)) {
150  const TileCell* tile_cell = dynamic_cast<const TileCell*>(cell);
151  if (!tile_cell) continue;
152 
153  int drawer = 0; // The same for both channels
154  int channel1 = -1;
155  int channel2 = -1;
156 
157  int ros1 = -1;
158  int ros2 = -1;
159 
160  int drawerIdx1 = -1;
161  int drawerIdx2 = -1;
162 
163  int gain1 = tile_cell->gain1(); // Gain of first PMT
164  int gain2 = tile_cell->gain2(); // Gain of second PMT
165 
166  const CaloDetDescrElement* caloDDE = tile_cell->caloDDE();
167 
168  IdentifierHash hash1 = caloDDE->onl1();
169  if (hash1 != TileHWID::NOT_VALID_HASH) {
170  HWIdentifier channel1_id = m_tileHWID->channel_id(hash1);
171  channel1 = m_tileHWID->channel(channel1_id);
172  drawer = m_tileHWID->drawer(channel1_id);
173  ros1 = m_tileHWID->ros(channel1_id);
174  drawerIdx1 = TileCalibUtils::getDrawerIdx(ros1, drawer);
175  }
176 
177  IdentifierHash hash2 = caloDDE->onl2();
178  if (hash2 != TileHWID::NOT_VALID_HASH) {
179  HWIdentifier channel2_id = m_tileHWID->channel_id(hash2);
180  channel2 = m_tileHWID->channel(channel2_id);
181  drawer = m_tileHWID->drawer(channel2_id);
182  ros2 = m_tileHWID->ros(channel2_id);
183  drawerIdx2 = TileCalibUtils::getDrawerIdx(ros2, drawer);
184  }
185 
186  if (!((drawerIdx1 >= 0 && m_monitoredDrawerIdx[drawerIdx1])
187  || (drawerIdx2 >= 0 && m_monitoredDrawerIdx[drawerIdx2]))) continue;
188 
189  bool isOkChannel1 = (channel1 > -1 && gain1 != CaloGain::INVALIDGAIN);
190  bool isOkChannel2 = (channel2 > -1 && gain2 != CaloGain::INVALIDGAIN);
191 
192  bool isMaskedChannel1 = isOkChannel1 && ((m_maskedChannels[drawerIdx1][channel1] >> gain1) & 1U);
193  bool isMaskedChannel2 = isOkChannel2 && ((m_maskedChannels[drawerIdx2][channel2] >> gain2) & 1U);
194 
195  int sample = m_tileID->sample(id);
196  int tower = m_tileID->tower(id);
197 
198  bool single_PMT_scin = (sample == TileID::SAMP_E);
199  std::string moduleName = TileCalibUtils::getDrawerString(ros1, drawer);
200  std::string sampleTowerSuffix = "_" + std::to_string(sample) + "_" + std::to_string(tower);
201 
202  // Keep energy in GeV;
203  double energy = cell->energy() * m_scaleFactor * (1.0 / GeV);
204  double energy1 = tile_cell->ene1() * m_scaleFactor * (1.0 / GeV);
205  double energy2 = tile_cell->ene2() * m_scaleFactor * (1.0 / GeV);
206  double energyDiff = (single_PMT_scin) ? 0.0 : tile_cell->eneDiff() * (1.0 / GeV);
207  double time = cell->time();
208  double time1 = tile_cell->time1();
209  double time2 = tile_cell->time2();
210  double timeDiff = (single_PMT_scin) ? 0.0 : 2. * tile_cell->timeDiff(); // Attention! factor of 2 is needed here
211 
213  if (isOkChannel1) {
214  auto monChannel1Energy = Monitored::Scalar<double>("energy_" + std::to_string(channel1), energy1);
215  fill(m_tools[m_channelEnergyGroups.at(moduleName)], monChannel1Energy);
216  }
217  if (isOkChannel2) {
218  auto monChannel2Energy = Monitored::Scalar<double>("energy_" + std::to_string(channel2), energy2);
219  fill(m_tools[m_channelEnergyGroups.at(moduleName)], monChannel2Energy);
220  }
221 
223  if (isOkChannel1) {
224  auto monChannel1Time = Monitored::Scalar<double>("time_" + std::to_string(channel1), time1);
225  fill(m_tools[m_channelTimeGroups.at(moduleName)], monChannel1Time);
226  }
227  if (isOkChannel2) {
228  auto monChannel2Time = Monitored::Scalar<double>("time_" + std::to_string(channel2), time2);
229  fill(m_tools[m_channelTimeGroups.at(moduleName)], monChannel2Time);
230  }
231  }
232  }
233 
234  if (sample < TileID::SAMP_E) { // Normal Tile cells with two channels (in TB setup)
235  auto monEnergy = Monitored::Scalar<double>("energy" + sampleTowerSuffix, energy);
236  fill(m_tools[m_energyGroups.at(moduleName)], monEnergy);
237 
238  auto monEnergyDiff = Monitored::Scalar<double>("energyDiff" + sampleTowerSuffix, energyDiff);
239  fill(m_tools[m_energyDiffGroups.at(moduleName)], monEnergyDiff);
240 
241  auto monEnergy1 = Monitored::Scalar<double>("energy1" + sampleTowerSuffix, energy1);
242  auto monEnergy2 = Monitored::Scalar<double>("energy2" + sampleTowerSuffix, energy2);
243  fill(m_tools[m_energy2VsEnergy1Groups.at(moduleName)], monEnergy1, monEnergy2);
244 
246  auto monTime = Monitored::Scalar<double>("time" + sampleTowerSuffix, time);
247  fill(m_tools[m_timeGroups.at(moduleName)], monTime);
248 
249  auto monTimeDiff = Monitored::Scalar<double>("timeDiff" + sampleTowerSuffix, timeDiff);
250  fill(m_tools[m_timeDiffGroups.at(moduleName)], monTimeDiff);
251 
252  auto monTime1 = Monitored::Scalar<double>("time1" + sampleTowerSuffix, time1);
253  auto monTime2 = Monitored::Scalar<double>("time2" + sampleTowerSuffix, time2);
254  fill(m_tools[m_time2VsTime1Groups.at(moduleName)], monTime1, monTime2);
255  }
256 
257  if (isMaskedChannel1 && !isMaskedChannel2) {
258  energy = energy2 * 2.0;
259  } else if (isMaskedChannel2 && !isMaskedChannel1) {
260  energy = energy1 * 2.0;
261  } else if (isMaskedChannel1 && isMaskedChannel2) {
262  energy = 0.0;
263  }
264  sampleEnergy[drawerIdx1][sample] += energy;
265  sampleEnergy[drawerIdx1][allSamples] += energy;
266  }
267  }
268  }
269 
270 
271  for (unsigned int drawerIdx = 0; drawerIdx < TileCalibUtils::MAX_DRAWERIDX; ++drawerIdx) {
272  if (m_monitoredDrawerIdx[drawerIdx]) {
273  unsigned int ros = m_drawerIdxToROS[drawerIdx];
274  unsigned int drawer = m_drawerIdxToDrawer[drawerIdx];
275  std::string moduleName = TileCalibUtils::getDrawerString(ros, drawer);
276 
277  auto monEnergy = Monitored::Scalar<double>("energy", sampleEnergy[drawerIdx][allSamples]);
278  auto monEnergyA = Monitored::Scalar<double>("energyA", sampleEnergy[drawerIdx][TileID::SAMP_A]);
279  auto monEnergyBC = Monitored::Scalar<double>("energyBC", sampleEnergy[drawerIdx][TileID::SAMP_BC]);
280  auto monEnergyD = Monitored::Scalar<double>("energyD", sampleEnergy[drawerIdx][TileID::SAMP_D]);
281  fill(m_tools[m_sampleEnergyGroups.at(moduleName)], monEnergy);
282  fill(m_tools[m_sampleEnergyGroups.at(moduleName)], monEnergyA, monEnergyBC);
283  fill(m_tools[m_sampleEnergyGroups.at(moduleName)], monEnergyD);
284  }
285  }
286  }
287 
288 
289  fill("TileTBCellMonExecuteTime", timer);
290 
291  return StatusCode::SUCCESS;
292 }
python.PyKernel.retrieve
def retrieve(aClass, aKey=None)
Definition: PyKernel.py:110
TileTBCellMonitorAlgorithm::m_energyGroups
std::map< std::string, int > m_energyGroups
Definition: TileTBCellMonitorAlgorithm.h:64
TileCell
Definition: TileCell.h:57
CaloDetDescrElement::onl2
IdentifierHash onl2() const
cell online identifier 2
Definition: Calorimeter/CaloDetDescr/CaloDetDescr/CaloDetDescrElement.h:408
TileCell::time1
float time1(void) const
get time of first PMT
Definition: TileCell.h:198
TileTBCellMonitorAlgorithm::m_energyThresholdForTime
Gaudi::Property< float > m_energyThresholdForTime
Definition: TileTBCellMonitorAlgorithm.h:54
TileTBCellMonitorAlgorithm::m_monitoredDrawerIdx
std::array< bool, TileCalibUtils::MAX_DRAWERIDX > m_monitoredDrawerIdx
Definition: TileTBCellMonitorAlgorithm.h:81
ReadCellNoiseFromCool.cell
cell
Definition: ReadCellNoiseFromCool.py:53
TileCalibUtils::getMaxDrawer
static unsigned int getMaxDrawer(unsigned int ros)
Returns the maximal channel number for a given drawer.
Definition: TileCalibUtils.cxx:136
TileTBCellMonitorAlgorithm::m_tileID
const TileID * m_tileID
Definition: TileTBCellMonitorAlgorithm.h:73
TileTBCellMonitorAlgorithm::fillHistograms
virtual StatusCode fillHistograms(const EventContext &ctx) const override
adds event to the monitoring histograms
Definition: TileTBCellMonitorAlgorithm.cxx:133
plotting.yearwise_efficiency.channel
channel
Definition: yearwise_efficiency.py:28
ATH_MSG_INFO
#define ATH_MSG_INFO(x)
Definition: AthMsgStreamMacros.h:31
TileTBCellMonitorAlgorithm::m_time2VsTime1Groups
std::map< std::string, int > m_time2VsTime1Groups
Definition: TileTBCellMonitorAlgorithm.h:69
TileTBCellMonitorAlgorithm::m_cablingSvc
ServiceHandle< TileCablingSvc > m_cablingSvc
Name of Tile cabling service.
Definition: TileTBCellMonitorAlgorithm.h:39
TileTBCellMonitorAlgorithm::m_fragIDs
Gaudi::Property< std::vector< int > > m_fragIDs
Definition: TileTBCellMonitorAlgorithm.h:45
TileTBCellMonitorAlgorithm::m_energy2VsEnergy1Groups
std::map< std::string, int > m_energy2VsEnergy1Groups
Definition: TileTBCellMonitorAlgorithm.h:66
TileCell::time2
float time2(void) const
get time of second PMT
Definition: TileCell.h:200
SG::ReadHandle
Definition: StoreGate/StoreGate/ReadHandle.h:70
TileCalibUtils::MAX_DRAWERIDX
static const unsigned int MAX_DRAWERIDX
Maximal drawer index
Definition: TileCalibUtils.h:143
Tile_Base_ID::SAMP_A
@ SAMP_A
Definition: Tile_Base_ID.h:53
TileCell::ene1
float ene1(void) const
get energy of first PMT
Definition: TileCell.h:193
CaloDetDescrElement
This class groups all DetDescr information related to a CaloCell. Provides a generic interface for al...
Definition: Calorimeter/CaloDetDescr/CaloDetDescr/CaloDetDescrElement.h:66
CaloCondBlobAlgs_fillNoiseFromASCII.gain
gain
Definition: CaloCondBlobAlgs_fillNoiseFromASCII.py:110
Tile_Base_ID::SAMP_BC
@ SAMP_BC
Definition: Tile_Base_ID.h:54
CaloTime_fillDB.gain2
gain2
Definition: CaloTime_fillDB.py:357
Tile_Base_ID::sample
int sample(const Identifier &id) const
Definition: Tile_Base_ID.cxx:171
TileTBCellMonitorAlgorithm::m_channelTimeGroups
std::map< std::string, int > m_channelTimeGroups
Definition: TileTBCellMonitorAlgorithm.h:71
TileInfo.h
TileCalibUtils.h
Tile_Base_ID::tower
int tower(const Identifier &id) const
Definition: Tile_Base_ID.cxx:165
Tile_Base_ID::SAMP_E
@ SAMP_E
Definition: Tile_Base_ID.h:55
TileTBCellMonitorAlgorithm::m_scaleFactor
Gaudi::Property< float > m_scaleFactor
Definition: TileTBCellMonitorAlgorithm.h:60
TileTBCellMonitorAlgorithm::m_drawerIdxToROS
std::array< unsigned int, TileCalibUtils::MAX_DRAWERIDX > m_drawerIdxToROS
Definition: TileTBCellMonitorAlgorithm.h:79
Example_ReadSampleNoise.drawer
drawer
Definition: Example_ReadSampleNoise.py:39
TileTBCellMonitorAlgorithm::m_sampleEnergyGroups
std::map< std::string, int > m_sampleEnergyGroups
Definition: TileTBCellMonitorAlgorithm.h:63
TileHWID::channel
int channel(const HWIdentifier &id) const
extract channel field from HW identifier
Definition: TileHWID.h:189
python.utils.AtlRunQueryTimer.timer
def timer(name, disabled=False)
Definition: AtlRunQueryTimer.py:86
TileID.h
dq_defect_copy_defect_database.channels
def channels
Definition: dq_defect_copy_defect_database.py:56
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
TileCalibUtils::MAX_DRAWER
static const unsigned int MAX_DRAWER
Number of drawers in ROS 1-4.
Definition: TileCalibUtils.h:139
TileHWID::ros
int ros(const HWIdentifier &id) const
extract ros field from HW identifier
Definition: TileHWID.h:167
TileTBCellMonitorAlgorithm::m_channelEnergyGroups
std::map< std::string, int > m_channelEnergyGroups
Definition: TileTBCellMonitorAlgorithm.h:70
TileTBCellMonitorAlgorithm::m_maskedChannels
std::array< std::array< unsigned char, TileCalibUtils::MAX_CHAN >, TileCalibUtils::MAX_DRAWERIDX > m_maskedChannels
Definition: TileTBCellMonitorAlgorithm.h:82
CaloDetDescrElement::onl1
IdentifierHash onl1() const
cell online identifier 1
Definition: Calorimeter/CaloDetDescr/CaloDetDescr/CaloDetDescrElement.h:404
CaloGain::INVALIDGAIN
@ INVALIDGAIN
Definition: CaloGain.h:18
python.PyAthena.module
module
Definition: PyAthena.py:134
TileCell::timeDiff
float timeDiff(void) const
get time diff for two PMTs (data member)
Definition: TileCell.h:190
TileHWID.h
ParticleGun_FastCalo_ChargeFlip_Config.energy
energy
Definition: ParticleGun_FastCalo_ChargeFlip_Config.py:78
FullCPAlgorithmsTest_eljob.sample
sample
Definition: FullCPAlgorithmsTest_eljob.py:100
TileTBCellMonitorAlgorithm::m_caloCellContainerKey
SG::ReadHandleKey< CaloCellContainer > m_caloCellContainerKey
Definition: TileTBCellMonitorAlgorithm.h:42
ReadCellNoiseFromCool.chan
chan
Definition: ReadCellNoiseFromCool.py:52
Monitored
Generic monitoring tool for athena components.
Definition: GenericMonitoringTool.h:30
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
CaloCell::caloDDE
const CaloDetDescrElement * caloDDE() const
get pointer to CaloDetDescrElement (data member)
Definition: CaloCell.h:305
TileCell.h
MonitoredScalar.h
TileTBCellMonitorAlgorithm::m_fillHistogramsPerChannel
Gaudi::Property< bool > m_fillHistogramsPerChannel
Definition: TileTBCellMonitorAlgorithm.h:57
ATH_CHECK
#define ATH_CHECK
Definition: AthCheckMacros.h:40
AtlasDetectorID::is_tile
bool is_tile(Identifier id) const
Definition: AtlasDetectorID.h:695
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
TileCalibUtils::MAX_ROS
static const unsigned int MAX_ROS
Number of ROSs
Definition: TileCalibUtils.h:138
maskDeadModules.ros
ros
Definition: maskDeadModules.py:35
TileCell::gain1
int gain1(void) const
get gain of first PMT
Definition: TileCell.cxx:182
TileCell::eneDiff
float eneDiff(void) const
all get methods
Definition: TileCell.h:188
TileTBCellMonitorAlgorithm::m_energyThresholdForTimeInGeV
double m_energyThresholdForTimeInGeV
Definition: TileTBCellMonitorAlgorithm.h:77
ReadFromCoolCompare.os
os
Definition: ReadFromCoolCompare.py:231
SG::ReadHandle::isValid
virtual bool isValid() override final
Can the handle be successfully dereferenced?
TileTBCellMonitorAlgorithm.fragID
fragID
Definition: TileTBCellMonitorAlgorithm.py:232
CaloTime_fillDB.gain1
gain1
Definition: CaloTime_fillDB.py:356
AthMonitorAlgorithm::m_tools
ToolHandleArray< GenericMonitoringTool > m_tools
Array of Generic Monitoring Tools.
Definition: AthMonitorAlgorithm.h:338
ActsTrk::to_string
std::string to_string(const DetectorType &type)
Definition: GeometryDefs.h:34
TileHWID::channel_id
HWIdentifier channel_id(int ros, int drawer, int channel) const
channel HWIdentifer
Definition: TileHWID.cxx:198
TileTBCellMonitorAlgorithm::m_energyDiffGroups
std::map< std::string, int > m_energyDiffGroups
Definition: TileTBCellMonitorAlgorithm.h:65
TileTBCellMonitorAlgorithm::m_timeGroups
std::map< std::string, int > m_timeGroups
Definition: TileTBCellMonitorAlgorithm.h:67
TileTBCellMonitorAlgorithm::m_tileHWID
const TileHWID * m_tileHWID
Definition: TileTBCellMonitorAlgorithm.h:74
Units.h
Wrapper to avoid constant divisions when using units.
TileTBCellMonitorAlgorithm::m_drawerIdxToDrawer
std::array< unsigned int, TileCalibUtils::MAX_DRAWERIDX > m_drawerIdxToDrawer
Definition: TileTBCellMonitorAlgorithm.h:80
AthMonitorAlgorithm::initialize
virtual StatusCode initialize() override
initialize
Definition: AthMonitorAlgorithm.cxx:18
Tile_Base_ID::SAMP_D
@ SAMP_D
Definition: Tile_Base_ID.h:55
TileCalibUtils::getDrawerString
static std::string getDrawerString(unsigned int ros, unsigned int drawer)
Return the drawer name, e.g.
Definition: TileCalibUtils.cxx:145
TileCell::gain2
int gain2(void) const
get gain of second PMT
Definition: TileCell.cxx:189
TileCell::ene2
float ene2(void) const
get energy of second PMT
Definition: TileCell.h:195
TileHWID::NOT_VALID_HASH
@ NOT_VALID_HASH
Definition: TileHWID.h:314
TileHWID::drawer
int drawer(const HWIdentifier &id) const
extract drawer field from HW identifier
Definition: TileHWID.h:171
CaloCell
Data object for each calorimeter readout cell.
Definition: CaloCell.h:57
CaloSwCorrections.time
def time(flags, cells_name, *args, **kw)
Definition: CaloSwCorrections.py:242
TileTBCellMonitorAlgorithm.h
ReadFloatFromCool.adc
adc
Definition: ReadFloatFromCool.py:48
ATH_MSG_WARNING
#define ATH_MSG_WARNING(x)
Definition: AthMsgStreamMacros.h:32
StateLessPT_NewConfig.partition
partition
Definition: StateLessPT_NewConfig.py:49
TileTBCellMonitorAlgorithm::m_cabling
const TileCablingService * m_cabling
Definition: TileTBCellMonitorAlgorithm.h:75
LArDigits2NtupleDumper.nSamples
nSamples
Definition: LArDigits2NtupleDumper.py:70
TileCalibUtils::getDrawerIdx
static unsigned int getDrawerIdx(unsigned int ros, unsigned int drawer)
Returns a drawer hash.
Definition: TileCalibUtils.cxx:60
TileTBCellMonitorAlgorithm::initialize
virtual StatusCode initialize() override
initialize
Definition: TileTBCellMonitorAlgorithm.cxx:21
Monitored::Scalar
Declare a monitored scalar variable.
Definition: MonitoredScalar.h:34
ReadHandle.h
Handle class for reading from StoreGate.
TileTBCellMonitorAlgorithm::m_timeDiffGroups
std::map< std::string, int > m_timeDiffGroups
Definition: TileTBCellMonitorAlgorithm.h:68
TileCalibUtils::MAX_CHAN
static const unsigned int MAX_CHAN
Number of channels in drawer.
Definition: TileCalibUtils.h:141
GeV
#define GeV
Definition: CaloTransverseBalanceVecMon.cxx:30
TileTBCellMonitorAlgorithm::m_masked
Gaudi::Property< std::vector< std::string > > m_masked
Definition: TileTBCellMonitorAlgorithm.h:51
Monitored::Timer
A monitored timer.
Definition: MonitoredTimer.h:32
DataVector::empty
bool empty() const noexcept
Returns true if the collection is empty.
TileCalibUtils::MAX_GAIN
static const unsigned int MAX_GAIN
Number of gains per channel
Definition: TileCalibUtils.h:142