From 8bc612c8870964fadd3da5cdb7f21c79efc4c92e Mon Sep 17 00:00:00 2001
From: zineb aly <aly.zineb.az@gmail.com>
Date: Sun, 17 Nov 2019 16:17:24 +0100
Subject: [PATCH] worked on code consistency

---
 km3io/aanet.py                       |  37 +++--
 notebooks/AanetReader_tutorial.ipynb | 235 ++++++++++++---------------
 2 files changed, 124 insertions(+), 148 deletions(-)

diff --git a/km3io/aanet.py b/km3io/aanet.py
index ad39271..157ed6b 100644
--- a/km3io/aanet.py
+++ b/km3io/aanet.py
@@ -2,15 +2,22 @@ import uproot
 
 class AanetReader:
 
-    def __init__(self, file_path: str):
+    def __init__(self, file_path):
+        """Summary
+        
+        Parameters
+        ----------
+        file_path : path-like object
+            Description
+        """
         self.file_path = file_path
         self.data = uproot.open(self.file_path)['E']
         self.lazy_data = self.data.lazyarrays()
-        self._valid_keys = None
+        self._events_keys = None
         self._hits_keys = None
         self._tracks_keys = None
 
-    def read_event(self, key: str):
+    def read_event(self, key):
         """event_reader function reads data stored in a branch of interest in an event tree.
         
         Parameters
@@ -32,13 +39,13 @@ class AanetReader:
             Some branches in an Aanet file structure are "fake branches" and do not contain data. Therefore,
             the keys corresponding to these fake branches are not read.
         """
-        if key not in self.valid_keys:
-            raise KeyError(f"'{key}' could not be found or is a fake branch.")
+        if key not in self.events_keys:
+            raise KeyError(f"'{key}' is not a valid events key or is a fake branch.")
         evt_key_lazy = self.lazy_data[key]
         return evt_key_lazy
             
             
-    def read_hits(self, key: str):
+    def read_hits(self, key):
         """hits_reader function reads data stored in a branch of interest in hits tree from an Aanet
         event file.
         
@@ -61,13 +68,13 @@ class AanetReader:
             the hits.key stored in an Aanet file must be used to access the branch of interest
             from hits tree data.
         """
-        if key not in self.get_hits_keys:
+        if key not in self.hits_keys:
             raise KeyError(f"'{key}' is not a valid hits key.")
         hits_key_lazy = self.lazy_data[key]
         return hits_key_lazy
             
 
-    def read_tracks(self, key: str):
+    def read_tracks(self, key):
         """tracks_reader function reads data stored in a branch of interest in tracks tree
         from an Aanet event file.
         
@@ -90,13 +97,13 @@ class AanetReader:
             the trks.key stored in an Aanet file must be used to access the branch of interest
             from tracks tree data.
         """
-        if key not in self.get_tracks_keys:
+        if key not in self.tracks_keys:
             raise KeyError(f"'{key}' is not a valid tracks key.")
         tracks_key_lazy = self.lazy_data[key]
         return tracks_key_lazy
 
     @property
-    def valid_keys(self):
+    def events_keys(self):
         """_event_keys function returns a list of all the keys of interest
             for data analysis, and removes the keys of empty "fake branches" 
             found in Aanet event files. 
@@ -110,21 +117,21 @@ class AanetReader:
         list of str
             list of all the event keys.
         """
-        if self._valid_keys is None:
+        if self._events_keys is None:
             fake_branches = ['Evt', 'AAObject', 'TObject','t']
             t_baskets = ['t.fSec', 't.fNanoSec']
-            self._valid_keys = [key.decode('utf-8') for key in self.data['Evt'].keys() if key.decode('utf-8') not in fake_branches] + t_baskets
-        return self._valid_keys
+            self._events_keys = [key.decode('utf-8') for key in self.data['Evt'].keys() if key.decode('utf-8') not in fake_branches] + t_baskets
+        return self._events_keys
 
     @property
-    def get_hits_keys(self):
+    def hits_keys(self):
         if self._hits_keys is None:
             hits_tree = self.data['Evt']['hits']
             self._hits_keys = [key.decode('utf8') for key in hits_tree.keys()]
         return self._hits_keys
 
     @property
