DUNE-DAQ
DUNE Trigger and Data Acquisition software
Loading...
Searching...
No Matches
dunedaq::fdreadoutlibs::DAPHNEFrameProcessor Class Reference

#include <DAPHNEFrameProcessor.hpp>

Inheritance diagram for dunedaq::fdreadoutlibs::DAPHNEFrameProcessor:
[legend]
Collaboration diagram for dunedaq::fdreadoutlibs::DAPHNEFrameProcessor:
[legend]

Public Types

using inherited = datahandlinglibs::TaskRawDataProcessorModel<types::DAPHNESuperChunkTypeAdapter>
using frameptr = types::DAPHNESuperChunkTypeAdapter*
using daphneframeptr = dunedaq::fddetdataformats::DAPHNEFrame*
using timestamp_t = std::uint64_t
using constframeptr = const types::DAPHNESuperChunkTypeAdapter*
Public Types inherited from dunedaq::opmonlib::MonitorableObject
using NodePtr = std::weak_ptr<MonitorableObject>
using NewNodePtr = std::shared_ptr<MonitorableObject>
using ElementId = std::string

Public Member Functions

 DAPHNEFrameProcessor (std::unique_ptr< datahandlinglibs::FrameErrorRegistry > &error_registry, bool post_processing_enabled)
void conf (const appmodel::DataHandlerModule *conf) override
 Set the emulator mode, if active, timestamps of processed packets are overwritten with new ones.
void start (const appfwk::DAQModule::CommandData_t &args) override
 Start operation.
void stop (const appfwk::DAQModule::CommandData_t &args) override
 Stop operation.
Public Member Functions inherited from dunedaq::datahandlinglibs::TaskRawDataProcessorModel< types::DAPHNESuperChunkTypeAdapter >
 TaskRawDataProcessorModel (std::unique_ptr< FrameErrorRegistry > &error_registry, bool post_processing_enabled)
 ~TaskRawDataProcessorModel ()
void conf (const appmodel::DataHandlerModule *conf) override
 Set the emulator mode, if active, timestamps of processed packets are overwritten with new ones.
void scrap (const appfwk::DAQModule::CommandData_t &) override
 Unconfigure.
void start (const appfwk::DAQModule::CommandData_t &) override
 Start operation.
void stop (const appfwk::DAQModule::CommandData_t &) override
 Stop operation.
void reset_last_daq_time ()
std::uint64_t get_last_daq_time () override
 Get newest timestamp of last seen packet.
void preprocess_item (types::DAPHNESuperChunkTypeAdapter *item) override
 Preprocess one element.
void postprocess_item (const types::DAPHNESuperChunkTypeAdapter *item) override
 Postprocess one element.
void invoke_postprocess_schedule_timeout_policy (std::uint64_t accumilated_timeout_ticks) override
 Handle postprocess timeout event.
void add_preprocess_task (Task &&task)
void add_postprocess_task (Task &&task)
void invoke_all_preprocess_functions (types::DAPHNESuperChunkTypeAdapter *item)
void launch_all_preprocess_functions (types::DAPHNESuperChunkTypeAdapter *item)
Public Member Functions inherited from dunedaq::datahandlinglibs::RawDataProcessorConcept< ReadoutType >
 RawDataProcessorConcept ()
virtual ~RawDataProcessorConcept ()
 RawDataProcessorConcept (const RawDataProcessorConcept &)=delete
 RawDataProcessorConcept is not copy-constructible.
RawDataProcessorConcept & operator= (const RawDataProcessorConcept &)=delete
 RawDataProcessorConcept is not copy-assginable.
 RawDataProcessorConcept (RawDataProcessorConcept &&)=delete
 RawDataProcessorConcept is not move-constructible.
RawDataProcessorConcept & operator= (RawDataProcessorConcept &&)=delete
 RawDataProcessorConcept is not move-assignable.
virtual void preprocess_item (ReadoutType *item)=0
 Preprocess one element.
virtual void postprocess_item (const ReadoutType *item)=0
 Postprocess one element.
Public Member Functions inherited from dunedaq::opmonlib::MonitorableObject
 MonitorableObject (const MonitorableObject &)=delete
