ATLAS Offline Software
Toggle main menu visibility
Loading...
Searching...
No Matches
HLT
Trigger
TrigControl
TrigDFEmulator
src
EFInterfaceEmulator.h
Go to the documentation of this file.
1
/*
2
Copyright (C) 2002-2025 CERN for the benefit of the ATLAS collaboration
3
*/
4
5
#ifndef TRIGDFEMULATOR_EFINTERFACEEMULATOR_H
6
#define TRIGDFEMULATOR_EFINTERFACEEMULATOR_H
7
8
#include <mutex>
9
#include <utility>
10
#include <queue>
11
#include <future>
12
#include <unordered_map>
13
#include <vector>
14
15
#include "ers/ers.h"
16
#include "eformat/eformat.h"
17
#include "eformat/index.h"
18
#include "eformat/write/eformat.h"
19
#include "eformat/SourceIdentifier.h"
20
#include "eformat/FullEventFragmentNoTemplates.h"
21
22
#include <boost/interprocess/shared_memory_object.hpp>
23
#include "df_ef_interface/df_ef_interface.h"
24
#include "
TrigKernel/EventLoopUtils.h
"
25
#include "
FileReaderWriter.h
"
26
37
38
namespace
DFEF
{
39
class
EFInterfaceEmulator
:
public
daq::df_ef_interface::EventHandler{
40
41
public
:
42
43
EFInterfaceEmulator
(
const
boost::property_tree::ptree &args);
44
47
virtual
void
open
()
override
;
48
51
virtual
void
close
()
override
;
52
55
virtual
std::future<std::unique_ptr<uint32_t[]>>
getNext
()
override
;
56
59
virtual
std::future<void>
accept
(uint64_t l0id, std::unique_ptr<uint32_t[]> hltr)
override
;
60
63
virtual
std::future<void>
reject
(uint64_t l0id)
override
;
64
65
virtual
~EFInterfaceEmulator
();
66
67
68
private
:
69
70
std::string
m_name
;
71
std::unique_ptr<FileReaderWriter>
m_file_rw
;
72
eformat::Compression
m_comp
;
73
unsigned
int
m_compLevel
;
74
76
void
inputThreadCallback
();
78
void
outputThreadCallback
();
79
81
std::unique_ptr<HLT::LoopThread>
m_inputThread
;
83
std::unique_ptr<HLT::LoopThread>
m_outputThread
;
84
86
std::queue<std::promise<std::unique_ptr<uint32_t[]>>>
m_inputQueue
;
88
std::mutex
m_iQMutex
;
89
91
std::queue<std::pair<uint64_t, std::unique_ptr<uint32_t[]>>>
m_outputQueue
;
93
std::mutex
m_oQMutex
;
94
96
std::unordered_map<uint64_t, std::vector<std::unique_ptr<uint32_t[]>>>
m_events
;
98
std::mutex
m_mMutex
;
99
101
std::mutex
m_RWMutex
;
102
103
};
104
}
105
#endif
EventLoopUtils.h
FileReaderWriter.h
DFEF::EFInterfaceEmulator::m_events
std::unordered_map< uint64_t, std::vector< std::unique_ptr< uint32_t[]> > > m_events
Map of events read from the input (stores duplicates per L1ID).
Definition
EFInterfaceEmulator.h:96
DFEF::EFInterfaceEmulator::EFInterfaceEmulator
EFInterfaceEmulator(const boost::property_tree::ptree &args)
Definition
EFInterfaceEmulator.cxx:24
DFEF::EFInterfaceEmulator::m_outputThread
std::unique_ptr< HLT::LoopThread > m_outputThread
Output handling thread (triggers post-processing of finished events).
Definition
EFInterfaceEmulator.h:83
DFEF::EFInterfaceEmulator::m_iQMutex
std::mutex m_iQMutex
queue mutex
Definition
EFInterfaceEmulator.h:88
DFEF::EFInterfaceEmulator::m_compLevel
unsigned int m_compLevel
Compression type of built event.
Definition
EFInterfaceEmulator.h:73
DFEF::EFInterfaceEmulator::accept
virtual std::future< void > accept(uint64_t l0id, std::unique_ptr< uint32_t[]> hltr) override
Marks the event as accepted by the High-Level Trigger.
Definition
EFInterfaceEmulator.cxx:78
DFEF::EFInterfaceEmulator::inputThreadCallback
void inputThreadCallback()
Compression level of built event.
Definition
EFInterfaceEmulator.cxx:106
DFEF::EFInterfaceEmulator::m_inputQueue
std::queue< std::promise< std::unique_ptr< uint32_t[]> > > m_inputQueue
queue of promises for getNext() calls
Definition
EFInterfaceEmulator.h:86
DFEF::EFInterfaceEmulator::outputThreadCallback
void outputThreadCallback()
The method executed by the output handling thread.
Definition
EFInterfaceEmulator.cxx:157
DFEF::EFInterfaceEmulator::m_inputThread
std::unique_ptr< HLT::LoopThread > m_inputThread
Input handling thread (triggers reading new events).
Definition
EFInterfaceEmulator.h:81
DFEF::EFInterfaceEmulator::open
virtual void open() override
Opens the Session.
Definition
EFInterfaceEmulator.cxx:41
DFEF::EFInterfaceEmulator::m_name
std::string m_name
Definition
EFInterfaceEmulator.h:70
DFEF::EFInterfaceEmulator::m_oQMutex
std::mutex m_oQMutex
queue mutex
Definition
EFInterfaceEmulator.h:93
DFEF::EFInterfaceEmulator::m_mMutex
std::mutex m_mMutex
Map mutex.
Definition
EFInterfaceEmulator.h:98
DFEF::EFInterfaceEmulator::m_file_rw
std::unique_ptr< FileReaderWriter > m_file_rw
Definition
EFInterfaceEmulator.h:71
DFEF::EFInterfaceEmulator::m_RWMutex
std::mutex m_RWMutex
ReadWrite mutex for the file reader/writer.
Definition
EFInterfaceEmulator.h:101
DFEF::EFInterfaceEmulator::m_comp
eformat::Compression m_comp
Definition
EFInterfaceEmulator.h:72
DFEF::EFInterfaceEmulator::m_outputQueue
std::queue< std::pair< uint64_t, std::unique_ptr< uint32_t[]> > > m_outputQueue
queue of promises for accept() calls
Definition
EFInterfaceEmulator.h:91
DFEF::EFInterfaceEmulator::close
virtual void close() override
Closes the Session.
Definition
EFInterfaceEmulator.cxx:51
DFEF::EFInterfaceEmulator::~EFInterfaceEmulator
virtual ~EFInterfaceEmulator()
Definition
EFInterfaceEmulator.cxx:104
DFEF::EFInterfaceEmulator::reject
virtual std::future< void > reject(uint64_t l0id) override
Marks the event as rejected by the High-Level Trigger.
Definition
EFInterfaceEmulator.cxx:92
DFEF::EFInterfaceEmulator::getNext
virtual std::future< std::unique_ptr< uint32_t[]> > getNext() override
Returns a pointer to the next Event object to be processed.
Definition
EFInterfaceEmulator.cxx:65
DFEF
Definition
EFInterfaceEmulator.h:38
Generated on
for ATLAS Offline Software by
1.17.0