6#ifndef HEPMC3_READERMT_H
7#define HEPMC3_READERMT_H
31 std::vector< std::pair<GenEvent, bool> >
m_events;
34 static void read_function(std::pair<GenEvent,bool>& e, std::shared_ptr<T> r)
36 e.second = r->read_event(e.first);
37 r->skip(m_number_of_threads-1);
38 if (r->failed()) r->close();
43 m_events.reserve(m_number_of_threads);
46 for (
size_t i = 0; i < m_number_of_threads; ++i) {
47 m_readers.push_back(std::make_shared<T>(filename));
48 m_readers.back()->skip(m_number_of_threads-1-i);
58 bool skip(
const int)
override {
72 m_events.reserve(m_number_of_threads);
73 for (
size_t i = 0; i < m_number_of_threads; ++i) {
74 m_events.push_back(std::pair<GenEvent, bool>(
GenEvent(Units::GEV,Units::MM),
true));
96 for (
auto& reader:
m_readers)
if (reader && !reader->failed())
return false;
97 if ( !
m_events.empty() )
return false;
103 for (
auto& reader:
m_readers)
if (reader) reader->close();
Definition of class GenEvent.
Definition of interface Reader.
Stores event-related information.
void clear()
Remove contents of this event.
Multithreader GenEvent I/O parsing.
std::vector< std::pair< GenEvent, bool > > m_events
Vector of events.
bool m_go_try_cache
Flag to trigger using the cached event.
bool read_event(GenEvent &evt) override
event reading
bool failed() override
failed
bool skip(const int) override
skip
ReaderMT(const std::string &filename)
Constructor.
void close() override
close
std::vector< std::thread > m_threads
static void read_function(std::pair< GenEvent, bool > &e, std::shared_ptr< T > r)
The reading function.
std::vector< std::shared_ptr< T > > m_readers
Vector of all active readers.
Base class for all I/O readers.