From 1acaa037d80e13db46b085987574947069f6ee68 Mon Sep 17 00:00:00 2001 From: Markus Frank <markus.frank@cern.ch> Date: Wed, 19 Nov 2014 21:07:28 +0000 Subject: [PATCH] New version of the DD4hep manual --- DDG4/CMakeLists.txt | 5 +++ DDG4/examples/CLICSidSimuMarkus.py | 3 +- DDG4/python/checkGeometry.py | 60 ++++++++++++++++++++++++++++++ DDG4/python/checkOverlaps.py | 44 ++++++++++++++++++++++ 4 files changed, 111 insertions(+), 1 deletion(-) create mode 100755 DDG4/python/checkGeometry.py create mode 100755 DDG4/python/checkOverlaps.py diff --git a/DDG4/CMakeLists.txt b/DDG4/CMakeLists.txt index 3fea704f9..6a979e97e 100644 --- a/DDG4/CMakeLists.txt +++ b/DDG4/CMakeLists.txt @@ -78,6 +78,11 @@ install(FILES python/SystemOfUnits.py DESTINATION python) +install(FILES + python/checkOverlaps.py + python/checkGeometry.py + DESTINATION python) + install(TARGETS DD4hepG4 DD4hepG4Plugins DD4hepG4Legacy g4gdmlDisplay dd_sim RUNTIME DESTINATION bin LIBRARY DESTINATION lib diff --git a/DDG4/examples/CLICSidSimuMarkus.py b/DDG4/examples/CLICSidSimuMarkus.py index f89ef4ee7..653a2fb67 100644 --- a/DDG4/examples/CLICSidSimuMarkus.py +++ b/DDG4/examples/CLICSidSimuMarkus.py @@ -20,7 +20,7 @@ def run(): example_dir = install_dir+'/examples/DDG4/examples'; kernel.loadGeometry("file:"+install_dir+"/DDDetectors/compact/SiD.xml") kernel.loadXML("file:"+example_dir+"/DDG4_field.xml") - DDG4.importConstants(lcdd) + DDG4.importConstants(lcdd,debug=False) simple = DDG4.Simple(kernel,tracker='Geant4TrackerCombineAction') simple.printDetectors() # Configure UI @@ -65,6 +65,7 @@ def run(): #gen.Input = "Geant4EventReaderHepMC|/home/frankm/SW/data/data.hepmc.txt" #gen.Input = "Geant4EventReaderHepMC|/home/frankm/SW/data/sherpa-2.1.1_zjets.hepmc2g" gen.Input = "LCIOFileReader|/afs/cern.ch/user/n/nikiforo/public/Markus/muons.slcio" + gen.Input = "LCIOFileReader|/afs/cern.ch/user/n/nikiforo/public/Markus/geantinos.slcio" gen.OutputLevel = generator_output_level gen.MomentumScale = 1.0 diff --git a/DDG4/python/checkGeometry.py b/DDG4/python/checkGeometry.py new file mode 100755 index 000000000..b92144a24 --- /dev/null +++ b/DDG4/python/checkGeometry.py @@ -0,0 +1,60 @@ +#!/bin/python +import sys, optparse + +parser = optparse.OptionParser() +parser.description = "TGeo Geometry checking." + +parser.add_option("-c", "--compact", dest="compact", default=None, + help="Define LCCDD style compact xml input", + metavar="<FILE>") + +parser.add_option("-f","--full", + dest="full", default=False, + help="Full geometry checking", + metavar="<boolean>") + +parser.add_option("-n", "--ntracks", + dest="num_tracks", default=1000000, + help="Number of tracks [requires 'full']", + metavar="<integer>") + +parser.add_option("-x", "--vx", + dest="vx", default=0.0, + help="X-position of track origine vertex [requires 'full']", + metavar="<double>") + +parser.add_option("-y", "--vy", + dest="vy", default=0.0, + help="Y-position of track origine vertex [requires 'full']", + metavar="<double>") + +parser.add_option("-z", "--vz", + dest="vz", default=0.0, + help="Z-position of track origine vertex [requires 'full']", + metavar="<double>") + +parser.add_option("-o", "--option", dest="option", default='ob', + help="Geometry checking option default:ob", + metavar="<string>") + +(opts, args) = parser.parse_args() + +if opts.compact is None: + print " ",parser.format_help() + sys.exit(1) + +try: + import DD4hep +except ImportError,X: + print 'DD4hep python interface not accessible:',X + +DD4hep.setPrintLevel(DD4hep.OutputLevel.ERROR) +print '+++%s\n+++ Loading compact geometry:%s\n+++%s'%(120*'=',opts.compact,120*'=') +lcdd = DD4hep.Geo.LCDD.getInstance() +lcdd.fromXML(opts.compact) +print '+++%s\n+++ Checking geometry:%s full-check:%s\n+++%s'%(120*'=',opts.compact,opts.full,120*'=') +if opts.full: + print '+++ # tracks:%d vertex:(%7.3f, %7.3f, %7.3f) [cm]'%(opts.num_tracks,opts.vx,opts.vy,opts.vz,) + lcdd.manager().CheckGeometryFull(opts.num_tracks,opts.vx,opts.vy,opts.vz,opts.option) +else: + lcdd.manager().CheckGeometry() diff --git a/DDG4/python/checkOverlaps.py b/DDG4/python/checkOverlaps.py new file mode 100755 index 000000000..e626f3c6a --- /dev/null +++ b/DDG4/python/checkOverlaps.py @@ -0,0 +1,44 @@ +#!/bin/python +import sys, optparse + +parser = optparse.OptionParser() +parser.description = "Check TGeo geometries for overlaps." +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_overlaps", default=True, + help="Print overlap information to standard output (default:True)", + metavar="<boolean>") +parser.add_option("-q", "--quiet", + action="store_false", dest="print_overlaps", + help="Do not print (disable --print)") +parser.add_option("-t", "--tolerance", dest="tolerance", default=0.1, + help="Overlap checking tolerance. Unit is in [mm]. (default:0.1 mm)", + metavar="<double number>") +parser.add_option("-o", "--option", dest="option", default='', + help="Overlap checking option ('' or 's')", + metavar="<string>") + +(opts, args) = parser.parse_args() + +if opts.compact is None: + print " ",parser.format_help() + sys.exit(1) + +try: + import DD4hep +except ImportError,X: + print 'DD4hep python interface not accessible:',X + print parser.format_help() + sys.exit(1) + +DD4hep.setPrintLevel(DD4hep.OutputLevel.ERROR) +print '+++%s\n+++ Loading compact geometry:%s\n+++%s'%(120*'=',opts.compact,120*'=') +lcdd = DD4hep.Geo.LCDD.getInstance() +lcdd.fromXML(opts.compact) +print '+++%s\n+++ Checking overlaps of geometry:%s tolerance:%f option:%s\n+++%s'%(120*'=',opts.compact,opts.tolerance,opts.option,120*'=') +lcdd.manager().CheckOverlaps(opts.tolerance,opts.option) +if opts.print_overlaps: + print '+++%s\n+++ Printing overlaps of geometry:%s\n+++%s'%(120*'=',opts.compact,120*'=') + lcdd.manager().PrintOverlaps() -- GitLab