8#ifndef TRIGGER_SRC_TRIGGER_TCPROCESSOR_HPP_
9#define TRIGGER_SRC_TRIGGER_TCPROCESSOR_HPP_
50 explicit TCProcessor(std::unique_ptr<datahandlinglibs::FrameErrorRegistry>& error_registry,
bool post_processing_enabled);
54 void start(
const nlohmann::json& args)
override;
56 void stop(
const nlohmann::json& args)
override;
60 void scrap(
const nlohmann::json& args)
override;
87 std::vector<dfmessages::ComponentRequest> requests);
100 void parse_roi_conf(
const std::vector<const appmodel::ROIGroupConf*>& data);
141 std::vector<PendingTD>
get_ready_tds(std::vector<PendingTD>& pending_tds);
159 std::map<TCType, std::pair<triggeralgs::timestamp_t, triggeralgs::timestamp_t>>
163 std::pair<triggeralgs::timestamp_t, triggeralgs::timestamp_t>> map);
176 std::shared_ptr<iomanager::SenderConcept<dfmessages::TriggerDecision>>
m_td_sink;
std::vector< const appmodel::TCReadoutMap * > m_readout_window_map_data
std::atomic< metric_counter_type > m_tc_ignored_count
std::atomic< metric_counter_type > m_tds_dropped_count
void stop(const nlohmann::json &args) override
Stop operation.
std::bitset< 64 > TDBitset
bool check_trigger_type_ignore(unsigned int tc_type)
void call_tc_decision(const PendingTD &pending_td)
TCProcessor(std::unique_ptr< datahandlinglibs::FrameErrorRegistry > &error_registry, bool post_processing_enabled)
dunedaq::trigger::Latency m_latency_instance
std::vector< unsigned int > m_ignored_tc_types
std::map< int, std::vector< daqdataformats::SourceID > > m_group_links
std::atomic< metric_counter_type > m_latency_in
void print_roi_conf(std::map< int, roi_group > roi_conf)
TDBitset get_TD_bitword(const PendingTD &ready_td) const
void parse_roi_conf(const std::vector< const appmodel::ROIGroupConf * > &data)
std::thread m_send_trigger_decisions_thread
dfmessages::trigger_number_t m_last_trigger_number
uint64_t metric_counter_type
void scrap(const nlohmann::json &args) override
Unconfigure.
std::mutex m_td_vector_mutex
std::atomic< metric_counter_type > m_tds_failed_bitword_tc_count
void add_requests_to_decision(dfmessages::TriggerDecision &decision, std::vector< dfmessages::ComponentRequest > requests)
std::shared_ptr< iomanager::SenderConcept< dfmessages::TriggerDecision > > m_td_sink
dfmessages::TriggerDecision create_decision(const PendingTD &pending_td)
std::vector< dfmessages::ComponentRequest > create_all_decision_requests(std::vector< daqdataformats::SourceID > links, triggeralgs::timestamp_t start, triggeralgs::timestamp_t end)
std::atomic< metric_counter_type > m_tds_cleared_count
nlohmann::json m_group_links_data
std::atomic< metric_counter_type > m_latency_out
void conf(const appmodel::DataHandlerModule *conf) override
Set the emulator mode, if active, timestamps of processed packets are overwritten with new ones.
std::atomic< bool > m_tc_merging
bool check_trigger_bitwords(const TDBitset &td_bitword) const
void roi_readout_make_requests(dfmessages::TriggerDecision &decision)
std::map< int, roi_group > m_roi_conf
std::atomic< metric_counter_type > m_tds_sent_tc_count
void print_readout_map(std::map< TCType, std::pair< triggeralgs::timestamp_t, triggeralgs::timestamp_t > > map)
void make_td(const TCWrapper *tc)
void generate_opmon_data() override
std::atomic< metric_counter_type > m_tds_cleared_tc_count
void set_trigger_bitwords(const std::vector< const appmodel::TriggerBitword * > &_bitwords)
bool check_td_readout_length(const PendingTD &)
std::atomic< metric_counter_type > m_tds_dropped_tc_count
std::atomic< metric_counter_type > m_tds_failed_bitword_count
dfmessages::run_number_t m_run_number
std::vector< int > m_roi_conf_ids
std::vector< PendingTD > get_ready_tds(std::vector< PendingTD > &pending_tds)
std::vector< float > m_roi_conf_probs_c
std::vector< PendingTD > m_pending_tds
std::atomic< metric_counter_type > m_tc_received_count
dfmessages::trigger_type_t m_trigger_type_shifted
std::atomic< metric_counter_type > m_tds_created_tc_count
void start(const nlohmann::json &args) override
Start operation.
void print_trigger_bitwords()
bool m_ignore_tc_pileup
Ignore TCs that overlap with already made TD.
dfmessages::ComponentRequest create_request_for_link(daqdataformats::SourceID link, triggeralgs::timestamp_t start, triggeralgs::timestamp_t end)
int m_repeat_trigger_count
std::vector< const appmodel::ROIGroupConf * > m_roi_conf_data
std::atomic< bool > m_running_flag
void parse_readout_map(const std::vector< const appmodel::TCReadoutMap * > &data)
std::condition_variable m_cv
void add_tc(const triggeralgs::TriggerCandidate tc)
std::atomic< metric_counter_type > m_tds_sent_count
int64_t m_td_readout_limit
std::vector< float > m_roi_conf_probs
std::atomic< bool > m_latency_monitoring
bool check_overlap(const triggeralgs::TriggerCandidate &tc, const PendingTD &pending_td)
int pick_roi_group_conf()
void parse_group_links(const nlohmann::json &data)
void send_trigger_decisions()
std::atomic< metric_counter_type > m_tds_created_count
float get_random_num_float(float limit)
std::vector< TDBitset > m_trigger_bitwords
void add_tc_ignored(const triggeralgs::TriggerCandidate tc)
std::atomic< bool > m_send_timed_out_tds
std::vector< daqdataformats::SourceID > m_mandatory_links
int get_earliest_tc_index(const PendingTD &pending_td)
std::map< TCType, std::pair< triggeralgs::timestamp_t, triggeralgs::timestamp_t > > m_readout_window_map
daqdataformats::run_number_t run_number_t
Copy daqdataformats::run_number_t.
daqdataformats::trigger_type_t trigger_type_t
Copy daqdataformats::trigger_type_t.
daqdataformats::trigger_number_t trigger_number_t
Copy daqdataformats::trigger_number_t.
dunedaq::trgdataformats::timestamp_t timestamp_t
A message containing information about a Trigger from Data Selection (or a TriggerDecisionEmulator)
std::vector< triggeralgs::TriggerCandidate > contributing_tcs
triggeralgs::timestamp_t readout_end
triggeralgs::timestamp_t readout_start
int64_t walltime_expiration
triggeralgs::timestamp_t time_window