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");
44 std::array<std::vector<float>, 2> finalOutputCalibFactors;
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);
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);
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);
166 return StatusCode::SUCCESS;
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) {
177 return passesStreamOutputLevel;
190 for (
auto const&
module : moduleContainer) {
210 analyzer->analyzeData();
236 for (
auto const&
module : moduleContainer) {
261 for (
auto const&
sum: moduleSumContainer) {
272 if (moduleContainer.
empty()) {
273 return StatusCode::SUCCESS;
278 return StatusCode::FAILURE;
283 return StatusCode::SUCCESS;
289 writeAOD(moduleContainer, moduleSumContainer);
291 return StatusCode::SUCCESS;
297 return StatusCode::FAILURE;