diff --git a/Plugins/DD4hep/include/ACTFW/Plugins/DD4hep/GeometryService.hpp b/Plugins/DD4hep/include/ACTFW/Plugins/DD4hep/GeometryService.hpp index d77d3173fbf4f1505465d5830a09fb7ab4319883..8c9784b3fd2a5c954e00c1cf9712d3d3b2090881 100644 --- a/Plugins/DD4hep/include/ACTFW/Plugins/DD4hep/GeometryService.hpp +++ b/Plugins/DD4hep/include/ACTFW/Plugins/DD4hep/GeometryService.hpp @@ -45,7 +45,7 @@ namespace DD4hep { /// The default logger std::shared_ptr<const Acts::Logger> logger; /// XML-file with the detector description - std::string xmlFileName; + std::vector<std::string> xmlFileNames; /// Logger for the geometry transformation Acts::Logging::Level lvl; /// The name of the service @@ -91,7 +91,7 @@ namespace DD4hep { Config(const std::string& lname = "GeometryService", Acts::Logging::Level level = Acts::Logging::INFO) : logger(Acts::getDefaultLogger(lname, level)) - , xmlFileName("") + , xmlFileNames() , lvl(level) , name(lname) , bTypePhi(Acts::equidistant) diff --git a/Plugins/DD4hep/src/GeometryService.cpp b/Plugins/DD4hep/src/GeometryService.cpp index 8302cc1494e7c5db2981585b5bdd408e37ca9502..3d74c901e86cf2c8afd703cbbe13f1b5bc9a6e6b 100644 --- a/Plugins/DD4hep/src/GeometryService.cpp +++ b/Plugins/DD4hep/src/GeometryService.cpp @@ -36,13 +36,14 @@ FW::DD4hep::GeometryService::name() const FW::ProcessCode FW::DD4hep::GeometryService::buildDD4hepGeometry() { - if (!m_cfg.xmlFileName.empty()) { - m_lcdd = &(dd4hep::Detector::getInstance()); - m_lcdd->fromCompact(m_cfg.xmlFileName.c_str()); - m_lcdd->volumeManager(); - m_lcdd->apply("DD4hepVolumeManager", 0, 0); - m_dd4hepGeometry = m_lcdd->world(); + m_lcdd = &(dd4hep::Detector::getInstance()); + for (auto& file : m_cfg.xmlFileNames) { + m_lcdd->fromCompact(file.c_str()); } + m_lcdd->volumeManager(); + m_lcdd->apply("DD4hepVolumeManager", 0, 0); + m_dd4hepGeometry = m_lcdd->world(); + return FW::ProcessCode::SUCCESS; }