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
16
NaiveFrugalPedestalSubtractProcessor::configure
(
const
nlohmann::json& config,
const
int16_t* plane_numbers)
17
{
18
#ifdef TPGLIBS_ENABLE_STATE_MONITORING
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
configure_internal_state_collection
(config);
24
#endif
25
26
m_accum_limit
= config[
"accum_limit"
];
27
}
28
29
NaiveFrugalPedestalSubtractProcessor::naive_array_t
30
NaiveFrugalPedestalSubtractProcessor::process
(
const
naive_array_t
& signal)
31
{
32
#ifdef TPGLIBS_ENABLE_STATE_MONITORING
33
m_samples++;
34
if
(m_collect_internal_state_flag && (m_samples % m_sample_period == 0)) {
35
m_internal_state_buffer_manager.write_to_active_buffer();
36
}
37
#endif
38
39
naive_array_t
subtracted_signal;
40
for
(
int
i = 0; i < 16; i++) {
41
// Increment if above.
42
if
(signal[i] >
m_pedestal
[i])
43
m_accum
[i]++;
44
45
// Decrement if below.
46
if
(signal[i] <
m_pedestal
[i])
47
m_accum
[i]--;
48
49
// Increment pedestal if we've hit the top limit.
50
if
(
m_accum
[i] >
m_accum_limit
) {
51
m_pedestal
[i]++;
52
m_accum
[i] = 0;
53
}
54
55
// Decrement pedestal if we've hit the low limit.
56
if
(
m_accum
[i] < -1 *
m_accum_limit
) {
57
m_pedestal
[i]--;
58
m_accum
[i] = 0;
59
}
60
61
subtracted_signal[i] = signal[i] -
m_pedestal
[i];
62
}
63
64
return
NaiveProcessor::process
(subtracted_signal);
65
}
66
67
}
// namespace tpglibs
REGISTER_NAIVEPROCESSOR_CREATOR
#define REGISTER_NAIVEPROCESSOR_CREATOR(processor_name, processor_class)
Factory registration macro.
Definition
NaiveFactory.hpp:18
NaiveFrugalPedestalSubtractProcessor.hpp
tpglibs::AbstractProcessor< std::array< int16_t, 16 > >::configure_internal_state_collection
virtual void configure_internal_state_collection(const nlohmann::json &)
Definition
AbstractProcessor.hpp:89
tpglibs::NaiveFrugalPedestalSubtractProcessor
Naive signal processor: Estimates the pedestal and subtracts.
Definition
NaiveFrugalPedestalSubtractProcessor.hpp:23
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:16
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:25
tpglibs::NaiveFrugalPedestalSubtractProcessor::m_accum_limit
int16_t m_accum_limit
Count limit before committing to a pedestal shift.
Definition
NaiveFrugalPedestalSubtractProcessor.hpp:31
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:28
tpglibs::NaiveProcessor::process
virtual naive_array_t process(const naive_array_t &signal) override
Simple signal pass-through on naive type.
Definition
NaiveProcessor.hpp:26
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:23
tpglibs
Definition
AbstractFactory.hpp:20
Generated on
for DUNE-DAQ by
1.18.0