18 {
19
20 std::vector<U> output_buffer;
21 std::vector<U> temp_buffer;
22
23
24 std::vector<uint64_t> time_diffs;
25
26 std::vector<uint64_t> tp_adc_integral;
27 std::vector<uint64_t> tp_time_start;
28 std::vector<int> is_last_tp_in_ta;
29
31 time_diffs.reserve(inputs.size());
32 tp_adc_integral.reserve(inputs.size());
33 tp_time_start.reserve(inputs.size());
34 is_last_tp_in_ta.reserve(inputs.size());
35 }
36
37 for (const T& input : inputs) {
38 size_t output_buffer_size = output_buffer.size();
39 uint64_t time_diff =
emulate(input, temp_buffer);
40 if (temp_buffer.size() != 0) {
41 output_buffer.insert(output_buffer.end(), temp_buffer.begin(), temp_buffer.end());
42 temp_buffer.clear();
43 }
44
45 int last_tp_in_ta = (output_buffer_size == output_buffer.size()) ? 0 : 1;
46
47
49 continue;
50 time_diffs.push_back(time_diff);
51
52
53 if (!std::is_same<T, dunedaq::trgdataformats::TriggerPrimitive>::value)
54 continue;
55
56 tp_time_start.push_back(input.time_start);
57 tp_adc_integral.push_back(input.adc_integral);
58 is_last_tp_in_ta.push_back(last_tp_in_ta);
59 }
60
61
63 std::fstream timings;
65 for (size_t i = 0; i < time_diffs.size(); i++) {
66 if (std::is_same<T, dunedaq::trgdataformats::TriggerPrimitive>::value) {
67 timings << tp_time_start[i] << "," << tp_adc_integral[i] << ","
68 << time_diffs[i] << "," << is_last_tp_in_ta[i] << "\n";
69 }
70 else {
71 timings << time_diffs[i] << "\n";
72 }
73 }
74 timings.close();
75 }
76
77
78 size_t payload_size(0);
79 for (const U& output : output_buffer) {
81 }
82
83
84
85 if (payload_size == 0)
86 return nullptr;
87
88
89 char*
payload =
static_cast<char*
>(malloc(payload_size));
90 size_t payload_offset(0);
91 for (const U& output : output_buffer) {
94 }
95
96
97 std::unique_ptr<daqdataformats::Fragment> frag
98 = std::make_unique<daqdataformats::Fragment>(static_cast<void*>(payload), payload_size);
99
100 free(static_cast<void*>(payload));
101
103 return frag;
104}
void write_overlay(const Object &object, void *buffer)
size_t get_overlay_nbytes(const Object &object)