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 shared_ptr<GenRunInfo> ri = make_shared<GenRunInfo>();
29 GenRunInfoData *run = reinterpret_cast<GenRunInfoData*>(m_file->Get(
"GenRunInfoData"));
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" )
70 data = reinterpret_cast<GenEventData*>(key->ReadObj());
76 HEPMC3_ERROR(
"ReaderRoot: could not read event from root file")
93 if ( !
m_file->IsOpen() )
return true;
void set_run_info(shared_ptr< GenRunInfo > run)
Set the GenRunInfo object by smart pointer.
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.
shared_ptr< GenRunInfo > run_info() const
Get the global GenRunInfo object.
bool read_event(GenEvent &evt) override
Read event from file.
Definition of class ReaderRoot.
Stores event-related information.
void read_data(const GenRunInfoData &data)
Fill GenRunInfo based on GenRunInfoData.
Stores serializable event information.
Stores serializable run information.
void read_data(const GenEventData &data)
Fill GenEvent based on GenEventData.
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.