DUNE-DAQ
DUNE Trigger and Data Acquisition software
Toggle main menu visibility
Loading...
Searching...
No Matches
dunedaq
sourcecode
trgtools
include
trgtools
EmulationUnit.hpp
Go to the documentation of this file.
1
/* @file: EmulationUnit.hpp
2
*
3
* Base abstract class for emulation units.
4
*
5
* This is part of the DUNE DAQ Application Framework, copyright 2023.
6
* Licensing/copyright details are in the COPYING file that you should have
7
* received with this code.
8
*/
9
10
#ifndef TRGTOOLS_EMULATIONUNIT_HPP_
11
#define TRGTOOLS_EMULATIONUNIT_HPP_
12
13
#include "
daqdataformats/TimeSlice.hpp
"
14
#include "
daqdataformats/Fragment.hpp
"
15
#include "
triggeralgs/TriggerObjectOverlay.hpp
"
16
17
#include <chrono>
18
#include <fstream>
19
#include <iostream>
20
#include <memory>
21
#include <vector>
22
23
namespace
dunedaq
{
24
namespace
trgtools
{
25
26
template
<
typename
T,
typename
U,
typename
V>
27
class
EmulationUnit
28
{
29
using
input_t
= T;
30
using
output_t
= U;
31
using
maker_t
= V;
32
33
private
:
34
std::unique_ptr<maker_t>
m_maker
;
// TODO: unique may become shared later.
35
std::vector<output_t>
m_last_output_buffer
;
36
std::string
m_timing_file_name
;
37
38
public
:
39
uint64_t
emulate
(
const
input_t
& input, std::vector<output_t>& outputs);
40
std::unique_ptr<daqdataformats::Fragment>
emulate_vector
(
const
std::vector<input_t>& inputs);
41
std::vector<output_t>
get_last_output_buffer
();
42
void
set_maker
(std::unique_ptr<maker_t>& maker) {
m_maker
= std::move(maker); }
43
void
set_timing_file
(
const
std::string& file_name) {
m_timing_file_name
= file_name; }
44
void
write_csv_header
(
const
std::string& header) {
45
std::fstream file_header;
46
file_header.open(
m_timing_file_name
, std::ios::out | std::ios::app);
47
file_header << header <<
"\n"
;
48
file_header.close();
49
}
50
};
51
52
}
// namespace trgtools
53
}
// namespace dunedaq
54
55
#include "
detail/EmulationUnit.hxx
"
56
57
#endif
// TRGTOOLS_EMULATIONUNIT_HPP_
EmulationUnit.hxx
Fragment.hpp
TimeSlice.hpp
dunedaq::trgtools::EmulationUnit
Definition
EmulationUnit.hpp:28
dunedaq::trgtools::EmulationUnit::emulate_vector
std::unique_ptr< daqdataformats::Fragment > emulate_vector(const std::vector< input_t > &inputs)
Definition
EmulationUnit.hxx:18
dunedaq::trgtools::EmulationUnit::get_last_output_buffer
std::vector< output_t > get_last_output_buffer()
Definition
EmulationUnit.hxx:119
dunedaq::trgtools::EmulationUnit::emulate
uint64_t emulate(const input_t &input, std::vector< output_t > &outputs)
Definition
EmulationUnit.hxx:108
dunedaq::trgtools::EmulationUnit::input_t
T input_t
Definition
EmulationUnit.hpp:29
dunedaq::trgtools::EmulationUnit::maker_t
V maker_t
Definition
EmulationUnit.hpp:31
dunedaq::trgtools::EmulationUnit::m_timing_file_name
std::string m_timing_file_name
Definition
EmulationUnit.hpp:36
dunedaq::trgtools::EmulationUnit::m_maker
std::unique_ptr< maker_t > m_maker
Definition
EmulationUnit.hpp:34
dunedaq::trgtools::EmulationUnit::set_timing_file
void set_timing_file(const std::string &file_name)
Definition
EmulationUnit.hpp:43
dunedaq::trgtools::EmulationUnit::write_csv_header
void write_csv_header(const std::string &header)
Definition
EmulationUnit.hpp:44
dunedaq::trgtools::EmulationUnit::set_maker
void set_maker(std::unique_ptr< maker_t > &maker)
Definition
EmulationUnit.hpp:42
dunedaq::trgtools::EmulationUnit::m_last_output_buffer
std::vector< output_t > m_last_output_buffer
Definition
EmulationUnit.hpp:35
dunedaq::trgtools::EmulationUnit::output_t
U output_t
Definition
EmulationUnit.hpp:30
dunedaq::trgtools
Definition
EmulationUnit.hxx:14
dunedaq
Including Qt Headers.
Definition
module.cpp:16
TriggerObjectOverlay.hpp
Generated on
for DUNE-DAQ by
1.17.0