DUNE-DAQ
DUNE Trigger and Data Acquisition software
Loading...
Searching...
No Matches
NaiveFrugalPedestalSubtractProcessor.cpp
Go to the documentation of this file.
1
10
11namespace tpglibs {
12
13REGISTER_NAIVEPROCESSOR_CREATOR("NaiveFrugalPedestalSubtractProcessor", NaiveFrugalPedestalSubtractProcessor)
14
15void NaiveFrugalPedestalSubtractProcessor::configure(const nlohmann::json& config, const int16_t* plane_numbers) {
16 m_accum_limit = config["accum_limit"];
17}
18
21 naive_array_t subtracted_signal;
22 for (int i = 0; i < 16; i++) {
23 // Increment if above.
24 if (signal[i] > m_pedestal[i])
25 m_accum[i]++;
26
27 // Decrement if below.
28 if (signal[i] < m_pedestal[i])
29 m_accum[i]--;
30
31 // Increment pedestal if we've hit the top limit.
32 if (m_accum[i] > m_accum_limit) {
33 m_pedestal[i]++;
34 m_accum[i] = 0;
35 }
36
37 // Decrement pedestal if we've hit the low limit.
38 if (m_accum[i] < -1*m_accum_limit) {
39 m_pedestal[i]--;
40 m_accum[i] = 0;
41 }
42
43 subtracted_signal[i] = signal[i] - m_pedestal[i];
44 }
45
46 return NaiveProcessor::process(subtracted_signal);
47}
48
49} // namespace tpglibs
#define REGISTER_NAIVEPROCESSOR_CREATOR(processor_name, processor_class)
Factory registration macro.
Naive signal processor: Estimates the pedestal and subtracts.
naive_array_t process(const naive_array_t &signal) override
Estimate the pedestal using the given signal and subtract.
naive_array_t m_pedestal
Vector of estimated pedestals for each channel.
int16_t m_accum_limit
Count limit before committing to a pedestal shift.
naive_array_t m_accum
Vector of counts that a channel's signal was above or below m_pedestal.
virtual naive_array_t process(const naive_array_t &signal) override
Simple signal pass-through on naive type.
std::array< int16_t, 16 > naive_array_t
The naive version uses a standard array instead of __m256i.