ZH: separate (un)filtered traces when generating beacon

This commit is contained in:
Eric Teunis de Boone 2023-02-01 13:51:10 +01:00
parent 0641048f67
commit 61d777651b

View file

@ -92,7 +92,7 @@ def read_beacon_hdf5(fname, **h5ant_kwargs):
return f_beacon, tx, antennas return f_beacon, tx, antennas
def Antenna_from_h5ant(h5ant, traces_key='traces', raise_exception=True, read_AxB=True, read_beacon_info=True): def Antenna_from_h5ant(h5ant, traces_key='filtered_traces', raise_exception=True, read_AxB=True, read_beacon_info=True):
mydict = { k:h5ant.attrs.get(k) for k in ['x', 'y', 'z', 'name'] } mydict = { k:h5ant.attrs.get(k) for k in ['x', 'y', 'z', 'name'] }
ant = Antenna(**mydict) ant = Antenna(**mydict)
if h5ant.attrs: if h5ant.attrs:
@ -362,6 +362,8 @@ if __name__ == "__main__":
# make beacon per antenna # make beacon per antenna
for i, antenna in enumerate(ev.antennas): for i, antenna in enumerate(ev.antennas):
#TODO: allow to change the samplerate (2, 4, 8 ns)
if i%10 == 0: if i%10 == 0:
print(f"Beaconed antenna {i} out of", len(ev.antennas)) print(f"Beaconed antenna {i} out of", len(ev.antennas))
@ -394,15 +396,20 @@ if __name__ == "__main__":
# Collect all data to be saved (with the first 3 values the E fields) # Collect all data to be saved (with the first 3 values the E fields)
traces = np.array([antenna.Ex, antenna.Ey, antenna.Ez, beacon, noise_realisation]) traces = np.array([antenna.Ex, antenna.Ey, antenna.Ez, beacon, noise_realisation])
# add to relevant polarisation # add beacon and noise to relevant polarisations
# and apply block filter
dt = antenna.t[1] - antenna.t[0]
for j, amp in enumerate(beacon_amplitudes): for j, amp in enumerate(beacon_amplitudes):
traces[j] = block_filter(traces[j] + amp*beacon + noise_realisation, dt, low_bp, high_bp) traces[j] = traces[j] + amp*beacon + noise_realisation
append_antenna_hdf5( antennas_fname, antenna, traces, name='traces', prepend_time=True) append_antenna_hdf5( antennas_fname, antenna, traces, name='raw_traces', prepend_time=True)
# Save E field in E_AxB # .. and apply block_filter to every trace
dt = antenna.t[1] - antenna.t[0]
for j in range(len(traces)):
traces[j] = block_filter(traces[j], dt, low_bp, high_bp)
append_antenna_hdf5( antennas_fname, antenna, traces, name='filtered_traces', prepend_time=True)
# Save filtered E field in E_AxB
E_AxB = [np.dot(ev.uAxB,[ex,ey,ez]) for ex,ey,ez in zip(traces[0], traces[1], traces[2])] E_AxB = [np.dot(ev.uAxB,[ex,ey,ez]) for ex,ey,ez in zip(traces[0], traces[1], traces[2])]
t_AxB = antenna.t t_AxB = antenna.t