options.register("pt", 1, VarParsing.multiplicity.singleton, VarParsing.varType.float) options.register("sim", "Geant4", VarParsing.multiplicity.singleton, VarParsing.varType.string) options.register("threads", 1, VarParsing.multiplicity.singleton, VarParsing.varType.int) options.register("streams", 0, VarParsing.multiplicity.singleton, VarParsing.varType.int) options.register("year", 2018, VarParsing.multiplicity.singleton, VarParsing.varType.int) options.register("maxEventsIn", -1, VarParsing.multiplicity.singleton, VarParsing.varType.int) options.parseArguments() # choose particle options._pdgid = 0 if options.particle == "electron": options._pdgid = 11 elif options.particle == "photon": options._pdgid = 22 else: raise ValueError("Unsupported particle: " + options.particle) # check options if options.streams == 0: options.streams = options.threads if options.sim != "Geant4" and options.sim != "GeantV": raise ValueError("Unsupported sim: " + options.sim) if options.year != 2018 and options.year != 2023: raise ValueError("Unsupported year: " + str(options.year)) if options.maxEventsIn == -1: options.maxEventsIn = options.maxEvents # basic name definition nametmp = options.particle + "_pt" + str(options.pt) + "_mult" + str( options.mult)
options.register("indir", "", VarParsing.multiplicity.singleton, VarParsing.varType.string, "input directory") options.register("xmin", 1300, VarParsing.multiplicity.singleton, VarParsing.varType.int, "minimum x coordinate for image") options.register("xmax", 1500, VarParsing.multiplicity.singleton, VarParsing.varType.int, "maximum x coordinate for image") options.register("ymin", -5, VarParsing.multiplicity.singleton, VarParsing.varType.int, "minimum y coordinate for image") options.register("ymax", 5, VarParsing.multiplicity.singleton, VarParsing.varType.int, "maximum y coordinate for image") 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.register("maxphi", defaults["maxphi"], VarParsing.multiplicity.singleton, VarParsing.varType.float) options.register("maxEventsIn", -1, VarParsing.multiplicity.singleton, VarParsing.varType.int) options.register("output", True, VarParsing.multiplicity.singleton, VarParsing.varType.bool) options.register("part", 0, VarParsing.multiplicity.singleton, VarParsing.varType.int) options.register("redir", "", VarParsing.multiplicity.singleton, VarParsing.varType.string) options.register("indir", "", VarParsing.multiplicity.singleton, VarParsing.varType.string) options.parseArguments() # choose particle options._pdgid = 0 if options.particle == "electron": options._pdgid = 11 elif options.particle == "positron": options._pdgid = -11 elif options.particle == "photon": options._pdgid = 22 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 # basic name definition nametmp = options.particle + "_energy" + str(options.minenergy) + ( "to" + str(options.maxenergy) if options.minenergy != options.maxenergy else "") + "_mult" + str(options.mult) if any([defaults[x] != getattr(options, x) for x in defaults]): nametmp = nametmp + "_eta" + str(options.mineta) + (