From 8fe8dae550583a4713ea775d4dfef047d60fa111 Mon Sep 17 00:00:00 2001 From: Markus Frank <Markus.Frank@cern.ch> Date: Mon, 18 Jul 2022 18:19:40 +0200 Subject: [PATCH] Implement fast simulation shower modelling. Simplify GFlash to use the same sensitive actions as fast simulation --- DDG4/python/DDG4.py | 27 +++++++++++++++++++ examples/ClientTests/scripts/SiliconBlock.py | 18 +++---------- .../scripts/SiliconBlockFastSim.py | 20 ++++---------- .../ClientTests/scripts/SiliconBlockGFlash.py | 20 ++++---------- .../DDG4_MySensDet/scripts/MyTrackerSD_sim.py | 20 ++++---------- 5 files changed, 46 insertions(+), 59 deletions(-) diff --git a/DDG4/python/DDG4.py b/DDG4/python/DDG4.py index f53f47e86..38bb05a66 100644 --- a/DDG4/python/DDG4.py +++ b/DDG4/python/DDG4.py @@ -364,6 +364,33 @@ _props('UserInitializationSequenceHandle') _props('Geant4PhysicsListActionSequence') +class CommandLine: + """ + Helper to ease parsing the command line. + Any argument given in the command line is accessible + from the object. If no value is supplied, the returned + value is True. If the argument is not present None is returned. + + \author M.Frank + \version 1.0 + """ + def __init__(self): + import sys + self.data = {} + for i in range(len(sys.argv)): + if sys.argv[i][0] == '-': + key = sys.argv[i][1:] + val = True + if i + 1 < len(sys.argv): + val = sys.argv[i + 1] + self.data[key] = val + + def __getattr__(self, attr): + if self.data.get(attr): + return self.data.get(attr) + return None + + class Geant4: """ Helper object to perform stuff, which occurs very often. diff --git a/examples/ClientTests/scripts/SiliconBlock.py b/examples/ClientTests/scripts/SiliconBlock.py index 0f33699d5..93954a77e 100644 --- a/examples/ClientTests/scripts/SiliconBlock.py +++ b/examples/ClientTests/scripts/SiliconBlock.py @@ -30,17 +30,7 @@ from g4units import GeV, MeV, m def run(): - nevts = -1 - macro = None - batch = False - for i in range(len(sys.argv)): - if sys.argv[i] == '-batch': - batch = True - elif sys.argv[i] == '-events': - nevts = int(sys.argv[i+1]) - elif sys.argv[i] == '-macro': - macro = sys.argv[i+1] - + args = DDG4.CommandLine() kernel = DDG4.Kernel() install_dir = os.environ['DD4hepExamplesINSTALL'] kernel.loadGeometry(str("file:" + install_dir + "/examples/ClientTests/compact/SiliconBlock.xml")) @@ -49,12 +39,12 @@ def run(): geant4 = DDG4.Geant4(kernel, tracker='Geant4TrackerCombineAction') geant4.printDetectors() # Configure UI - if macro: + if args.macro: ui = geant4.setupCshUI(macro=macro) else: ui = geant4.setupCshUI() - if batch: - ui.Commands = ['/run/beamOn '+str(nevts), '/ddg4/UI/terminate'] + if args.batch: + ui.Commands = ['/run/beamOn ' + str(args.events), '/ddg4/UI/terminate'] # Configure field geant4.setupTrackingField(prt=True) diff --git a/examples/ClientTests/scripts/SiliconBlockFastSim.py b/examples/ClientTests/scripts/SiliconBlockFastSim.py index 642911150..d1817250e 100644 --- a/examples/ClientTests/scripts/SiliconBlockFastSim.py +++ b/examples/ClientTests/scripts/SiliconBlockFastSim.py @@ -35,17 +35,7 @@ from g4units import GeV, MeV, m def run(): - nevts = -1 - macro = None - batch = False - for i in range(len(sys.argv)): - if sys.argv[i] == '-batch': - batch = True - elif sys.argv[i] == '-events': - nevts = int(sys.argv[i+1]) - elif sys.argv[i] == '-macro': - macro = sys.argv[i+1] - + args = DDG4.CommandLine() kernel = DDG4.Kernel() install_dir = os.environ['DD4hepExamplesINSTALL'] kernel.loadGeometry(str("file:" + install_dir + "/examples/ClientTests/compact/SiliconBlock.xml")) @@ -54,12 +44,12 @@ def run(): geant4 = DDG4.Geant4(kernel, tracker='Geant4TrackerAction', calo='Geant4CalorimeterAction') geant4.printDetectors() # Configure UI - if macro: - ui = geant4.setupCshUI(macro=macro) + if args.macro: + ui = geant4.setupCshUI(macro=args.macro) else: ui = geant4.setupCshUI() - if batch: - ui.Commands = ['/run/beamOn '+str(nevts), '/ddg4/UI/terminate'] + if args.batch: + ui.Commands = ['/run/beamOn ' + str(args.events), '/ddg4/UI/terminate'] # Configure field geant4.setupTrackingField(prt=True) diff --git a/examples/ClientTests/scripts/SiliconBlockGFlash.py b/examples/ClientTests/scripts/SiliconBlockGFlash.py index 4719cd6c2..ea5b26691 100644 --- a/examples/ClientTests/scripts/SiliconBlockGFlash.py +++ b/examples/ClientTests/scripts/SiliconBlockGFlash.py @@ -35,17 +35,7 @@ from g4units import GeV, MeV, m def run(): - nevts = -1 - macro = None - batch = False - for i in range(len(sys.argv)): - if sys.argv[i] == '-batch': - batch = True - elif sys.argv[i] == '-events': - nevts = int(sys.argv[i+1]) - elif sys.argv[i] == '-macro': - macro = sys.argv[i+1] - + args = DDG4.CommandLine() kernel = DDG4.Kernel() install_dir = os.environ['DD4hepExamplesINSTALL'] kernel.loadGeometry(str("file:" + install_dir + "/examples/ClientTests/compact/SiliconBlock.xml")) @@ -54,12 +44,12 @@ def run(): geant4 = DDG4.Geant4(kernel, tracker='Geant4TrackerCombineAction', calo='Geant4CalorimeterAction') geant4.printDetectors() # Configure UI - if macro: - ui = geant4.setupCshUI(macro=macro) + if args.macro: + ui = geant4.setupCshUI(macro=args.macro) else: ui = geant4.setupCshUI() - if batch: - ui.Commands = ['/run/beamOn '+str(nevts), '/ddg4/UI/terminate'] + if args.batch: + ui.Commands = ['/run/beamOn ' + str(args.events), '/ddg4/UI/terminate'] # Configure field geant4.setupTrackingField(prt=True) diff --git a/examples/DDG4_MySensDet/scripts/MyTrackerSD_sim.py b/examples/DDG4_MySensDet/scripts/MyTrackerSD_sim.py index 5d5140f83..922b5724b 100644 --- a/examples/DDG4_MySensDet/scripts/MyTrackerSD_sim.py +++ b/examples/DDG4_MySensDet/scripts/MyTrackerSD_sim.py @@ -20,17 +20,7 @@ from g4units import GeV def run(): - nevts = -1 - macro = None - batch = False - for i in range(len(sys.argv)): - if sys.argv[i] == '-batch': - batch = True - elif sys.argv[i] == '-events': - nevts = int(sys.argv[i+1]) - elif sys.argv[i] == '-macro': - macro = sys.argv[i+1] - + args = DDG4.CommandLine() kernel = DDG4.Kernel() install_dir = os.environ['DD4hepExamplesINSTALL'] kernel.loadGeometry(str("file:" + install_dir + "/examples/ClientTests/compact/SiliconBlock.xml")) @@ -42,12 +32,12 @@ def run(): geant4.printDetectors() # Configure UI - if macro: - ui = geant4.setupCshUI(macro=macro) + if args.macro: + ui = geant4.setupCshUI(macro=args.macro) else: ui = geant4.setupCshUI() - if batch: - ui.Commands = ['/run/beamOn '+str(nevts), '/ddg4/UI/terminate'] + if args.batch: + ui.Commands = ['/run/beamOn ' + str(args.events), '/ddg4/UI/terminate'] # Configure field geant4.setupTrackingField(prt=True) -- GitLab