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