m-thesis-introduction/simulations/airshower_beacon_simulation/ac_show_signal_to_noise.py

84 lines
2.3 KiB
Python
Raw Normal View History

2023-01-10 17:11:32 +01:00
#!/usr/bin/env python3
# vim: indent=fdm ts=4
"""
Show Signal to noise for the original simulation signal,
the beacon signal and the combined signal for each antenna
"""
import numpy as np
import h5py
import matplotlib.pyplot as plt
import numpy as np
from earsim import REvent
import aa_generate_beacon as beacon
import lib
if __name__ == "__main__":
from os import path
import sys
import matplotlib
import os
if os.name == 'posix' and "DISPLAY" not in os.environ:
matplotlib.use('Agg')
fname = "ZH_airshower/mysim.sry"
fig_dir = "./figures/"
show_plots = not False
####
fname_dir = path.dirname(fname)
antennas_fname = path.join(fname_dir, beacon.antennas_fname)
tx_fname = path.join(fname_dir, beacon.tx_fname)
2023-01-10 17:11:32 +01:00
# create fig_dir
if fig_dir:
os.makedirs(fig_dir, exist_ok=True)
# Read in antennas from file
f_beacon, tx, antennas = beacon.read_beacon_hdf5(antennas_fname)
_, __, txdata = beacon.read_tx_file(tx_fname)
2023-01-10 17:11:32 +01:00
# general properties
dt = antennas[0].t[1] - antennas[0].t[0] # ns
pb = lib.passband(30e-3, 80e-3) # GHz
beacon_pb = lib.passband(f_beacon-1e-3, f_beacon+1e-3) # GHz
beacon_amp = np.max(txdata['amplitudes'])# mu V/m
2023-01-10 17:11:32 +01:00
##
## Beacon vs Noise SNR
##
if True:
beacon_snrs = [ lib.signal_to_noise(beacon_amp*ant.beacon, ant.noise, samplerate=1/dt, signal_band=beacon_pb) for ant in antennas ]
2023-01-10 17:11:32 +01:00
fig, ax = plt.subplots()
ax.set_title("Maximum Beacon SNR")
ax.set_xlabel("Antenna no.")
2023-01-10 17:11:32 +01:00
ax.set_ylabel("SNR")
ax.plot([ int(ant.name) for ant in antennas], beacon_snrs, 'o', ls='none')
if fig_dir:
fig.savefig(path.join(fig_dir, path.basename(__file__) + f".beacon_snr.pdf"))
##
## Airshower signal vs Noise SNR
##
if True:
shower_snrs = [ lib.signal_to_noise(ant.E_AxB, ant.noise, samplerate=1/dt, signal_band=pb) for ant in antennas ]
2023-01-10 17:11:32 +01:00
fig, ax = plt.subplots()
ax.set_title("Total (Signal+Beacon+Noise) SNR")
ax.set_xlabel("Antenna no.")
2023-01-10 17:11:32 +01:00
ax.set_ylabel("SNR")
ax.plot([ int(ant.name) for ant in antennas], shower_snrs, 'o', ls='none')
if fig_dir:
fig.savefig(path.join(fig_dir, path.basename(__file__) + f".total_snr.pdf"))
2023-01-10 17:11:32 +01:00
if show_plots:
plt.show()