diff --git a/DDG4/python/DDSim/Helper/Geometry.py b/DDG4/python/DDSim/Helper/Geometry.py
index f2bdf72affa024b2e3f33b6dc99fc9a526e54f77..4b8f932da6d02dce518d9acede720d2ff33599a9 100644
--- a/DDG4/python/DDSim/Helper/Geometry.py
+++ b/DDG4/python/DDSim/Helper/Geometry.py
@@ -36,45 +36,29 @@ class Geometry(ConfigHelper):
     self._dumpDGDML_EXTRA = {"help": "If not empty, filename to dump the Geometry as GDML"}
     self.dumpGDML = ""
 
-    self._regexSDDetectorList = []
+    self._regexSDDict = {}
 
     self._closeProperties()
 
   @property
   def regexSensitiveDetector(self):
-    """Configure a sensitive detector for a given detector matched by regular expression (regex).
-
-    'Detector' and 'Match' are mandatory elements of the dictionary, other Keys are assigned as property to the object.
-
-    >>> SIM.geometry.regexSensitiveDetector = {'Detector': 'DRcalo',
-                                               'Match': ['(core|clad)'],
-                                               'OutputLevel': 3,
-                                              }
-
-    This can be assigned repeatedly to add multiple RegexSDs
+    """ The map key is the name of the Detector, and 'Match' is a mandatory elements of the dictionary, other Keys are
+        assigned as property to the object. OutputLevel _sets_ the outputlevel of the plugin, so lower numbers mean more
+        output from the plugin.
+
+        >>> SIM.geometry.regexSensitiveDetector['DRcalo'] = {
+                                                   'Match': ['(core|clad)'],
+                                                   'OutputLevel': 3,
+                                                  }
     """
-    return self._regexSDDetectorList
+    return self._regexSDDict
 
   @regexSensitiveDetector.setter
   def regexSensitiveDetector(self, val):
-    if not val:
-      return
     if isinstance(val, dict):
-      self.__checkRegexKeys(val)
-      self._regexSDDetectorList.append(val)
-    elif isinstance(val, list):
-      for value in val:
-        self.__checkRegexKeys(value)
-        self._regexSDDetectorList.append(value)
-    else:
-        raise RuntimeError(f"Unsupported type for regexSensitiveDetector: {val!r}")
-
-  @staticmethod
-  def __checkRegexKeys(val):
-    """Check the regex SD arguments for required keys."""
-    requiredKeys = ('Detector', 'Match')
-    if not all(key in val for key in requiredKeys):
-      raise RuntimeError(f"RegexSD configuration {val} is missing mandatory key(s): {', '.join(requiredKeys)}")
+      self._regexSDDict = val
+      return
+    raise RuntimeError(f"Unsupported type for regexSensitiveDetector: {val!r}")
 
   def constructGeometry(self, kernel, geant4, geoPrintLevel=2, numberOfThreads=1):
     """Construct Geant4 geometry."""
@@ -100,8 +84,9 @@ class Geometry(ConfigHelper):
     sensitives.enableUI()
     seq.adopt(sensitives)
 
-    for index, regexDetectors in enumerate(self._regexSDDetectorList):
-      seq, act = geant4.addDetectorConstruction(f'Geant4RegexSensitivesConstruction/ConstrSDRegEx_{index}')
-      # this will set Match and Detector, and other properties if possible
+    for index, (detName, regexDetectors) in enumerate(sorted(self._regexSDDict.items())):
+      seq, act = geant4.addDetectorConstruction(f'Geant4RegexSensitivesConstruction/ConstrSDRegEx_{index}_{detName}')
+      act.Detector = detName
+      # this will set Match, and other properties if possible
       for key, value in regexDetectors.items():
         setattr(act, key, value)
diff --git a/examples/ClientTests/CMakeLists.txt b/examples/ClientTests/CMakeLists.txt
index 8ef15dc46668b5ac40733c48ba531f86c64a9f3e..a32a0cc97c14a679255a408cbc0f1654f3325510 100644
--- a/examples/ClientTests/CMakeLists.txt
+++ b/examples/ClientTests/CMakeLists.txt
@@ -632,4 +632,18 @@ if (DD4HEP_USE_GEANT4)
       REGEX_PASS "ResourcesAfterConstruction       ConstructSD:   VmRSS"
       REGEX_FAIL "Error;ERROR; Exception"
   )
+
+  dd4hep_add_test_reg(ClientTests_ddsim_setup_BoxOfStraws
+      COMMAND    "${CMAKE_INSTALL_PREFIX}/bin/run_test_ClientTests.sh"
+      EXEC_ARGS  ddsim
+                 --steeringFile ${ClientTestsEx_INSTALL}/scripts/BoxOfStraws_DDSim.py
+                 --compactFile ${ClientTestsEx_INSTALL}/compact/BoxOfStraws.xml
+                 --enableGun
+                 --numberOfEvents 1
+                 --outputFile regex.slcio
+
+      REGEX_PASS "BoxOfStrawsDet Handled 1 nodes with 1 sensitive volume type"
+      REGEX_FAIL "Error;ERROR; Exception"
+  )
+
 endif(DD4HEP_USE_GEANT4)
diff --git a/examples/ClientTests/scripts/BoxOfStraws_DDSim.py b/examples/ClientTests/scripts/BoxOfStraws_DDSim.py
new file mode 100644
index 0000000000000000000000000000000000000000..a914229096a5683f10334d0d4bf839f8789c5417
--- /dev/null
+++ b/examples/ClientTests/scripts/BoxOfStraws_DDSim.py
@@ -0,0 +1,16 @@
+from DDSim.DD4hepSimulation import DD4hepSimulation
+SIM = DD4hepSimulation()
+
+# make ddsim find the sensitive detector for box of straws
+SIM.action.calorimeterSDTypes = ['sensitive']
+
+SIM.filter.calo = ""
+
+# Configure the regexSD for the BoxOfStraws gas_
+SIM.geometry.regexSensitiveDetector['BoxOfStrawsDet'] = {'Match': ['gas_'],
+                                                         'OutputLevel': 4,
+                                                         }
+
+
+# Disable userParticleHander for box of straws
+SIM.part.userParticleHandler = ""