Skip to content

Commit 0d0e700

Browse files
committed
Define OneProcessExporterMG7 to deal with all the MG7-related export parameters
1 parent 94794b9 commit 0d0e700

3 files changed

Lines changed: 217 additions & 173 deletions

File tree

madgraph/iolibs/export_cpp.py

Lines changed: 24 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,6 @@
3636
import madgraph.iolibs.file_writers as writers
3737
import madgraph.iolibs.template_files as template_files
3838
import madgraph.iolibs.ufo_expression_parsers as parsers
39-
from madgraph.iolibs.export_mg7 import get_subprocess_info
4039
import madgraph.various.banner as banner_mod
4140
from madgraph import MadGraph5Error, InvalidCmd, MG5DIR
4241
from madgraph.iolibs.files import cp, ln, mv
@@ -2781,12 +2780,28 @@ def __init__(self, *args, **kwargs):
27812780
def generate_subprocess_directory(
27822781
self, matrix_element, cpp_helas_call_writer, proc_number=None
27832782
):
2784-
proc_dir_name = super().generate_subprocess_directory(
2785-
matrix_element, cpp_helas_call_writer, proc_number=None
2786-
)
2787-
name = f"P{matrix_element.get('processes')[0].shell_string()}"
2788-
me_lib_path = self.me_lib_format.format(process_id = name)
2789-
self.process_info.append(get_subprocess_info(matrix_element, proc_dir_name, me_lib_path))
2783+
""" Override of super().generate_subprocess_directory """
2784+
process_exporter_mg7 = self.oneprocessclass(matrix_element,cpp_helas_call_writer)
2785+
2786+
# Create the directory PN_xx_xxxxx in the specified path
2787+
proc_dir_name = "P%d_%s" % (process_exporter_mg7.process_number,
2788+
process_exporter_mg7.process_name)
2789+
dirpath = pjoin(self.dir_path, 'SubProcesses', proc_dir_name)
2790+
2791+
try:
2792+
os.mkdir(dirpath)
2793+
except os.error as error:
2794+
logger.warning(error.strerror + " " + dirpath)
2795+
with misc.chdir(dirpath):
2796+
logger.info('Creating files in directory %s' % dirpath)
2797+
process_exporter_mg7.path = dirpath
2798+
# Create the process .h and .cc files
2799+
process_exporter_mg7.generate_process_files()
2800+
for file in self.to_link_in_P:
2801+
ln('../%s' % file)
2802+
2803+
me_lib_path = self.me_lib_format.format(process_id = process_exporter_mg7.name)
2804+
self.process_info.append(process_exporter_mg7.get_subprocess_info(proc_dir_name, me_lib_path))
27902805

27912806
def copy_template(self, model):
27922807
super().copy_template(model)
@@ -2816,10 +2831,8 @@ def finalize(self, *args, **kwargs):
28162831
))
28172832
with open(file_name, 'w') as f:
28182833
json.dump(self.process_info, f)
2819-
2820-
if self.matrix_element_path is None:
2821-
super().finalize()
2822-
2834+
# we don't call super().finalize() since it would call ProcessExporterCPP.finalize()
2835+
# which would compile the model in src/, and we don't want that
28232836

28242837
def ExportCPPFactory(cmd, group_subprocesses=False, cmd_options={}):
28252838
""" Determine which Export class is required. cmd is the command

0 commit comments

Comments
 (0)