MonitorableObject & operator= (const MonitorableObject &)=delete
 MonitorableObject (MonitorableObject &&)=delete
MonitorableObject & operator= (MonitorableObject &&)=delete
virtual ~MonitorableObject ()=default
auto get_opmon_id () const noexcept
auto get_opmon_level () const noexcept

Protected Member Functions

virtual void generate_opmon_data () override
void timestamp_check (frameptr)
void frame_error_check (frameptr)
void extract_tps (constframeptr fp)
dunedaq::trgdataformats::TriggerPrimitive peak_to_tp (dunedaq::fddetdataformats::DAPHNEFrame &frame, int i)
Protected Member Functions inherited from dunedaq::datahandlinglibs::TaskRawDataProcessorModel< types::DAPHNESuperChunkTypeAdapter >
void run_post_processing_thread (std::function< void(const types::DAPHNESuperChunkTypeAdapter *)> &function, folly::ProducerConsumerQueue< const types::DAPHNESuperChunkTypeAdapter * > &queue)
Protected Member Functions inherited from dunedaq::opmonlib::MonitorableObject
 MonitorableObject ()=default
void register_node (ElementId name, NewNodePtr)
void publish (google::protobuf::Message &&, CustomOrigin &&co={}, OpMonLevel l=to_level(EntryOpMonLevel::kDefault)) const noexcept

Protected Attributes

timestamp_t m_previous_ts = 0
timestamp_t m_current_ts = 0
bool m_first_ts_fake = true
bool m_first_ts_missmatch = true
bool m_problem_reported = false
std::atomic< int > m_ts_error_ctr { 0 }
Protected Attributes inherited from dunedaq::datahandlinglibs::TaskRawDataProcessorModel< types::DAPHNESuperChunkTypeAdapter >
std::vector< std::function< void(types::DAPHNESuperChunkTypeAdapter *)> > m_preprocess_functions
std::unique_ptr< FrameErrorRegistry > & m_error_registry
bool m_post_processing_enabled
std::atomic< bool > m_run_marker
std::vector< std::function< void(const types::DAPHNESuperChunkTypeAdapter *)> > m_post_process_functions
std::vector< std::unique_ptr< folly::ProducerConsumerQueue< const types::DAPHNESuperChunkTypeAdapter * > > > m_items_to_postprocess_queues
std::vector< std::unique_ptr< utilities::ReusableThread > > m_post_process_threads
size_t m_postprocess_queue_sizes
daqdataformats::SourceID m_sourceid
std::atomic< uint64_t > m_last_processed_daq_ts

Private Attributes

std::shared_ptr< detchannelmaps::PDSChannelMap > m_channel_map
std::vector< std::pair< trgdataformats::channel_t, int16_t > > m_channel_plane_numbers
uint32_t m_det_id
uint32_t m_crate_id
uint32_t m_slot_id
uint32_t m_stream_id
std::set< unsigned int > m_channel_mask_set
uint32_t m_def_adc_intg_thresh = 0
std::shared_ptr< iomanager::SenderConcept< std::vector< trigger::TriggerPrimitiveTypeAdapter > > > m_tp_sink
std::atomic< uint64_t > m_num_new_tps { 0 }
std::atomic< uint64_t > m_tps_suppressed_too_long { 0 }
std::atomic< uint64_t > m_tps_send_failed { 0 }
std::atomic< uint64_t > m_frame_counter { 0 }
std::chrono::time_point< std::chrono::high_resolution_clock > m_t0

Additional Inherited Members

Static Public Member Functions inherited from dunedaq::opmonlib::MonitorableObject
static bool publishable_metric (OpMonLevel entry, OpMonLevel system) noexcept

Detailed Description

Definition at line 46 of file DAPHNEFrameProcessor.hpp.

Member Typedef Documentation

◆ constframeptr

◆ daphneframeptr

◆ frameptr

◆ inherited

◆ timestamp_t

Constructor & Destructor Documentation

◆ DAPHNEFrameProcessor()

