From aa22adb5a2e109faee70dde4f311ba1a09b9b962 Mon Sep 17 00:00:00 2001
From: Johannes Schumann <johannes.schumann@fau.de>
Date: Thu, 16 Dec 2021 02:59:00 +0100
Subject: [PATCH] Add visible energy fraction to output data

---
 km3buu/output.py  | 5 +++++
 km3buu/physics.py | 2 +-
 2 files changed, 6 insertions(+), 1 deletion(-)

diff --git a/km3buu/output.py b/km3buu/output.py
index 31766f0..2e1f305 100644
--- a/km3buu/output.py
+++ b/km3buu/output.py
@@ -27,6 +27,7 @@ from scipy.optimize import curve_fit
 import mendeleev
 from datetime import datetime
 
+from .physics import visible_energy_fraction
 from .jobcard import Jobcard, read_jobcard, PDGID_LOOKUP
 from .geometry import DetectorVolume, CanVolume
 from .config import Config, read_default_media_compositions
@@ -561,10 +562,14 @@ class GiBUUOutput:
                                 zip(GIBUU_FIELDNAMES,
                                     len(GIBUU_FIELDNAMES) * [float]))))
         # Calculate additional information
+        counts = ak.num(retval.E)
         retval["xsec"] = self._event_xsec(retval)
         retval["Bx"] = GiBUUOutput.bjorken_x(retval)
         retval["By"] = GiBUUOutput.bjorken_y(retval)
         retval["Q2"] = GiBUUOutput.Qsquared(retval)
+        visEfrac = visible_energy_fraction(ak.flatten(retval.barcode),
+                                           ak.flatten(retval.E))
+        retval["visEfrac"] = ak.unflatten(visEfrac, counts)
         return retval
 
     @property
diff --git a/km3buu/physics.py b/km3buu/physics.py
index d47ac14..fd29570 100644
--- a/km3buu/physics.py
+++ b/km3buu/physics.py
@@ -98,7 +98,7 @@ HE_PARAMS = {
     "Mkref": 2.698,
 }
 
-
+@np.vectorize
 def visible_energy_fraction(pdgid, energy):
     """
     Returns the visible energy fraction in the one particle approximation (OPA)
-- 
GitLab