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 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)+("to"+str(options.maxeta) if options.mineta!=options.maxeta else "")+"_phi"+str(options.minphi)+("to"+str(options.maxphi) if options.minphi!=options.maxphi else "") _partname = "_part"+str(options.part) if options.part>0 else "" # gen name definition: does not include parameter variations options._genname = "gen_"+nametmp+"_n"+str(options.maxEventsIn)+_partname # sim name definition if len(_pnametmp)>0: nametmp += "_"+_pnametmp options._simname = "sim_"+nametmp+"_n"+str(options.maxEvents)+_partname # ntuple name definition options._ntupname = "ntup_"+nametmp+"_n"+str(options.maxEvents)+_partname def resetSeeds(process,options): # reset all random numbers to ensure statistically distinct but reproducible jobs from IOMC.RandomEngine.RandomServiceHelper import RandomNumberServiceHelper randHelper = RandomNumberServiceHelper(process.RandomNumberGeneratorService) randHelper.resetSeeds(options.maxEvents+options.part) if process.source.type_()=='EmptySource' and options.part>0: process.source.firstEvent = cms.untracked.uint32((options.part-1)*options.maxEvents+1) return process
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) # gen name definition options._genname = "gen_" + nametmp + "_n" + str(options.maxEventsIn) # sim name definition options._simname = "sim_" + options.sim + "_year" + str( options.year) + "_" + nametmp + "_n" + str( options.maxEvents) + "_th" + str(options.threads) + "_st" + str( options.streams)