From fa32308c68fcae409a0c4bd592fb0a2e4252bb2e Mon Sep 17 00:00:00 2001
From: Markus Frank <Markus.Frank@cern.ch>
Date: Thu, 5 Apr 2018 23:22:59 +0200
Subject: [PATCH] Fix dd4hep units as discussed in the meeting. If I only could
 get it right...

---
 DDCore/python/dd4hep.py      |  3 ++-
 DDCore/python/dd4hep_base.py | 32 ++++++++++++++++++++++++--------
 2 files changed, 26 insertions(+), 9 deletions(-)

diff --git a/DDCore/python/dd4hep.py b/DDCore/python/dd4hep.py
index 43d853450..e8fd67cc7 100644
--- a/DDCore/python/dd4hep.py
+++ b/DDCore/python/dd4hep.py
@@ -9,4 +9,5 @@
 #
 #==========================================================================
 from dd4hep_base import *
-import_units()
+self = __import__(__name__)
+import_units(self)
diff --git a/DDCore/python/dd4hep_base.py b/DDCore/python/dd4hep_base.py
index aab3df4eb..995610fb0 100644
--- a/DDCore/python/dd4hep_base.py
+++ b/DDCore/python/dd4hep_base.py
@@ -158,17 +158,27 @@ def import_geometry():
   import_namespace_item('core','PlacedVolume')
 
   #// Shapes.h
+  import_namespace_item('core','Solid')
+  import_namespace_item('core','Box')
+  import_namespace_item('core','HalfSpace')
   import_namespace_item('core','Polycone')
   import_namespace_item('core','ConeSegment')
-  import_namespace_item('core','Box')
-  import_namespace_item('core','Torus')
-  import_namespace_item('core','Cone')
   import_namespace_item('core','Tube')
+  import_namespace_item('core','CutTube')
+  import_namespace_item('core','TruncatedTube')
+  import_namespace_item('core','EllipticalTube')
+  import_namespace_item('core','Cone')
   import_namespace_item('core','Trap')
+  import_namespace_item('core','PseudoTrap')
   import_namespace_item('core','Trapezoid')
+  import_namespace_item('core','Torus')
   import_namespace_item('core','Sphere')
   import_namespace_item('core','Paraboloid')
+  import_namespace_item('core','Hyperboloid')
   import_namespace_item('core','PolyhedraRegular')
+  import_namespace_item('core','Polyhedra')
+  import_namespace_item('core','ExtrudedPolygon')
+  import_namespace_item('core','EightPointSolid')
   import_namespace_item('core','BooleanSolid')
   import_namespace_item('core','SubtractionSolid')
   import_namespace_item('core','UnionSolid')
@@ -225,16 +235,22 @@ def import_tgeo():
 
 import_tgeo()
 import_geometry()
-
+#
+#  Import units from TGeo.
+#  Calling import_units makes all the units local to the dd4hep module.
+#
 try:
   from ROOT import TGeoUnit as TGeoUnits
-  def import_units():
-    def import_unit(nam):
-      setattr(name_space,nam,getattr(TGeoUnits,nam))
+  def import_units(ns):
+    def import_unit(ns,nam):
+      setattr(ns,nam,getattr(TGeoUnits,nam))
     items = dir(TGeoUnits)
+    if ns is None:
+      ns = name_space
+    print 'Importing TGeoUnits into namespace '+str(ns)
     for u in items:
       if u[0] != '_':
-        import_unit(u)
+        import_unit(ns, u)
     return len(items)    
 except:
   print 'WARNING: No units from TGeoUnit can be imported. This is normal for ROOT < 6.12.0'
-- 
GitLab