ATLAS Offline Software
RpdSubtractCentroidTool.cxx
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2025 CERN for the benefit of the ATLAS collaboration
3 */
4 
5 #include <numbers>
6 
12 #include "ZdcUtils/RPDUtils.h"
13 #include "ZdcUtils/ZdcEventInfo.h"
14 
15 namespace ZDC
16 {
17 
19  : asg::AsgTool(name)
20 {
21  declareProperty("ZDCModuleContainerName", m_ZDCModuleContainerName = "ZdcModules", "Location of ZDC processed data");
22  declareProperty("ZDCSumContainerName", m_ZDCSumContainerName = "ZdcSums", "Location of ZDC processed sums");
23  declareProperty("Configuration", m_configuration = "default");
24  declareProperty("WriteAux", m_writeAux = true, "If true, write AOD decorations");
25  declareProperty("AuxSuffix", m_auxSuffix = "", "Suffix to add to AOD decorations for reading and writing");
26  declareProperty("MinZDCEnergy", m_forceMinZDCEnergy, "Minimum (calibrated) ZDC energy for valid centroid (negative to disable); per side");
27  declareProperty("MaxZDCEnergy", m_forceMaxZDCEnergy, "Maximum (calibrated) ZDC energy for valid centroid (negative to disable); per side");
28  declareProperty("MinEMEnergy", m_forceMinEMEnergy, "Minimum (calibrated) EM energy for valid centroid (negative to disable); per side");
29  declareProperty("MaxEMEnergy", m_forceMaxEMEnergy, "Minimum (calibrated) EM energy for valid centroid (negative to disable); per side");
30  declareProperty("PileupMaxFrac", m_forcePileupMaxFrac, "Maximum fractional pileup allowed in an RPD channel for valid centroid; per side");
31  declareProperty("ExcessiveSubtrUnderflowFrac", m_forceMaximumNegativeSubtrAmpFrac, "If any RPD channel subtracted amplitude is negative and its fraction of subtracted amplitude sum is greater than or equal to this number, the centroid is invalid; per side");
32  declareProperty("UseRPDSumAdc", m_forceUseRPDSumAdc, "If true, use RPD channel sum ADC for centroid calculation, else use RPD channel max ADC");
33  declareProperty("UseCalibDecorations", m_forceUseCalibDecorations, "If true, use RPD channel sum/max ADC decorations with output calibration factors applied during reconstruction, else use decorations with raw values");
34 }
35 
36 // nominally, aux suffix is added to read key, since upstream tools were probably configured to write decorations with the same suffix
37 // however, certain decorations remain unchanged in a reprocessing (e.g., those written by ZdcRecChannelToolLucrod), in which case the suffix should not be added
39  std::string const& containerName,
41  std::string const& key,
42  bool const addSuffix = true
43 ) {
44  std::string sgkey = containerName + key;
45  if (addSuffix) {
46  sgkey += m_auxSuffix;
47  }
48  readHandleKey = sgkey;
49  return readHandleKey.initialize();
50 }
51 
52 StatusCode RpdSubtractCentroidTool::initializeWriteKey(std::string const& containerName, SG::WriteDecorHandleKey<xAOD::ZdcModuleContainer> & writeHandleKey, std::string const& key) {
53  writeHandleKey = containerName + key + m_auxSuffix;
54  return writeHandleKey.initialize();
55 }
56 
58  // first initialize reconstruction parameters
59  m_minZDCEnergy = {-1.0, -1.0};
60  m_maxZDCEnergy = {-1.0, -1.0};
61  m_minEMEnergy = {-1.0, -1.0};
62  m_maxEMEnergy = {-1.0, -1.0};
63  m_pileupMaxFrac = {1.0, 1.0};
64  m_maximumNegativeSubtrAmpFrac = {1.0, 1.0};
65  m_useRPDSumAdc = true;
66  m_useCalibDecorations = true;
67 
68  // then overwrite inidividual parameters from configuration if any were provided
71  }
74  }
77  }
80  }
83  }
86  }
89  }
92  }
93 
94  // if any ZDC/EM energy threshold is nonnegative, ZDC decorations must be read
96 
97  for (auto const side : RPDUtils::sides) {
98  if (m_minZDCEnergy.at(side) < 0) m_minZDCEnergy.at(side) = -std::numeric_limits<float>::infinity();
99  if (m_maxZDCEnergy.at(side) < 0) m_maxZDCEnergy.at(side) = std::numeric_limits<float>::infinity();
100  if (m_minEMEnergy.at(side) < 0) m_minEMEnergy.at(side) = -std::numeric_limits<float>::infinity();
101  if (m_maxEMEnergy.at(side) < 0) m_maxEMEnergy.at(side) = std::numeric_limits<float>::infinity();
102  }
103 
104  ATH_MSG_DEBUG("RpdSubtractCentroidTool reconstruction parameters:");
105  ATH_MSG_DEBUG("config = " << m_configuration);
106  ATH_MSG_DEBUG("minZDCEnergy = " << RPDUtils::vecToString(m_minZDCEnergy));
107  ATH_MSG_DEBUG("maxZDCEnergy = " << RPDUtils::vecToString(m_maxZDCEnergy));
108  ATH_MSG_DEBUG("minEMEnergy = " << RPDUtils::vecToString(m_minEMEnergy));
109  ATH_MSG_DEBUG("maxEMEnergy = " << RPDUtils::vecToString(m_maxEMEnergy));
110  ATH_MSG_DEBUG("pileupMaxFrac = " << RPDUtils::vecToString(m_pileupMaxFrac));
111  ATH_MSG_DEBUG("maximumNegativeSubtrAmpFrac = " << RPDUtils::vecToString(m_maximumNegativeSubtrAmpFrac));
112  ATH_MSG_DEBUG("useRPDSumAdc = " << m_useRPDSumAdc);
113  ATH_MSG_DEBUG("useCalibDecorations = " << m_useCalibDecorations);
114 
115  if (m_readZDCDecorations) {
116  ATH_MSG_DEBUG("RpdSubtractCentroidTool is configured to check ZDC or EM energy; ZDC-related ReadDecorHandleKey's will be initialized");
117  m_ZDCSideStatus = {0, 0};
118  m_ZDCFinalEnergy = {0, 0};
119  m_EMCalibEnergy = {0, 0};
120  m_EMStatus = {0, 0};
121  }
122 
124 
125  // zdc modules read keys
130 
131  if (m_readZDCDecorations) {
134  }
141 
142  // zdc sums read keys
144  if (m_readZDCDecorations) {
147  }
148 
149  // zdc sums write keys
164 
165  if (m_writeAux && !m_auxSuffix.empty()) {
166  ATH_MSG_DEBUG("suffix string = " << m_auxSuffix);
167  }
168 
169  m_initialized = true;
170 
171  return StatusCode::SUCCESS;
172 }
173 
175  m_eventValid = false;
176  for (auto& status : m_centroidStatus) {
177  status.reset();
178  status.set(ValidBit, true);
179  }
194 }
195 
197  // initialize read handles from read handle keys
199  if (!eventInfo.isValid()) {
200  return SubstepStatus::Failure;
201  }
202  // RPD decorations are always needed
204  ATH_MSG_WARNING("RPD decoding error found - abandoning RPD centroid reco!");
206  }
207  // ZDC decorations are sometimes needed
209  ATH_MSG_WARNING("ZDC decoding error found - abandoning RPD centroid reco!");
211  }
212 
224  std::optional<SG::ReadDecorHandle<xAOD::ZdcModuleContainer, float>> zdcModuleCalibEnergyHandle;
225  std::optional<SG::ReadDecorHandle<xAOD::ZdcModuleContainer, unsigned int>> zdcModuleStatusHandle;
226  std::optional<SG::ReadDecorHandle<xAOD::ZdcModuleContainer, float>> zdcFinalEnergyHandle;
227  std::optional<SG::ReadDecorHandle<xAOD::ZdcModuleContainer, unsigned int>> zdcStatusHandle;
228  if (m_readZDCDecorations) {
233  }
234 
235  ATH_MSG_DEBUG("Processing modules");
236 
237  for (auto const zdcModule : moduleContainer) {
238  unsigned int const side = RPDUtils::ZDCSideToSideIndex(zdcModule->zdcSide());
239  if (zdcModule->zdcType() == RPDUtils::ZDCModuleZDCType && zdcModule->zdcModule() == RPDUtils::ZDCModuleEMModule) {
240  // this is a ZDC module and this is an EM module
241  if (m_readZDCDecorations) {
242  m_EMCalibEnergy->at(side) = (*zdcModuleCalibEnergyHandle)(*zdcModule);
243  m_EMStatus->at(side) = (*zdcModuleStatusHandle)(*zdcModule);
244  }
245  } else if (zdcModule->zdcType() == RPDUtils::ZDCModuleRPDType) {
246  // this is a Run 3 RPD module
247  // (it is assumed that this tool will not be invoked otherwise)
248  //
249  if (zdcModule->zdcChannel() < 0 || static_cast<unsigned int>(zdcModule->zdcChannel()) > RPDUtils::nChannels - 1) {
250  ATH_MSG_ERROR("Invalid RPD channel found on side " << side << ": channel number = " << zdcModule->zdcChannel());
251  }
252  // channel numbers are fixed in mapping in ZdcConditions, numbered 0-15
253  unsigned int const channel = zdcModule->zdcChannel();
254  auto const& row = rowHandle(*zdcModule);
255  auto const& col = colHandle(*zdcModule);
256  m_RPDChannelData.at(side).at(row).at(col).channel = channel;
257  m_RPDChannelData.at(side).at(row).at(col).xposRel = xposRelHandle(*zdcModule);
258  m_RPDChannelData.at(side).at(row).at(col).yposRel = yposRelHandle(*zdcModule);
259  m_RPDChannelData.at(side).at(row).at(col).row = rowHandle(*zdcModule);
260  m_RPDChannelData.at(side).at(row).at(col).col = colHandle(*zdcModule);
261  if (m_useRPDSumAdc) {
262  if (m_useCalibDecorations) {
263  m_RPDChannelData.at(side).at(row).at(col).amp = rpdChannelSumAdcCalibHandle(*zdcModule);
264  } else {
265  m_RPDChannelData.at(side).at(row).at(col).amp = rpdChannelSumAdcHandle(*zdcModule);
266  }
267  } else {
268  if (m_useCalibDecorations) {
269  m_RPDChannelData.at(side).at(row).at(col).amp = rpdChannelMaxADCCalibHandle(*zdcModule);
270  } else {
271  m_RPDChannelData.at(side).at(row).at(col).amp = rpdChannelMaxADCHandle(*zdcModule);
272  }
273  }
274  m_RPDChannelData.at(side).at(row).at(col).pileupFrac = rpdChannelPileupFracHandle(*zdcModule);
275  m_RPDChannelData.at(side).at(row).at(col).status = rpdChannelStatusHandle(*zdcModule);
276  }
277  }
278 
279  for (auto const zdcSum: moduleSumContainer) {
280  if (zdcSum->zdcSide() == RPDUtils::ZDCSumsGlobalZDCSide) {
281  // skip global sum (it's like the side between sides)
282  continue;
283  }
284  unsigned int const side = RPDUtils::ZDCSideToSideIndex(zdcSum->zdcSide());
285  m_RPDSideStatus.at(side) = rpdSideStatusHandle(*zdcSum);
286  if (m_ZDCSideStatus) m_ZDCSideStatus->at(side) = (*zdcStatusHandle)(*zdcSum);
287  if (m_ZDCFinalEnergy) m_ZDCFinalEnergy->at(side) = (*zdcFinalEnergyHandle)(*zdcSum);
288  }
289 
290  return SubstepStatus::Success;
291 }
292 
294  if (m_readZDCDecorations) {
295  if (!m_ZDCSideStatus->at(side)) {
296  // zdc bad
297  m_centroidStatus.at(side).set(ZDCInvalidBit, true);
298  m_centroidStatus.at(side).set(ValidBit, false);
299  } else {
300  // zdc good
301  if (m_ZDCFinalEnergy->at(side) < m_minZDCEnergy.at(side)) {
303  m_centroidStatus.at(side).set(ValidBit, false);
304  }
305  if (m_ZDCFinalEnergy->at(side) > m_maxZDCEnergy.at(side)) {
307  m_centroidStatus.at(side).set(ValidBit, false);
308  }
309  }
310 
312  // em bad
313  m_centroidStatus.at(side).set(EMInvalidBit, true);
314  m_centroidStatus.at(side).set(ValidBit, false);
315  } else {
316  // em good
317  if (m_EMCalibEnergy->at(side) < m_minEMEnergy.at(side)) {
319  m_centroidStatus.at(side).set(ValidBit, false);
320  }
321  if (m_EMCalibEnergy->at(side) > m_maxEMEnergy.at(side)) {
323  m_centroidStatus.at(side).set(ValidBit, false);
324  }
325  }
326  }
327 
329  m_centroidStatus.at(side).set(PileupBit, true);
330  }
331 
332  for (unsigned int row = 0; row < RPDUtils::nRows; row++) {
333  for (unsigned int col = 0; col < RPDUtils::nCols; col++) {
334  if (m_RPDChannelData.at(side).at(row).at(col).pileupFrac > m_pileupMaxFrac.at(side)) {
336  m_centroidStatus.at(side).set(ValidBit, false);
337  }
338  }
339  }
340 
342  m_centroidStatus.at(side).set(RPDInvalidBit, true);
343  m_centroidStatus.at(side).set(ValidBit, false);
344  return false;
345  }
346 
347  return true;
348 }
349 
351  for (unsigned int row = 0; row < RPDUtils::nRows; row++) {
352  for (unsigned int col = 0; col < RPDUtils::nCols; col++) {
353  float subtrAmp {};
354  if (row == RPDUtils::nRows - 1) {
355  // top row -> nothing to subtract
356  subtrAmp = m_RPDChannelData.at(side).at(row).at(col).amp;
357  } else {
358  // other rows -> subtract the tile above this one
359  subtrAmp = m_RPDChannelData.at(side).at(row).at(col).amp - m_RPDChannelData.at(side).at(row + 1).at(col).amp;
360  }
361  m_RPDChannelData.at(side).at(row).at(col).subtrAmp = subtrAmp;
362  m_subtrAmp.at(side).at(m_RPDChannelData.at(side).at(row).at(col).channel) = subtrAmp;
363  m_subtrAmpRowSum.at(side).at(row) += subtrAmp;
364  m_subtrAmpColSum.at(side).at(col) += subtrAmp;
365  m_subtrAmpSum.at(side) += subtrAmp;
366  }
367  }
368 
369  if (m_subtrAmpSum.at(side) <= 0) {
370  m_centroidStatus.at(side).set(ZeroSumBit, true);
371  m_centroidStatus.at(side).set(ValidBit, false);
372  return false;
373  }
374 
375  for (unsigned int row = 0; row < RPDUtils::nRows; row++) {
376  for (unsigned int col = 0; col < RPDUtils::nCols; col++) {
377  const float &subtrAmp = m_RPDChannelData.at(side).at(row).at(col).subtrAmp;
378  if (subtrAmp < 0 && -subtrAmp/m_subtrAmpSum.at(side) > m_maximumNegativeSubtrAmpFrac.at(side)) {
380  m_centroidStatus.at(side).set(ValidBit, false);
381  }
382  }
383  }
384 
385  return true;
386 }
387 
389  for (unsigned int col = 0; col < RPDUtils::nCols; col++) {
390  m_xCentroidPreGeomCorPreAvgSubtr.at(side) += m_subtrAmpColSum.at(side).at(col)*m_RPDChannelData.at(side).at(0).at(col).xposRel/m_subtrAmpSum.at(side);
391  }
392 
393  for (unsigned int row = 0; row < RPDUtils::nRows; row++) {
395  }
396 
397  for (unsigned int row = 0; row < RPDUtils::nRows; row++) {
398  if (m_subtrAmpRowSum.at(side).at(row) <= 0) continue;
399  for (unsigned int col = 0; col < RPDUtils::nCols; col++) {
400  m_xRowCentroid.at(side).at(row) += m_RPDChannelData.at(side).at(row).at(col).subtrAmp*m_RPDChannelData.at(side).at(row).at(col).xposRel/m_subtrAmpRowSum.at(side).at(row);
401  }
402  m_centroidStatus.at(side).set(Row0ValidBit + row, true);
403  }
404 
405  for (unsigned int col = 0; col < RPDUtils::nCols; col++) {
406  if (m_subtrAmpColSum.at(side).at(col) <= 0) continue;
407  for (unsigned int row = 0; row < RPDUtils::nRows; row++) {
408  m_yColCentroid.at(side).at(col) += m_RPDChannelData.at(side).at(row).at(col).subtrAmp*m_RPDChannelData.at(side).at(row).at(col).yposRel/m_subtrAmpColSum.at(side).at(col);
409  }
410  m_centroidStatus.at(side).set(Col0ValidBit + col, true);
411  }
412 }
413 
418 }
419 
423 }
424 
426  auto angle = std::atan2(m_yCentroid.at(side), m_xCentroid.at(side));
427  // our angles are now simply the angle of the centroid in ATLAS coordinates on either side
428  // however, we expect correlated deflection, so we want the difference between the angles
429  // to be small when the centroids are in opposite quadrants of the two RPDs
430  // therefore, we add pi to side A (chosen arbitrarily)
432  // also, restrict to [-pi, pi)
433  // we choose this rather than (-pi, pi] for ease of binning the edge case +/- pi
436 }
437 
438 void RpdSubtractCentroidTool::writeAOD(xAOD::ZdcModuleContainer const& moduleSumContainer) const {
439  if (!m_writeAux) return;
440  ATH_MSG_DEBUG("Adding variables with suffix = " + m_auxSuffix);
441 
442  // initialize write handles from write handle keys
457 
458  for (auto const zdcSum: moduleSumContainer) {
459  if (zdcSum->zdcSide() == RPDUtils::ZDCSumsGlobalZDCSide) {
460  // global sum container
461  // event status is bool, but stored as char to save disk space
462  centroidEventValidHandle(*zdcSum) = static_cast<char>(m_eventValid);
463  cosDeltaReactionPlaneAngleHandle(*zdcSum) = m_cosDeltaReactionPlaneAngle;
464  continue;
465  }
466  unsigned int const side = RPDUtils::ZDCSideToSideIndex(zdcSum->zdcSide());
467  centroidStatusHandle(*zdcSum) = static_cast<unsigned int>(m_centroidStatus.at(side).to_ulong());
468  rpdChannelSubtrAmpHandle(*zdcSum) = m_subtrAmp.at(side);
469  rpdSubtrAmpSumHandle(*zdcSum) = m_subtrAmpSum.at(side);
470  xCentroidPreGeomCorPreAvgSubtrHandle(*zdcSum) = m_xCentroidPreGeomCorPreAvgSubtr.at(side);
471  yCentroidPreGeomCorPreAvgSubtrHandle(*zdcSum) = m_yCentroidPreGeomCorPreAvgSubtr.at(side);
472  xCentroidPreAvgSubtrHandle(*zdcSum) = m_xCentroidPreAvgSubtr.at(side);
473  yCentroidPreAvgSubtrHandle(*zdcSum) = m_yCentroidPreAvgSubtr.at(side);
474  xCentroidHandle(*zdcSum) = m_xCentroid.at(side);
475  yCentroidHandle(*zdcSum) = m_yCentroid.at(side);
476  xRowCentroidHandle(*zdcSum) = m_xRowCentroid.at(side);
477  yColCentroidHandle(*zdcSum) = m_yColCentroid.at(side);
478  reactionPlaneAngleHandle(*zdcSum) = m_reactionPlaneAngle.at(side);
479  }
480 }
481 
483  if (moduleContainer.empty()) {
484  // no modules - do nothing
485  return StatusCode::SUCCESS;
486  }
487  reset();
488  switch (readAOD(moduleContainer, moduleSumContainer)) {
490  // do nothing - proceed
491  break;
493  // stop and propagate error to Athena
494  return StatusCode::FAILURE;
496  // stop and tell Athena the event was a success
497  return StatusCode::SUCCESS;
498  }
499  for (auto const side : RPDUtils::sides) {
500  if (!checkZdcRpdValidity(side)) continue; // rpd invalid -> don't calculate centroid
501  if (!subtractRpdAmplitudes(side)) continue; // bad total sum -> don't calculate centroid
506  m_centroidStatus.at(side).set(HasCentroidBit, true);
507  }
510  }
512  m_eventValid = true; // event is good for analysis
513  }
514  writeAOD(moduleSumContainer);
515  ATH_MSG_DEBUG("Finishing event processing");
516  return StatusCode::SUCCESS;
517 }
518 
520  if (!m_initialized) {
521  ATH_MSG_WARNING("Tool not initialized!");
522  return StatusCode::FAILURE;
523  }
524  ATH_MSG_DEBUG("Trying to retrieve " << m_ZDCModuleContainerName);
525  xAOD::ZdcModuleContainer const* zdcModules = nullptr;
527  xAOD::ZdcModuleContainer const* zdcSums = nullptr;
529  ATH_CHECK(recoZdcModules(*zdcModules, *zdcSums));
530  return StatusCode::SUCCESS;
531 }
532 
533 } // namespace ZDC
python.PyKernel.retrieve
def retrieve(aClass, aKey=None)
Definition: PyKernel.py:110
RPDUtils::vecToString
std::string vecToString(std::vector< T > const &v)
Definition: RPDUtils.cxx:57
ZDC::RpdSubtractCentroidTool::PileupBit
@ PileupBit
Definition: RpdSubtractCentroidTool.h:41
SG::WriteDecorHandleKey
Property holding a SG store/key/clid/attr name from which a WriteDecorHandle is made.
Definition: StoreGate/StoreGate/WriteDecorHandleKey.h:89
ZDC::RpdSubtractCentroidTool::m_RPDChannelMaxADCCalibKey
SG::ReadDecorHandleKey< xAOD::ZdcModuleContainer > m_RPDChannelMaxADCCalibKey
Definition: RpdSubtractCentroidTool.h:231
ZDC::RpdSubtractCentroidTool::checkZdcRpdValidity
bool checkZdcRpdValidity(unsigned int side)
Definition: RpdSubtractCentroidTool.cxx:293
common.sgkey
def sgkey(tool)
Definition: common.py:1027
ZDC::RpdSubtractCentroidTool::m_ZDCFinalEnergyKey
SG::ReadDecorHandleKey< xAOD::ZdcModuleContainer > m_ZDCFinalEnergyKey
Definition: RpdSubtractCentroidTool.h:247
ZDC::RpdSubtractCentroidTool::m_centroidStatus
std::array< std::bitset< N_STATUS_BITS >, 2 > m_centroidStatus
event status
Definition: RpdSubtractCentroidTool.h:143
RPDUtils::nChannels
unsigned constexpr int nChannels
Definition: RPDUtils.h:23
ZDC::RpdSubtractCentroidTool::m_EMStatus
std::optional< std::array< std::bitset< ZDCPulseAnalyzer::N_STATUS_BITS >, 2 > > m_EMStatus
EM calibrated energy on each side.
Definition: RpdSubtractCentroidTool.h:126
ZDC::RpdSubtractCentroidTool::ExcessiveSubtrUnderflowBit
@ ExcessiveSubtrUnderflowBit
Definition: RpdSubtractCentroidTool.h:44
ZDC::RpdSubtractCentroidTool::m_reactionPlaneAngle
std::array< float, 2 > m_reactionPlaneAngle
the y centroid for each column on each side
Definition: RpdSubtractCentroidTool.h:165
ZDC::RpdSubtractCentroidTool::m_forceUseCalibDecorations
RPDUtils::OptionalToolProperty< bool > m_forceUseCalibDecorations
Definition: RpdSubtractCentroidTool.h:87
ZDC::RpdSubtractCentroidTool::m_useRPDSumAdc
bool m_useRPDSumAdc
Definition: RpdSubtractCentroidTool.h:96
ZDC::RpdSubtractCentroidTool::m_subtrAmpColSum
std::array< std::array< float, RPDUtils::nCols >, 2 > m_subtrAmpColSum
subtracted amplitude for each row on each side
Definition: RpdSubtractCentroidTool.h:149
ZDC::RpdSubtractCentroidTool::m_RPDChannelMaxADCKey
SG::ReadDecorHandleKey< xAOD::ZdcModuleContainer > m_RPDChannelMaxADCKey
Definition: RpdSubtractCentroidTool.h:227
ZDC::RpdSubtractCentroidTool::m_ZDCFinalEnergy
std::optional< std::array< float, 2 > > m_ZDCFinalEnergy
ZDC analysis status on each side.
Definition: RpdSubtractCentroidTool.h:124
ZDC::RpdSubtractCentroidTool::m_readZDCDecorations
bool m_readZDCDecorations
Definition: RpdSubtractCentroidTool.h:107
ZDC::RpdSubtractCentroidTool::Row0ValidBit
@ Row0ValidBit
Definition: RpdSubtractCentroidTool.h:46
ZDC::RpdSubtractCentroidTool::m_forceMaxEMEnergy
RPDUtils::OptionalToolProperty< std::vector< float > > m_forceMaxEMEnergy
Definition: RpdSubtractCentroidTool.h:83
plotting.yearwise_efficiency.channel
channel
Definition: yearwise_efficiency.py:24
ZDC::RpdSubtractCentroidTool::m_centroidStatusKey
SG::WriteDecorHandleKey< xAOD::ZdcModuleContainer > m_centroidStatusKey
Definition: RpdSubtractCentroidTool.h:261
ZDC::RpdSubtractCentroidTool::m_RPDSideStatus
std::array< std::bitset< RPDDataAnalyzer::N_STATUS_BITS >, 2 > m_RPDSideStatus
Definition: RpdSubtractCentroidTool.h:122
ZDC::RpdSubtractCentroidTool::m_forcePileupMaxFrac
RPDUtils::OptionalToolProperty< std::vector< float > > m_forcePileupMaxFrac
Definition: RpdSubtractCentroidTool.h:84
ZDC::RpdSubtractCentroidTool::m_RPDChannelSubtrAmpKey
SG::WriteDecorHandleKey< xAOD::ZdcModuleContainer > m_RPDChannelSubtrAmpKey
Definition: RpdSubtractCentroidTool.h:265
ZDC::RpdSubtractCentroidTool::m_forceMinZDCEnergy
RPDUtils::OptionalToolProperty< std::vector< float > > m_forceMinZDCEnergy
Definition: RpdSubtractCentroidTool.h:80
ZDC::RpdSubtractCentroidTool::m_RPDChannelPileupFracKey
SG::ReadDecorHandleKey< xAOD::ZdcModuleContainer > m_RPDChannelPileupFracKey
Definition: RpdSubtractCentroidTool.h:235
ZDC::RpdSubtractCentroidTool::m_reactionPlaneAngleKey
SG::WriteDecorHandleKey< xAOD::ZdcModuleContainer > m_reactionPlaneAngleKey
Definition: RpdSubtractCentroidTool.h:305
ZDCPulseAnalyzer.h
ZDC::RpdSubtractCentroidTool::m_RPDSubtrAmpSumKey
SG::WriteDecorHandleKey< xAOD::ZdcModuleContainer > m_RPDSubtrAmpSumKey
Definition: RpdSubtractCentroidTool.h:269
ZDC::RpdSubtractCentroidTool::m_cosDeltaReactionPlaneAngleKey
SG::WriteDecorHandleKey< xAOD::ZdcModuleContainer > m_cosDeltaReactionPlaneAngleKey
Definition: RpdSubtractCentroidTool.h:309
RPDUtils::sides
constexpr std::initializer_list< unsigned int > sides
Definition: RPDUtils.h:17
SG::ReadHandle
Definition: StoreGate/StoreGate/ReadHandle.h:67
ZDC::RpdSubtractCentroidTool::m_auxSuffix
std::string m_auxSuffix
Definition: RpdSubtractCentroidTool.h:78
ZDC::RpdSubtractCentroidTool::readAOD
SubstepStatus readAOD(xAOD::ZdcModuleContainer const &moduleContainer, xAOD::ZdcModuleContainer const &moduleSumContainer)
Definition: RpdSubtractCentroidTool.cxx:196
ZDC::RpdSubtractCentroidTool::subtractAverageCentroid
void subtractAverageCentroid(unsigned int side)
Definition: RpdSubtractCentroidTool.cxx:420
ZDC::RpdSubtractCentroidTool::m_subtrAmp
std::array< std::vector< float >, 2 > m_subtrAmp
centroid status (valid by default) on each side
Definition: RpdSubtractCentroidTool.h:144
ZDC::RpdSubtractCentroidTool::m_RPDSideStatusKey
SG::ReadDecorHandleKey< xAOD::ZdcModuleContainer > m_RPDSideStatusKey
Definition: RpdSubtractCentroidTool.h:243
ZDC::RpdSubtractCentroidTool::recoZdcModules
StatusCode recoZdcModules(const xAOD::ZdcModuleContainer &moduleContainer, const xAOD::ZdcModuleContainer &moduleSumContainer) override
Definition: RpdSubtractCentroidTool.cxx:482
ZDC::RpdSubtractCentroidTool::m_yCentroid
std::array< float, 2 > m_yCentroid
x centroid after geomerty correction and after average subtraction on each side
Definition: RpdSubtractCentroidTool.h:156
ZDC::RpdSubtractCentroidTool::RpdSubtractCentroidTool
RpdSubtractCentroidTool(const std::string &name)
Definition: RpdSubtractCentroidTool.cxx:18
asg
Definition: DataHandleTestTool.h:28
ZDC::RpdSubtractCentroidTool::m_minEMEnergy
std::vector< float > m_minEMEnergy
Definition: RpdSubtractCentroidTool.h:92
ZDC::RpdSubtractCentroidTool::SubstepStatus
SubstepStatus
cosine of difference between reaction plane angles of the two sides
Definition: RpdSubtractCentroidTool.h:170
RPDUtils::ZDCSumsGlobalZDCSide
constexpr int ZDCSumsGlobalZDCSide
Definition: RPDUtils.h:19
ZDC::RpdSubtractCentroidTool::anyNonNegative
static bool anyNonNegative(std::vector< float > const &v)
Definition: RpdSubtractCentroidTool.h:102
ZDC::RpdSubtractCentroidTool::m_subtrAmpSum
std::array< float, 2 > m_subtrAmpSum
subtracted amplitude for each column on each side
Definition: RpdSubtractCentroidTool.h:150
keylayer_zslicemap.row
row
Definition: keylayer_zslicemap.py:155
ZDC::RpdSubtractCentroidTool::SubstepStatus::Failure
@ Failure
ZDC::RPDDataAnalyzer::ValidBit
@ ValidBit
Definition: RPDDataAnalyzer.h:37
ZDC::RpdSubtractCentroidTool::m_RPDChannelData
std::array< std::array< std::array< RPDChannelData, RPDUtils::nCols >, RPDUtils::nRows >, 2 > m_RPDChannelData
EM modlue status word on each side.
Definition: RpdSubtractCentroidTool.h:127
ZDC::RpdSubtractCentroidTool::m_useCalibDecorations
bool m_useCalibDecorations
Definition: RpdSubtractCentroidTool.h:97
drawFromPickle.cos
cos
Definition: drawFromPickle.py:36
ZDC::RpdSubtractCentroidTool::m_yColCentroid
std::array< std::vector< float >, 2 > m_yColCentroid
the x centroid for each row on each side
Definition: RpdSubtractCentroidTool.h:161
ZDC::RpdSubtractCentroidTool::m_configuration
std::string m_configuration
Definition: RpdSubtractCentroidTool.h:74
ZDC::RpdSubtractCentroidTool::m_xCentroidPreAvgSubtr
std::array< float, 2 > m_xCentroidPreAvgSubtr
y centroid before geomerty correction and before average subtraction (RPD detector coordinates) on ea...
Definition: RpdSubtractCentroidTool.h:153
ZDC::RpdSubtractCentroidTool::m_minZDCEnergy
std::vector< float > m_minZDCEnergy
Definition: RpdSubtractCentroidTool.h:90
ZDC::RpdSubtractCentroidTool::m_forceMaximumNegativeSubtrAmpFrac
RPDUtils::OptionalToolProperty< std::vector< float > > m_forceMaximumNegativeSubtrAmpFrac
Definition: RpdSubtractCentroidTool.h:85
ZDC::RpdSubtractCentroidTool::m_forceMinEMEnergy
RPDUtils::OptionalToolProperty< std::vector< float > > m_forceMinEMEnergy
Definition: RpdSubtractCentroidTool.h:82
pi
#define pi
Definition: TileMuonFitter.cxx:65
ZDC::RpdSubtractCentroidTool::m_colKey
SG::ReadDecorHandleKey< xAOD::ZdcModuleContainer > m_colKey
Definition: RpdSubtractCentroidTool.h:207
ZDC::RpdSubtractCentroidTool::m_xRowCentroidKey
SG::WriteDecorHandleKey< xAOD::ZdcModuleContainer > m_xRowCentroidKey
Definition: RpdSubtractCentroidTool.h:297
ZDC::RpdSubtractCentroidTool::m_ZDCStatusKey
SG::ReadDecorHandleKey< xAOD::ZdcModuleContainer > m_ZDCStatusKey
Definition: RpdSubtractCentroidTool.h:251
ZDC::RpdSubtractCentroidTool::initialize
StatusCode initialize() override
Dummy implementation of the initialisation function.
Definition: RpdSubtractCentroidTool.cxx:57
ZDC::RpdSubtractCentroidTool::m_cosDeltaReactionPlaneAngle
float m_cosDeltaReactionPlaneAngle
reaction plane angle on each side
Definition: RpdSubtractCentroidTool.h:166
TRT::Hit::side
@ side
Definition: HitInfo.h:83
ZDC::RpdSubtractCentroidTool::subtractRpdAmplitudes
bool subtractRpdAmplitudes(unsigned int side)
Definition: RpdSubtractCentroidTool.cxx:350
ZDC::RpdSubtractCentroidTool::ExcessiveZDCEnergyBit
@ ExcessiveZDCEnergyBit
Definition: RpdSubtractCentroidTool.h:36
ZDC::RpdSubtractCentroidTool::m_ZDCSideStatus
std::optional< std::array< unsigned int, 2 > > m_ZDCSideStatus
RPD analysis status word on each side.
Definition: RpdSubtractCentroidTool.h:123
ZDC::RpdSubtractCentroidTool::m_forceMaxZDCEnergy
RPDUtils::OptionalToolProperty< std::vector< float > > m_forceMaxZDCEnergy
Definition: RpdSubtractCentroidTool.h:81
ZDC::RpdSubtractCentroidTool::m_yCentroidPreAvgSubtr
std::array< float, 2 > m_yCentroidPreAvgSubtr
x centroid after geomerty correction and before average subtraction on each side
Definition: RpdSubtractCentroidTool.h:154
AthCommonDataStore< AthCommonMsg< AlgTool > >::evtStore
ServiceHandle< StoreGateSvc > & evtStore()
The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc.
Definition: AthCommonDataStore.h:85
ZDC::RpdSubtractCentroidTool::ExcessivePileupBit
@ ExcessivePileupBit
Definition: RpdSubtractCentroidTool.h:42
ZDC::RpdSubtractCentroidTool::m_alignmentYOffset
std::array< float, 2 > m_alignmentYOffset
geometry + crossing angle correction in x (ATLAS coordinates)
Definition: RpdSubtractCentroidTool.h:132
ATH_MSG_ERROR
#define ATH_MSG_ERROR(x)
Definition: AthMsgStreamMacros.h:33
SG::ReadDecorHandle
Handle class for reading a decoration on an object.
Definition: StoreGate/StoreGate/ReadDecorHandle.h:94
ZdcEventInfo::ZDCDECODINGERROR
@ ZDCDECODINGERROR
Definition: ZdcEventInfo.h:19
ZDC::RpdSubtractCentroidTool::m_alignmentXOffset
std::array< float, 2 > m_alignmentXOffset
RPD channel data for each channel (first index row, then index column) on each side.
Definition: RpdSubtractCentroidTool.h:131
SG::ReadDecorHandleKey::initialize
StatusCode initialize(bool used=true)
If this object is used as a property, then this should be called during the initialize phase.
ZDC::RpdSubtractCentroidTool::m_RPDChannelAmplitudeCalibKey
SG::ReadDecorHandleKey< xAOD::ZdcModuleContainer > m_RPDChannelAmplitudeCalibKey
Definition: RpdSubtractCentroidTool.h:223
RPDUtils::OptionalToolProperty::has_value
bool has_value() const
Definition: RPDUtils.cxx:28
ZDC::RpdSubtractCentroidTool::m_xposRelKey
SG::ReadDecorHandleKey< xAOD::ZdcModuleContainer > m_xposRelKey
Definition: RpdSubtractCentroidTool.h:195
ZDC::RpdSubtractCentroidTool::SubstepStatus::SkipEvent
@ SkipEvent
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
ZDC::RpdSubtractCentroidTool::m_yCentroidPreAvgSubtrKey
SG::WriteDecorHandleKey< xAOD::ZdcModuleContainer > m_yCentroidPreAvgSubtrKey
Definition: RpdSubtractCentroidTool.h:285
angle
double angle(const GeoTrf::Vector2D &a, const GeoTrf::Vector2D &b)
Definition: TRTDetectorFactory_Full.cxx:68
AthCommonDataStore< AthCommonMsg< AlgTool > >::declareProperty
Gaudi::Details::PropertyBase & declareProperty(Gaudi::Property< T, V, H > &t)
Definition: AthCommonDataStore.h:145
ZDC::RpdSubtractCentroidTool::m_eventInfoKey
SG::ReadHandleKey< xAOD::EventInfo > m_eventInfoKey
Definition: RpdSubtractCentroidTool.h:191
SG::WriteDecorHandle
Handle class for adding a decoration to an object.
Definition: StoreGate/StoreGate/WriteDecorHandle.h:100
ZDC::RpdSubtractCentroidTool::initializeWriteKey
StatusCode initializeWriteKey(std::string const &containerName, SG::WriteDecorHandleKey< xAOD::ZdcModuleContainer > &writeHandleKey, std::string const &key)
Definition: RpdSubtractCentroidTool.cxx:52
ZDC::RpdSubtractCentroidTool::ValidBit
@ ValidBit
Definition: RpdSubtractCentroidTool.h:32
ZDC::RpdSubtractCentroidTool::m_ZDCModuleCalibEnergyKey
SG::ReadDecorHandleKey< xAOD::ZdcModuleContainer > m_ZDCModuleCalibEnergyKey
Definition: RpdSubtractCentroidTool.h:211
ZDC::RpdSubtractCentroidTool::m_RPDChannelAmplitudeKey
SG::ReadDecorHandleKey< xAOD::ZdcModuleContainer > m_RPDChannelAmplitudeKey
Definition: RpdSubtractCentroidTool.h:219
ZDC::RpdSubtractCentroidTool::m_maxEMEnergy
std::vector< float > m_maxEMEnergy
Definition: RpdSubtractCentroidTool.h:93
ZDC::RpdSubtractCentroidTool::m_eventValid
bool m_eventValid
average y centroid
Definition: RpdSubtractCentroidTool.h:142
ZDC::RpdSubtractCentroidTool::m_rowKey
SG::ReadDecorHandleKey< xAOD::ZdcModuleContainer > m_rowKey
Definition: RpdSubtractCentroidTool.h:203
ATH_CHECK
#define ATH_CHECK
Definition: AthCheckMacros.h:40
ZDC::RpdSubtractCentroidTool::m_EMCalibEnergy
std::optional< std::array< float, 2 > > m_EMCalibEnergy
ZDC final (calibrated) energy on each side.
Definition: RpdSubtractCentroidTool.h:125
RPDUtils::OptionalToolProperty::value
T const & value() const
Definition: RPDUtils.cxx:31
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
ZDC::RpdSubtractCentroidTool::Col0ValidBit
@ Col0ValidBit
Definition: RpdSubtractCentroidTool.h:50
DataVector
Derived DataVector<T>.
Definition: DataVector.h:794
ZDC::RpdSubtractCentroidTool::m_ZDCModuleContainerName
std::string m_ZDCModuleContainerName
Definition: RpdSubtractCentroidTool.h:75
ZDC::RpdSubtractCentroidTool::reset
void reset()
Definition: RpdSubtractCentroidTool.cxx:174
WriteDecorHandle.h
Handle class for adding a decoration to an object.
ZDC::RpdSubtractCentroidTool::m_ZDCModuleStatusKey
SG::ReadDecorHandleKey< xAOD::ZdcModuleContainer > m_ZDCModuleStatusKey
Definition: RpdSubtractCentroidTool.h:215
ZDC::RpdSubtractCentroidTool::m_writeAux
bool m_writeAux
Definition: RpdSubtractCentroidTool.h:77
xAOD::EventInfo_v1::ForwardDet
@ ForwardDet
The forward detectors.
Definition: EventInfo_v1.h:338
SG::ReadHandle::isValid
virtual bool isValid() override final
Can the handle be successfully dereferenced?
ZDC::RpdSubtractCentroidTool::m_RPDChannelStatusKey
SG::ReadDecorHandleKey< xAOD::ZdcModuleContainer > m_RPDChannelStatusKey
Definition: RpdSubtractCentroidTool.h:239
ZDC::RpdSubtractCentroidTool::m_initialized
bool m_initialized
Definition: RpdSubtractCentroidTool.h:106
ZDC::RpdSubtractCentroidTool::InsufficientZDCEnergyBit
@ InsufficientZDCEnergyBit
Definition: RpdSubtractCentroidTool.h:35
RPDUtils::sideA
unsigned constexpr int sideA
Definition: RPDUtils.h:16
ZDC::RpdSubtractCentroidTool::m_yCentroidPreGeomCorPreAvgSubtrKey
SG::WriteDecorHandleKey< xAOD::ZdcModuleContainer > m_yCentroidPreGeomCorPreAvgSubtrKey
Definition: RpdSubtractCentroidTool.h:277
RPDUtils::nCols
unsigned constexpr int nCols
Definition: RPDUtils.h:25
RPDUtils.h
ZDC::RpdSubtractCentroidTool::m_yCentroidPreGeomCorPreAvgSubtr
std::array< float, 2 > m_yCentroidPreGeomCorPreAvgSubtr
x centroid before geomerty correction and before average subtraction (RPD detector coordinates) on ea...
Definition: RpdSubtractCentroidTool.h:152
ZDC::RpdSubtractCentroidTool::ZeroSumBit
@ ZeroSumBit
Definition: RpdSubtractCentroidTool.h:43
ZDC::RpdSubtractCentroidTool::m_xCentroidPreGeomCorPreAvgSubtr
std::array< float, 2 > m_xCentroidPreGeomCorPreAvgSubtr
subtracted amplitude sum on each side
Definition: RpdSubtractCentroidTool.h:151
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:240
ZDC::RpdSubtractCentroidTool::m_yposRelKey
SG::ReadDecorHandleKey< xAOD::ZdcModuleContainer > m_yposRelKey
Definition: RpdSubtractCentroidTool.h:199
ZDC::RpdSubtractCentroidTool::m_ZDCSumContainerName
std::string m_ZDCSumContainerName
Definition: RpdSubtractCentroidTool.h:76
RPDUtils::ZDCModuleZDCType
unsigned constexpr int ZDCModuleZDCType
Definition: RPDUtils.h:20
RPDUtils::ZDCModuleEMModule
unsigned constexpr int ZDCModuleEMModule
Definition: RPDUtils.h:22
ZDC::RpdSubtractCentroidTool::RPDInvalidBit
@ RPDInvalidBit
Definition: RpdSubtractCentroidTool.h:40
RPDDataAnalyzer.h
ZDC::RpdSubtractCentroidTool::m_centroidEventValidKey
SG::WriteDecorHandleKey< xAOD::ZdcModuleContainer > m_centroidEventValidKey
Definition: RpdSubtractCentroidTool.h:257
ZDC::RpdSubtractCentroidTool::EMInvalidBit
@ EMInvalidBit
Definition: RpdSubtractCentroidTool.h:37
ZDC::RpdSubtractCentroidTool::m_maxZDCEnergy
std::vector< float > m_maxZDCEnergy
Definition: RpdSubtractCentroidTool.h:91
ZDC::RpdSubtractCentroidTool::calculateDetectorCentroid
void calculateDetectorCentroid(unsigned int side)
Definition: RpdSubtractCentroidTool.cxx:388
ZDC::RpdSubtractCentroidTool::m_xRowCentroid
std::array< std::vector< float >, 2 > m_xRowCentroid
y centroid after geomerty correction and after average subtraction on each side
Definition: RpdSubtractCentroidTool.h:157
ZDC::RpdSubtractCentroidTool::m_pileupMaxFrac
std::vector< float > m_pileupMaxFrac
Definition: RpdSubtractCentroidTool.h:94
ZDC::RpdSubtractCentroidTool::InsufficientEMEnergyBit
@ InsufficientEMEnergyBit
Definition: RpdSubtractCentroidTool.h:38
ZDC::RpdSubtractCentroidTool::m_xCentroidKey
SG::WriteDecorHandleKey< xAOD::ZdcModuleContainer > m_xCentroidKey
Definition: RpdSubtractCentroidTool.h:289
ZDC::RpdSubtractCentroidTool::m_subtrAmpRowSum
std::array< std::array< float, RPDUtils::nRows >, 2 > m_subtrAmpRowSum
subtracted amplitude for each channel on each side
Definition: RpdSubtractCentroidTool.h:148
SG::WriteDecorHandleKey::initialize
StatusCode initialize(bool used=true)
If this object is used as a property, then this should be called during the initialize phase.
ZDC::RpdSubtractCentroidTool::m_yColCentroidKey
SG::WriteDecorHandleKey< xAOD::ZdcModuleContainer > m_yColCentroidKey
Definition: RpdSubtractCentroidTool.h:301
ZDC::RpdSubtractCentroidTool::m_xCentroidPreGeomCorPreAvgSubtrKey
SG::WriteDecorHandleKey< xAOD::ZdcModuleContainer > m_xCentroidPreGeomCorPreAvgSubtrKey
Definition: RpdSubtractCentroidTool.h:273
ATH_MSG_WARNING
#define ATH_MSG_WARNING(x)
Definition: AthMsgStreamMacros.h:32
ZDC::RpdSubtractCentroidTool::initializeReadKey
StatusCode initializeReadKey(std::string const &containerName, SG::ReadDecorHandleKey< xAOD::ZdcModuleContainer > &readHandleKey, std::string const &key, bool addSuffix)
Definition: RpdSubtractCentroidTool.cxx:38
ZDC::RpdSubtractCentroidTool::m_maximumNegativeSubtrAmpFrac
std::vector< float > m_maximumNegativeSubtrAmpFrac
Definition: RpdSubtractCentroidTool.h:95
ZDC
Definition: RPDAnalysisTool.cxx:12
RPDUtils::sideC
unsigned constexpr int sideC
Definition: RPDUtils.h:15
ReadDecorHandle.h
Handle class for reading a decoration on an object.
ZDC::RpdSubtractCentroidTool::writeAOD
void writeAOD(xAOD::ZdcModuleContainer const &moduleSumContainer) const
Definition: RpdSubtractCentroidTool.cxx:438
xAOD::EventInfo_v1::isEventFlagBitSet
bool isEventFlagBitSet(EventFlagSubDet subDet, size_t bit) const
Check one particular bit of one particular sub-detector.
Definition: EventInfo_v1.cxx:703
merge.status
status
Definition: merge.py:16
ZDC::RpdSubtractCentroidTool::reprocessZdc
StatusCode reprocessZdc() override
Definition: RpdSubtractCentroidTool.cxx:519
RPDUtils::nRows
unsigned constexpr int nRows
Definition: RPDUtils.h:24
ZDC::RpdSubtractCentroidTool::geometryCorrection
void geometryCorrection(unsigned int side)
Definition: RpdSubtractCentroidTool.cxx:414
ZDCPulseAnalyzer::FailBit
@ FailBit
Definition: ZDCPulseAnalyzer.h:26
RPDUtils::ZDCSideToSideIndex
unsigned int ZDCSideToSideIndex(int const ZDCSide)
Definition: RPDUtils.cxx:7
ZDC::RpdSubtractCentroidTool::m_forceUseRPDSumAdc
RPDUtils::OptionalToolProperty< bool > m_forceUseRPDSumAdc
Definition: RpdSubtractCentroidTool.h:86
SG::ReadDecorHandleKey
Property holding a SG store/key/clid/attr name from which a ReadDecorHandle is made.
Definition: StoreGate/StoreGate/ReadDecorHandleKey.h:85
ZDC::RpdSubtractCentroidTool::calculateReactionPlaneAngle
void calculateReactionPlaneAngle(unsigned int side)
Definition: RpdSubtractCentroidTool.cxx:425
ZDC::RpdSubtractCentroidTool::m_xCentroidPreAvgSubtrKey
SG::WriteDecorHandleKey< xAOD::ZdcModuleContainer > m_xCentroidPreAvgSubtrKey
Definition: RpdSubtractCentroidTool.h:281
ZDC::RpdSubtractCentroidTool::HasCentroidBit
@ HasCentroidBit
Definition: RpdSubtractCentroidTool.h:33
ZDC::RpdSubtractCentroidTool::ZDCInvalidBit
@ ZDCInvalidBit
Definition: RpdSubtractCentroidTool.h:34
RpdSubtractCentroidTool.h
ZdcEventInfo.h
Define enumerations for event-level ZDC data.
ZDC::RPDDataAnalyzer::OutOfTimePileupBit
@ OutOfTimePileupBit
Definition: RPDDataAnalyzer.h:38
ZDC::RpdSubtractCentroidTool::SubstepStatus::Success
@ Success
ZDC::RpdSubtractCentroidTool::m_avgYCentroid
std::array< float, 2 > m_avgYCentroid
average x centroid
Definition: RpdSubtractCentroidTool.h:138
DataVector::empty
bool empty() const noexcept
Returns true if the collection is empty.
ZDC::RpdSubtractCentroidTool::ExcessiveEMEnergyBit
@ ExcessiveEMEnergyBit
Definition: RpdSubtractCentroidTool.h:39
ZDC::RpdSubtractCentroidTool::m_xCentroid
std::array< float, 2 > m_xCentroid
y centroid after geomerty correction and before average subtraction on each side
Definition: RpdSubtractCentroidTool.h:155
ZDC::RpdSubtractCentroidTool::m_avgXCentroid
std::array< float, 2 > m_avgXCentroid
geometry + crossing angle correction in y (ATLAS coordinates)
Definition: RpdSubtractCentroidTool.h:137
RPDUtils::helpZero
void helpZero(Range &v) requires(std
Definition: RPDUtils.h:27
RPDUtils::ZDCModuleRPDType
unsigned constexpr int ZDCModuleRPDType
Definition: RPDUtils.h:21
ZDC::RpdSubtractCentroidTool::m_yCentroidKey
SG::WriteDecorHandleKey< xAOD::ZdcModuleContainer > m_yCentroidKey
Definition: RpdSubtractCentroidTool.h:293
ZdcEventInfo::RPDDECODINGERROR
@ RPDDECODINGERROR
Definition: ZdcEventInfo.h:19
mapkey::key
key
Definition: TElectronEfficiencyCorrectionTool.cxx:37