From 1a664b6f40162600f11eda6c42fb55b4fcc10909 Mon Sep 17 00:00:00 2001
From: Johannes Schumann <johannes.schumann@fau.de>
Date: Wed, 9 Dec 2020 22:27:08 +0100
Subject: [PATCH] Remove aanet and use km3net dataformat

---
 km3buu/output.py | 44 ++++++++++++++++++++++++++------------------
 1 file changed, 26 insertions(+), 18 deletions(-)

diff --git a/km3buu/output.py b/km3buu/output.py
index 9c6835e..d8f1e8a 100644
--- a/km3buu/output.py
+++ b/km3buu/output.py
@@ -15,7 +15,7 @@ __status__ = "Development"
 import re
 import numpy as np
 from io import StringIO
-from os import listdir
+from os import listdir, environ
 from os.path import isfile, join, abspath
 from tempfile import TemporaryDirectory
 import awkward1
@@ -28,6 +28,12 @@ import mendeleev
 from .jobcard import Jobcard, read_jobcard, PDGID_LOOKUP
 from .config import read_default_media_compositions
 
+try:
+    import ROOT
+    ROOT.gSystem.Load(join(environ("KM3NET_LIB", "libKM3NeTROOT.so")))
+except:
+    pass
+
 EVENT_FILENAME = "FinalEvents.dat"
 ROOT_PERT_FILENAME = "EventOutput.Pert.[0-9]{8}.root"
 ROOT_REAL_FILENAME = "EventOutput.Real.[0-9]{8}.root"
@@ -299,7 +305,7 @@ def write_detector_file(gibuu_output,
                         livetime=3.156e7,
                         propagate_tau=True):  # pragma: no cover
     """
-    Convert the GiBUU output to a KM3NeT MC (AANET) file
+    Convert the GiBUU output to a KM3NeT MC (OfflineFormat) file
 
     Parameters
     ----------
@@ -313,15 +319,16 @@ def write_detector_file(gibuu_output,
     livetime: float
         The data livetime
     """
-    import aa, ROOT
 
-    aafile = ROOT.EventFile()
-    aafile.set_output(ofile)
+    evt = ROOT.Evt()
+    outfile = ROOT.TFile.Open(ofile, "RECREATE")
+    tree = ROOT.TTree("E", "KM3NeT Evt Tree")
+    tree.Branch("Evt", evt, 32000, 4)
     mc_trk_id = 0
 
     def add_particles(particle_data, pos_offset, rotation, start_mc_trk_id,
                       timestamp):
-        nonlocal aafile
+        nonlocal evt
         for i in range(len(particle_data.E)):
             trk = ROOT.Trk()
             trk.id = start_mc_trk_id + i
@@ -343,7 +350,7 @@ def write_detector_file(gibuu_output,
             trk.mother_id = 0
             trk.type = int(particle_data.barcode[i])
             trk.E = particle_data.E[i]
-            aafile.evt.mc_trks.push_back(trk)
+            evt.mc_trks.push_back(trk)
 
     is_cc = False
 
@@ -382,13 +389,13 @@ def write_detector_file(gibuu_output,
     w2 = gibuu_output.w2weights(can_volume, targets_per_volume, 4 * np.pi)
 
     for mc_event_id, event in enumerate(event_data):
-        aafile.evt.clear()
-        aafile.evt.id = mc_event_id
-        aafile.evt.mc_run_id = mc_event_id
+        evt.clear()
+        evt.id = mc_event_id
+        evt.mc_run_id = mc_event_id
         # Weights
-        aafile.evt.w.push_back(can_volume)  #w1 (can volume)
-        aafile.evt.w.push_back(w2[mc_event_id])  #w2
-        aafile.evt.w.push_back(-1.0)  #w3 (= w2*flux)
+        evt.w.push_back(can_volume)  #w1 (can volume)
+        evt.w.push_back(w2[mc_event_id])  #w2
+        evt.w.push_back(-1.0)  #w3 (= w2*flux)
         # Vertex Position
         r = can[2] * np.sqrt(np.random.uniform(0, 1))
         phi = np.random.uniform(0, 2 * np.pi)
@@ -433,7 +440,7 @@ def write_detector_file(gibuu_output,
             lep_out_trk.dir.set(*p_dir)
             lep_out_trk.E = event.lepOut_E
             lep_out_trk.t = timestamp
-            aafile.evt.mc_trks.push_back(lep_out_trk)
+            evt.mc_trks.push_back(lep_out_trk)
 
         # bjorken_y = 1.0 - float(event.lepOut_E / event.lepIn_E)
         nu_in_trk.setusr('bx', bjorkenx[mc_event_id])
@@ -441,7 +448,7 @@ def write_detector_file(gibuu_output,
         nu_in_trk.setusr('ichan', ichan)
         nu_in_trk.setusr("cc", is_cc)
 
-        aafile.evt.mc_trks.push_back(nu_in_trk)
+        evt.mc_trks.push_back(nu_in_trk)
 
         if tau_secondaries is not None:
             event_tau_sec = tau_secondaries[mc_event_id]
@@ -450,6 +457,7 @@ def write_detector_file(gibuu_output,
 
         add_particles(event, vtx_pos, R, mc_trk_id, timestamp)
 
-        aafile.write()
-
-    del aafile
+        tree.Fill()
+    outfile.Write()
+    outfile.Close()
+    del outfile
-- 
GitLab