Skip to content
Snippets Groups Projects
evgenTrfArgs.py 7.32 KiB
Newer Older
#  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
import PyJobTransforms.trfArgClasses as trfArgClasses

def addStdEvgenArgs(parser):
    parser.defineArgGroup("Evgen", "Event generator options")

    # TODO: Try to automatically determine the run number from the JO name, if not specified
    parser.add_argument('--runNumber', '--RunNumber', group='Evgen',
                        type=trfArgClasses.argFactory(trfArgClasses.argInt, runarg=True),
                         help='Manual run number setting')

    parser.add_argument("--ecmEnergy", "--EcmEnergy", group="Evgen",
                        default=trfArgClasses.argFloat(8000, runarg=True),
                        help="centre-of-mass energy parameter in GeV",
                        type=trfArgClasses.argFactory(trfArgClasses.argFloat, runarg=True))

    parser.add_argument("--firstEvent", "--FirstEvent", group="Evgen",
                        default=trfArgClasses.argInt(1, runarg=True),
                        help="the number of the first event in the output data file",
                        type=trfArgClasses.argFactory(trfArgClasses.argInt, runarg=True))

    parser.add_argument("--randomSeed", "--RandomSeed", "--seed", group="Evgen", nargs="+",
                        default=trfArgClasses.argSubstepInt("all:12345"),
                        help="a seed for the MC generator random number engines",
                        type=trfArgClasses.argFactory(trfArgClasses.argSubstepInt))

    parser.add_argument("--printEvts", group="Evgen",
                        default=trfArgClasses.argInt(5, runarg=True),
                        help="number of full event dumps to print out for debugging",
                        type=trfArgClasses.argFactory(trfArgClasses.argInt, runarg=True))

    parser.add_argument("--jobConfig", "--JobConfig", "--jo", group="Evgen", nargs="+",
                        help="a comma-separated list of job configuration script files",
                        type=trfArgClasses.argFactory(trfArgClasses.argSubstepList, runarg=True))

    # TODO: Add "--eventFile"?
    parser.add_argument("--inputGeneratorFile", "--inputGenEventFile", "--inputGenFile", "--InputGeneratorFile", group="Evgen",
                        help="optional parton-level events file to be processed",
                        type=trfArgClasses.argFactory(trfArgClasses.argString, runarg=True))

    # TODO: Add "--confFile"?
    parser.add_argument("--inputGenConfFile", "--InputGenConfFile", group="Evgen",
                        help="optional generator configuration file",
                        type=trfArgClasses.argFactory(trfArgClasses.argString, runarg=True))

    # parser.add_argument("--inputHepMCFile", group="Evgen",
    #                     help="optional fully showered HepMC input event file",
    #                     type=trfArgClasses.argFactory(trfArgClasses.argString, runarg=True))

    parser.add_argument("--inputEVNTFile", group="Evgen",
                        help="input EVNT file (for use with e.g. Rivet)",
                        type=trfArgClasses.argFactory(trfArgClasses.argEVNTFile, io='input', runarg=True))

    parser.add_argument("--inputEVNT_PreFile", group="Evgen",
                        help="input evgen file for processing with afterburner, e.g. EvtGen",
                        type=trfArgClasses.argFactory(trfArgClasses.argEVNTFile, io='input', runarg=True))

    parser.add_argument("--evgenJobOpts", "--EvgenJobOpts", group="Evgen",
                        help="download and install the EvgenJobOpts tarball with the given name",
                        type=trfArgClasses.argFactory(trfArgClasses.argString, runarg=True))

    # TODO: make optional: by default auto-determine from the JO name. If NONE, don't write?
    parser.add_argument("--outputEVNTFile", "--OutputEVNTFile", group="Evgen",
                        help="POOL file into which generated events will be written",
                        type=trfArgClasses.argFactory(trfArgClasses.argEVNTFile, io='output', runarg=True))

    parser.add_argument("--outputEVNT_PreFile", "--OutputEVNT_PreFile", group="Evgen",
                        help="POOL file into which pre-afterburner generated events will be written",
                        type=trfArgClasses.argFactory(trfArgClasses.argEVNTFile, io='output', runarg=True))

    parser.add_argument('--outputNTUP_TRUTHFile',
                        type=trfArgClasses.argFactory(trfArgClasses.argNTUPFile, io='output', treeNames=['truth']),
                        help='Output NTUP_TRUTH file', group='Evgen')

    parser.add_argument("--outputYODAFile", group="Evgen",
                        help="Name of YODA file for Rivet histo output",
                        type=trfArgClasses.argFactory(trfArgClasses.argString, runarg=True))

    parser.add_argument("--rivetAnas", group="Evgen",
                        help="a comma-separated list of Rivet analyses to run on the resulting events",
                        type=trfArgClasses.argFactory(trfArgClasses.argList, runarg=True))

    parser.add_argument("--outputTXTFile", group="Evgen",
                        help="optional output TXT file for LHEF events, default is None",
                        type=trfArgClasses.argFactory(trfArgClasses.argFile))
    parser.add_argument("--generatorRunMode", group="Evgen",
                        help="Run mode to pass on to the event generator",
                        default=trfArgClasses.argString("run", runarg=True),
                        choices=[trfArgClasses.argString("read", runarg=True),
                                 trfArgClasses.argString("build", runarg=True),
                                 trfArgClasses.argString("integrate", runarg=True),
                                 trfArgClasses.argString("mergegrids", runarg=True),
                                 trfArgClasses.argString("run", runarg=True)],
                        type=trfArgClasses.argFactory(trfArgClasses.argString, runarg=True))

    parser.add_argument("--generatorJobNumber", group="Evgen",
                        help="Job number to pass on to the event generator",
                        default=trfArgClasses.argInt(0, runarg=True),
                        type=trfArgClasses.argFactory(trfArgClasses.argInt, runarg=True))

    parser.add_argument('--lheOnly', '--lheOnly', group='Evgen',
                        default=trfArgClasses.argInt(0, runarg=True),
                        type=trfArgClasses.argFactory(trfArgClasses.argInt, runarg=True),
                        help='Set to 1 if Evgen file should be removed')

    parser.add_argument("--localPath", group="Evgen",
                        help="Name of local path to JOs",
                        type=trfArgClasses.argFactory(trfArgClasses.argString, runarg=True))
    parser.add_argument('--saveList', '--saveList', group='Evgen',
                        help="a comma-separated list of files to be saved in output or a single digit if the whole output directory is to be saved",
                        type=trfArgClasses.argFactory(trfArgClasses.argSubstepList, runarg=True))

    parser.add_argument('--cleanOut', '--cleanOut', group='Evgen',
                        default=trfArgClasses.argInt(0, runarg=True),
                        type=trfArgClasses.argFactory(trfArgClasses.argInt, runarg=True),
                        help='Set to any digit !=0 if the output files should be cleaned up --saveList may help to save selected files')