From 8f87ef4afdb35add4e8e56d108c780ab74daa889 Mon Sep 17 00:00:00 2001 From: Thomas Madlener <thomas.madlener@desy.de> Date: Fri, 10 Feb 2023 18:16:50 +0100 Subject: [PATCH] Propagate double parameters to outputs and extract event weight --- DDG4/edm4hep/Geant4Output2EDM4hep.cpp | 13 ++++++++++--- DDG4/lcio/Geant4Output2LCIO.cpp | 6 ++++++ 2 files changed, 16 insertions(+), 3 deletions(-) diff --git a/DDG4/edm4hep/Geant4Output2EDM4hep.cpp b/DDG4/edm4hep/Geant4Output2EDM4hep.cpp index e4df3b32c..f22d2beca 100644 --- a/DDG4/edm4hep/Geant4Output2EDM4hep.cpp +++ b/DDG4/edm4hep/Geant4Output2EDM4hep.cpp @@ -96,15 +96,19 @@ namespace dd4hep { template <> void EventParameters::extractParameters(podio::Frame& frame) { for(auto const& p: this->intParameters()) { - std::cout << "Saving event parameter: " << p.first << std::endl; + printout(DEBUG, "Geant4OutputEDM4hep", "Saving event parameter: %s", p.first); frame.putParameter(p.first, p.second); } for(auto const& p: this->fltParameters()) { - std::cout << "Saving event parameter: " << p.first << std::endl; + printout(DEBUG, "Geant4OutputEDM4hep", "Saving event parameter: %s", p.first); frame.putParameter(p.first, p.second); } for(auto const& p: this->strParameters()) { - std::cout << "Saving event parameter: " << p.first << std::endl; + printout(DEBUG, "Geant4OutputEDM4hep", "Saving event parameter: %s", p.first); + frame.putParameter(p.first, p.second); + } + for (auto const& p: this->dblParameters()) { + printout(DEBUG, "Geant4OutputEDM4hep", "Saving event parameter: %s", p.first); frame.putParameter(p.first, p.second); } } @@ -368,11 +372,13 @@ void Geant4Output2EDM4hep::saveEvent(OutputContext<G4Event>& ctxt) { int runNumber(0), eventNumber(0); const int eventNumberOffset(m_eventNumberOffset > 0 ? m_eventNumberOffset : 0); const int runNumberOffset(m_runNumberOffset > 0 ? m_runNumberOffset : 0); + double eventWeight{0}; // Get event number, run number and parameters from extension ... if ( parameters ) { runNumber = parameters->runNumber() + runNumberOffset; eventNumber = parameters->eventNumber() + eventNumberOffset; parameters->extractParameters(m_frame); + eventWeight = m_frame.getParameter<double>("EventWeights"); } else { // ... or from DD4hep framework runNumber = m_runNo + runNumberOffset; eventNumber = ctxt.context->GetEventID() + eventNumberOffset; @@ -384,6 +390,7 @@ void Geant4Output2EDM4hep::saveEvent(OutputContext<G4Event>& ctxt) { auto header = header_collection.create(); header.setRunNumber(runNumber); header.setEventNumber(eventNumber); + header.setWeight(eventWeight); //not implemented in EDM4hep ? header.setDetectorName(context()->detectorDescription().header().name()); header.setTimeStamp( std::time(nullptr) ) ; m_frame.put( std::move(header_collection), "EventHeader"); diff --git a/DDG4/lcio/Geant4Output2LCIO.cpp b/DDG4/lcio/Geant4Output2LCIO.cpp index 3cbc6ec51..edc691700 100644 --- a/DDG4/lcio/Geant4Output2LCIO.cpp +++ b/DDG4/lcio/Geant4Output2LCIO.cpp @@ -55,6 +55,9 @@ namespace dd4hep { for(auto const& ival: this->strParameters()) { lcparameters.setValues(ival.first, ival.second); } + for(auto const& ival: this->dblParameters()) { + lcparameters.setValues(ival.first, ival.second); + } } @@ -371,11 +374,13 @@ void Geant4Output2LCIO::saveEvent(OutputContext<G4Event>& ctxt) { int runNumber(0), eventNumber(0); const int eventNumberOffset(m_eventNumberOffset > 0 ? m_eventNumberOffset : 0); const int runNumberOffset(m_runNumberOffset > 0 ? m_runNumberOffset : 0); + double eventWeight{0}; // Get event number, run number and parameters from extension ... if (parameters) { runNumber = parameters->runNumber() + runNumberOffset; eventNumber = parameters->eventNumber() + eventNumberOffset; parameters->extractParameters(*e); + eventWeight = e->getParameters().getDoubleVal("EventWeights"); } else { // ... or from DD4hep framework runNumber = m_runNo + runNumberOffset; eventNumber = ctxt.context->GetEventID() + eventNumberOffset; @@ -383,6 +388,7 @@ void Geant4Output2LCIO::saveEvent(OutputContext<G4Event>& ctxt) { print("+++ Saving LCIO event %d run %d ....", eventNumber, runNumber); e->setRunNumber(runNumber); e->setEventNumber(eventNumber); + e->setWeight(eventWeight); e->setDetectorName(context()->detectorDescription().header().name()); saveEventParameters<int>(e, m_eventParametersInt); saveEventParameters<float>(e, m_eventParametersFloat); -- GitLab