

.. _sphx_glr_auto_examples_offline_analysis_plot_evt_readout.py:


=============================
Reading and Parsing EVT files
=============================

This example shows how to read and parse EVT files, which are used in our
Monte Carlo productions.




.. image:: /auto_examples/offline_analysis/images/sphx_glr_plot_evt_readout_001.png
    :align: center


.. rst-class:: sphx-glr-script-out

 Out::

    Loading style definitions from '/Users/tamasgal/Dev/km3pipe/km3pipe/kp-data/stylelib/km3pipe.mplstyle'
    km3pipe.io.evt.EvtPump: Opening ../data/numu_cc.evt
    Detector: Parsing the DETX header
    Detector: Reading PMT information...
    Detector: Done.
    Pipeline and module initialisation took 6.842s (CPU 6.787s).
    ================================[ . ]================================
    ============================================================
    5 cycles drained in 7.718703s (CPU 7.641740s). Memory peak: 344.59 MB
      wall  mean: 0.145563s  medi: 0.140489s  min: 0.136656s  max: 0.163077s  std: 0.009944s
      CPU   mean: 0.143704s  medi: 0.140116s  min: 0.136171s  max: 0.159952s  std: 0.008680s




|


.. code-block:: python

    from __future__ import absolute_import, print_function, division

    # Author: Tamas Gal <tgal@km3net.de>, Moritz Lotze >mlotze@km3net.de>
    # License: BSD-3
    import matplotlib.pyplot as plt
    import numpy as np

    from km3modules.common import StatusBar
    from km3pipe import Module, Pipeline
    from km3pipe.dataclasses import Table
    from km3pipe.calib import Calibration
    from km3pipe.io import EvtPump
    from km3pipe.math import pld3
    import km3pipe.style

    km3pipe.style.use("km3pipe")

    filename = "../data/numu_cc.evt"
    detx = "../data/km3net_jul13_90m_r1494_corrected.detx"


    class VertexHitDistanceCalculator(Module):
        """Calculate vertex-hit-distances"""

        def configure(self):
            self.distances = []

        def process(self, blob):
            tracks = blob['TrackIns']
            muons = tracks[tracks.type == 5]
            muon = Table(muons[np.argmax(muons.energy)])
            hits = blob['CalibHits']
            dist = pld3(hits.pos, muon.pos, muon.dir)
            self.distances.append(dist)
            return blob

        def finish(self):
            dist_flat = np.concatenate(self.distances)
            plt.hist(dist_flat)
            plt.savefig('dists.pdf')


    pipe = Pipeline()
    pipe.attach(EvtPump, filename=filename, parsers=['km3'])
    pipe.attach(StatusBar, every=100)
    pipe.attach(Calibration, filename=detx)
    pipe.attach(VertexHitDistanceCalculator)
    pipe.drain(5)

**Total running time of the script:** ( 0 minutes  7.721 seconds)



.. only :: html

 .. container:: sphx-glr-footer


  .. container:: sphx-glr-download

     :download:`Download Python source code: plot_evt_readout.py <plot_evt_readout.py>`



  .. container:: sphx-glr-download

     :download:`Download Jupyter notebook: plot_evt_readout.ipynb <plot_evt_readout.ipynb>`


.. only:: html

 .. rst-class:: sphx-glr-signature

    `Gallery generated by Sphinx-Gallery <https://sphinx-gallery.readthedocs.io>`_
