From 084dfd08b714faefaea77cb7dc04d2e93dc04b1d Mon Sep 17 00:00:00 2001 From: Stan Seibert Date: Fri, 16 Sep 2011 14:27:46 -0400 Subject: File reorganization to move toward standard python package layout --- bin/chroma-cam | 43 +++++++++++++++++++++++++++++ bin/chroma-sim | 87 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 130 insertions(+) create mode 100755 bin/chroma-cam create mode 100755 bin/chroma-sim (limited to 'bin') diff --git a/bin/chroma-cam b/bin/chroma-cam new file mode 100755 index 0000000..8465aaa --- /dev/null +++ b/bin/chroma-cam @@ -0,0 +1,43 @@ +#!/usr/bin/env python +#--*-python-*- + +if __name__ == '__main__': + import optparse + import sys + import imp + import os + + from chroma import view, build, EventViewer + from chroma import mesh_from_stl + + parser = optparse.OptionParser('%prog') + parser.add_option('-r', '--resolution', dest='resolution', + help='specify window resolution', default='1024,576') + parser.add_option('-i', dest='io_file', default=None) + options, args = parser.parse_args() + + if len(args) < 1: + sys.exit(parser.format_help()) + + size = [int(s) for s in options.resolution.split(',')] + + if os.path.exists(args[0]) and args[0].lower().endswith(('.stl', '.bz2')): + obj = mesh_from_stl(args[0]) + else: + name, attr = args[0].split('.') + + try: + file, path, description = imp.find_module(name) + except ImportError: + raise + + module = imp.load_module(name, file, path, description) + + obj = getattr(module, attr) + + if options.io_file is None: + view(obj, size) + else: + geometry = build(obj) + viewer = EventViewer(geometry, options.io_file, size=size) + viewer.start() diff --git a/bin/chroma-sim b/bin/chroma-sim new file mode 100755 index 0000000..fa106a2 --- /dev/null +++ b/bin/chroma-sim @@ -0,0 +1,87 @@ +#!/usr/bin/env python +#--*-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 ') + 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() -- cgit