dunedaq::fdreadoutlibs::DAPHNEFrameProcessor::DAPHNEFrameProcessor ( std::unique_ptr< datahandlinglibs::FrameErrorRegistry > & error_registry,
bool post_processing_enabled )
inlineexplicit

Definition at line 57 of file DAPHNEFrameProcessor.hpp.

59 : datahandlinglibs::TaskRawDataProcessorModel<types::DAPHNESuperChunkTypeAdapter>(error_registry,
60 post_processing_enabled)
61 {
62 }

Member Function Documentation

◆ conf()

void dunedaq::fdreadoutlibs::DAPHNEFrameProcessor::conf ( const appmodel::DataHandlerModule * conf)
overridevirtual

Set the emulator mode, if active, timestamps of processed packets are overwritten with new ones.

Implements dunedaq::datahandlinglibs::RawDataProcessorConcept< ReadoutType >.

Definition at line 31 of file DAPHNEFrameProcessor.cpp.

32{
33 TLOG() << "Looking for TP sink...";
34
35 for (auto output : conf->get_outputs()) {
36 TLOG() << "On outputs... (" << output->UID() << "," << output->get_data_type() << ")";
37 try {
38 if (output->get_data_type() == "TriggerPrimitiveVector") {
39 TLOG() << "Found TP sink.";
40 m_tp_sink = get_iom_sender<std::vector<trigger::TriggerPrimitiveTypeAdapter>>(output->UID());
41 TLOG() << " SINK INITIALIZED for TriggerPrimitives with UID : " << output->UID();
42 }
43 } catch (const ers::Issue& excpt) {
44 ers::error(datahandlinglibs::ResourceQueueError(ERS_HERE, "tp", "DefaultRequestHandlerModel", excpt));
45 }
46 }
47
48 TLOG() << "Registering processing tasks...";
49 inherited::add_preprocess_task(std::bind(&DAPHNEFrameProcessor::timestamp_check, this, std::placeholders::_1));
50
51 auto dp = conf->get_module_configuration()->get_data_processor();
52 if (dp == nullptr) {
53 TLOG() << " PDS Data processor does not exist.";
54 } else {
55 auto proc_conf = dp->cast<appmodel::PDSRawDataProcessor>();
56 if (proc_conf == nullptr) {
57 TLOG() << "PDS RawDataProcessor does not exist.";
58 } else {
59 m_def_adc_intg_thresh = proc_conf->get_default_adc_intg_thresh();
60
61 auto geo_id = conf->get_geo_id();
62 if (geo_id != nullptr) {
63 m_det_id = geo_id->get_detector_id();
64 m_crate_id = geo_id->get_crate_id();
65 m_slot_id = geo_id->get_slot_id();
66 m_stream_id = geo_id->get_stream_id();
67 }
68
69 m_channel_map = dunedaq::detchannelmaps::make_pds_map(proc_conf->get_channel_map());
70 const std::vector<unsigned int> channel_mask_vec = proc_conf->get_channel_mask();
71
72 for (int chan = 0; chan < 48; chan++) { // 40 physical PDS channel 8 not. 0->7 contain light info, 8,9, additional
73 // info. 10-17 light, 18,19 not etc...
74 trgdataformats::channel_t off_channel = m_channel_map->get_offline_channel_from_det_crate_slot_stream_chan(
76 if (std::find(channel_mask_vec.begin(), channel_mask_vec.end(), off_channel) != channel_mask_vec.end())
77 m_channel_mask_set.insert(
78 off_channel); // m_channel_mask will be a vector fille with random chanel which need to be masked.
79 }
80
82 // Extract TPs back as a pre-processing task, due to LatencyBuffer post-proc issues using SkipList.
83 inherited::add_preprocess_task(std::bind(&DAPHNEFrameProcessor::extract_tps, this, std::placeholders::_1));
84 }
85 }
86 }
87
88 TLOG() << "Calling parent conf.";
90}
#define ERS_HERE
std::shared_ptr< detchannelmaps::PDSChannelMap > m_channel_map
void conf(const appmodel::DataHandlerModule *conf) override
Set the emulator mode, if active, timestamps of processed packets are overwritten with new ones.
std::shared_ptr< iomanager::SenderConcept< std::vector< trigger::TriggerPrimitiveTypeAdapter > > > m_tp_sink
#define TLOG(...)
Definition macro.hpp:21
void error(const Issue &issue)
Definition ers.hpp:101

