From ac743a8ba5380f8f469055831ff7dff6dc72a401 Mon Sep 17 00:00:00 2001 From: Maximilian Reininghaus <maximilian.reininghaus@tu-dortmund.de> Date: Mon, 28 Sep 2020 23:45:37 +0200 Subject: [PATCH] Python code --- Tools/CMakeLists.txt | 2 +- Tools/read_hist.py | 27 +++++++++++++++++++++++++++ 2 files changed, 28 insertions(+), 1 deletion(-) create mode 100755 Tools/read_hist.py diff --git a/Tools/CMakeLists.txt b/Tools/CMakeLists.txt index c1347108d..109b6d44a 100644 --- a/Tools/CMakeLists.txt +++ b/Tools/CMakeLists.txt @@ -1,4 +1,4 @@ -set (TOOLS_FILES plot_tracks.sh plot_crossings.sh) +set (TOOLS_FILES plot_tracks.sh plot_crossings.sh read_hist.py) install ( FILES ${TOOLS_FILES} diff --git a/Tools/read_hist.py b/Tools/read_hist.py new file mode 100755 index 000000000..1d3a69490 --- /dev/null +++ b/Tools/read_hist.py @@ -0,0 +1,27 @@ +import numpy as np +import matplotlib.pyplot as plt +import boost_histogram as bh +import operator +import functools + +def read_hist(filename): + """ + read numpy file produced with CORSIKA 8's save_hist() function into + boost-histogram object. + """ + + d = np.load(filename) + axistypes = d['axistypes'].view('c') + + axes = [] + for i, at in enumerate(axistypes): + if at == b'c': + axes.append(bh.axis.Variable(d[f'binedges_{i}'], overflow=True, underflow=True)) + elif at == b'd': + axes.append(bh.axis.IntCategory(d[f'binedges_{i}'])) + + h = bh.Histogram(*axes) + h.view(flow=True)[:] = d['data'] + + return h + -- GitLab