8#ifndef FDREADOUTLIBS_INCLUDE_FDREADOUTLIBS_TPCETHFRAMEPROCESSOR_HPP_
9#define FDREADOUTLIBS_INCLUDE_FDREADOUTLIBS_TPCETHFRAMEPROCESSOR_HPP_
49#include <unordered_map>
54namespace fdreadoutlibs {
56template <
class ReadoutTypeAdapter>
66 explicit TPCEthFrameProcessor(std::unique_ptr<datahandlinglibs::FrameErrorRegistry>& error_registry,
bool processing_enabled);
68 void start(
const appfwk::DAQModule::CommandData_t& args)
override;
70 void stop(
const appfwk::DAQModule::CommandData_t& args)
override;
74 void scrap(
const appfwk::DAQModule::CommandData_t& cfg)
override;
113 std::map<int16_t, std::map<std::string, std::tuple<float, int16_t, int16_t, float, dunedaq::trgdataformats::channel_t, dunedaq::trgdataformats::channel_t>>>
164 std::unordered_map<unsigned int, std::shared_ptr<iomanager::SenderConcept<std::vector<trigger::TriggerPrimitiveTypeAdapter>>>>
m_plane_to_tp_sink_map;
190 std::chrono::time_point<std::chrono::high_resolution_clock>
m_t0;
daqdataformats::SourceID m_sourceid
const ReadoutTypeAdapter * constframeptr
std::set< unsigned int > m_plane_numbers_set
uint16_t m_current_seq_id
void scrap_postprocessing()
void scrap_channel_plane_numbers()
uint32_t m_current_tp_count
void configure_postprocessing(const appmodel::DataHandlerModule *conf)
void scrap_preprocessing()
ReadoutTypeAdapter::FrameType * tpcframeptr
bool m_frame_limit_enabled
uint32_t m_metric_collect_opmon_period
void configure_channel_plane_numbers(const appmodel::TPCRawDataProcessor *proc_conf)
void stop(const appfwk::DAQModule::CommandData_t &args) override
Stop operation.
std::atomic< uint64_t > m_tps_suppressed_too_long
void publish_processor_metric_to_opmon()
std::vector< std::pair< std::string, nlohmann::json > > m_tpg_configs
bool m_tpg_metric_collect_enabled
std::unordered_map< unsigned int, std::vector< trigger::TriggerPrimitiveTypeAdapter > > m_plane_to_tpa_vector_map
void configure_find_tps(const appmodel::DataHandlerModule *conf, const appmodel::TPCRawDataProcessor *proc_conf)
uint32_t m_frame_count_limit
void scrap(const appfwk::DAQModule::CommandData_t &cfg) override
Unconfigure.
std::unique_ptr< tpglibs::TPGenerator > m_tp_generator
bool m_first_ts_missmatch
dunedaq::daqdataformats::timestamp_t m_previous_ts
std::chrono::time_point< std::chrono::high_resolution_clock > m_t0
bool m_ts_problem_reported
std::atomic< uint64_t > m_num_new_tps
std::vector< std::pair< trgdataformats::channel_t, int16_t > > m_channel_plane_numbers
std::unordered_map< unsigned int, std::shared_ptr< iomanager::SenderConcept< std::vector< trigger::TriggerPrimitiveTypeAdapter > > > > m_plane_to_tp_sink_map
bool m_first_seq_id_mismatch
void scrap_source_and_geo_ids()
std::map< uint, std::atomic< int > > m_tp_channel_rate_map
std::atomic< uint64_t > m_frame_counter
uint32_t m_tp_count_limit
void publish_processor_metric_to_opmon_with_aggregation()
void configure_source_and_geo_ids(const appmodel::DataHandlerModule *conf)
bool m_seq_id_problem_reported
void sequence_check(frameptr fp)
std::atomic< uint64_t > m_tps_send_failed
std::map< int16_t, std::map< std::string, std::tuple< float, int16_t, int16_t, float, dunedaq::trgdataformats::channel_t, dunedaq::trgdataformats::channel_t > > > calculate_all_metric_summaries_across_planes(const std::unordered_map< dunedaq::trgdataformats::channel_t, std::vector< std::pair< std::string, int16_t > > > &metrics)
ReadoutTypeAdapter * frameptr
std::unordered_map< trgdataformats::channel_t, unsigned int > m_channel_plane_map
void generate_opmon_data() override
std::atomic< uint64_t > m_seq_id_error_ctr
void start(const appfwk::DAQModule::CommandData_t &args) override
Start operation.
std::atomic< uint64_t > m_ts_error_ctr
void configure_preprocessing(const appmodel::DataHandlerModule *conf)
bool m_seq_id_error_state
void conf(const appmodel::DataHandlerModule *conf) override
Set the emulator mode, if active, timestamps of processed packets are overwritten with new ones.
std::atomic< int16_t > m_seq_id_max_jump
TPCEthFrameProcessor(std::unique_ptr< datahandlinglibs::FrameErrorRegistry > &error_registry, bool processing_enabled)
dunedaq::daqdataformats::timestamp_t m_pattern_generator_current_ts
void timestamp_check(frameptr fp)
uint32_t m_frame_count_at_last_send
dunedaq::daqdataformats::timestamp_t m_pattern_generator_previous_ts
std::set< unsigned int > m_channel_mask_set
std::atomic< int16_t > m_seq_id_min_jump
dunedaq::daqdataformats::timestamp_t m_current_ts
void find_tps(constframeptr fp)
uint16_t m_previous_seq_id