DUNE-DAQ
DUNE Trigger and Data Acquisition software
Loading...
Searching...
No Matches
TAMakerSupernovaAlgorithm.hpp
Go to the documentation of this file.
1
9#ifndef TRIGGERALGS_SRC_TRIGGERALGS_SUPERNOVA_TRIGGERACTIVITYMAKERSUPERNOVA_HPP_
10#define TRIGGERALGS_SRC_TRIGGERALGS_SUPERNOVA_TRIGGERACTIVITYMAKERSUPERNOVA_HPP_
11
13
14#include <algorithm>
15#include <limits>
16#include <vector>
17
18namespace triggeralgs {
20{
21
23 inline bool is_time_consistent(const TriggerPrimitive& input_tp) const
24 {
25 timestamp_t tend = input_tp.time_start + input_tp.samples_over_threshold * 32; // FIXME: Replace the hard-coded SOT to TOT scaling.
26
27 bool is_close_to_edge = (m_time_tolerance > abs(timestamp_diff_t(input_tp.time_start) - timestamp_diff_t(m_time_end))) ||
31
32 bool is_in_between_edge = ((tend > m_time_start && tend < m_time_end) ||
33 (input_tp.time_start > m_time_start && input_tp.time_start < m_time_end));
34
35 return is_in_between_edge || is_close_to_edge;
36 }
37
38 inline bool is_channel_consistent(const TriggerPrimitive& input_tp) const
39 {
40
41 bool is_close_to_edge = (m_channel_tolerance > abs(channel_diff_t(input_tp.channel) - m_channel_end) ||
43
44 bool is_in_between_edge = (input_tp.channel > m_channel_start && input_tp.channel < m_channel_end);
45
46 return is_in_between_edge || is_close_to_edge;
47 }
48
49public:
50 void process(const TriggerPrimitive& input_tp, std::vector<TriggerActivity>& output_ta) override;
51
52 void flush(timestamp_t, std::vector<TriggerActivity>& tas) override { tas.push_back(MakeTriggerActivity()); }
53
54protected:
56 250;
58 2;
59
60private:
81
86 channel_diff_t m_channel_start = 0; // NOLINT(build/unsigned)
87 channel_diff_t m_channel_end = 0; // NOLINT(build/unsigned)
88 channel_diff_t m_channel_peak = 0; // NOLINT(build/unsigned)
89 uint64_t m_adc_integral = 0; // NOLINT(build/unsigned)
90 uint16_t m_adc_peak = 0; // NOLINT(build/unsigned)
91 detid_t m_detid = 0; // NOLINT(build/unsigned)
94
95 std::vector<TriggerPrimitive> m_tp_list;
96};
97} // namespace triggeralgs
98
99#endif // TRIGGERALGS_SRC_TRIGGERALGS_SUPERNOVA_TRIGGERACTIVITYMAKERSUPERNOVA_HPP_
void flush(timestamp_t, std::vector< TriggerActivity > &tas) override
bool is_channel_consistent(const TriggerPrimitive &input_tp) const
void process(const TriggerPrimitive &input_tp, std::vector< TriggerActivity > &output_ta) override
TP processing function that creates & fills TAs.
bool is_time_consistent(const TriggerPrimitive &input_tp) const
This activity maker makes an activity with all the trigger primitives.
TriggerActivity MakeTriggerActivity() const
Maximum tolerated channel number difference between two primitives to form an activity.
channel_t m_channel_tolerance
Maximum tolerated time difference between two primitives to form an activity (in 50 MHz clock ticks)
dunedaq::trgdataformats::channel_diff_t channel_diff_t
Definition Types.hpp:21
dunedaq::trgdataformats::timestamp_t timestamp_t
Definition Types.hpp:16
dunedaq::trgdataformats::timestamp_diff_t timestamp_diff_t
Definition Types.hpp:17
dunedaq::trgdataformats::detid_t detid_t
Definition Types.hpp:18
dunedaq::trgdataformats::channel_t channel_t
Definition Types.hpp:20
A single energy deposition on a TPC or PDS channel.
std::vector< TriggerPrimitive > inputs