diff options
author | Stan Seibert <stan@mtrr.org> | 2011-09-26 16:52:26 -0400 |
---|---|---|
committer | Stan Seibert <stan@mtrr.org> | 2011-09-26 16:52:26 -0400 |
commit | a01bcf3748af2e473d27770d153d3bee4a81af08 (patch) | |
tree | c5b5803b35811f4d7ccaadb3f2d28081ff187c06 /bin | |
parent | 0736d51bf19aead11332e31bc1172d7de4d3d9f3 (diff) | |
download | chroma-a01bcf3748af2e473d27770d153d3bee4a81af08.tar.gz chroma-a01bcf3748af2e473d27770d153d3bee4a81af08.tar.bz2 chroma-a01bcf3748af2e473d27770d153d3bee4a81af08.zip |
Fix indentation in chroma-sim and allow detector name to have multiple dots.
Diffstat (limited to 'bin')
-rwxr-xr-x | bin/chroma-sim | 165 |
1 files changed, 82 insertions, 83 deletions
diff --git a/bin/chroma-sim b/bin/chroma-sim index fa106a2..9b4a536 100755 --- a/bin/chroma-sim +++ b/bin/chroma-sim @@ -2,86 +2,85 @@ #--*-python-*- if __name__ == '__main__': - import optparse - import sys - import imp - import os - import inspect - import numpy as np - - from chroma import event - from chroma import itertoolset - from chroma import Simulation - from chroma import root - - parser = optparse.OptionParser('%prog <detector>') - parser.add_option('-o', dest='output_filename', - help='output filename', default='out.root') - parser.add_option('-j', type='int', dest='device', - help='CUDA device number', default=None) - parser.add_option('-s', type='int', dest='seed', - help='random number generator seed') - parser.add_option('-g', type='int', dest='ngenerators', - help='number of GEANT4 processes', default=4) - parser.add_option('-n', '--nevents', type='int', dest='nevents', - default=100) - parser.add_option('-p', '--particle', dest='particle', - help='particle name', default='e-') - parser.add_option('-k', '--ke', type='float', dest='ke', - help='kinetic energy (MeV)', default=100.0) - parser.add_option('--pos', dest='pos', - help='particle vertex origin', default='0,0,0') - parser.add_option('--dir', dest='dir', - help='particle vertex direction', default='1,0,0') - parser.add_option('--save-photons-beg', action='store_true', - dest='save_photons_beg', - help='save initial photons to disk', default=False) - parser.add_option('--save-photons-end', action='store_true', - dest='save_photons_end', - help='save final photons to disk', default=False) - - options, args = parser.parse_args() - - if len(args) < 1: - sys.exit(parser.format_help()) - - name, attr = args[0].split('.') - - try: - file, path, description = imp.find_module(name) - except ImportError: - raise - - module = imp.load_module(name, file, path, description) - - detector = getattr(module, attr) - - if inspect.isfunction(detector): - detector = detector() - - pos = np.array([float(s) for s in options.pos.split(',')], dtype=float) - dir = np.array([float(s) for s in options.dir.split(',')], dtype=float) - - vertex = event.Vertex(options.particle, pos, dir, options.ke) - - sim = Simulation(detector, seed=options.seed, cuda_device=options.device, - geant4_processes=options.ngenerators) - - print 'RNG seed: %i' % sim.seed - - writer = root.RootWriter(options.output_filename) - - for i, ev in \ - enumerate(sim.simulate(itertoolset.repeatcopy(vertex, - options.nevents), - keep_photons_beg=options.save_photons_beg, - keep_photons_end=options.save_photons_end)): - print '\rEvent: %i' % (i+1), - sys.stdout.flush() - - assert ev.nphotons > 0, 'Geant4 generated event with no photons!' - - writer.write_event(ev) - print - - writer.close() + import optparse + import sys + import imp + import os + import inspect + import numpy as np + + from chroma import event + from chroma import itertoolset + from chroma import Simulation + from chroma import root + + parser = optparse.OptionParser('%prog <detector>') + parser.add_option('-o', dest='output_filename', + help='output filename', default='out.root') + parser.add_option('-j', type='int', dest='device', + help='CUDA device number', default=None) + parser.add_option('-s', type='int', dest='seed', + help='random number generator seed') + parser.add_option('-g', type='int', dest='ngenerators', + help='number of GEANT4 processes', default=4) + parser.add_option('-n', '--nevents', type='int', dest='nevents', + default=100) + parser.add_option('-p', '--particle', dest='particle', + help='particle name', default='e-') + parser.add_option('-k', '--ke', type='float', dest='ke', + help='kinetic energy (MeV)', default=100.0) + parser.add_option('--pos', dest='pos', + help='particle vertex origin', default='0,0,0') + parser.add_option('--dir', dest='dir', + help='particle vertex direction', default='1,0,0') + parser.add_option('--save-photons-beg', action='store_true', + dest='save_photons_beg', + help='save initial photons to disk', default=False) + parser.add_option('--save-photons-end', action='store_true', + dest='save_photons_end', + help='save final photons to disk', default=False) + + options, args = parser.parse_args() + + if len(args) < 1: + sys.exit(parser.format_help()) + + module_name, function_name = args[0].rsplit('.', 1) + + try: + module = __import__(module_name, fromlist=[function_name]) + except ImportError: + raise + + detector = getattr(module, function_name) + + if inspect.isfunction(detector): + detector = detector() + + pos = np.array([float(s) for s in options.pos.split(',')], dtype=float) + dir = np.array([float(s) for s in options.dir.split(',')], dtype=float) + + vertex = event.Vertex(options.particle, pos, dir, options.ke) + + sim = Simulation(detector, seed=options.seed, cuda_device=options.device, + geant4_processes=options.ngenerators) + + print 'RNG seed: %i' % sim.seed + + writer = root.RootWriter(options.output_filename) + + for i, ev in \ + enumerate(sim.simulate(itertoolset.repeatcopy(vertex, + options.nevents), + keep_photons_beg=options.save_photons_beg, + keep_photons_end=options.save_photons_end)): + print '\rEvent: %i' % (i+1), + sys.stdout.flush() + + assert ev.nphotons > 0, 'Geant4 generated event with no photons!' + + writer.write_event(ev) + print + + writer.close() + |