diff --git a/DDG4/python/DDG4.py b/DDG4/python/DDG4.py index f53f47e86a6c584a65b8dbebd39ec43e0f73a17d..38bb05a66fb3efc7a340dc30f46713a2b1a6ffd3 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 0f33699d54efb6d4007bbd4f285fabfa4ec9dbf3..93954a77e7683bb5fcfc3005766bd68477fb473b 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 642911150b0725062ee23571ff990c2a4d6de8ea..d1817250e15bd18362407d4a2700c705c0ac0991 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 4719cd6c22619b253f911d1ecf0291052325e33f..ea5b2669185d911d5663aee9af7d707fe685ced4 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 5d5140f837e2c17814b3bcfcc8b5961f335f298d..922b5724bbd6c218b3eb919ab00c1e70a9f65f15 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)