diff --git a/DDCore/src/plugins/Compact2Objects.cpp b/DDCore/src/plugins/Compact2Objects.cpp
index 636aa9ad35f1db28f6843ffd28128706220b7d93..21425c6d3eb0dae8e12babba5a2659b5e04adb3e 100644
--- a/DDCore/src/plugins/Compact2Objects.cpp
+++ b/DDCore/src/plugins/Compact2Objects.cpp
@@ -899,19 +899,16 @@ template <> void Converter<DetElement>::operator()(xml_h element) const {
     xml_attr_t attr_ro  = element.attr_nothrow(_U(readout));
     SensitiveDetector sd;
     Segmentation seg;
-    if (attr_ro)   {
+    if ( attr_ro )   {
       Readout ro = lcdd.readout(element.attr<string>(attr_ro));
       if (!ro.isValid()) {
         throw runtime_error("No Readout structure present for detector:" + name);
       }
+      seg = ro.segmentation();
       sd = SensitiveDetector(name, "sensitive");
       sd.setHitsCollection(ro.name());
       sd.setReadout(ro);
       lcdd.addSensitiveDetector(sd);
-      seg = ro.segmentation();
-      if ( seg.isValid() )  {
-        seg->sensitive = sd;
-      }
     }
     Ref_t sens = sd;
     DetElement det(Ref_t(PluginService::Create<NamedObject*>(type, &lcdd, &element, &sens)));
@@ -921,7 +918,8 @@ template <> void Converter<DetElement>::operator()(xml_h element) const {
         det->flag |= DetElement::Object::HAVE_SENSITIVE_DETECTOR;
       }
       if ( seg.isValid() )  {
-        seg->detector = det;
+        seg->sensitive = sd;
+        seg->detector  = det;
       }
     }
     printout(det.isValid() ? INFO : ERROR, "Compact", "%s subdetector:%s of type %s %s",