From 0a87cc09940c2a3b1cef7217243e40829c498092 Mon Sep 17 00:00:00 2001 From: Ete Remi <remi.ete@gmail.com> Date: Tue, 27 Feb 2018 15:41:07 +0100 Subject: [PATCH] Geant4Output2LCIO: get LCIO input event parameters from dedicated event extension (if exists) and write them to LCIO output event --- DDG4/lcio/Geant4Output2LCIO.cpp | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) diff --git a/DDG4/lcio/Geant4Output2LCIO.cpp b/DDG4/lcio/Geant4Output2LCIO.cpp index 2fb0295d2..b185dbfa9 100644 --- a/DDG4/lcio/Geant4Output2LCIO.cpp +++ b/DDG4/lcio/Geant4Output2LCIO.cpp @@ -17,6 +17,7 @@ // Framework include files #include "DD4hep/VolumeManager.h" #include "DDG4/Geant4OutputAction.h" +#include "LCIOEventParameters.h" // Geant4 headers #include "G4Threading.hh" #include "G4AutoLock.hh" @@ -46,6 +47,7 @@ namespace dd4hep { /// Base class to output Geant4 event data to media /** * \author M.Frank + * \author R.Ete (added event parameters treatment) * \version 1.0 * \ingroup DD4HEP_SIMULATION */ @@ -349,10 +351,19 @@ lcio::LCCollectionVec* Geant4Output2LCIO::saveParticles(Geant4ParticleMap* parti /// Callback to store the Geant4 event void Geant4Output2LCIO::saveEvent(OutputContext<G4Event>& ctxt) { lcio::LCEventImpl* e = context()->event().extension<lcio::LCEventImpl>(); - const int eventNumber = m_eventNumberOffset > 0 ? m_eventNumberOffset + ctxt.context->GetEventID() : ctxt.context->GetEventID(); - print("+++ Saving LCIO event %d run %d ....", eventNumber, m_runNo); - e->setRunNumber(m_runNo); - e->setEventNumber(eventNumber); + LCIOEventParameters* parameters = context()->event().extension<LCIOEventParameters>(false); + if ( parameters ) { + e->setRunNumber(parameters->runNumber()); + e->setEventNumber(parameters->eventNumber()); + LCIOEventParameters::copyLCParameters(parameters->eventParameters(),e->parameters()); + print("+++ Saving LCIO event %d run %d ....", e->getEventNumber(), e->getRunNumber()); + } + else { + const int eventNumber = m_eventNumberOffset > 0 ? m_eventNumberOffset + ctxt.context->GetEventID() : ctxt.context->GetEventID(); + e->setRunNumber(m_runNo); + e->setEventNumber(eventNumber); + print("+++ Saving LCIO event %d run %d ....", eventNumber, m_runNo); + } e->setDetectorName(context()->detectorDescription().header().name()); saveEventParameters<int>(e, m_eventParametersInt); saveEventParameters<float>(e, m_eventParametersFloat); -- GitLab