Skip to content
Snippets Groups Projects
plot_offline_tracks.py 2.11 KiB
Newer Older
Zineb Aly's avatar
Zineb Aly committed
"""
Reading Offline tracks
======================

Tamas Gal's avatar
Tamas Gal committed
The following example shows how to access tracks data in an offline ROOT file.
Zineb Aly's avatar
Zineb Aly committed

Note: the offline files used here were intentionaly reduced to 10 events.
"""
import km3io as ki
Tamas Gal's avatar
Tamas Gal committed
from km3net_testdata import data_path
Zineb Aly's avatar
Zineb Aly committed

#####################################################
Tamas Gal's avatar
Tamas Gal committed
# We open the file using the

f = ki.OfflineReader(data_path("offline/numucc.root"))
Zineb Aly's avatar
Zineb Aly committed

Tamas Gal's avatar
Tamas Gal committed
#####################################################
# To access offline tracks/mc_tracks data:
Zineb Aly's avatar
Zineb Aly committed

Tamas Gal's avatar
Tamas Gal committed
f.tracks
f.mc_tracks
Zineb Aly's avatar
Zineb Aly committed

#####################################################
Tamas Gal's avatar
Tamas Gal committed
# Note that no data is loaded in memory at this point, so printing
# tracks will only return how many sub-branches (corresponding to
# events) were found.
Zineb Aly's avatar
Zineb Aly committed

Tamas Gal's avatar
Tamas Gal committed
print(f.tracks)
Zineb Aly's avatar
Zineb Aly committed

#####################################################
# same for mc hits

Tamas Gal's avatar
Tamas Gal committed
print(f.mc_tracks)
Zineb Aly's avatar
Zineb Aly committed

#####################################################
# Accessing the tracks/mc_tracks keys
# -----------------------------------
Tamas Gal's avatar
Tamas Gal committed
# to explore the reconstructed tracks fields:
Zineb Aly's avatar
Zineb Aly committed

Tamas Gal's avatar
Tamas Gal committed
print(f.tracks.fields)
Zineb Aly's avatar
Zineb Aly committed

#####################################################
Tamas Gal's avatar
Tamas Gal committed
# the same for MC tracks
Zineb Aly's avatar
Zineb Aly committed

Tamas Gal's avatar
Tamas Gal committed
print(f.mc_tracks.fields)
Zineb Aly's avatar
Zineb Aly committed

#####################################################
# Accessing tracks data
# ---------------------
Tamas Gal's avatar
Tamas Gal committed
# each field will return a nested `awkward.Array` and load everything into
# memory, so be careful if you are working with larger files.
Zineb Aly's avatar
Zineb Aly committed

Tamas Gal's avatar
Tamas Gal committed
print(f.tracks.E)
print(f.tracks.dir_z)
print(f.tracks.lik)
Zineb Aly's avatar
Zineb Aly committed


#####################################################
Tamas Gal's avatar
Tamas Gal committed
# To select just a single event or a subset of events, use the indices or slices.
# The following will access all tracks and their fields
# of the third event (0 is the first):
Zineb Aly's avatar
Zineb Aly committed

Tamas Gal's avatar
Tamas Gal committed
print(f[2].tracks)
print(f[2].tracks.dir_z)
Zineb Aly's avatar
Zineb Aly committed


#####################################################
Tamas Gal's avatar
Tamas Gal committed
# while here, we select the first 3 events. Notice that all fields will return
# nested arrays, as we have seem above where all events were selected.
Zineb Aly's avatar
Zineb Aly committed

Tamas Gal's avatar
Tamas Gal committed
print(f[:3])
print(f[:3].tracks)
print(f[:3].tracks.dir_z)
Zineb Aly's avatar
Zineb Aly committed

#####################################################
Tamas Gal's avatar
Tamas Gal committed
# or events from 3 and 5 (again, 0 indexing):
Tamas Gal's avatar
Tamas Gal committed
print(f[2:5])
print(f[2:5].tracks)
print(f[2:5].tracks.dir_z)