12#include "HepMC3/Version.h"
15HEPMC3_DECLARE_READER_FILE(ReaderRoot)
18 m_file = TFile::Open(filename.c_str());
19 m_next =
new TIter(m_file->GetListOfKeys());
21 if ( !m_file->IsOpen() ) {
22 HEPMC3_ERROR(
"ReaderRoot: problem opening file: " << filename)
26 std::shared_ptr<GenRunInfo> ri = std::make_shared<GenRunInfo>();
41 for (
int nn = n; nn > 0; --nn)
54 TKey *key = (TKey*) (*
m_next)();
61 const char *cl = key->GetClassName();
64 size_t geneventdata30 = strncmp(cl,
"HepMC::GenEventData", 19);
65 size_t geneventdata31 = strncmp(cl,
"HepMC3::GenEventData", 20);
66 if ( geneventdata31 == 0 || geneventdata30 == 0 ) {
67 if (geneventdata30 == 0)
HEPMC3_WARNING(
"ReaderRoot::read_event: The object was written with HepMC3 version 3.0")
74 HEPMC3_ERROR(
"ReaderRoot: could not read event from root file")
91 if ( !
m_file->IsOpen() )
return true;
#define HEPMC3_WARNING(MESSAGE)
Macro for printing HEPMC3_HEPMC3_WARNING messages.
#define HEPMC3_ERROR(MESSAGE)
Macro for printing error messages.
Definition of class ReaderRoot.
Stores event-related information.
void set_run_info(std::shared_ptr< GenRunInfo > run)
Set the GenRunInfo object by smart pointer.
void read_data(const GenEventData &data)
Fill GenEvent based on GenEventData.
void clear()
Remove contents of this event.
GenEvent I/O parsing and serialization for root files.
bool read_event(GenEvent &evt) override
Read event from file.
bool failed() override
Get stream error state.
bool skip(const int) override
skip events
void close() override
Close file stream.
TFile * m_file
File handler.
TIter * m_next
Iterator for event reading.
std::shared_ptr< GenRunInfo > run_info() const
Get the global GenRunInfo object.
Stores serializable event information.
Stores serializable run information.