◆ extract_tps()

void dunedaq::fdreadoutlibs::DAPHNEFrameProcessor::extract_tps ( constframeptr fp)
protected

Definition at line 176 of file DAPHNEFrameProcessor.cpp.

177{
178
179 if (!fp || fp == nullptr) {
180 return;
181 }
182
183 auto nonconstframeptr = const_cast<frameptr>(fp);
184 auto df_ptr = reinterpret_cast<dunedaq::fddetdataformats::DAPHNEFrame*>((uint8_t*)nonconstframeptr); // NOLINT
185 std::vector<trigger::TriggerPrimitiveTypeAdapter> ttpp;
186
187 for (size_t i = 0; i < fp->get_num_frames(); i++) {
189 if (df_ptr[i].peaks_data.is_found(j)) {
190 int ch = m_channel_map->get_offline_channel_from_det_crate_slot_stream_chan(df_ptr[i].daq_header.det_id,
191 df_ptr[i].daq_header.crate_id,
192 df_ptr[i].daq_header.slot_id,
193 df_ptr[i].daq_header.link_id,
194 df_ptr[i].get_channel());
195 if (std::binary_search(m_channel_mask_set.begin(), m_channel_mask_set.end(), ch))
196 continue;
197 if (df_ptr[i].peaks_data.get_adc_integral(j) < m_def_adc_intg_thresh)
198 continue;
199
200 trigger::TriggerPrimitiveTypeAdapter tpa;
201 tpa.tp = peak_to_tp(df_ptr[i], j); // this is the trigger primitive
202 // check for timestamps that are due to frame timestamps ~ ts=0, and ignore these peaks
203 if (tpa.tp.time_start > 0xFFFFFFFFFFFF0000 || tpa.tp.time_start < 0xFFFF) {
204 ers::warning(PDSPeakIgnored(ERS_HERE, tpa.tp.time_start, tpa.tp.channel, i, j));
205 continue;
206 }
207
208 tpa.tp.detid = df_ptr->daq_header.det_id;
209 ttpp.push_back(tpa);
210 }
211 }
212 }
213
214 int num_new_tps = ttpp.size();
215 if (num_new_tps > 0) {
216
217 const auto s_ts_begin = ttpp.front().tp.time_start;
218 const auto channel_begin = ttpp.front().tp.channel;
219 const auto s_ts_end = ttpp.back().tp.time_start;
220 const auto channel_end = ttpp.back().tp.channel;
221
222 if (!m_tp_sink->try_send(std::move(ttpp), iomanager::Sender::s_no_block)) {
223 ers::warning(FailedToSendTPVector(ERS_HERE, s_ts_begin, channel_begin, s_ts_end, channel_end));
224 m_tps_send_failed += num_new_tps;
225 } else {
226 m_num_new_tps += num_new_tps;
227 }
228 }
229
230 return;
231}
types::DAPHNESuperChunkTypeAdapter * frameptr
dunedaq::trgdataformats::TriggerPrimitive peak_to_tp(dunedaq::fddetdataformats::DAPHNEFrame &frame, int i)
static constexpr timeout_t s_no_block
Definition Sender.hpp:26
Both frame_count_limit and tp_count_limit were set FailedToSendTPVector
void warning(const Issue &issue)
Definition ers.hpp:150

◆ frame_error_check()

void dunedaq::fdreadoutlibs::DAPHNEFrameProcessor::frame_error_check ( frameptr )
protected

Pipeline Stage 2.: Check DAPHNE headers for error flags

Definition at line 170 of file DAPHNEFrameProcessor.cpp.

171{
172 // check error fields
173}

◆ generate_opmon_data()

void dunedaq::fdreadoutlibs::DAPHNEFrameProcessor::generate_opmon_data ( )
overrideprotectedvirtual

Hook for customisable pubblication. The function can throw, exception will be caught by the monitoring thread

