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.
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.