Source code for NuRadioMC.EvtGen.readARAEventList

from __future__ import absolute_import, division, print_function
import numpy as np
import argparse
from radiotools import helper as hp
from NuRadioReco.utilities import units
from io import BytesIO
import logging
logger = logging.getLogger("readARAEventList")

VERSION = 0.1


[docs]def read_ARA_eventlist(filename): ara_version = 0 event_number = 0 with open(filename, 'r') as fin: lines = fin.readlines() data = "" for i, line in enumerate(lines): if line.startswith("VERSION"): ara_version = float(line.split("=")[1]) elif line.startswith("EVENT_NUM"): event_number = int(line.split("=")[1]) else: data += "{}".format(line) if(ara_version != 0.1): print("file version is {}. version != 0.1 not supported".format(ara_version)) import sys sys.exit(-1) data = np.genfromtxt(BytesIO(data), comments='//', skip_header=3, dtype=[('eventId', int), ('nuflavorint', int), ('nu_nubar', int), ('pnu', float), ('currentint', float), ('posnu_r', float), ('posnu_theta', float), ('posnu_phi', float), ('nnu_theta', float), ('nnu_phi', float), ('elast_y', float)]) # convert angles into NuRadioMC coordinate convention for i in range(len(data)): data[i][3] = 10**(data[i][3] + 18.) * units.eV data[i][4] = data[i][4] * units.m data[i][6] = hp.get_normalized_angle(0.5 * np.pi - data[i][6]) # convert theta angle into NuRadioMC coordinate convention data[i][8] = hp.get_normalized_angle(0.5 * np.pi - data[i][8]) # convert theta angle into NuRadioMC coordinate convention return data
[docs]def convert_to_hdf5(araeventlist_filename, hdf5_filename): import h5py data = read_ARA_eventlist(araeventlist_filename) print(data) fout = h5py.File(hdf5_filename, 'w') fout['eventlist'] = data fout.attrs['VERSION'] = VERSION print(np.array(fout['eventlist'])) fout.close()
if __name__ == "__main__": parser = argparse.ArgumentParser(description='Parse ARA event list.') parser.add_argument('filename', type=str, help='path to ARA event list') parser.add_argument('output_filename', type=str, help='name of hdf5 output filename') args = parser.parse_args() convert_to_hdf5(args.filename, args.output_filename)