ATLAS Offline Software
RPDAnalysisTool.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 
8 #include "ZdcUtils/RPDUtils.h"
10 #include "ZdcUtils/ZdcEventInfo.h"
11 
12 namespace ZDC {
13 
14 RPDAnalysisTool::RPDAnalysisTool(std::string const& name) : asg::AsgTool(name) {
15  declareProperty("ZdcModuleContainerName", m_ZDCModuleContainerName = "ZdcModules", "Location of ZDC processed data");
16  declareProperty("ZdcSumContainerName", m_ZDCSumContainerName = "ZdcSums", "Location of ZDC processed sums");
17  declareProperty("Configuration", m_configuration = "default");
18  declareProperty("WriteAux", m_writeAux = true);
19  declareProperty("AuxSuffix", m_auxSuffix = "");
20 
21  declareProperty("NSamples", m_forceNSamples, "Total number of FADC samples in readout window");
22  declareProperty("NBaselineSamples", m_forceNBaselineSamples, "Number of baseline samples; the sample equal to this number is the start of signal region");
23  declareProperty("EndSignalSample", m_forceEndSignalSample, "Samples before (not including) this sample are the signal region; 0 or Nsamples goes to end of window");
24  declareProperty("Pulse2ndDerivThresh", m_forcePulse2ndDerivThresh, "Second differences less than or equal to this number indicate a pulse");
25  declareProperty("PostPulseFracThresh", m_forcePostPulseFracThresh, "If there is a good pulse and post-pulse and size of post-pulse as a fraction of good pulse is less than or equal to this number, ignore post-pulse");
26  declareProperty("GoodPulseSampleStart", m_forceGoodPulseSampleStart, "Pulses before this sample are considered pre-pulses");
27  declareProperty("GoodPulseSampleStop", m_forceGoodPulseSampleStop, "Pulses after this sample are considered post-pulses");
28  declareProperty("NominalBaseline", m_forceNominalBaseline, "The global nominal baseline; used when pileup is detected");
29  declareProperty("PileupBaselineSumThresh", m_forcePileupBaselineSumThresh, "Baseline sum (after subtracting nominal baseline) less than this number indicates there is NO pileup");
30  declareProperty("PileupBaselineStdDevThresh", m_forcePileupBaselineStdDevThresh, "Baseline standard deviations less than this number indicate there is NO pileup");
31  declareProperty("NNegativesAllowed", m_forceNNegativesAllowed, "Maximum number of negative ADC values after baseline and pileup subtraction allowed in signal range");
32  declareProperty("ADCOverflow", m_forceADCOverflow, "ADC values greater than or equal to this number are considered overflow");
33  declareProperty("SideCCalibFactors", m_forceOutputCalibFactors.at(RPDUtils::sideC), "Multiplicative calibration factors to apply to RPD output, e.g., sum/max ADC, per channel on side C");
34  declareProperty("SideACalibFactors", m_forceOutputCalibFactors.at(RPDUtils::sideA), "Multiplicative calibration factors to apply to RPD output, e.g., sum/max ADC, per channel on side A");
35 }
36 
37 StatusCode RPDAnalysisTool::initializeKey(std::string const& containerName, SG::WriteDecorHandleKey<xAOD::ZdcModuleContainer> & writeHandleKey, std::string const& key) {
38  writeHandleKey = containerName + key + m_auxSuffix;
39  return writeHandleKey.initialize();
40 }
41 
43  RPDConfig finalConfig {};
44  std::array<std::vector<float>, 2> finalOutputCalibFactors;
45  // first initialize reconstruction parameters from config string
46  if (m_configuration == "default" || m_configuration == "pp2023" || m_configuration == "PbPb2023") {
47  finalConfig.nSamples = 24;
48  finalConfig.nBaselineSamples = 7;
49  finalConfig.endSignalSample = 23;
50  finalConfig.pulse2ndDerivThresh = -18;
51  finalConfig.postPulseFracThresh = 0.15;
52  finalConfig.goodPulseSampleStart = 8;
53  finalConfig.goodPulseSampleStop = 10;
54  finalConfig.nominalBaseline = 100;
55  finalConfig.pileupBaselineSumThresh = 53;
56  finalConfig.pileupBaselineStdDevThresh = 2;
57  finalConfig.nNegativesAllowed = 2;
58  finalConfig.ADCOverflow = 4095;
59  finalOutputCalibFactors.at(RPDUtils::sideC) = std::vector<float>(16, 1.0);
60  finalOutputCalibFactors.at(RPDUtils::sideA) = std::vector<float>(16, 1.0);
61  } else if (m_configuration == "pp2024" || m_configuration == "PbPb2024") {
62  finalConfig.nSamples = 24;
63  finalConfig.nBaselineSamples = 7;
64  finalConfig.endSignalSample = 23;
65  finalConfig.pulse2ndDerivThresh = -18;
66  finalConfig.postPulseFracThresh = 0.15;
67  finalConfig.goodPulseSampleStart = 8;
68  finalConfig.goodPulseSampleStop = 10;
69  finalConfig.nominalBaseline = 100;
70  finalConfig.pileupBaselineSumThresh = 53;
71  finalConfig.pileupBaselineStdDevThresh = 2;
72  finalConfig.nNegativesAllowed = 2;
73  finalConfig.ADCOverflow = 4095;
74  finalOutputCalibFactors.at(RPDUtils::sideC) = std::vector<float>(16, 1.0);
75  finalOutputCalibFactors.at(RPDUtils::sideA) = std::vector<float>(16, 1.0);
76  }
77  // then overwrite inidividual parameters from configuration if any were provided
78  if (m_forceNSamples.has_value()) {
79  finalConfig.nSamples = m_forceNSamples.value();
80  }
82  finalConfig.nBaselineSamples = m_forceNBaselineSamples.value();
83  }
85  finalConfig.endSignalSample = m_forceEndSignalSample.value();
86  }
88  finalConfig.pulse2ndDerivThresh = m_forcePulse2ndDerivThresh.value();
89  }
91  finalConfig.postPulseFracThresh = m_forcePostPulseFracThresh.value();
92  }
94  finalConfig.goodPulseSampleStart = m_forceGoodPulseSampleStart.value();
95  }
97  finalConfig.goodPulseSampleStop = m_forceGoodPulseSampleStop.value();
98  }
100  finalConfig.nominalBaseline = m_forceNominalBaseline.value();
101  }
103  finalConfig.pileupBaselineSumThresh = m_forcePileupBaselineSumThresh.value();
104  }
106  finalConfig.pileupBaselineStdDevThresh = m_forcePileupBaselineStdDevThresh.value();
107  }
109  finalConfig.nNegativesAllowed = m_forceNNegativesAllowed.value();
110  }
112  finalConfig.ADCOverflow = m_forceADCOverflow.value();
113  }
114  for (auto const side : RPDUtils::sides) {
115  if (m_forceOutputCalibFactors.at(side).has_value()) {
116  finalOutputCalibFactors.at(side) = m_forceOutputCalibFactors.at(side).value();
117  }
118  }
119 
120  ATH_MSG_DEBUG("RPDAnalysisTool reconstruction parameters:");
121  ATH_MSG_DEBUG("config = " << m_configuration);
122  ATH_MSG_DEBUG("nSamples = " << finalConfig.nSamples);
123  ATH_MSG_DEBUG("nBaselineSamples = " << finalConfig.nBaselineSamples);
124  ATH_MSG_DEBUG("endSignalSample = " << finalConfig.endSignalSample);
125  ATH_MSG_DEBUG("pulse2ndDerivThresh = " << finalConfig.pulse2ndDerivThresh);
126  ATH_MSG_DEBUG("postPulseFracThresh = " << finalConfig.postPulseFracThresh);
127  ATH_MSG_DEBUG("goodPulseSampleStart = " << finalConfig.goodPulseSampleStart);
128  ATH_MSG_DEBUG("goodPulseSampleStop = " << finalConfig.goodPulseSampleStop);
129  ATH_MSG_DEBUG("nominalBaseline = " << finalConfig.nominalBaseline);
130  ATH_MSG_DEBUG("pileupBaselineSumThresh = " << finalConfig.pileupBaselineSumThresh);
131  ATH_MSG_DEBUG("pileupBaselineStdDevThresh = " << finalConfig.pileupBaselineStdDevThresh);
132  ATH_MSG_DEBUG("nNegativesAllowed = " << finalConfig.nNegativesAllowed);
133  ATH_MSG_DEBUG("ADCOverflow = " << finalConfig.ADCOverflow);
134  ATH_MSG_DEBUG("sideCCalibFactors = " << RPDUtils::vecToString(finalOutputCalibFactors.at(RPDUtils::sideC)));
135  ATH_MSG_DEBUG("sideACalibFactors = " << RPDUtils::vecToString(finalOutputCalibFactors.at(RPDUtils::sideA)));
136 
137  m_dataAnalyzers.at(RPDUtils::sideC) = std::make_unique<RPDDataAnalyzer>(MakeMessageFunction(), "rpdC", finalConfig, finalOutputCalibFactors.at(RPDUtils::sideC));
138  m_dataAnalyzers.at(RPDUtils::sideA) = std::make_unique<RPDDataAnalyzer>(MakeMessageFunction(), "rpdA", finalConfig, finalOutputCalibFactors.at(RPDUtils::sideA));
139 
140  // initialize per-channel decorations (in ZdcModules)
143  ATH_CHECK(initializeKey(m_ZDCModuleContainerName, m_chPileupStretchedExpFitParamsKey, ".RPDChannelPileupStretchedExpFitParams"));
144  ATH_CHECK(initializeKey(m_ZDCModuleContainerName, m_chPileupExpFitParamErrsKey, ".RPDChannelPileupExpFitParamErrs"));
145  ATH_CHECK(initializeKey(m_ZDCModuleContainerName, m_chPileupStretchedExpFitParamErrsKey, ".RPDChannelPileupStretchedExpFitParamErrs"));
147  ATH_CHECK(initializeKey(m_ZDCModuleContainerName, m_chPileupStretchedExpFitMSEKey, ".RPDChannelPileupStretchedExpFitMSE"));
155 
156  // initialize per-side decorations (in ZdcSums)
158 
160 
161  if (m_writeAux && !m_auxSuffix.empty()) {
162  ATH_MSG_DEBUG("Suffix string = " << m_auxSuffix);
163  }
164 
165  m_initialized = true;
166  return StatusCode::SUCCESS;
167 }
168 
170  return std::make_shared<ZDCMsg::MessageFunction>(
171  [this] (int const messageZdcLevel, const std::string& message) -> bool {
172  auto const messageAthenaLevel = static_cast<MSG::Level>(messageZdcLevel);
173  bool const passesStreamOutputLevel = messageAthenaLevel >= this->msg().level();
174  if (passesStreamOutputLevel) {
175  this->msg(messageAthenaLevel) << message << endmsg;
176  }
177  return passesStreamOutputLevel;
178  }
179  );
180 }
181 
183  for (auto & analyzer : m_dataAnalyzers) {
184  analyzer->reset();
185  }
186 }
187 
189  // loop through ZDC modules to find those which are RPD channels
190  for (auto const& module : moduleContainer) {
191  if (module->zdcType() != RPDUtils::ZDCModuleRPDType) {
192  // this is not an RPD channel, so skip it
193  continue;
194  }
195  unsigned int const side = RPDUtils::ZDCSideToSideIndex(module->zdcSide());
196  if (module->zdcChannel() < 0 || static_cast<unsigned int>(module->zdcChannel()) > RPDUtils::nChannels - 1) {
197  ATH_MSG_ERROR("Invalid RPD channel found on side " << side << ": channel number = " << module->zdcChannel());
198  }
199  // channel numbers are fixed in mapping in ZdcConditions, numbered 0-15
200  unsigned int const channel = module->zdcChannel();
201  ATH_MSG_DEBUG("RPD side " << side << " channel " << module->zdcChannel());
203  auto const& waveform = accessor(*module);
204  m_dataAnalyzers.at(side)->loadChannelData(channel, waveform);
205  }
206 }
207 
209  for (auto & analyzer : m_dataAnalyzers) {
210  analyzer->analyzeData();
211  }
212 }
213 
214 void RPDAnalysisTool::writeAOD(xAOD::ZdcModuleContainer const& moduleContainer, xAOD::ZdcModuleContainer const& moduleSumContainer) const {
215  if (!m_writeAux) {
216  return;
217  }
218 
219  ATH_MSG_DEBUG("Adding variables with suffix = " + m_auxSuffix);
220 
221  // write per-channel decorations (in ZdcModules)
236  for (auto const& module : moduleContainer) {
237  if (module->zdcType() != RPDUtils::ZDCModuleRPDType) {
238  // this is not an RPD channel, so skip it
239  continue;
240  }
241  unsigned int const side = RPDUtils::ZDCSideToSideIndex(module->zdcSide());
242  unsigned int const channel = module->zdcChannel();
243  chBaseline(*module) = m_dataAnalyzers.at(side)->getChBaseline(channel);
244  chPileupExpFitParams(*module) = m_dataAnalyzers.at(side)->getChPileupExpFitParams(channel);
245  chPileupStretchedExpFitParams(*module) = m_dataAnalyzers.at(side)->getChPileupStretchedExpFitParams(channel);
246  chPileupExpFitParamErrs(*module) = m_dataAnalyzers.at(side)->getChPileupExpFitParamErrs(channel);
247  chPileupStretchedExpFitParamErrs(*module) = m_dataAnalyzers.at(side)->getChPileupStretchedExpFitParamErrs(channel);
248  chPileupExpFitMSE(*module) = m_dataAnalyzers.at(side)->getChPileupExpFitMSE(channel);
249  chPileupStretchedExpFitMSE(*module) = m_dataAnalyzers.at(side)->getChPileupStretchedExpFitMSE(channel);
250  chAmplitude(*module) = m_dataAnalyzers.at(side)->getChSumAdc(channel);
251  chAmplitudeCalib(*module) = m_dataAnalyzers.at(side)->getChSumAdcCalib(channel);
252  chMaxADC(*module) = m_dataAnalyzers.at(side)->getChMaxAdc(channel);
253  chMaxADCCalib(*module) = m_dataAnalyzers.at(side)->getChMaxAdcCalib(channel);
254  chMaxSample(*module) = m_dataAnalyzers.at(side)->getChMaxSample(channel);
255  chStatus(*module) = m_dataAnalyzers.at(side)->getChStatus(channel);
256  chPileupFrac(*module) = m_dataAnalyzers.at(side)->getChPileupFrac(channel);
257  }
258 
259  // write per-side decorations (in ZdcSums)
261  for (auto const& sum: moduleSumContainer) {
262  if (sum->zdcSide() == RPDUtils::ZDCSumsGlobalZDCSide) {
263  // skip global sum (it's like the side between sides)
264  continue;
265  }
266  unsigned int const side = RPDUtils::ZDCSideToSideIndex(sum->zdcSide());
267  sideStatus(*sum) = m_dataAnalyzers.at(side)->getSideStatus();
268  }
269 }
270 
272  if (moduleContainer.empty()) {
273  return StatusCode::SUCCESS; // if no modules, do nothing
274  }
275 
277  if (!eventInfo.isValid()) {
278  return StatusCode::FAILURE;
279  }
280 
282  ATH_MSG_WARNING("RPD decoding error found - abandoning RPD reco!");
283  return StatusCode::SUCCESS;
284  }
285 
286  reset();
287  readAOD(moduleContainer);
288  analyze();
289  writeAOD(moduleContainer, moduleSumContainer);
290 
291  return StatusCode::SUCCESS;
292 }
293 
295  if (!m_initialized) {
296  ATH_MSG_WARNING("Tool not initialized!");
297  return StatusCode::FAILURE;
298  }
299  xAOD::ZdcModuleContainer const* ZDCModules = nullptr;
301  xAOD::ZdcModuleContainer const* ZDCSums = nullptr;
303  return recoZdcModules(*ZDCModules, *ZDCSums);
304 }
305 
306 } // 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::RPDAnalysisTool::reset
void reset()
Definition: RPDAnalysisTool.cxx:182
ZDC::RPDAnalysisTool::readAOD
void readAOD(xAOD::ZdcModuleContainer const &moduleContainer)
Definition: RPDAnalysisTool.cxx:188
ZDC::RPDAnalysisTool::m_auxSuffix
std::string m_auxSuffix
Definition: RPDAnalysisTool.h:49
SG::WriteDecorHandleKey
Property holding a SG store/key/clid/attr name from which a WriteDecorHandle is made.
Definition: StoreGate/StoreGate/WriteDecorHandleKey.h:89
ZDC::RPDAnalysisTool::m_initialized
bool m_initialized
Definition: RPDAnalysisTool.h:45
RPDAnalysisTool.h
RPDUtils::nChannels
unsigned constexpr int nChannels
Definition: RPDUtils.h:23
ZDC::RPDAnalysisTool::m_forceOutputCalibFactors
std::array< RPDUtils::OptionalToolProperty< std::vector< float > >, 2 > m_forceOutputCalibFactors
Definition: RPDAnalysisTool.h:65
ZDC::RPDAnalysisTool::m_chPileupExpFitParamErrsKey
SG::WriteDecorHandleKey< xAOD::ZdcModuleContainer > m_chPileupExpFitParamErrsKey
Definition: RPDAnalysisTool.h:74
ZDC::RPDAnalysisTool::m_chMaxADCCalibKey
SG::WriteDecorHandleKey< xAOD::ZdcModuleContainer > m_chMaxADCCalibKey
Definition: RPDAnalysisTool.h:81
ZDC::RPDAnalysisTool::m_configuration
std::string m_configuration
Definition: RPDAnalysisTool.h:47
plotting.yearwise_efficiency.channel
channel
Definition: yearwise_efficiency.py:24
ZDC::RPDAnalysisTool::m_chMaxSampleKey
SG::WriteDecorHandleKey< xAOD::ZdcModuleContainer > m_chMaxSampleKey
Definition: RPDAnalysisTool.h:82
RPDUtils::sides
constexpr std::initializer_list< unsigned int > sides
Definition: RPDUtils.h:17
SG::ReadHandle
Definition: StoreGate/StoreGate/ReadHandle.h:70
AthCommonDataStore< AthCommonMsg< AlgTool > >::declareProperty
Gaudi::Details::PropertyBase & declareProperty(Gaudi::Property< T > &t)
Definition: AthCommonDataStore.h:145
ZDC::RPDAnalysisTool::m_forceGoodPulseSampleStart
RPDUtils::OptionalToolProperty< unsigned int > m_forceGoodPulseSampleStart
Definition: RPDAnalysisTool.h:58
ZDC::RPDAnalysisTool::m_chAmplitudeKey
SG::WriteDecorHandleKey< xAOD::ZdcModuleContainer > m_chAmplitudeKey
Definition: RPDAnalysisTool.h:78
ZDC::RPDAnalysisTool::m_chPileupStretchedExpFitParamsKey
SG::WriteDecorHandleKey< xAOD::ZdcModuleContainer > m_chPileupStretchedExpFitParamsKey
Definition: RPDAnalysisTool.h:73
asg
Definition: DataHandleTestTool.h:28
ZDC::RPDAnalysisTool::initialize
StatusCode initialize() override
Dummy implementation of the initialisation function.
Definition: RPDAnalysisTool.cxx:42
ZDC::RPDAnalysisTool::m_chPileupExpFitMSEKey
SG::WriteDecorHandleKey< xAOD::ZdcModuleContainer > m_chPileupExpFitMSEKey
Definition: RPDAnalysisTool.h:76
ZDC::RPDAnalysisTool::m_chPileupFracKey
SG::WriteDecorHandleKey< xAOD::ZdcModuleContainer > m_chPileupFracKey
Definition: RPDAnalysisTool.h:84
ZDC::RPDAnalysisTool::analyze
void analyze()
Definition: RPDAnalysisTool.cxx:208
ZDC::RPDAnalysisTool::initializeKey
StatusCode initializeKey(std::string const &containerName, SG::WriteDecorHandleKey< xAOD::ZdcModuleContainer > &writeHandleKey, std::string const &key)
Definition: RPDAnalysisTool.cxx:37
RPDUtils::ZDCSumsGlobalZDCSide
constexpr int ZDCSumsGlobalZDCSide
Definition: RPDUtils.h:19
SG::ConstAccessor
Helper class to provide constant type-safe access to aux data.
Definition: ConstAccessor.h:55
ReweightUtils.message
message
Definition: ReweightUtils.py:15
ZDC::RPDAnalysisTool::m_writeAux
bool m_writeAux
Definition: RPDAnalysisTool.h:48
ZDC::RPDAnalysisTool::m_forceNSamples
RPDUtils::OptionalToolProperty< unsigned int > m_forceNSamples
Definition: RPDAnalysisTool.h:53
ZDC::RPDAnalysisTool::m_chStatusKey
SG::WriteDecorHandleKey< xAOD::ZdcModuleContainer > m_chStatusKey
Definition: RPDAnalysisTool.h:83
TRT::Hit::side
@ side
Definition: HitInfo.h:83
ZDC::RPDAnalysisTool::m_chPileupStretchedExpFitParamErrsKey
SG::WriteDecorHandleKey< xAOD::ZdcModuleContainer > m_chPileupStretchedExpFitParamErrsKey
Definition: RPDAnalysisTool.h:75
ZDC::RPDAnalysisTool::m_sideStatusKey
SG::WriteDecorHandleKey< xAOD::ZdcModuleContainer > m_sideStatusKey
Definition: RPDAnalysisTool.h:86
python.PyAthena.module
module
Definition: PyAthena.py:131
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::RPDConfig::nSamples
unsigned int nSamples
Definition: RPDDataAnalyzer.h:23
ZDC::RPDAnalysisTool::m_chPileupExpFitParamsKey
SG::WriteDecorHandleKey< xAOD::ZdcModuleContainer > m_chPileupExpFitParamsKey
Definition: RPDAnalysisTool.h:72
ZDC::RPDAnalysisTool::m_forcePulse2ndDerivThresh
RPDUtils::OptionalToolProperty< float > m_forcePulse2ndDerivThresh
Definition: RPDAnalysisTool.h:56
TrigConf::MSGTC::Level
Level
Definition: Trigger/TrigConfiguration/TrigConfBase/TrigConfBase/MsgStream.h:21
ATH_MSG_ERROR
#define ATH_MSG_ERROR(x)
Definition: AthMsgStreamMacros.h:33
convertTimingResiduals.sum
sum
Definition: convertTimingResiduals.py:55
ZDC::RPDAnalysisTool::m_ZDCSumContainerName
std::string m_ZDCSumContainerName
Definition: RPDAnalysisTool.h:51
RPDUtils::OptionalToolProperty::has_value
bool has_value() const
Definition: RPDUtils.cxx:28
endmsg
#define endmsg
Definition: AnalysisConfig_Ntuple.cxx:63
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
SG::WriteDecorHandle
Handle class for adding a decoration to an object.
Definition: StoreGate/StoreGate/WriteDecorHandle.h:100
ZDC::RPDAnalysisTool::RPDAnalysisTool
RPDAnalysisTool(std::string const &name)
Definition: RPDAnalysisTool.cxx:14
ZDC::RPDAnalysisTool::m_ZDCModuleContainerName
std::string m_ZDCModuleContainerName
Definition: RPDAnalysisTool.h:50
ZDC::RPDAnalysisTool::m_forcePostPulseFracThresh
RPDUtils::OptionalToolProperty< float > m_forcePostPulseFracThresh
Definition: RPDAnalysisTool.h:57
ATH_CHECK
#define ATH_CHECK
Definition: AthCheckMacros.h:40
ZDC::RPDAnalysisTool::m_chPileupStretchedExpFitMSEKey
SG::WriteDecorHandleKey< xAOD::ZdcModuleContainer > m_chPileupStretchedExpFitMSEKey
Definition: RPDAnalysisTool.h:77
ZDC::RPDAnalysisTool::writeAOD
void writeAOD(xAOD::ZdcModuleContainer const &moduleContainer, xAOD::ZdcModuleContainer const &moduleSumContainer) const
Definition: RPDAnalysisTool.cxx:214
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
DataVector
Derived DataVector<T>.
Definition: DataVector.h:581
WriteDecorHandle.h
Handle class for adding a decoration to an object.
ZDC::RPDAnalysisTool::m_chAmplitudeCalibKey
SG::WriteDecorHandleKey< xAOD::ZdcModuleContainer > m_chAmplitudeCalibKey
Definition: RPDAnalysisTool.h:79
xAOD::EventInfo_v1::ForwardDet
@ ForwardDet
The forward detectors.
Definition: EventInfo_v1.h:338
ZDC::RPDAnalysisTool::m_forceNominalBaseline
RPDUtils::OptionalToolProperty< float > m_forceNominalBaseline
Definition: RPDAnalysisTool.h:60
SG::ReadHandle::isValid
virtual bool isValid() override final
Can the handle be successfully dereferenced?
ZDC::RPDAnalysisTool::m_forcePileupBaselineSumThresh
RPDUtils::OptionalToolProperty< float > m_forcePileupBaselineSumThresh
Definition: RPDAnalysisTool.h:61
RPDUtils::sideA
unsigned constexpr int sideA
Definition: RPDUtils.h:16
ZDC::RPDAnalysisTool::m_forcePileupBaselineStdDevThresh
RPDUtils::OptionalToolProperty< float > m_forcePileupBaselineStdDevThresh
Definition: RPDAnalysisTool.h:62
ZDC::RPDAnalysisTool::m_dataAnalyzers
std::array< std::unique_ptr< RPDDataAnalyzer >, 2 > m_dataAnalyzers
Definition: RPDAnalysisTool.h:68
RPDUtils.h
ZDC::RPDAnalysisTool::MakeMessageFunction
ZDCMsg::MessageFunctionPtr MakeMessageFunction()
Definition: RPDAnalysisTool.cxx:169
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:221
ZDC::RPDAnalysisTool::m_forceEndSignalSample
RPDUtils::OptionalToolProperty< unsigned int > m_forceEndSignalSample
Definition: RPDAnalysisTool.h:55
ZDC::RPDAnalysisTool::m_eventInfoKey
SG::ReadHandleKey< xAOD::EventInfo > m_eventInfoKey
Definition: RPDAnalysisTool.h:88
ZDCMsg::MessageFunctionPtr
std::shared_ptr< MessageFunction > MessageFunctionPtr
Definition: ZDCMsg.h:14
EventInfo.h
xAOD::JetAttributeAccessor::accessor
const AccessorWrapper< T > * accessor(xAOD::JetAttribute::AttributeID id)
Returns an attribute accessor corresponding to an AttributeID.
Definition: JetAccessorMap.h:26
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::RPDAnalysisTool::reprocessZdc
StatusCode reprocessZdc() override
Definition: RPDAnalysisTool.cxx:294
ZDC::RPDAnalysisTool::m_chMaxADCKey
SG::WriteDecorHandleKey< xAOD::ZdcModuleContainer > m_chMaxADCKey
Definition: RPDAnalysisTool.h:80
ATH_MSG_WARNING
#define ATH_MSG_WARNING(x)
Definition: AthMsgStreamMacros.h:32
ZDC::RPDAnalysisTool::m_chBaselineKey
SG::WriteDecorHandleKey< xAOD::ZdcModuleContainer > m_chBaselineKey
Definition: RPDAnalysisTool.h:71
ZDC
Definition: RPDAnalysisTool.cxx:12
AthCommonMsg< AlgTool >::msg
MsgStream & msg() const
Definition: AthCommonMsg.h:24
RPDUtils::sideC
unsigned constexpr int sideC
Definition: RPDUtils.h:15
ZDC::RPDConfig
Definition: RPDDataAnalyzer.h:22
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
ZDC::RPDAnalysisTool::m_forceNNegativesAllowed
RPDUtils::OptionalToolProperty< unsigned int > m_forceNNegativesAllowed
Definition: RPDAnalysisTool.h:63
ZDC::RPDAnalysisTool::m_forceGoodPulseSampleStop
RPDUtils::OptionalToolProperty< unsigned int > m_forceGoodPulseSampleStop
Definition: RPDAnalysisTool.h:59
RPDUtils::ZDCSideToSideIndex
unsigned int ZDCSideToSideIndex(int const ZDCSide)
Definition: RPDUtils.cxx:7
ZdcEventInfo.h
Define enumerations for event-level ZDC data.
DataVector::empty
bool empty() const noexcept
Returns true if the collection is empty.
ZDC::RPDAnalysisTool::m_forceNBaselineSamples
RPDUtils::OptionalToolProperty< unsigned int > m_forceNBaselineSamples
Definition: RPDAnalysisTool.h:54
ZDC::RPDAnalysisTool::m_forceADCOverflow
RPDUtils::OptionalToolProperty< unsigned int > m_forceADCOverflow
Definition: RPDAnalysisTool.h:64
RPDUtils::ZDCModuleRPDType
unsigned constexpr int ZDCModuleRPDType
Definition: RPDUtils.h:21
ZdcEventInfo::RPDDECODINGERROR
@ RPDDECODINGERROR
Definition: ZdcEventInfo.h:19
ZDC::RPDAnalysisTool::recoZdcModules
StatusCode recoZdcModules(xAOD::ZdcModuleContainer const &moduleContainer, xAOD::ZdcModuleContainer const &moduleSumContainer) override
Definition: RPDAnalysisTool.cxx:271
mapkey::key
key
Definition: TElectronEfficiencyCorrectionTool.cxx:37