Skip to content
Snippets Groups Projects
Commit 57c02951 authored by jhenders's avatar jhenders Committed by Graeme Stewart
Browse files

add check for steering flag in EvtGen fHerwig case (previously commented out)...

add check for steering flag in EvtGen fHerwig case (previously commented out) (EvgenJobTransforms-01-02-38)

        * add check for steering flag in EvtGen fHerwig case (previously commented out)
        * tag as EvgenJobTransforms-01-02-38

2015-06-10 E. M. Lobodzinska <ewelina@mail.desy.de>
        * set MC15JobOptions as default, (no need to use oficial JOs name in private MC15 production)

2015-06-01 E. M. Lobodzinska <ewelina@mail.desy.de>
        * fix typo in skeleton.ABtoEVGEN.py
        * tag as EvgenJobTransforms-01-02-37

2015-05-26 E. M. Lobodzinska <ewelina@mail.desy.de>
        * allow for generator aliases in the JOs name
        * tag as EvgenJobTransforms-01-02-36

2015-05-12 E. M. Lobodzinska <ewelina@mail.desy.de>
        * correct the names of ProtosLHEF inputs
        * tag as EvgenJobTransforms-01-02-35

2015-04-24 E. M. Lobodzinska <ewelina@mail.desy.de>
        * remove checks for inputs in skeleton.ABtoEVGEN.py