Reimplemented from dunedaq::datahandlinglibs::TaskRawDataProcessorModel< types::DAPHNESuperChunkTypeAdapter >.

Definition at line 255 of file DAPHNEFrameProcessor.cpp.

256{
257
258 // right now, just fill some basic tp info...
260 auto now = std::chrono::high_resolution_clock::now();
261 int num_new_tps = m_num_new_tps.exchange(0);
262 int new_tps_suppressed_too_long = 0; // not relevant for PDS TPs
263 int new_tps_send_failed = m_tps_send_failed.exchange(0);
264 double seconds = std::chrono::duration_cast<std::chrono::microseconds>(now - m_t0).count() / 1000000.;
265 TLOG_DEBUG(TLVL_BOOKKEEPING) << "TP rate: " << std::to_string(num_new_tps / seconds / 1000.) << " [kHz]";
266 TLOG_DEBUG(TLVL_BOOKKEEPING) << "Total new TPs: " << num_new_tps;
267
268 datahandlinglibs::opmon::HitFindingInfo tp_info;
269 tp_info.set_rate_tp_hits(num_new_tps / seconds / 1000.);
270
271 tp_info.set_num_tps_sent(num_new_tps);
272 tp_info.set_num_tps_suppressed_too_long(new_tps_suppressed_too_long);
273 tp_info.set_num_tps_send_failed(new_tps_send_failed);
274
275 publish(std::move(tp_info));
276
277 m_t0 = now;
278 }
279
281}
std::chrono::time_point< std::chrono::high_resolution_clock > m_t0
void publish(google::protobuf::Message &&, CustomOrigin &&co={}, OpMonLevel l=to_level(EntryOpMonLevel::kDefault)) const noexcept
#define TLOG_DEBUG(lvl,...)
Definition Logging.hpp:116

◆ peak_to_tp()

dunedaq::trgdataformats::TriggerPrimitive dunedaq::fdreadoutlibs::DAPHNEFrameProcessor::peak_to_tp ( dunedaq::fddetdataformats::DAPHNEFrame & frame,
int i )
protected

Definition at line 234 of file DAPHNEFrameProcessor.cpp.

235{
236 dunedaq::trgdataformats::TriggerPrimitive tp;
237 // TODO: add check on peak presence
238 tp.time_start = frame.get_timestamp() + frame.peaks_data.get_sample_start(i);
241 // FIXME : hard-coded channel map
242 // WARNING: slot ids in DAPHNEs are all 0!
243 tp.channel = m_channel_map->get_offline_channel_from_det_crate_slot_stream_chan(frame.daq_header.det_id,
244 frame.daq_header.crate_id,
245 frame.daq_header.slot_id,
246 frame.daq_header.link_id,
247 frame.get_channel());
249 tp.adc_peak = frame.peaks_data.get_adc_max(i);
251 return tp;
252}
uint16_t get_adc_max(int idx) const
Get the ADC Max value for a specific peak. (Word 2*idx+1, bits [31:18]).
uint16_t get_sample_start(int idx) const
Get the Time_Start value for a given index (0-4).
uint16_t get_sample_max(int idx) const
Get the Time_Peak value for a specific peak. (Word 2*idx+1, bits [17:9]).
uint32_t get_adc_integral(int idx) const
Get the ADC_Integral value for a specific peak. (Word 2*idx, bits [30:8]).
uint16_t get_samples_over_baseline(int idx) const
Get the Time_Over_Baseline value for a specific peak. (Word 2*idx+1, bits [8:0]).
detdataformats::DAQHeader daq_header
uint64_t get_timestamp() const
Get the 64-bit timestamp of the frame.
static constexpr detid_t s_invalid_detid
Definition Types.hpp:64

◆ start()

void dunedaq::fdreadoutlibs::DAPHNEFrameProcessor::start ( const appfwk::DAQModule::CommandData_t & args)
overridevirtual

Start operation.

Implements dunedaq::datahandlinglibs::RawDataProcessorConcept< ReadoutType >.

Definition at line 93 of file DAPHNEFrameProcessor.cpp.

