00001
00002
00003 '''
00004 Configure a DetSim from the command line.
00005
00006 This does not set up kinematics. You can run it something like:
00007
00008 nuwa.py -n 10 -o output.root -m 'GenTools.Opts [opts]' -m 'DetSim.Opts [opts]'
00009
00010 Passing '--help' as an option will show what options the modules
00011 provide.
00012 '''
00013
00014 def configure(argv=[]):
00015
00016 from optparse import OptionParser
00017 parser = OptionParser(usage=__doc__)
00018 parser.add_option("-p", "--physics-list",default="all",type="string",
00019 help='Set physics list. Can be "basic", "all" or list of physics constructor classes.')
00020 parser.add_option("-s", "--site",default="all",type="string",
00021 help='Set what site geometry to load, can be "far", "dayabay", "lingao" or "all"')
00022 parser.add_option("-t", "--track-selection",default="",type="string",
00023 help='Set the track selection rules for the particle history')
00024 parser.add_option("-v", "--vertex-selection",default="",type="string",
00025 help='Set the vertex selection rules for the particle history')
00026 parser.add_option("-u", "--unobservable-statistics",default="[]",type="string",
00027 help='Set the rules for the unobservable statistics, takes a list or tripplets.')
00028 parser.add_option("-V", "--verbose",default=False,
00029 help='Turn up Geant4 verbosity. Big log files!')
00030
00031 (opts,args) = parser.parse_args(args=argv)
00032
00033 from DetSim import Configure, physics_list_basic, physics_list_nuclear
00034
00035 if opts.physics_list == "basic":
00036 opts.physics_list = physics_list_basic
00037 elif opts.physics_list == "all":
00038 opts.physics_list = physics_list_basic+physics_list_nuclear
00039
00040 elif opts.physics_list:
00041 opts.physics_list = eval(opts.physics_list)
00042 else:
00043 raise ValueError,'Unknown physics list: "%s"'%opts.physics_list
00044
00045
00046
00047
00048 opts.unobservable_statistics = eval(opts.unobservable_statistics)
00049
00050 if opts.site == 'All' or opts.site == 'all': opts.site='far,dayabay,lingao'
00051
00052 print 'Site is',opts.site
00053 detsim = Configure(site=opts.site,physlist=opts.physics_list)
00054
00055 if opts.track_selection or opts.vertex_selection:
00056 detsim.historian(opts.track_selection, opts.vertex_selection)
00057 if opts.unobservable_statistics:
00058 detsim.unobserver(opts.unobservable_statistics)
00059
00060 if opts.verbose:
00061
00062 from GaussTools.GaussToolsConf import GiGaEventActionCommand
00063 geac = GiGaEventActionCommand("GiGa.GiGaEventActionCommand")
00064 geac.BeginOfEventCommands = [
00065 "/control/verbose 2",
00066 "/run/verbose 1",
00067 "/event/verbose 2",
00068 "/tracking/verbose 2",
00069 "/geometry/navigator/verbose 2"
00070 ]
00071 detsim.giga.EventAction = geac
00072
00073 return
00074
00075
00076 if '__main__' == __name__:
00077
00078 configure()