diff --git a/scripts/online_reco.py b/scripts/online_reco.py index 5cdf2d3e183a424a07040b7353951ba81f734be0..44a9e09b9308b489e77cd336d1e53e992d98fbd6 100644 --- a/scripts/online_reco.py +++ b/scripts/online_reco.py @@ -18,19 +18,45 @@ Options: """ from collections import deque +import time +import threading +import numpy as np +import matplotlib +matplotlib.use("Agg") +import matplotlib.pyplot as plt import km3pipe as kp +import km3pipe.style + +km3pipe.style.use('km3pipe') class ZenithDistribution(kp.Module): def configure(self): + self.plots_path = self.require('plots_path') self.max_events = 1000 - self.zeniths = deque(maxlen=1000) + self.thetas = deque(maxlen=1000) + self.interval = 60 + threading.Thread(target=self.plot).start() def process(self, blob): - print(blob.keys()) - print(blob['RecoTrack']) + track = blob['RecoTrack'] + theta = np.rad2deg( + kp.math.angle_between([0, 0, -1], [track.dx, track.dy, track.dz])) + self.thetas.append(theta) return blob + def plot(self): + while True: + time.sleep(self.interval) + self.create_plot() + + def create_plot(self): + fig, ax = plt.subplots(figsize=(16, 4)) + plt.histogram(self.thetas, bins=180) + filename = join(self.plots_path, 'track_reco.png') + plt.savefig(filename, dpi=120, bbox_inches="tight") + plt.close('all') + def main(): from docopt import docopt @@ -47,8 +73,7 @@ def main(): port=ligier_port, tags='IO_OLINE', timeout=60 * 60 * 24 * 7, - max_queue=2000 - ) + max_queue=2000) pipe.attach(kp.io.daq.DAQProcessor) pipe.attach(ZenithDistribution, plots_path=plots_path) pipe.drain()