94{
95 // Reset timestamp check
96 m_previous_ts = 0;
97 m_current_ts = 0;
100
101 // Reset stats
102 m_t0 = std::chrono::high_resolution_clock::now();
103 m_num_new_tps.exchange(0);
104
105 inherited::start(args);
106}

◆ stop()

void dunedaq::fdreadoutlibs::DAPHNEFrameProcessor::stop ( const appfwk::DAQModule::CommandData_t & args)
overridevirtual

Stop operation.

Implements dunedaq::datahandlinglibs::RawDataProcessorConcept< ReadoutType >.

Definition at line 108 of file DAPHNEFrameProcessor.cpp.

109{
110 inherited::stop(args);
111}

◆ timestamp_check()

void dunedaq::fdreadoutlibs::DAPHNEFrameProcessor::timestamp_check ( frameptr fp)
protected

Pipeline Stage 1.: Check proper timestamp increments in DAPHNE frame

Definition at line 116 of file DAPHNEFrameProcessor.cpp.

117{
118 // Let Source Emulator deal with this
119 /*
120 // If EMU data, emulate perfectly incrementing timestamp
121 if (inherited::m_emulator_mode) { // emulate perfectly incrementing timestamp
122 // RS warning : not fixed rate!
123 if (m_first_ts_fake) {
124 fp->fake_timestamps(m_previous_ts, 16);
125 m_first_ts_fake = false;
126 } else {
127 fp->fake_timestamps(m_previous_ts + 192, 16);
128 }
129 }*/
130
131 // FIXME: This is a temporary fix to avoid frames with unphysical timestamp set to the far future to interfere with
132 // the operations of the LB.
133 // These frames are effectively "corrupted" or "invalid frames" and hould be handled as such.
134
135 auto df_ptr = reinterpret_cast<dunedaq::fddetdataformats::DAPHNEFrame*>(fp);
136
137 for (size_t i = 0; i < fp->get_num_frames(); ++i) {
138
139 if (df_ptr[i].get_timestamp() > 0xFFFFFFFFFFFF0000 || df_ptr[i].get_timestamp() < 0xFFFF) {
140 ers::warning(PDSUnphysicalFrameTimestamp(ERS_HERE, df_ptr[i].get_timestamp(), df_ptr[i].get_channel(), i));
141 df_ptr[i].set_timestamp(0);
142 }
143 }
144
145 // Acquire timestamp
146 m_current_ts = fp->get_timestamp();
147 uint64_t k_clock_frequency = 62500000; // NOLINT(build/unsigned)
148 TLOG_DEBUG(TLVL_FRAME_RECEIVED) << "Received DAPHNE frame timestamp value of " << m_current_ts << " ticks (..."
149 << std::fixed << std::setprecision(8)
150 << (static_cast<double>(m_current_ts % (k_clock_frequency * 1000)) /
151 static_cast<double>(k_clock_frequency))
152 << " sec)"; // NOLINT
153
154 if (m_ts_error_ctr > 1000) {
155 if (!m_problem_reported) {
156 std::cout << "*** Data Integrity ERROR *** Timestamp continuity is completely broken! "
157 << "Something is wrong with the FE source or with the configuration!\n";
158 m_problem_reported = true;
159 }
160 }
161
164}
@ TLVL_FRAME_RECEIVED

Member Data Documentation

◆ m_channel_map

std::shared_ptr<detchannelmaps::PDSChannelMap> dunedaq::fdreadoutlibs::DAPHNEFrameProcessor::m_channel_map
private

Definition at line 96 of file DAPHNEFrameProcessor.hpp.

◆ m_channel_mask_set

std::set<unsigned int> dunedaq::fdreadoutlibs::DAPHNEFrameProcessor::m_channel_mask_set
private

Definition at line 104 of file DAPHNEFrameProcessor.hpp.

◆ m_channel_plane_numbers

std::vector<std::pair<trgdataformats::channel_t, int16_t> > dunedaq::fdreadoutlibs::DAPHNEFrameProcessor::m_channel_plane_numbers
private

Definition at line 97 of file DAPHNEFrameProcessor.hpp.

