diff --git a/DDG4/python/bin/g4GeometryScan.py b/DDG4/python/bin/g4GeometryScan.py
new file mode 100644
index 0000000000000000000000000000000000000000..8bf6241a95863a40c8682bc2d296b8b2f2a1e03c
--- /dev/null
+++ b/DDG4/python/bin/g4GeometryScan.py
@@ -0,0 +1,117 @@
+#!/usr/bin/env python
+# ==========================================================================
+# AIDA Detector description implementation
+# --------------------------------------------------------------------------
+# Copyright (C) Organisation europeenne pour la Recherche nucleaire (CERN)
+# All rights reserved.
+#
+# For the licensing terms see $DD4hepINSTALL/LICENSE.
+# For the list of contributors see $DD4hepINSTALL/doc/CREDITS.
+#
+# ==========================================================================
+
+from __future__ import absolute_import, unicode_literals
+import os
+import sys
+import errno
+import optparse
+import logging
+
+logging.basicConfig(format='%(levelname)s: %(message)s', level=logging.INFO)
+logger = logging.getLogger(__name__)
+
+
+def printOpts(opts):
+ o = eval(str(opts))
+ prefix = sys.argv[0].split(os.sep)[-1]
+ for name, value in o.items():
+ logger.info('%s > %-18s %s [%s]', prefix, name + ':', str(value), str(value.__class__))
+
+
+def materialScan(opts):
+ kernel = DDG4.Kernel()
+ kernel.loadGeometry(str(opts.compact))
+ DDG4.Core.setPrintFormat(str("%-32s %6s %s"))
+ geant4 = DDG4.Geant4(kernel)
+ # Configure UI
+ geant4.setupCshUI(ui=None)
+ for i in geant4.description.detectors():
+ o = DDG4.DetElement(i.second.ptr())
+ sd = geant4.description.sensitiveDetector(o.name())
+ if sd.isValid():
+ typ = sd.type()
+ if typ in geant4.sensitive_types:
+ geant4.setupDetector(o.name(), geant4.sensitive_types[typ])
+ else:
+ logger.error('+++ %-32s type:%-12s --> Unknown Sensitive type: %s', o.name(), typ, typ)
+ sys.exit(errno.EINVAL)
+
+ geant4.setupGun("Gun",
+ Standalone=True,
+ particle='geantino',
+ energy=20 * g4units.GeV,
+ position=opts.position,
+ direction=opts.direction,
+ multiplicity=1,
+ isotrop=False)
+ scan = DDG4.SteppingAction(kernel, 'Geant4GeometryScanner/GeometryScan')
+ kernel.steppingAction().adopt(scan)
+
+ # Now build the physics list:
+ geant4.setupPhysics('QGSP_BERT')
+
+ kernel.configure()
+ kernel.initialize()
+ kernel.NumEvents = 1
+ kernel.run()
+ kernel.terminate()
+ return 0
+
+
+parser = optparse.OptionParser()
+parser.formatter.width = 132
+parser.description = 'Scan Volumes along a trajectory using Geant4.'
+parser.add_option('-c', '--compact', dest='compact', default=None,
+ help='Define LCCDD style compact xml input',
+ metavar='<FILE>')
+parser.add_option('-P', '--print',
+ dest='print_level', default=2,
+ help='Set dd4hep print level.',
+ metavar='<int>')
+parser.add_option('-p', '--position',
+ dest='position', default='0.0,0.0,0.0',
+ help='Start position of the material scan. [give tuple "x,y,z" as string]',
+ metavar='<tuple>')
+parser.add_option('-d', '--direction',
+ dest='direction', default='0.0,1.0,0.0',
+ help='Direction of the material scan. [give tuple "x,y,z" as string]',
+ metavar='<tuple>')
+
+(opts, args) = parser.parse_args()
+
+if opts.compact is None:
+ logger.info("%s", parser.format_help())
+ sys.exit(1)
+
+opts.position = eval('(' + opts.position + ')')
+opts.direction = eval('(' + opts.direction + ')')
+printOpts(opts)
+
+try:
+ from ROOT import gROOT
+ gROOT.SetBatch(1)
+except ImportError as X:
+ logger.error('PyROOT interface not accessible: %s', X)
+ logger.info(parser.format_help())
+ sys.exit(errno.ENOENT)
+
+try:
+ import DDG4
+ import g4units
+except ImportError as X:
+ logger.error('DDG4 python interface not accessible: %s', X)
+ logger.info(parser.format_help())
+ sys.exit(errno.ENOENT)
+#
+ret = materialScan(opts)
+sys.exit(ret)
diff --git a/examples/ClientTests/scripts/GdmlDetector.py b/examples/ClientTests/scripts/GdmlDetector.py
index 751b3552187e8d985a98ceb58245d7e80e19d1d6..74c99bb8f5aef32f1342946313cfd3ea8689e061 100644
--- a/examples/ClientTests/scripts/GdmlDetector.py
+++ b/examples/ClientTests/scripts/GdmlDetector.py
@@ -3,10 +3,9 @@
from __future__ import absolute_import, unicode_literals
import os
import sys
-import time
import DDG4
from DDG4 import OutputLevel as Output
-from g4units import GeV, MeV, m
+from g4units import GeV
#
#
"""
@@ -40,10 +39,10 @@ def run():
# Configure G4 geometry setup
seq, act = geant4.addDetectorConstruction("Geant4DetectorGeometryConstruction/ConstructGeo")
- act.DebugVolumes = True
- act.DebugShapes = True
+ act.DebugVolumes = True
+ act.DebugShapes = True
act.DebugPlacements = True
- act.DumpHierarchy = True
+ act.DumpHierarchy = True
# Setup particle gun
gun = geant4.setupGun("Gun", particle='mu-', energy=20 * GeV, multiplicity=1)