4from GeneratorConfig.Sequences
import EvgenSequence, EvgenSequenceFactory
9from MadGraphControl.MadGraphPDFSettings
import MadGraphPDFSets, get_pdf_set
34 """Base MadGraph CA fragment. It returns a CA object
35 that contains the generator metadata and registers
36 default values for steering the MGC object
37 (to be created by the top-level config)."""
38 from MadGraphControl.MGC
import (
39 MADGRAPH_CATCH_ERRORS,
48 "pdf_setting": MADGRAPH_PDFSETTING,
49 "devices": MADGRAPH_DEVICES,
50 "catch_errors": MADGRAPH_CATCH_ERRORS,
54 "usePMGSettings":
False,
59 cfg = {**defaults, **{k: v
for k, v
in kwargs.items()
if v
is not None}}
62 ca = ComponentAccumulator(EvgenSequenceFactory(EvgenSequence.Generator))
64 GeneratorInfoSvcCfg(flags, Generators=[
"MadGraph"]),
65 sequenceName=EvgenSequence.Generator.value,
86 """Fragment for configuring a standalone (LHE-only) generation step.
88 This creates starts from MadGraphBaseCfg and creates a MGC instance
89 that is later used to call the MadGraphUtil functions that steer
92 All arguments after * are keyword-only to avoid confusion
93 between MadGraphControl settings and CA configuration options.
95 process_definition is required, the rest is optional.
98 from MadGraphControl.MGC
import MGControl
101 if isinstance(pdf_setting, MadGraphPDFSets):
102 pdf_setting = get_pdf_set(pdf_setting)
107 pdf_setting=pdf_setting,
109 catch_errors=catch_errors,
110 lhe_version=lhe_version,
111 saveProcDir=saveProcDir,
113 usePMGSettings=usePMGSettings,
116 run_card_settings = {}
if settings
is None else dict(settings)
119 run_card_settings[
"nevents"] =
_get_nevents(flags, cfg[
"safety"])
123 process=process_definition,
125 keepJpegs=cfg[
"keepJpegs"],
126 usePMGSettings=cfg[
"usePMGSettings"],
127 pdf_setting=cfg[
"pdf_setting"],
128 devices=cfg[
"devices"],
129 catch_errors=cfg[
"catch_errors"],
136 MadGraphUtils.my_MGC_instance = mgc
139 process_dir = mgc.process_dir
140 MadGraphUtils.modify_run_card(
141 process_dir=process_dir,
143 settings=run_card_settings,
144 pdf_setting=cfg[
"pdf_setting"],
148 MadGraphUtils.generate(process_dir=process_dir, flags=flags, pdf_setting=cfg[
"pdf_setting"])
149 produced_output = MadGraphUtils.arrange_output(
150 process_dir=process_dir,
152 lhe_version=cfg[
"lhe_version"],
153 saveProcDir=cfg[
"saveProcDir"],
154 pdf_setting=cfg[
"pdf_setting"],
159 requested_output = flags.Output.TXTFileName
160 if requested_output
and not os.path.exists(requested_output):
161 if os.path.lexists(requested_output):
162 os.remove(requested_output)
165 candidates.append(produced_output)
166 root, _ = os.path.splitext(requested_output)
167 candidates.extend([f
"{root}.events",
"events.events"])
168 for candidate
in candidates:
169 if candidate
and os.path.exists(candidate)
and candidate != requested_output:
170 os.symlink(os.path.abspath(candidate), requested_output)
MadGraph_LHE_Cfg(flags, process_definition, *, safety=None, settings=None, pdf_setting=None, devices=None, catch_errors=None, lhe_version=None, saveProcDir=None, plugin=None, keepJpegs=None, usePMGSettings=None)