◆ m_crate_id

uint32_t dunedaq::fdreadoutlibs::DAPHNEFrameProcessor::m_crate_id
private

Definition at line 100 of file DAPHNEFrameProcessor.hpp.

◆ m_current_ts

timestamp_t dunedaq::fdreadoutlibs::DAPHNEFrameProcessor::m_current_ts = 0
protected

Definition at line 85 of file DAPHNEFrameProcessor.hpp.

◆ m_def_adc_intg_thresh

uint32_t dunedaq::fdreadoutlibs::DAPHNEFrameProcessor::m_def_adc_intg_thresh = 0
private

Definition at line 105 of file DAPHNEFrameProcessor.hpp.

◆ m_det_id

uint32_t dunedaq::fdreadoutlibs::DAPHNEFrameProcessor::m_det_id
private

Definition at line 99 of file DAPHNEFrameProcessor.hpp.

◆ m_first_ts_fake

bool dunedaq::fdreadoutlibs::DAPHNEFrameProcessor::m_first_ts_fake = true
protected

Definition at line 86 of file DAPHNEFrameProcessor.hpp.

◆ m_first_ts_missmatch

bool dunedaq::fdreadoutlibs::DAPHNEFrameProcessor::m_first_ts_missmatch = true
protected

Definition at line 87 of file DAPHNEFrameProcessor.hpp.

◆ m_frame_counter

std::atomic<uint64_t> dunedaq::fdreadoutlibs::DAPHNEFrameProcessor::m_frame_counter { 0 }
private

Definition at line 112 of file DAPHNEFrameProcessor.hpp.

◆ m_num_new_tps

std::atomic<uint64_t> dunedaq::fdreadoutlibs::DAPHNEFrameProcessor::m_num_new_tps { 0 }
private

Definition at line 109 of file DAPHNEFrameProcessor.hpp.

◆ m_previous_ts

timestamp_t dunedaq::fdreadoutlibs::DAPHNEFrameProcessor::m_previous_ts = 0
protected

Definition at line 84 of file DAPHNEFrameProcessor.hpp.

◆ m_problem_reported

bool dunedaq::fdreadoutlibs::DAPHNEFrameProcessor::m_problem_reported = false
protected

Definition at line 88 of file DAPHNEFrameProcessor.hpp.

◆ m_slot_id

uint32_t dunedaq::fdreadoutlibs::DAPHNEFrameProcessor::m_slot_id
private

Definition at line 101 of file DAPHNEFrameProcessor.hpp.

◆ m_stream_id

uint32_t dunedaq::fdreadoutlibs::DAPHNEFrameProcessor::m_stream_id
private

Definition at line 102 of file DAPHNEFrameProcessor.hpp.

◆ m_t0

std::chrono::time_point<std::chrono::high_resolution_clock> dunedaq::fdreadoutlibs::DAPHNEFrameProcessor::m_t0
private

Definition at line 114 of file DAPHNEFrameProcessor.hpp.

◆ m_tp_sink

std::shared_ptr<iomanager::SenderConcept<std::vector<trigger::TriggerPrimitiveTypeAdapter> > > dunedaq::fdreadoutlibs::DAPHNEFrameProcessor::m_tp_sink
private

Definition at line 107 of file DAPHNEFrameProcessor.hpp.

◆ m_tps_send_failed

std::atomic<uint64_t> dunedaq::fdreadoutlibs::DAPHNEFrameProcessor::m_tps_send_failed { 0 }
private

Definition at line 111 of file DAPHNEFrameProcessor.hpp.

◆ m_tps_suppressed_too_long

std::atomic<uint64_t> dunedaq::fdreadoutlibs::DAPHNEFrameProcessor::m_tps_suppressed_too_long { 0 }
private

Definition at line 110 of file DAPHNEFrameProcessor.hpp.

◆ m_ts_error_ctr

std::atomic<int> dunedaq::fdreadoutlibs::DAPHNEFrameProcessor::m_ts_error_ctr { 0 }
protected

Definition at line 89 of file DAPHNEFrameProcessor.hpp.


The documentation for this class was generated from the following files: