DUNE-DAQ
DUNE Trigger and Data Acquisition software
Loading...
Searching...
No Matches
NaiveRunSumProcessor.cpp
Go to the documentation of this file.
1
8
10
11namespace tpglibs {
12
14
15void
16NaiveRunSumProcessor::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(
20 "r", std::shared_ptr<naive_array_t>(&m_memory_factor, [](auto*) {}));
21 m_internal_state_name_registry.register_internal_state("s",
22 std::shared_ptr<naive_array_t>(&m_scale_factor, [](auto*) {}));
23 m_internal_state_name_registry.register_internal_state("rs",
24 std::shared_ptr<naive_array_t>(&m_running_sum, [](auto*) {}));
26#endif
27
28 int16_t config_memory[3] = { config["memory_factor_plane0"],
29 config["memory_factor_plane1"],
30 config["memory_factor_plane2"] };
31 int16_t config_scale[3] = { config["scale_factor_plane0"],
32 config["scale_factor_plane1"],
33 config["scale_factor_plane2"] };
34
35 for (int i = 0; i < 16; i++) {
36 m_memory_factor[i] = config_memory[plane_numbers[i]];
37 m_scale_factor[i] = config_scale[plane_numbers[i]];
38 }
39}
40
43{
44#ifdef TPGLIBS_ENABLE_STATE_MONITORING
45 m_samples++;
46 if (m_collect_internal_state_flag && (m_samples % m_sample_period == 0)) {
47 m_internal_state_buffer_manager.write_to_active_buffer();
48 }
49#endif
50
51 for (int i = 0; i < 16; i++) {
52 int32_t scaled_rs = _naive_div_int16(m_running_sum[i], 10);
53 scaled_rs *= m_memory_factor[i];
54
55 int32_t scaled_signal = _naive_div_int16(signal[i], 10);
56 scaled_signal *= m_scale_factor[i];
57
58 int32_t intermediate = scaled_signal + scaled_rs;
59 m_running_sum[i] = std::min(intermediate, INT16_MAX);
60 }
62}
63
64} // namespace tpglibs
#define REGISTER_NAIVEPROCESSOR_CREATOR(processor_name, processor_class)
Factory registration macro.
virtual void configure_internal_state_collection(const nlohmann::json &)
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.
Naive signal processor: Calculates the running sum of the signal.
naive_array_t m_scale_factor
The S factor in the model equation.
void configure(const nlohmann::json &config, const int16_t *plane_numbers) override
Configures the R factor and S factor according to plane.
naive_array_t process(const naive_array_t &signal) override
Calculate and store the running sum.
naive_array_t m_running_sum
The RS in the model equation.
naive_array_t m_memory_factor
The R factor in the model equation.
int16_t _naive_div_int16(const int16_t &a, const int16_t &b)
Naive model of AVX division in AVXUtils.