-    def get_tracks_keys(self):
+    def tracks_keys(self):
         if self._tracks_keys is None:
             tracks_tree = self.data['Evt']['trks']
             self._tracks_keys = [key.decode('utf8') for key in tracks_tree.keys()]
diff --git a/notebooks/AanetReader_tutorial.ipynb b/notebooks/AanetReader_tutorial.ipynb
index 25f1721..c8aa66a 100644
--- a/notebooks/AanetReader_tutorial.ipynb
+++ b/notebooks/AanetReader_tutorial.ipynb
@@ -28,8 +28,7 @@
    "metadata": {},
    "outputs": [],
    "source": [
-    "from km3io.DataReader import DataReader\n",
-    "import uproot"
+    "from km3io import AanetReader"
    ]
   },
   {
@@ -38,8 +37,8 @@
    "metadata": {},
    "outputs": [],
    "source": [
-    "file = 'datav6.0test.jchain.aanet.00005972.root'\n",
-    "data = uproot.open(file)['E']['Evt']['hits']"
+    "files_path = Path.cwd().parent / 'tests/samples' \n",
+    "aanet_file = files_path / 'aanet_v2.0.0.root'"
    ]
   },
   {
@@ -48,7 +47,7 @@
    "metadata": {},
    "outputs": [],
    "source": [
-    "reader = DataReader(file)"
+    "reader = AanetReader(aanet_file)"
    ]
   },
   {
@@ -59,7 +58,7 @@
     {
      "data": {
       "text/plain": [
-       "<Table [<Row 0> <Row 1> <Row 2> ... <Row 145629> <Row 145630> <Row 145631>] at 0x7f91f0271e90>"
+       "<Table [<Row 0> <Row 1> <Row 2> ... <Row 7> <Row 8> <Row 9>] at 0x7f315b3f9fd0>"
       ]
      },
      "execution_count": 5,
@@ -81,7 +80,7 @@
     {
      "data": {
       "text/plain": [
-       "<ChunkedArray [5972 5972 5972 ... 5972 5972 5972] at 0x7f91f004f410>"
+       "<ChunkedArray [5971 5971 5971 ... 5971 5971 5971] at 0x7f315b3a50d0>"
       ]
      },
      "execution_count": 6,
@@ -92,7 +91,7 @@
    "source": [
     "# reading all data from a specific branch from events data (data is \n",
     "# ordered in the same order as in Aanet event file)\n",
-    "reader.event_reader('run_id')"
+    "reader.read_event('run_id')"
    ]
   },
   {
@@ -103,7 +102,7 @@
     {
      "data": {
       "text/plain": [
-       "5972"
+       "5971"
       ]
      },
      "execution_count": 7,
@@ -113,7 +112,7 @@
    ],
    "source": [
     "# getting the run_id for a specific event (event 5 for example)\n",
-    "reader.event_reader('run_id')[5]"
+    "reader.read_event('run_id')[5]"
    ]
   },
   {
@@ -122,22 +121,20 @@
    "metadata": {},
    "outputs": [
     {
-     "ename": "NameError",
-     "evalue": "The event key must be one of the following: 'id', 'det_id', 'mc_id', 'run_id', 'mc_run_id', 'frame_index', 'trigger_mask', 'trigger_counter', 'overlays', 'hits', 'trks', 'w', 'w2list', 'w3list', 'mc_t', 'mc_hits', 'mc_trks', 'comment', 'index', 'flags', 't.fSec', 't.fNanoSec' ",
-     "output_type": "error",
-     "traceback": [
-      "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
-      "\u001b[0;31mNameError\u001b[0m                                 Traceback (most recent call last)",
-      "\u001b[0;32m<ipython-input-8-b734e6d9be61>\u001b[0m in \u001b[0;36m<module>\u001b[0;34m\u001b[0m\n\u001b[1;32m      1\u001b[0m \u001b[0;31m# the user is reminded to always specify the \"correct\" event key in the\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m      2\u001b[0m \u001b[0;31m# Aanet event file\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 3\u001b[0;31m \u001b[0mreader\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mevent_reader\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'whatever'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m",
-      "\u001b[0;32m~/km3net/km3net/km3io/km3io/DataReader.py\u001b[0m in \u001b[0;36mevent_reader\u001b[0;34m(self, key)\u001b[0m\n\u001b[1;32m     36\u001b[0m             \u001b[0;32mreturn\u001b[0m \u001b[0mevt_key_lazy\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m     37\u001b[0m         \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 38\u001b[0;31m             \u001b[0;32mraise\u001b[0m \u001b[0mNameError\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"The event key must be one of the following: 'id', 'det_id', 'mc_id', 'run_id', 'mc_run_id', 'frame_index', 'trigger_mask', 'trigger_counter', 'overlays', 'hits', 'trks', 'w', 'w2list', 'w3list', 'mc_t', 'mc_hits', 'mc_trks', 'comment', 'index', 'flags', 't.fSec', 't.fNanoSec' \"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m     39\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m     40\u001b[0m     \u001b[0;32mdef\u001b[0m \u001b[0m_event_keys\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mevt_tree\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
-      "\u001b[0;31mNameError\u001b[0m: The event key must be one of the following: 'id', 'det_id', 'mc_id', 'run_id', 'mc_run_id', 'frame_index', 'trigger_mask', 'trigger_counter', 'overlays', 'hits', 'trks', 'w', 'w2list', 'w3list', 'mc_t', 'mc_hits', 'mc_trks', 'comment', 'index', 'flags', 't.fSec', 't.fNanoSec' "
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "\"'whatever' could not be found or is a fake branch.\"\n"
      ]
     }
    ],
    "source": [
     "# the user is reminded to always specify the \"correct\" event key in the\n",
     "# Aanet event file\n",
-    "reader.event_reader('whatever')"
+    "try:\n",
+    "    reader.read_event('whatever')\n",
+    "except KeyError as e:\n",
+    "    print(e)"
    ]
   },
   {
@@ -148,7 +145,7 @@
     {
      "data": {
       "text/plain": [
-       "218"
+       "60"
       ]
      },
      "execution_count": 9,
@@ -158,7 +155,7 @@
    ],
    "source": [
     "# one can check how many hits are in event 5\n",
-    "reader.event_reader('hits')[5]"
+    "reader.read_event('hits')[5]"
    ]
   },
   {
@@ -179,91 +176,59 @@
    ],
    "source": [
     "# one can also check how many tracks are in event 5\n",
-    "reader.event_reader('trks')[5]"
+    "reader.read_event('trks')[5]"
    ]
   },
   {
-   "cell_type": "code",
-   "execution_count": 11,
+   "cell_type": "markdown",
    "metadata": {},
-   "outputs": [],
    "source": [
-    "#########################################################################\n",
-    "#\n",
-    "# Now let's explore in more details the hits:\n",
-    "#\n",
-    "#########################################################################"
+    "# Now let's explore in more details the hits:"
    ]
   },
   {
    "cell_type": "code",
-   "execution_count": 12,
+   "execution_count": 11,
    "metadata": {},
    "outputs": [
     {
      "data": {
       "text/plain": [
-       "<ChunkedArray [[806455814 806487219 806487231 ... 809524432 809526097 809544058] [806451572 806451572 806455814 ... 809544058 809544058 809544058] [806451572 806487219 806487219 ... 809526097 809526097 809544058] ... [806451572 806451572 806451572 ... 809526097 809526097 809544058] [806451572 806483369 806483369 ... 809544058 809544058 809544058] [806451572 806451572 806455814 ... 809524432 809544061 809544061]] at 0x7f91f0015850>"
+       "<ChunkedArray [[806451572 806451572 806451572 ... 809544061 809544061 809544061] [806451572 806451572 806451572 ... 809524432 809526097 809544061] [806451572 806451572 806451572 ... 809544061 809544061 809544061] ... [806451572 806455814 806465101 ... 809526097 809544058 809544061] [806455814 806455814 806455814 ... 809544061 809544061 809544061] [806455814 806455814 806455814 ... 809544058 809544058 809544061]] at 0x7f315b3a5b10>"
       ]
      },
-     "execution_count": 12,
+     "execution_count": 11,
      "metadata": {},
      "output_type": "execute_result"
     }
    ],
    "source": [
     "# reading all data from a specific branch in hits data:\n",
-    "reader.hits_reader('hits.dom_id')"
+    "reader.read_hits('hits.dom_id')"
    ]
   },
   {
    "cell_type": "code",
-   "execution_count": 13,
+   "execution_count": 12,
    "metadata": {},
    "outputs": [
     {
      "data": {
       "text/plain": [
-       "array([806451572, 806451572, 806451572, 806455814, 806455814, 806455814,\n",
-       "       806455814, 806455814, 806465101, 806465101, 806465101, 806465101,\n",
-       "       806483369, 806483369, 806483369, 806483369, 806483369, 806487219,\n",
-       "       806487219, 806487219, 806487226, 806487226, 806487226, 806487226,\n",
-       "       806487226, 806487226, 806487226, 806487226, 806487226, 806487226,\n",
-       "       806487226, 806487226, 806487231, 808435278, 808435278, 808435278,\n",
-       "       808447180, 808447180, 808447180, 808447180, 808447180, 808447180,\n",
-       "       808447180, 808447180, 808447180, 808451904, 808451904, 808451904,\n",
-       "       808472260, 808472260, 808472260, 808472260, 808472260, 808472260,\n",
-       "       808472265, 808472265, 808472265, 808472265, 808488895, 808488895,\n",
-       "       808488895, 808489014, 808489014, 808489014, 808489014, 808489014,\n",
-       "       808489014, 808489117, 808489117, 808946818, 808946818, 808946818,\n",
-       "       808946818, 808949744, 808951460, 808951460, 808956908, 808956908,\n",
-       "       808959411, 808959411, 808959411, 808959411, 808961448, 808961480,\n",
-       "       808961504, 808961504, 808961504, 808961504, 808961504, 808961655,\n",
-       "       808961655, 808961655, 808964815, 808964815, 808964815, 808964815,\n",
-       "       808964815, 808964852, 808964852, 808964852, 808964883, 808964883,\n",
-       "       808969857, 808969857, 808969857, 808969857, 808969857, 808969857,\n",
-       "       808969857, 808972593, 808972593, 808972593, 808972593, 808972593,\n",
-       "       808972593, 808972593, 808972593, 808972593, 808972598, 808972598,\n",
-       "       808974758, 808974758, 808974758, 808974758, 808974811, 808974811,\n",
-       "       808974811, 808974811, 808974811, 808974811, 808974811, 808974811,\n",
-       "       808974811, 808974811, 808974972, 808974972, 808976377, 808976377,\n",
-       "       808979729, 808979729, 808979729, 808979729, 808979729, 808979729,\n",
-       "       808979729, 808979729, 808979729, 808981510, 808981523, 808981523,\n",
-       "       808981812, 808981812, 808981812, 808981864, 808982005, 808982041,\n",
-       "       808982041, 808982041, 808982041, 808982041, 808982041, 808982547,\n",
-       "       808982547, 808982547, 808982547, 808982547, 808982547, 808982547,\n",
-       "       808982547, 808984711, 808984711, 808984711, 808984711, 808984711,\n",
-       "       808984711, 808984711, 808984711, 808984711, 808984711, 808984711,\n",
-       "       808984711, 808984711, 808984711, 808984711, 808984711, 808984711,\n",
-       "       808984711, 808984711, 808984711, 808984711, 808984711, 809007627,\n",
-       "       809007627, 809007627, 809007627, 809007627, 809007627, 809007627,\n",
-       "       809007627, 809007627, 809521500, 809521500, 809521500, 809524432,\n",
-       "       809524432, 809524432, 809524432, 809524432, 809524432, 809524432,\n",
-       "       809524432, 809524432, 809524432, 809524432, 809524432, 809526097,\n",
-       "       809526097, 809544058], dtype=int32)"
+       "array([806455814, 806487219, 806487219, 806487219, 806487226, 808432835,\n",
+       "       808432835, 808432835, 808432835, 808432835, 808432835, 808432835,\n",
+       "       808451904, 808451904, 808451907, 808451907, 808469129, 808469129,\n",
+       "       808469129, 808493910, 808949744, 808949744, 808951460, 808951460,\n",
+       "       808956908, 808961655, 808964908, 808969848, 808969857, 808972593,\n",
+       "       808972593, 808972598, 808972598, 808972698, 808972698, 808974758,\n",
+       "       808974811, 808976377, 808981510, 808981523, 808981812, 808982005,\n",
+       "       808982005, 808982018, 808982077, 808982077, 808982547, 809007627,\n",
+       "       809521500, 809521500, 809521500, 809524432, 809526097, 809526097,\n",
+       "       809526097, 809526097, 809526097, 809526097, 809526097, 809544058],\n",
+       "      dtype=int32)"
       ]
      },
-     "execution_count": 13,
+     "execution_count": 12,
      "metadata": {},
      "output_type": "execute_result"
     }
@@ -271,7 +236,7 @@
    "source": [
     "# the user can access hits.dom_id data for a specific event (for example \n",
     "# event 5)\n",
-    "reader.hits_reader('hits.dom_id')[5]"
+    "reader.read_hits('hits.dom_id')[5]"
    ]
   },
   {
@@ -282,7 +247,7 @@
     {
      "data": {
       "text/plain": [
-       "218"
+       "60"
       ]
      },
      "execution_count": 14,
@@ -294,7 +259,7 @@
     "# We previsouly checked (using reader.event_reader('hits')[5]) that event\n",
     "# 5 has 218 hits, now we can see that reader.hits_reader('hits.dom_id')[5]\n",
     "# has exaclty 218 dom ids as well! \n",
-    "len(reader.hits_reader('hits.dom_id')[5])"
+    "len(reader.read_hits('hits.dom_id')[5])"
    ]
   },
   {
@@ -305,7 +270,7 @@
     {
      "data": {
       "text/plain": [
-       "806451572"
+       "806455814"
       ]
      },
      "execution_count": 15,
@@ -315,44 +280,36 @@
    ],
    "source": [
     "# one can access a dom id of the first hit \n",
-    "reader.hits_reader('hits.dom_id')[5][0]"
+    "reader.read_hits('hits.dom_id')[5][0]"
    ]
   },
   {
    "cell_type": "code",
-   "execution_count": 16,
+   "execution_count": 17,
    "metadata": {},
    "outputs": [
     {
-     "ename": "NameError",
-     "evalue": "The hits key must be one of the following: 'hits.fUniqueID', 'hits.fBits', 'hits.usr', 'hits.usr_names', 'hits.id', 'hits.dom_id', 'hits.channel_id', 'hits.tdc', 'hits.tot', 'hits.trig', 'hits.pmt_id', 'hits.t', 'hits.a', 'hits.pos.x', 'hits.pos.y', 'hits.pos.z', 'hits.dir.x', 'hits.dir.y', 'hits.dir.z', 'hits.pure_t', 'hits.pure_a', 'hits.type', 'hits.origin', 'hits.pattern_flags'",
-     "output_type": "error",
-     "traceback": [
-      "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
-      "\u001b[0;31mNameError\u001b[0m                                 Traceback (most recent call last)",
-      "\u001b[0;32m<ipython-input-16-53a843e61284>\u001b[0m in \u001b[0;36m<module>\u001b[0;34m\u001b[0m\n\u001b[1;32m      1\u001b[0m \u001b[0;31m# once again, the user is reminded to always use the hits keys stored i Aanet event\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m      2\u001b[0m \u001b[0;31m# file\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 3\u001b[0;31m \u001b[0mreader\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mhits_reader\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'whatever'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m",
-      "\u001b[0;32m~/km3net/km3net/km3io/km3io/DataReader.py\u001b[0m in \u001b[0;36mhits_reader\u001b[0;34m(self, hits_key)\u001b[0m\n\u001b[1;32m     87\u001b[0m             \u001b[0;32mreturn\u001b[0m \u001b[0mhits_key_lazy\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m     88\u001b[0m         \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 89\u001b[0;31m             \u001b[0;32mraise\u001b[0m \u001b[0mNameError\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"The hits key must be one of the following: 'hits.fUniqueID', 'hits.fBits', 'hits.usr', 'hits.usr_names', 'hits.id', 'hits.dom_id', 'hits.channel_id', 'hits.tdc', 'hits.tot', 'hits.trig', 'hits.pmt_id', 'hits.t', 'hits.a', 'hits.pos.x', 'hits.pos.y', 'hits.pos.z', 'hits.dir.x', 'hits.dir.y', 'hits.dir.z', 'hits.pure_t', 'hits.pure_a', 'hits.type', 'hits.origin', 'hits.pattern_flags'\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m     90\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m     91\u001b[0m     \u001b[0;32mdef\u001b[0m \u001b[0mtracks_reader\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mtracks_key\u001b[0m \u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
-      "\u001b[0;31mNameError\u001b[0m: The hits key must be one of the following: 'hits.fUniqueID', 'hits.fBits', 'hits.usr', 'hits.usr_names', 'hits.id', 'hits.dom_id', 'hits.channel_id', 'hits.tdc', 'hits.tot', 'hits.trig', 'hits.pmt_id', 'hits.t', 'hits.a', 'hits.pos.x', 'hits.pos.y', 'hits.pos.z', 'hits.dir.x', 'hits.dir.y', 'hits.dir.z', 'hits.pure_t', 'hits.pure_a', 'hits.type', 'hits.origin', 'hits.pattern_flags'"
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "\"'whatever' is not a valid hits key.\"\n"
      ]
     }
    ],
    "source": [
     "# once again, the user is reminded to always use the hits keys stored i Aanet event\n",
     "# file\n",
-    "reader.hits_reader('whatever')"
+    "try:\n",
+    "    reader.read_hits('whatever')\n",
+    "except KeyError as e:\n",
+    "    print(e)"
    ]
   },
   {
-   "cell_type": "code",
-   "execution_count": 17,
+   "cell_type": "markdown",
    "metadata": {},
-   "outputs": [],
    "source": [
-    "#########################################################################\n",
-    "#\n",
-    "# Now let's explore in more details the tracks:\n",
-    "#\n",
-    "#########################################################################"
+    "# Now let's explore in more details the tracks:"
    ]
   },
   {
@@ -363,7 +320,7 @@
     {
      "data": {
       "text/plain": [
-       "<ChunkedArray [[-0.9048163793905828 -0.9048163793905828 -0.9048163793905828 ... -0.88545604390297 -0.9350162572437829 -0.7485107718446855] [-0.9254262257092779 -0.9254262257092779 -0.9254262257092779 ... -0.6631226836266504 -0.88545604390297 -0.8229838871876581] [-0.5887857820134094 -0.5887857820134094 -0.5887857820134094 ... -0.4647231989130516 -0.88545604390297 -0.88545604390297] ... [-0.6827714023340542 -0.6827714023340542 -0.6827714023340542 ... -0.9350162572437829 -0.4647231989130516 -0.8229838871876581] [-0.9414587076782783 -0.9414587076782783 -0.9414587076782783 ... -0.9709418276783801 -0.8229838871876581 -0.8229838871876581] [-0.8738359256162922 -0.8738359256162922 -0.8738359256162922 ... -0.8229838871876581 -0.7485107718446855 -0.6631226836266504]] at 0x7f9192b52d50>"
+       "<ChunkedArray [[-0.872885221293917 -0.872885221293917 -0.872885221293917 ... -0.6631226836266504 -0.5680647731737454 -0.5680647731737454] [-0.8351996698137462 -0.8351996698137462 -0.8351996698137462 ... -0.7485107718446855 -0.8229838871876581 -0.239315690284641] [-0.989148723802379 -0.989148723802379 -0.989148723802379 ... -0.9350162572437829 -0.88545604390297 -0.88545604390297] ... [-0.5704611045902105 -0.5704611045902105 -0.5704611045902105 ... -0.9350162572437829 -0.4647231989130516 -0.4647231989130516] [-0.9779941383490359 -0.9779941383490359 -0.9779941383490359 ... -0.88545604390297 -0.88545604390297 -0.8229838871876581] [-0.7396916780974963 -0.7396916780974963 -0.7396916780974963 ... -0.6631226836266504 -0.7485107718446855 -0.7485107718446855]] at 0x7f315b3b0f10>"
       ]
      },
      "execution_count": 18,
@@ -373,32 +330,32 @@
    ],
    "source": [
     "# reading all data from a specific branch in tracks data:\n",
-    "reader.tracks_reader('trks.dir.z')"
+    "reader.read_tracks('trks.dir.z')"
    ]
   },
   {
    "cell_type": "code",
-   "execution_count": 20,
+   "execution_count": 19,
    "metadata": {},
    "outputs": [
     {
      "data": {
       "text/plain": [
-       "array([-0.95646862, -0.95646862, -0.95646862, -0.95676578, -0.95695685,\n",
-       "       -0.95637026, -0.95768896, -0.95888618, -0.95691334, -0.95327743,\n",
-       "       -0.95563316, -0.95785959, -0.95019627, -0.9588535 , -0.95330259,\n",
-       "       -0.95474777, -0.95125599, -0.9489768 , -0.87580863, -0.92460301,\n",
-       "       -0.93501626, -0.97094183, -0.93501626, -0.93501626, -0.93501626,\n",
-       "       -0.88545604, -0.97094183, -0.88545604, -0.93501626, -0.88545604,\n",
-       "       -0.93501626, -0.97094183, -0.88545604, -0.88545604, -0.88545604,\n",
-       "       -0.88545604, -0.82298389, -0.88545604, -0.82298389, -0.88545604,\n",
-       "       -0.82298389, -0.93501626, -0.74851077, -0.93501626, -0.82298389,\n",
-       "       -0.82298389, -0.82298389, -0.56806477, -0.66312268, -0.93501626,\n",
-       "       -0.93501626, -0.74851077, -0.56806477, -0.56806477, -0.88545604,\n",
+       "array([-0.60246049, -0.60246049, -0.60246049, -0.51420541, -0.5475772 ,\n",
+       "       -0.5772408 , -0.56068238, -0.64907684, -0.67781799, -0.66565114,\n",
+       "       -0.63014839, -0.64566464, -0.62691012, -0.58465493, -0.59287533,\n",
+       "       -0.63655091, -0.63771247, -0.73446841, -0.7456636 , -0.70941246,\n",
+       "       -0.66312268, -0.66312268, -0.56806477, -0.56806477, -0.66312268,\n",
+       "       -0.66312268, -0.74851077, -0.74851077, -0.66312268, -0.74851077,\n",
+       "       -0.56806477, -0.74851077, -0.66312268, -0.74851077, -0.56806477,\n",
+       "       -0.66312268, -0.56806477, -0.66312268, -0.56806477, -0.56806477,\n",
+       "       -0.66312268, -0.74851077, -0.66312268, -0.93501626, -0.56806477,\n",
+       "       -0.74851077, -0.66312268, -0.56806477, -0.82298389, -0.74851077,\n",
+       "       -0.66312268, -0.56806477, -0.82298389, -0.56806477, -0.66312268,\n",
        "       -0.97094183])"
       ]
      },
-     "execution_count": 20,
+     "execution_count": 19,
      "metadata": {},
      "output_type": "execute_result"
     }
@@ -406,7 +363,7 @@
    "source": [
     "# the user can access trks.dir.z data for a specific event (for example \n",
     "# event 5)\n",
-    "reader.tracks_reader('trks.dir.z')[5]"
+    "reader.read_tracks('trks.dir.z')[5]"
    ]
   },
   {
@@ -429,60 +386,72 @@
     "# We previsouly checked (using reader.event_reader('trks')[5]) that event\n",
     "# 5 has 56 tracks, now we can see that reader.hits_reader('hits.dom_id')[5]\n",
     "# has exaclty 56 values of trks.dir.z as well! \n",
-    "len(reader.tracks_reader('trks.dir.z')[5])"
+    "len(reader.read_tracks('trks.dir.z')[5])"
    ]
   },
   {
    "cell_type": "code",
-   "execution_count": 23,
+   "execution_count": 21,
    "metadata": {},
    "outputs": [
     {
      "data": {
       "text/plain": [
-       "-0.9564686180086494"
+       "-0.6024604933159441"
       ]
      },
-     "execution_count": 23,
+     "execution_count": 21,
      "metadata": {},
      "output_type": "execute_result"
     }
    ],
    "source": [
     "# one can access the first trks.dir.z from event 5 using \n",
-    "reader.tracks_reader('trks.dir.z')[5][0]"
+    "reader.read_tracks('trks.dir.z')[5][0]"
    ]
   },
   {
    "cell_type": "code",
-   "execution_count": 24,
+   "execution_count": 23,
    "metadata": {},
    "outputs": [
     {
-     "ename": "NameError",
-     "evalue": "The tracks key must be one the following: 'trks.fUniqueID', 'trks.fBits', 'trks.usr', 'trks.usr_names', 'trks.id', 'trks.pos.x', 'trks.pos.y', 'trks.pos.z', 'trks.dir.x', 'trks.dir.y', 'trks.dir.z', 'trks.t', 'trks.E', 'trks.len', 'trks.lik', 'trks.type', 'trks.rec_type', 'trks.rec_stages', 'trks.fitinf', 'trks.hit_ids', 'trks.error_matrix', 'trks.comment'",
-     "output_type": "error",
-     "traceback": [
-      "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
-      "\u001b[0;31mNameError\u001b[0m                                 Traceback (most recent call last)",
-      "\u001b[0;32m<ipython-input-24-ba9dff8e27cb>\u001b[0m in \u001b[0;36m<module>\u001b[0;34m\u001b[0m\n\u001b[1;32m      1\u001b[0m \u001b[0;31m# once again, the user is reminded to always use the tracks keys stored in Aanet\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m      2\u001b[0m \u001b[0;31m# event file\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 3\u001b[0;31m \u001b[0mreader\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mtracks_reader\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'whatever'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m",
-      "\u001b[0;32m~/km3net/km3net/km3io/km3io/DataReader.py\u001b[0m in \u001b[0;36mtracks_reader\u001b[0;34m(self, tracks_key)\u001b[0m\n\u001b[1;32m    118\u001b[0m             \u001b[0;32mreturn\u001b[0m \u001b[0mtracks_key_lazy\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m    119\u001b[0m         \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 120\u001b[0;31m             \u001b[0;32mraise\u001b[0m \u001b[0mNameError\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"The tracks key must be one the following: 'trks.fUniqueID', 'trks.fBits', 'trks.usr', 'trks.usr_names', 'trks.id', 'trks.pos.x', 'trks.pos.y', 'trks.pos.z', 'trks.dir.x', 'trks.dir.y', 'trks.dir.z', 'trks.t', 'trks.E', 'trks.len', 'trks.lik', 'trks.type', 'trks.rec_type', 'trks.rec_stages', 'trks.fitinf', 'trks.hit_ids', 'trks.error_matrix', 'trks.comment'\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m    121\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m    122\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n",
-      "\u001b[0;31mNameError\u001b[0m: The tracks key must be one the following: 'trks.fUniqueID', 'trks.fBits', 'trks.usr', 'trks.usr_names', 'trks.id', 'trks.pos.x', 'trks.pos.y', 'trks.pos.z', 'trks.dir.x', 'trks.dir.y', 'trks.dir.z', 'trks.t', 'trks.E', 'trks.len', 'trks.lik', 'trks.type', 'trks.rec_type', 'trks.rec_stages', 'trks.fitinf', 'trks.hit_ids', 'trks.error_matrix', 'trks.comment'"
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "\"'whatever' is not a valid tracks key.\"\n"
      ]
     }
    ],
    "source": [
     "# once again, the user is reminded to always use the tracks keys stored in Aanet\n",
     "# event file\n",
-    "reader.tracks_reader('whatever')"
+    "try:\n",
+    "    reader.read_tracks('whatever')\n",
+    "except KeyError as e:\n",
+    "    print(e)"
    ]
   },
   {
    "cell_type": "code",
-   "execution_count": null,
+   "execution_count": 24,
    "metadata": {},
-   "outputs": [],
-   "source": []
+   "outputs": [
+    {
+     "ename": "TypeError",
+     "evalue": "can only concatenate str (not \"int\") to str",
+     "output_type": "error",
+     "traceback": [
+      "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
+      "\u001b[0;31mTypeError\u001b[0m                                 Traceback (most recent call last)",
+      "\u001b[0;32m<ipython-input-24-713f816108bc>\u001b[0m in \u001b[0;36m<module>\u001b[0;34m\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0;34m'test'\u001b[0m \u001b[0;34m+\u001b[0m \u001b[0;36m1\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m",
+      "\u001b[0;31mTypeError\u001b[0m: can only concatenate str (not \"int\") to str"
+     ]
+    }
+   ],
+   "source": [
+    "'test' + 1\n"
+   ]
   }
  ],
  "metadata": {
-- 
GitLab