...
(Long ChangeLog diff - truncated)
parent 02265934
No related branches found
No related tags found
No related merge requests found
......@@ -6,7 +6,7 @@
lhefGenerators = ["Lhef", # generic name: prefer to use the names below
"aMcAtNlo", "McAtNlo", "Powheg", "PowHel", "MadGraph", "CompHep", "CalcHep",
"Whizard", "MCFM", "JHU", "MEtop", "Charybdis", "Charybdis2",
"BlackMax", "QBH", "gg2ww", "gg2zz", "gg2vv", "HvyN", "VBFNLO", "FPMC"]
"BlackMax", "QBH", "gg2ww", "gg2zz", "gg2vv", "HvyN", "VBFNLO", "FPMC", "ProtosLHEF"]
## A more general list of generators which provide partonic input, including non-LHEF ones
inputGenerators = lhefGenerators + ["Alpgen", "Protos"]
......@@ -21,7 +21,7 @@ mainGenerators += ["Pythia8", "Pythia8B"]
## Sherpa family
mainGenerators += ["Sherpa"]
## Soft QCD generators
mainGenerators += ["Exhume", "Phojet", "Epos"]
mainGenerators += ["Exhume", "Phojet", "Epos", "QGSJet"]
## ATLAS-specific generators
mainGenerators += ["ParticleGenerator", "ParticleGun"]
mainGenerators += ["CosmicGenerator", "BeamHaloGenerator"]
......@@ -47,6 +47,13 @@ notesthepmcGenerators = ["ParticleDecayer", "ParticleGun", "CosmicGenerator", "B
notuneGenerators = ["ParticleGenerator", "ParticleGun", "CosmicGenerator", "BeamHaloGenerator", "HepMCAscii"]
def gen_require_steering(gennames):
"Return a boolean of whether this set of generators requires the steering command line flag"
if not "EvtGen" in gennames: return False
if any(("Pythia" in gen and not "Pythia8" in gen) for gen in gennames): return True
if any(("Herwig" in gen and not "Herwigpp" in gen) for gen in gennames): return True
return False
def gen_known(genname):
"Return whether a generator name is known"
return genname in knownGenerators
......
......@@ -109,7 +109,7 @@ class EvgenExecutor(athenaExecutor):
expand_if_archive(tarball)
if "MC14" in str(joparam):
mk_jo_proxy(os.getcwd(), "MC14JobOptions", "_joproxy14")
if "MC15" in str(joparam):
else :
mk_jo_proxy(os.getcwd(), "MC15JobOptions", "_joproxy15")
## Source setup script (requires some shenanigans to update the Python env robustly)
# TODO: trf framework now bans use of exec()...
......@@ -123,13 +123,14 @@ class EvgenExecutor(athenaExecutor):
# TODO: Make the package name configurable
if "MC14" in str(joparam):
mk_jo_proxy("/cvmfs/atlas.cern.ch/repo/sw/Generators/MC14JobOptions/latest/", "MC14JobOptions","_joproxy14")
if "MC15" in str(joparam):
# if "MC15" in str(joparam):
else :
mk_jo_proxy("/cvmfs/atlas.cern.ch/repo/sw/Generators/MC15JobOptions/latest/", "MC15JobOptions","_joproxy15")
msg.info("No evgenJobOpts tarball specified, using JOBOPTSEARCHPATH = '%s'" % os.environ["JOBOPTSEARCHPATH"])
elif os.path.exists("/afs/cern.ch/atlas/groups/Generators"):
if "MC14" in str(joparam):
mk_jo_proxy("/afs/cern.ch/atlas/groups/Generators/MC14JobOptions/latest/", "MC14JobOptions","_joproxy14")
if "MC15" in str(joparam):
else :
mk_jo_proxy("/afs/cern.ch/atlas/groups/Generators/MC15JobOptions/latest/", "MC15JobOptions","_joproxy15")
msg.info("No evgenJobOpts tarball specified, no cvmfs, using JOBOPTSEARCHPATH = '%s'" % os.environ["JOBOPTSEARCHPATH"])
......
......@@ -36,5 +36,8 @@ elif 'Sherpa' in evgenConfig.generators:
elif 'Epos' in evgenConfig.generators:
genSeq.Epos.BeamMomentum = -eBeam
genSeq.Epos.TargetMomentum = eBeam
elif 'QGSJet' in evgenConfig.generators:
genSeq.QGSJet.BeamMomentum = -eBeam
genSeq.QGSJet.TargetMomentum = eBeam
del eCM, eBeam
......@@ -24,6 +24,7 @@ genseeds = {
'Isajet' : ["ISAJET OFFSET {rnd} 1857585203 {rnd}", "ISAJET_INIT 820021 2347532"],
'Phojet' : ["PHOJET OFFSET {rnd} 174947321 {rnd}", "PHOJET_INIT 820021 2347532"],
'Epos' : ["EPOS OFFSET {rnd} {rnd} 31122001", "EPOS_INIT OFFSET {rnd} 820021 2347532"],
'QGSJet' : ["QGSJet OFFSET {rnd} {rnd} 51122005", "QGSJET_INIT OFFSET {rnd} 820021 2347532"],
'ParticleGun' : ["ParticleGun {rnd} {rnd}"],
'ParticleGenerator' : ["SINGLE LUXURY 2 OFFSET 12345 {rnd} {rnd}"],
'ParticleDecayer' : ["ParticleDecayer LUXURY 2 OFFSET 54321 {rnd} {rnd}"],
......
......@@ -406,6 +406,8 @@ elif "Alpgen" in evgenConfig.generators:
datFile = "inparmAlpGen.dat"
elif "Protos" in evgenConfig.generators:
datFile = "protos.dat"
elif "ProtosLHEF" in evgenConfig.generators:
datFile = "protoslhef.dat"
elif "AcerMC" in evgenConfig.generators:
datFile = "inparmAcerMC.dat"
elif "CompHep" in evgenConfig.generators:
......@@ -439,32 +441,32 @@ def mk_symlink(srcfile, dstfile):
evgenLog.debug("Symlinking: %s is already the same as %s" % (dstfile, srcfile))
## Find and symlink dat and event files, so they are available via the name expected by the generator
if eventsFile or datFile:
if not hasattr(runArgs, "inputGeneratorFile") or runArgs.inputGeneratorFile == "NONE":
raise RuntimeError("%s needs input file (argument inputGeneratorFile)" % runArgs.jobConfig)
if evgenConfig.inputfilecheck and not re.search(evgenConfig.inputfilecheck, runArgs.inputGeneratorFile):
raise RuntimeError("inputGeneratorFile=%s is incompatible with inputfilecheck '%s' in %s" %
(runArgs.inputGeneratorFile, evgenConfig.inputfilecheck, runArgs.jobConfig))
inputroot = os.path.basename(runArgs.inputGeneratorFile).split("._")[0]
if datFile:
realDatFile = find_unique_file('*%s*.dat' % inputroot)
mk_symlink(realDatFile, datFile)
if eventsFile:
realEventsFile = find_unique_file('*%s.*.ev*ts' % inputroot)
mk_symlink(realEventsFile, eventsFile)
else:
if hasattr(runArgs, "inputGeneratorFile") and runArgs.inputGeneratorFile != "NONE":
raise RuntimeError("inputGeneratorFile arg specified for %s, but generators %s do not require an input file" %
(runArgs.jobConfig, str(gennames)))
if evgenConfig.inputfilecheck:
raise RuntimeError("evgenConfig.inputfilecheck specified in %s, but generators %s do not require an input file" %
(runArgs.jobConfig, str(gennames)))
#if eventsFile or datFile:
# if not hasattr(runArgs, "inputGeneratorFile") or runArgs.inputGeneratorFile == "NONE":
# raise RuntimeError("%s needs input file (argument inputGeneratorFile)" % runArgs.jobConfig)
# if evgenConfig.inputfilecheck and not re.search(evgenConfig.inputfilecheck, runArgs.inputGeneratorFile):
# raise RuntimeError("inputGeneratorFile=%s is incompatible with inputfilecheck '%s' in %s" %
# (runArgs.inputGeneratorFile, evgenConfig.inputfilecheck, runArgs.jobConfig))
# inputroot = os.path.basename(runArgs.inputGeneratorFile).split("._")[0]
# if datFile:
# realDatFile = find_unique_file('*%s*.dat' % inputroot)
# mk_symlink(realDatFile, datFile)
# if eventsFile:
# realEventsFile = find_unique_file('*%s.*.ev*ts' % inputroot)
# mk_symlink(realEventsFile, eventsFile)
#else:
# if hasattr(runArgs, "inputGeneratorFile") and runArgs.inputGeneratorFile != "NONE":
# raise RuntimeError("inputGeneratorFile arg specified for %s, but generators %s do not require an input file" %
# (runArgs.jobConfig, str(gennames)))
# if evgenConfig.inputfilecheck:
# raise RuntimeError("evgenConfig.inputfilecheck specified in %s, but generators %s do not require an input file" %
# (runArgs.jobConfig, str(gennames)))
## Check conf files, as above but for a different command line arg, and with omission allowed
if hasattr(runArgs, "inputGenConfFile") and runArgs.inputGenConfFile != "NONE":
if evgenConfig.inputconfcheck and not re.search(evgenConfig.inputconfcheck, runArgs.inputGenConfFile):
raise RuntimeError("inputGenConfFile=%s is incompatible with inputconfcheck (%s) in %s" %
(runArgs.inputGenConfFile, evgenConfig.inputconfcheck, runArgs.jobConfig))
#if hasattr(runArgs, "inputGenConfFile") and runArgs.inputGenConfFile != "NONE":
# if evgenConfig.inputconfcheck and not re.search(evgenConfig.inputconfcheck, runArgs.inputGenConfFile):
# raise RuntimeError("inputGenConfFile=%s is incompatible with inputconfcheck (%s) in %s" %
# (runArgs.inputGenConfFile, evgenConfig.inputconfcheck, runArgs.jobConfig))
## Do the aux-file copying
if evgenConfig.auxfiles:
......
......@@ -95,7 +95,7 @@ evgenLog.debug("****************** CONFIGURING EVENT GENERATION ****************
## Functions for operating on generator names
## NOTE: evgenConfig, topSeq, svcMgr, theApp, etc. should NOT be explicitly re-imported in JOs
from EvgenJobTransforms.EvgenConfig import evgenConfig
from EvgenJobTransforms.EvgenConfig import gens_known, gens_lhef, gen_sortkey, gens_testhepmc, gens_notune
from EvgenJobTransforms.EvgenConfig import gens_known, gens_lhef, gen_sortkey, gens_testhepmc, gens_notune, gen_require_steering
## Fix non-standard event features
from EvgenProdTools.EvgenProdToolsConf import FixHepMC
......@@ -244,14 +244,21 @@ gennames = sorted(evgenConfig.generators, key=gen_sortkey)
## Check that the actual generators, tune, and main PDF are consistent with the JO name
if joparts[0].startswith("MC"): #< if this is an "official" JO
genpart = jo_physshortparts[0]
# genpart = genpart.replace("Py8", "Pythia8").replace("MG","MadGraph").replace("Ph","Powheg").replace("Hpp",Herwigpp").replace("Sh","Sherpa").replace("Ag","Alpgen").replace("Py","Pythia").replace("EG","EvtGen").replace("PG","ParticleGun")
expectedgenpart = ''.join(gennames)
## We want to record that HERWIG was used in metadata, but in the JO naming we just use a "Jimmy" label
expectedgenpart = expectedgenpart.replace("HerwigJimmy", "Jimmy")
def _norm(s):
# TODO: add EvtGen to this normalization for MC14?
return s.replace("Photospp", "").replace("Photos", "").replace("Tauola", "")
if genpart != expectedgenpart and _norm(genpart) != _norm(expectedgenpart):
evgenLog.error("Expected first part of JO name to be '%s' or '%s', but found '%s'" % (_norm(expectedgenpart), expectedgenpart, genpart))
def _norm2(s):
return s.replace("Py", "Pythia").replace("MG","MadGraph").replace("Ph","Powheg").replace("Hpp","Herwigpp").replace("Sh","Sherpa").replace("Ag","Alpgen").replace("EG","EvtGen").replace("PG","ParticleGun")
def _short2(s):
return s.replace("Pythia","Py").replace("MadGraph","MG").replace("Powheg","Ph").replace("Herwigpp","Hpp").replace("Sherpa","Sh").replace("Alpgen","Ag").replace("EvtGen","EG").replace("PG","ParticleGun")
if genpart != expectedgenpart and _norm(genpart) != _norm(expectedgenpart) and _norm2(genpart) != expectedgenpart:
evgenLog.error("Expected first part of JO name to be '%s' or '%s' or '%s', but found '%s'" % (_norm(expectedgenpart), expectedgenpart, _short2(expectedgenpart), genpart))
sys.exit(1)
del _norm
## Check if the tune/PDF part is needed, and if so whether it's present
......@@ -261,6 +268,13 @@ if joparts[0].startswith("MC"): #< if this is an "official" JO
" It should contain <generators>_<tune+PDF_<process>. Please rename.")
sys.exit(1)
## Check the "--steering=afterburn" command line argument has been set if EvtGen is in the JO name
# Dont't have access to steering flag so check it's effect on output files
if gen_require_steering(gennames):
if hasattr(runArgs, "outputEVNTFile") and not hasattr(runArgs, "outputEVNT_PreFile"):
raise RuntimeError("'EvtGen' found in job options name, please set '--steering=afterburn'")
## Check that the evgenConfig.minevents setting is acceptable
## minevents defines the production event sizes and must be sufficiently "round"
if evgenConfig.minevents < 1:
......@@ -414,6 +428,8 @@ elif "Alpgen" in evgenConfig.generators:
datFile = "inparmAlpGen.dat"
elif "Protos" in evgenConfig.generators:
datFile = "protos.dat"
elif "ProtosLHEF" in evgenConfig.generators:
datFile = "protoslhef.dat"
elif "AcerMC" in evgenConfig.generators:
datFile = "inparmAcerMC.dat"
elif "CompHep" in evgenConfig.generators:
......@@ -423,8 +439,10 @@ elif "CompHep" in evgenConfig.generators:
eventsFile = None
if "Alpgen" in evgenConfig.generators:
eventsFile = "alpgen.unw_events"
elif "Protos" in evgenConfig.generators: # TODO: converting to LHEF
elif "Protos" in evgenConfig.generators:
eventsFile = "protos.events"
elif "ProtosLHEF" in evgenConfig.generators:
eventsFile = "protoslhef.events"
elif "BeamHaloGenerator" in evgenConfig.generators:
eventsFile = "beamhalogen.events"
elif "HepMCAscii" in evgenConfig.generators:
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment