m-thesis-introduction/simulations/airshower_beacon_simulation/ab_modify_clocks.py
Eric Teunis de Boone dd9630f346 ZH: rename ant_group variables to h5ant
To better distinghuish whether this is an Antenna or a H5Group.
2022-11-22 11:14:53 +01:00

87 lines
2.2 KiB
Python
Executable file

#!/usr/bin/env python3
# vim: fdm=indent ts=4
"""
Add a uniformly sampled time offset
to the clock of each antenna.
"""
import numpy as np
import json
import h5py
import os.path as path
from copy import deepcopy as copy
import aa_generate_beacon as beacon
import lib
from lib.earsim import REvent, Antenna
clocks_fname = 'clocks.csv'
if __name__ == "__main__":
from os import path
import sys
max_clock_offset = 100# ns
remake_clock_offsets = True
seed = 12345
rng = np.random.default_rng(seed)
fname = "ZH_airshower/mysim.sry"
####
fname_dir = path.dirname(fname)
clocks_fname = path.join(fname_dir, clocks_fname)
antennas_fname = path.join(fname_dir, beacon.antennas_fname)
if path.isfile(clocks_fname) and not remake_clock_offsets:
print("Clock offsets previously generated")
sys.exit()
if not path.isfile(antennas_fname):
print("Antenna file cannot be found, did you try generating a beacon?")
sys.exit(1)
# read in antennas
with h5py.File(antennas_fname, 'a') as fp:
if 'antennas' not in fp.keys():
print("Antenna file corrupted? no antennas")
sys.exit(1)
group = fp['antennas']
N_antennas = len(group.keys())
clock_offsets = max_clock_offset * (2*rng.uniform(size=N_antennas) - 1)
# modify time values of each antenna
for i, name in enumerate(group.keys()):
h5ant = group[name]
clk_offset = clock_offsets[i]
if 'traces' not in h5ant.keys():
print(f"Antenna file corrupted? no 'traces' in {name}")
sys.exit(1)
h5ant_attrs = h5ant.attrs
if 'clock_offset' in h5ant_attrs:
tmp_offset = h5ant_attrs['clock_offset']
if remake_clock_offsets:
h5ant['traces'][0, :] -= tmp_offset
else:
clock_offsets[i] = tmp_offset
continue
h5ant_attrs['clock_offset'] = clk_offset
h5ant['traces'][0, :] += clk_offset
# save to simple csv
np.savetxt(clocks_fname, clock_offsets)
print("Antenna clocks modified in " + str(antennas_fname))