DUNE-DAQ
DUNE Trigger and Data Acquisition software
Toggle main menu visibility
Loading...
Searching...
No Matches
dunedaq
sourcecode
tpglibs
src
NaiveFrugalPedestalSubtractProcessor.cpp
Go to the documentation of this file.
1
8
9
#include "
tpglibs/NaiveFrugalPedestalSubtractProcessor.hpp
"
10
11
namespace
tpglibs
{
12
13
REGISTER_NAIVEPROCESSOR_CREATOR
(
"NaiveFrugalPedestalSubtractProcessor"
,
NaiveFrugalPedestalSubtractProcessor
)
14
15
void
NaiveFrugalPedestalSubtractProcessor
::
configure
(const nlohmann::json& config, const int16_t* plane_numbers) {
16
// Configure common metric collection parameters
17
// Register pointers to the ACTUAL member variables, not copies
18
// Use shared_ptr with no-op deleter to avoid double-free
19
m_internal_state_name_registry
.register_internal_state(
"pedestal"
,
20
std::shared_ptr<naive_array_t>(&
m_pedestal
, [](
auto
*){}));
21
m_internal_state_name_registry
.register_internal_state(
"accum"
,
22
std::shared_ptr<naive_array_t>(&
m_accum
, [](
auto
*){}));
23
24
configure_internal_state_collection
(config);
25
26
m_accum_limit
= config[
"accum_limit"
];
27
}
28
29
NaiveFrugalPedestalSubtractProcessor::naive_array_t
30
NaiveFrugalPedestalSubtractProcessor::process
(
const
naive_array_t
& signal) {
31
// Update sample counter and write internal states to buffer for harvesting
32
m_samples
++;
33
if
(
m_collect_internal_state_flag
&& (
m_samples
%
m_sample_period
== 0)) {
34
m_internal_state_buffer_manager
.write_to_active_buffer();
35
}
36
37
naive_array_t
subtracted_signal;
38
for
(
int
i = 0; i < 16; i++) {
39
// Increment if above.
40
if
(signal[i] >
m_pedestal
[i])
41
m_accum
[i]++;
42
43
// Decrement if below.
44
if
(signal[i] <
m_pedestal
[i])
45
m_accum
[i]--;
46
47
// Increment pedestal if we've hit the top limit.
48
if
(
m_accum
[i] >
m_accum_limit
) {
49
m_pedestal
[i]++;
50
m_accum
[i] = 0;
51
}
52
53
// Decrement pedestal if we've hit the low limit.
54
if
(
m_accum
[i] < -1*
m_accum_limit
) {
55
m_pedestal
[i]--;
56
m_accum
[i] = 0;
57
}
58
59
subtracted_signal[i] = signal[i] -
m_pedestal
[i];
60
}
61
62
return
NaiveProcessor::process
(subtracted_signal);
63
}
64
65
}
// namespace tpglibs
REGISTER_NAIVEPROCESSOR_CREATOR
#define REGISTER_NAIVEPROCESSOR_CREATOR(processor_name, processor_class)
Factory registration macro.
Definition
NaiveFactory.hpp:16
NaiveFrugalPedestalSubtractProcessor.hpp
tpglibs::AbstractProcessor< std::array< int16_t, 16 > >::m_internal_state_buffer_manager
ProcessorInternalStateBufferManager< std::array< int16_t, 16 > > m_internal_state_buffer_manager
Definition
AbstractProcessor.hpp:32
tpglibs::AbstractProcessor< std::array< int16_t, 16 > >::m_samples
std::atomic< uint64_t > m_samples
Definition
AbstractProcessor.hpp:36
tpglibs::AbstractProcessor< std::array< int16_t, 16 > >::m_internal_state_name_registry
ProcessorInternalStateNameRegistry< std::array< int16_t, 16 > > m_internal_state_name_registry
Definition
AbstractProcessor.hpp:33
tpglibs::AbstractProcessor< std::array< int16_t, 16 > >::m_sample_period
uint64_t m_sample_period
Definition
AbstractProcessor.hpp:38
tpglibs::AbstractProcessor< std::array< int16_t, 16 > >::configure_internal_state_collection
virtual void configure_internal_state_collection(const nlohmann::json &config)
Definition
AbstractProcessor.hpp:63
tpglibs::AbstractProcessor< std::array< int16_t, 16 > >::m_collect_internal_state_flag
bool m_collect_internal_state_flag
Definition
AbstractProcessor.hpp:37
tpglibs::NaiveFrugalPedestalSubtractProcessor
Naive signal processor: Estimates the pedestal and subtracts.
Definition
NaiveFrugalPedestalSubtractProcessor.hpp:22
tpglibs::NaiveFrugalPedestalSubtractProcessor::configure
void configure(const nlohmann::json &config, const int16_t *plane_numbers) override
Configure the accumulation limit according to plane number.
Definition
NaiveFrugalPedestalSubtractProcessor.cpp:15
tpglibs::NaiveFrugalPedestalSubtractProcessor::process
naive_array_t process(const naive_array_t &signal) override
Estimate the pedestal using the given signal and subtract.
Definition
NaiveFrugalPedestalSubtractProcessor.cpp:30
tpglibs::NaiveFrugalPedestalSubtractProcessor::m_pedestal
naive_array_t m_pedestal
Vector of estimated pedestals for each channel.
Definition
NaiveFrugalPedestalSubtractProcessor.hpp:24
tpglibs::NaiveFrugalPedestalSubtractProcessor::m_accum_limit
int16_t m_accum_limit
Count limit before committing to a pedestal shift.
Definition
NaiveFrugalPedestalSubtractProcessor.hpp:30
tpglibs::NaiveFrugalPedestalSubtractProcessor::m_accum
naive_array_t m_accum
Vector of counts that a channel's signal was above or below m_pedestal.
Definition
NaiveFrugalPedestalSubtractProcessor.hpp:27
tpglibs::NaiveProcessor::process
virtual naive_array_t process(const naive_array_t &signal) override
Simple signal pass-through on naive type.
Definition
NaiveProcessor.hpp:25
tpglibs::NaiveProcessor::naive_array_t
std::array< int16_t, 16 > naive_array_t
The naive version uses a standard array instead of __m256i.
Definition
NaiveProcessor.hpp:22
tpglibs
Definition
AbstractFactory.hpp:20
Generated on
for DUNE-DAQ by
1.17.0