From 7ff999159190cd5c5183362bbfbc42a124269fc3 Mon Sep 17 00:00:00 2001 From: Rodri <rgruiz0001@gmail.com> Date: Tue, 8 Feb 2022 15:56:29 +0100 Subject: [PATCH] add script to extract dom rates --- km3io/utils/extract-dom-rates.py | 53 ++++++++++++++++++++++++++++++++ 1 file changed, 53 insertions(+) create mode 100644 km3io/utils/extract-dom-rates.py diff --git a/km3io/utils/extract-dom-rates.py b/km3io/utils/extract-dom-rates.py new file mode 100644 index 0000000..131d30d --- /dev/null +++ b/km3io/utils/extract-dom-rates.py @@ -0,0 +1,53 @@ +""" +Usage: extract-dom-rates.py -f INPUT_FILE -o OUTPUT_FILE -a DETECTOR_FILE + +Options: + -h --help Help. + -f --input_file INPUT_FILE Input file. + -o --output_file OUTPUT_FILE Output file. + -a --detector_file DETECTOR_FILE Detector file. +""" +from docopt import docopt +import km3io +import km3pipe as kp +import km3pipe.hardware +import os +import numpy as np +import h5py + +def get_doms_rates(slices, frame): + raw_rates = [km3io.online.get_rate(getattr(slices.rates[frame],f"ch{i}")) for i in range(31)] + return np.sum(raw_rates, axis=0) + +def main(): + arguments = docopt(__doc__) + + data = {} + for key in arguments: + data[key.replace('-','')] = arguments[key] + + reader = km3io.OnlineReader(data['input_file']) + summary_slices = reader.summaryslices + + detector = km3pipe.hardware.Detector(data['detector_file']) + + n_slices = len(summary_slices.slices) + + doms_rates = {} + for dom in detector.dom_ids: + doms_rates[dom] = np.zeros(n_frames) + + for i in range (n_slices): + rates = get_doms_rates(summary_slices, i) + dom_ids = summary_slices.slices[i].dom_id + for j in range(len(dom_ids)-1): + doms_rates[dom_ids[j]][i] = rates[j] + + f = h5py.File(data['output_file'], "a") + f.create_dataset("frame_indices",data=np.array(summary_slices.headers.frame_index)) + f.create_dataset("frame_times" ,data=np.array(summary_slices.headers.UTC_seconds * 1e9 + summary_slices.headers.UTC_16nanosecondcycles * 16)) + + for key, value in dictionary.items(): + f.create_dataset(str(key), data=value) + +main() -- GitLab