14 __m256i active = _mm256_cmpgt_epi16(processed_signal, _mm256_setzero_si256());
15 __m256i inactive = _mm256_cmpeq_epi16(processed_signal, _mm256_setzero_si256());
19 __m256i new_tps = _mm256_andnot_si256(was_inactive, inactive);
22 __m256i adc_integral_sat = _mm256_adds_epu16(
m_adc_integral_lo, processed_signal);
30 is_saturated = _mm256_andnot_si256(exact, is_saturated);
35 __m256i above_peak = _mm256_cmpgt_epi16(processed_signal,
m_adc_peak);
40 __m256i time_add = _mm256_blendv_epi8(_mm256_setzero_si256(),
m_ones_register, active);
58 __m256i adc_integral_lo = _mm256_blendv_epi8(_mm256_setzero_si256(),
m_adc_integral_lo, tp_mask);
59 __m256i adc_integral_hi = _mm256_blendv_epi8(_mm256_setzero_si256(),
m_adc_integral_hi, tp_mask);
61 __m256i samples_to_peak = _mm256_blendv_epi8(_mm256_setzero_si256(),
m_samples_to_peak, tp_mask);
64 uint16_t tp_sot[16], tp_integral_lo[16], tp_integral_hi[16], tp_adc_peak[16], tp_samples_to_peak[16];
65 _mm256_storeu_si256(
reinterpret_cast<__m256i*
>(tp_sot), samples_over_threshold);
66 _mm256_storeu_si256(
reinterpret_cast<__m256i*
>(tp_integral_lo), adc_integral_lo);
67 _mm256_storeu_si256(
reinterpret_cast<__m256i*
>(tp_integral_hi), adc_integral_hi);
68 _mm256_storeu_si256(
reinterpret_cast<__m256i*
>(tp_adc_peak),
adc_peak);
69 _mm256_storeu_si256(
reinterpret_cast<__m256i*
>(tp_samples_to_peak), samples_to_peak);
71 std::vector<dunedaq::trgdataformats::TriggerPrimitive> tps;
72 for (
int i = 0; i < 16; i++) {
75 tp.
adc_integral = uint32_t(tp_integral_lo[i]) + (uint32_t(tp_integral_hi[i]) << 16);