From 1c8e109cc72e9bf0256818ebb3d7ccdebd3e8aa3 Mon Sep 17 00:00:00 2001
From: Markus Frank <markus.frank@cern.ch>
Date: Thu, 17 Oct 2013 15:00:46 +0000
Subject: [PATCH] Secure access to DDSegmentation object in case it is not
 present.

---
 DDCore/src/Segementations.cpp | 17 +++++++++++------
 1 file changed, 11 insertions(+), 6 deletions(-)

diff --git a/DDCore/src/Segementations.cpp b/DDCore/src/Segementations.cpp
index 317efd6b0..a055c3cd9 100644
--- a/DDCore/src/Segementations.cpp
+++ b/DDCore/src/Segementations.cpp
@@ -55,15 +55,20 @@ const string Segmentation::type() const   {
 
 /// Assign segmentation object
 void Segmentation::setSegmentation(DD4hep::DDSegmentation::Segmentation* segmentation) {
-	Object& o = object<Object>();
-	if (o.segmentation != 0) {
-		delete o.segmentation;
-	}
-	o.segmentation = segmentation;
+  Object& o = object<Object>();
+  if (o.segmentation != 0) {
+    delete o.segmentation;
+  }
+  o.segmentation = segmentation;
 }
+
 /// Access segmentation object
 DD4hep::DDSegmentation::Segmentation* Segmentation::segmentation() {
-	return object<Object>().segmentation;
+  Object& o = object<Object>();
+  if (o.segmentation != 0)
+    return o.segmentation;
+  throw runtime_error("DD4hep: The segmentation object "+string(type())+
+		      " knows no implementation object [This is no longer allowed in the presence of DDSegmentation]");
 }
 
 /// Add an extension object to the detector element
-- 
GitLab