Exemplo n.º 1
0
options.register("xbins", 100, VarParsing.multiplicity.singleton, VarParsing.varType.int, "number of x bins for image")
options.register("ybins", 100, VarParsing.multiplicity.singleton, VarParsing.varType.int, "number of y bis for image")
options.register("imageonly", False, VarParsing.multiplicity.singleton, VarParsing.varType.bool, "only save image (not steps) in ntup tree")
options.register("resetrandom", True, VarParsing.multiplicity.singleton, VarParsing.varType.bool, "reset random number generator state for each event")
options.register("paramNames", "", VarParsing.multiplicity.list, VarParsing.varType.string, "Geant4 parameters to modify (choices: {})".format(','.join(sorted(params))))
options.register("paramValues", "", VarParsing.multiplicity.list, VarParsing.varType.float, "values for modified Geant4 parameters")

options.parseArguments()

# choose particle
if options.particle in particles: options._pdgid = particles[options.particle]
else: raise ValueError("Unsupported particle: "+options.particle)

# check options
if options.maxEventsIn==-1: options.maxEventsIn = options.maxEvents
if options.maxenergy==0.: options.maxenergy = options.minenergy

# handle parameters
paramValueCounter = 0
options._params = []
# create parameter classes, assign values, assemble name
_pnames = []
for p in options.paramNames:
    if p not in params:
        raise ValueError("Unsupported param: "+p)
    else:
        options._params.append(getattr(pm,p)())
        options._params[-1].setValues(options.paramValues[paramValueCounter:paramValueCounter+options._params[-1].nparams])
        _pnames.append(p+','.join(str(pp) for pp in options._params[-1].params))
        paramValueCounter += options._params[-1].nparams
if paramValueCounter != len(options.paramValues):