diff --git a/DDG4/edm4hep/Geant4Output2EDM4hep.cpp b/DDG4/edm4hep/Geant4Output2EDM4hep.cpp index e4df3b32c63ab997ff0d891c46abe8368e05fef3..f22d2beca4101dd721d6e90dc9d9d8d921a9aa1a 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 3cbc6ec515085ec78f5c9975f037656731bb5070..edc6917006e10edd7721e251a26f951a23d97218 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);