11#include "TRACE/trace.h"
12#define TRACE_NAME "TCMakerHorizontalMuonAlgorithm"
25 std::vector<TriggerCandidate>& output_tc)
28 std::vector<TriggerActivity::TriggerActivityData> ta_list = {
static_cast<TriggerActivity::TriggerActivityData
>(
52 <<
"[TCM:HM] TAWindow is at required length but specified threshold not met, shifting window along.";
67 <<
" len(tc.inputs) " << tc.
inputs.size();
69 for (
const auto& ta : tc.
inputs) {
71 <<
" ta.adc_integral=" << ta.adc_integral;
74 output_tc.push_back(tc);
107 if (config.is_object()) {
108 if (config.contains(
"trigger_on_adc"))
110 if (config.contains(
"trigger_on_n_channels"))
112 if (config.contains(
"adc_threshold"))
114 if (config.contains(
"n_channels_threshold"))
116 if (config.contains(
"window_length"))
176 std::ofstream outfile;
177 outfile.open(
"window_record_tcm.csv", std::ios_base::app);
180 outfile << window.time_start <<
",";
181 outfile << window.inputs.back().time_start <<
",";
182 outfile << window.inputs.back().time_start - window.time_start <<
",";
183 outfile << window.adc_integral <<
",";
184 outfile << window.n_channels_hit() <<
",";
185 outfile << window.inputs.size() << std::endl;
#define REGISTER_TRIGGER_CANDIDATE_MAKER(tcm_name, tcm_class)
TAWindow m_current_window
void dump_window_record()
bool m_trigger_on_n_channels
std::vector< TAWindow > m_window_record
TriggerCandidate construct_tc() const
uint16_t m_n_channels_threshold
void add_window_to_record(TAWindow window)
uint64_t m_activity_count
bool check_adjacency() const
timestamp_t m_window_length
void configure(const nlohmann::json &config)
void process(const TriggerActivity &, std::vector< TriggerCandidate > &)
TA processing function that creates & fills TCs.
TriggerCandidate::Type m_tc_type_out
Configurable TC type output.
virtual void configure(const nlohmann::json &config)
#define TLOG_DEBUG(lvl,...)
std::vector< TriggerPrimitive > inputs
std::vector< dunedaq::trgdataformats::TriggerActivityData > inputs