diff --git a/SimG4Core/Geometry/src/DD4hep_DDG4Builder.cc b/SimG4Core/Geometry/src/DD4hep_DDG4Builder.cc index ba4f9683b7329..8d703846a6436 100644 --- a/SimG4Core/Geometry/src/DD4hep_DDG4Builder.cc +++ b/SimG4Core/Geometry/src/DD4hep_DDG4Builder.cc @@ -12,6 +12,7 @@ #include #include "G4LogicalVolume.hh" +#include "G4LogicalVolumeStore.hh" #include "G4ReflectionFactory.hh" #include "FWCore/MessageLogger/interface/MessageLogger.h" @@ -56,6 +57,19 @@ G4VPhysicalVolume *DDG4Builder::BuildGeometry(SensitiveDetectorCatalog &catalog) auto fff = it.first->GetName(); catalog.insert({sClassName.data(), sClassName.size()}, {sROUName.data(), sROUName.size()}, fff); + auto reflectedG4LogicalVolumeName = fff + "_refl"; + bool hasReflectedVolumeInStore = false; + G4LogicalVolumeStore *theStore = G4LogicalVolumeStore::GetInstance(); + for (const auto &lv : *theStore) { + if (lv->GetName().find(reflectedG4LogicalVolumeName) != std::string::npos) { + hasReflectedVolumeInStore = true; + } + } + if (hasReflectedVolumeInStore) { + catalog.insert( + {sClassName.data(), sClassName.size()}, {sROUName.data(), sROUName.size()}, reflectedG4LogicalVolumeName); + } + edm::LogVerbatim("SimG4CoreApplication") << " DDG4SensitiveConverter: Sensitive " << fff << " Class Name " << sClassName << " ROU Name " << sROUName; }