62 std::vector<dunedaq::trgdataformats::TriggerPrimitive>
operator()(
const T* frame) {
64 std::vector<dunedaq::trgdataformats::TriggerPrimitive> tp_aggr;
65 tp_aggr.reserve(T::s_num_channels * T::s_time_samples_per_frame / 2);
67 const typename T::word_t (*words_ptr)[T::s_bits_per_adc] = frame->adc_words;
68 const uint64_t timestamp = frame->get_timestamp();
72 for (
int t = 0; t < T::s_time_samples_per_frame; t++) {
73 const typename T::word_t *time_sample = *(words_ptr + t);
74 char* cursor = (
char*) time_sample;
81 __m256i regi = _mm256_lddqu_si256((__m256i*)cursor);
84 regi = _mm256_permutevar8x32_epi32(regi, _mm256_setr_epi32(1, 2, 3, 4, 5, 6, 7, 0));
87 std::vector<dunedaq::trgdataformats::TriggerPrimitive> tps =
m_tpg_pipelines[p].process(expanded_subframe);
91 tp_aggr.push_back(tp);
93 cursor += register_alignment / 8;