From 484b1b9c74f55d3d374b2cfa483ecd37b0f15907 Mon Sep 17 00:00:00 2001
From: Johannes Schumann <johannes.schumann@fau.de>
Date: Thu, 26 Nov 2020 01:45:55 +0100
Subject: [PATCH] Save filename in jobcard object and write jobcard to output
 folder

---
 km3buu/ctrl.py    |  2 ++
 km3buu/jobcard.py | 24 ++++++++++++++++--------
 2 files changed, 18 insertions(+), 8 deletions(-)

diff --git a/km3buu/ctrl.py b/km3buu/ctrl.py
index f4bf85e..b587306 100644
--- a/km3buu/ctrl.py
+++ b/km3buu/ctrl.py
@@ -92,6 +92,8 @@ def run_jobcard(jobcard, outdir, fluxfile=None):
         bind=[outdir, input_dir.name],
         return_result=True,
     )
+    with open(join(outdir, jobcard.filename), "w") as f:
+        f.write(str(jobcard))
     msg = output["message"]
     if isinstance(msg, str):
         log.info("GiBUU output:\n %s" % msg)
diff --git a/km3buu/jobcard.py b/km3buu/jobcard.py
index c9faadc..6465001 100644
--- a/km3buu/jobcard.py
+++ b/km3buu/jobcard.py
@@ -13,6 +13,7 @@ __email__ = "jschumann@km3net.de"
 __status__ = "Development"
 
 import f90nml
+from os.path import basename
 
 try:
     from StringIO import StringIO
@@ -21,6 +22,8 @@ except ImportError:
 
 INPUT_PATH = "/opt/buuinput2019/"
 
+DEFAULT_JOBCARD_FILENAME = "jobcard.job"
+
 PROCESS_LOOKUP = {"cc": 2, "nc": 3, "anticc": -2, "antinc": -3}
 FLAVOR_LOOKUP = {"electron": 1, "muon": 2, "tau": 3}
 PDGID_LOOKUP = {1: 12, 2: 14, 3: 16}
@@ -56,6 +59,11 @@ class Jobcard(f90nml.Namelist):
         The input path pointing to the GiBUU lookup data which should be used
     """
     def __init__(self, *args, **kwargs):
+        if "filename" in kwargs:
+            self.filename = kwargs["filename"]
+            del kwargs["filename"]
+        else:
+            self.filename = DEFAULT_JOBCARD_FILENAME
         super(Jobcard, self).__init__(*args, **kwargs)
         if "input_path" in kwargs:
             self.input_path = str(input_path)
@@ -82,17 +90,17 @@ class Jobcard(f90nml.Namelist):
 
 
 def read_jobcard(filepath):
-    return Jobcard(f90nml.read(filepath))
+    return Jobcard(f90nml.read(filepath), filename=basename(filepath))
 
 
 def generate_neutrino_jobcard_template(
-        process,
-        flavour,
-        energy,
-        target,
-        write_events=False,
-        do_decay=False,
-        input_path=INPUT_PATH):  # pragma: no cover
+    process,
+    flavour,
+    energy,
+    target,
+    write_events=False,
+    do_decay=False,
+    input_path=INPUT_PATH):  # pragma: no cover
     """
     Generate a jobcard for neutrino interaction
 
-- 
GitLab