ZH: periods_from_shower enable figure for multiple shifting iterations

This commit is contained in:
Eric Teunis de Boone 2022-12-23 11:17:10 +01:00
parent 275775fba3
commit 6eba992a3a

View file

@ -29,10 +29,17 @@ def find_best_sample_shifts_summing_at_location(test_loc, antennas, allowed_samp
t_min = 1e9 t_min = 1e9
t_max = -1e9 t_max = -1e9
a_maxima = [] a_maxima = []
N_ant = len(antennas)
if dt is None: if dt is None:
dt = antennas[0].t_AxB[1] - antennas[0].t_AxB[0] dt = antennas[0].t_AxB[1] - antennas[0].t_AxB[0]
if not hasattr(plot_iteration_with_shifted_trace, '__len__'):
if plot_iteration_with_shifted_trace:
plot_iteration_with_shifted_trace = [ plot_iteration_with_shifted_trace ]
else:
plot_iteration_with_shifted_trace = []
# propagate to test location # propagate to test location
for i, ant in enumerate(antennas): for i, ant in enumerate(antennas):
aloc = [ant.x, ant.y, ant.z] aloc = [ant.x, ant.y, ant.z]
@ -72,9 +79,9 @@ def find_best_sample_shifts_summing_at_location(test_loc, antennas, allowed_samp
continue continue
# init figure # init figure
if i == plot_iteration_with_shifted_trace: if i in plot_iteration_with_shifted_trace:
fig, ax = plt.subplots() fig, ax = plt.subplots()
ax.set_title("Traces at ({:.1f},{:.1f},{:.1f})".format(*test_loc)) ax.set_title("Traces at ({:.1f},{:.1f},{:.1f}) i={i}/{tot}".format(*test_loc, i=i, tot=N_ant))
ax.set_xlabel("Time [ns]") ax.set_xlabel("Time [ns]")
ax.set_ylabel("Amplitude") ax.set_ylabel("Amplitude")
ax.plot(t_sum, a_sum) ax.plot(t_sum, a_sum)
@ -85,18 +92,38 @@ def find_best_sample_shifts_summing_at_location(test_loc, antennas, allowed_samp
shift_maxima[j] = np.max(augmented_a + a_sum) shift_maxima[j] = np.max(augmented_a + a_sum)
if i == plot_iteration_with_shifted_trace: if i in plot_iteration_with_shifted_trace:
ax.plot(t_sum, augmented_a, label=f'{shift} shifted') ax.plot(t_sum, augmented_a, alpha=0.8, label=f'{shift}')
# transform maximum into best_sample_shift # transform maximum into best_sample_shift
best_idx = np.argmax(shift_maxima) best_idx = np.argmax(shift_maxima)
best_sample_shifts[i] = allowed_sample_shifts[best_idx] best_sample_shifts[i] = allowed_sample_shifts[best_idx]
a_sum += np.roll(a_int, best_sample_shifts[i]) a_sum += np.roll(a_int, best_sample_shifts[i])
# cleanup figure # cleanup figure
if i == plot_iteration_with_shifted_trace: if i in plot_iteration_with_shifted_trace:
if fig_dir: # note this is a global variable here ax.legend( ncol=5)
fig.savefig(path.join(fig_dir, __file__ + '.loc{:.1f}-{:.1f}-{:.1f}'.format(*test_loc) + f'.i{i}{fig_distinguish}.pdf')) if fig_dir:
fname = path.join(fig_dir, __file__ + f'.{fig_distinguish}i{i}' + '.loc{:.1f}-{:.1f}-{:.1f}'.format(*test_loc))
if True:
old_xlim = ax.get_xlim()
if True: # zoomed on part without peak of this trace
wx = 100
x = max(t_r) - wx
ax.set_xlim(x-wx, x+wx)
fig.savefig(fname + ".zoomed.beacon.pdf")
if True: # zoomed on peak of this trace
x = t_r[np.argmax(E_)]
wx = 10 + max(best_sample_shifts) - min(best_sample_shifts)
ax.set_xlim(x-wx, x+wx)
fig.savefig(fname + ".zoomed.peak.pdf")
ax.set_xlim(*old_xlim)
fig.savefig(fname + ".pdf")
plt.close(fig) plt.close(fig)
# sort by antenna (undo sorting by maximum) # sort by antenna (undo sorting by maximum)
@ -259,7 +286,7 @@ if __name__ == "__main__":
yy.append(y_+yoff) yy.append(y_+yoff)
# Find best k for each antenna # Find best k for each antenna
shifts, maximum = find_best_sample_shifts_summing_at_location(test_loc, ev.antennas, allowed_sample_shifts, dt=dt, fig_dir=tmp_fig_subdir, plot_iteration_with_shifted_trace=len(ev.antennas)-1, fig_distinguish=f".run{r}") shifts, maximum = find_best_sample_shifts_summing_at_location(test_loc, ev.antennas, allowed_sample_shifts, dt=dt, fig_dir=tmp_fig_subdir, plot_iteration_with_shifted_trace=[ 5, len(ev.antennas)-1], fig_distinguish=f"run{r}.")
# Translate sample shifts back into period multiple k # Translate sample shifts back into period multiple k
ks = np.rint(shifts*f_beacon*dt) ks = np.rint(shifts*f_beacon*dt)