Exemplo n.º 1
0
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):
    raise ValueError("Used {} paramValues, but {} were provided".format(paramValueCounter,len(options.paramValues)))
_pnametmp = '_'.join(_pnames)

# basic name definition