diff --git a/DDCore/include/DD4hep/GeoHandler.h b/DDCore/include/DD4hep/GeoHandler.h index 976ecbd96..7f98d9fa3 100644 --- a/DDCore/include/DD4hep/GeoHandler.h +++ b/DDCore/include/DD4hep/GeoHandler.h @@ -67,7 +67,8 @@ namespace dd4hep { */ class GeometryInfo { public: - std::set solids; + std::vector solids; + std::set solid_set; std::set volumeSet; std::vector volumes; std::set vis; diff --git a/DDCore/src/GeoHandler.cpp b/DDCore/src/GeoHandler.cpp index 04941b671..880d1fb99 100644 --- a/DDCore/src/GeoHandler.cpp +++ b/DDCore/src/GeoHandler.cpp @@ -44,7 +44,9 @@ namespace { collectSolid(geo, name + "_left", name + "_left", boolean->GetLeftShape(), boolean->GetLeftMatrix()); collectSolid(geo, name + "_right", name + "_right", boolean->GetRightShape(), boolean->GetRightMatrix()); } - geo.solids.emplace(shape); + if(geo.solid_set.emplace(shape).second) { + geo.solids.push_back(shape); + } geo.trafos.emplace_back(node, matrix); } }