diff --git a/Generators/Rivet_i/src/Rivet_i.cxx b/Generators/Rivet_i/src/Rivet_i.cxx index 32edb4fa7e24b3f31c4b2a9b86a07f74e59f8cf1..bf9a5082f6b36ae93fef006a6e1e186368e409c8 100644 --- a/Generators/Rivet_i/src/Rivet_i.cxx +++ b/Generators/Rivet_i/src/Rivet_i.cxx @@ -254,7 +254,19 @@ const HepMC::GenEvent* Rivet_i::checkEvent(const HepMC::GenEvent* event) { // weight-name cleaning #ifdef HEPMC3 - std::vector w_names = event->weight_names(); + std::shared_ptr modRunInfo; + if (event->run_info()) { + modRunInfo = std::make_shared(*(event->run_info().get())); + } else { + ATH_MSG_ERROR("No run info, event weights size is " << event->weights().size() ); + modRunInfo = std::make_shared(); + std::vector w_names; + for (size_t i = 0; i < event->weights().size(); i++) { w_names.push_back(std::string("badweight")+std::to_string(i)); } + modRunInfo->set_weight_names(w_names); + } + } + modEvent->set_run_info(modRunInfo); + std::vector w_names = modEvent->weight_names(); if (w_names.size()) { std::vector > w_subs = { {" nominal ",""}, diff --git a/Generators/TruthIO/src/HepMCReadFromFile.cxx b/Generators/TruthIO/src/HepMCReadFromFile.cxx index d22f9f999cb7d209b28f139db2805ded2d7dd2a3..717502f64823884f9a8f6ae621226d37ffc017be 100644 --- a/Generators/TruthIO/src/HepMCReadFromFile.cxx +++ b/Generators/TruthIO/src/HepMCReadFromFile.cxx @@ -62,6 +62,7 @@ StatusCode HepMCReadFromFile::execute() { HepMC3::GenEvent* evt = new HepMC3::GenEvent(); m_hepmcio->read_event(*evt); if (m_hepmcio) { + if (!evt->run_info()) evt->set_run_info(m_hepmcio->run_info()); ++m_event_number; evt->set_event_number(m_event_number); evt->set_units(HepMC3::Units::MEV, HepMC3::Units::MM);