63 tc_data_tas: list[NDArray],
64 ta_data: list[NDArray],
65 ta_data_tps: list[NDArray],
71 Plots all the event displays, one per TC.
73 Each event display will contain TriggerActivities (red boxes), and
74 TriggerPrimitives (black points) for each TriggerActivity.
77 tc_data (list[NDArray]): A list of TriggerCandidates
78 tc_data_tas (list[NDArray]): A list of TriggerActivityData per TriggerCandidate
79 ta_data (list[NDArray]): A full list of TriggerActivities
80 ta_data_tps (list[NDArray]): A list of TriggerPrimitives per TriggerActivity
81 run_id (int): Run ID number
82 file_index (int): File index
87 with PdfPages(f
"event_displays_{run_id}.{file_index:04}.pdf")
as pdf:
88 for tcdx, (tc, tas)
in tqdm(enumerate(zip(tc_data, tc_data_tas)), total=len(tc_data), desc=
"Saving event displays", disable=batch):
89 plt.figure(figsize=(6, 4))
91 yend = tc[
"time_end"] - tc[
"time_start"]
92 ta_times_starts = tas[
'time_start'] - tc[
"time_start"]
93 ta_times_ends = tas[
'time_end'] - tc[
"time_start"]
95 channel_start = np.min(tas[
'channel_start'])
96 channel_end = np.max(tas[
'channel_end'])
99 yexpansion = yend * 0.05
100 xexpansion = (channel_end - channel_start) * 0.05
102 currentAxis = plt.gca()
103 for tadx, ta
in enumerate(tas):
104 rectangle = mtp.patches.Rectangle((ta[
'channel_start'], ta_times_starts[tadx]), ta[
'channel_end'] - ta[
'channel_start'], ta_times_ends[tadx] - ta_times_starts[tadx], linewidth=1, edgecolor=
'r', facecolor=
'none')
105 currentAxis.add_patch(rectangle)
107 for tatmpdx, tatmp
in enumerate(ta_data):
108 if (tatmp[
'time_start'] == ta[
'time_start'])
and (tatmp[
'time_end'] == ta[
'time_end'])
and (tatmp[
'channel_start'] == ta[
'channel_start'])
and (tatmp[
'channel_end'] == ta[
'channel_end']):
109 time_starts = ta_data_tps[tatmpdx][
'time_start'] - tc[
"time_start"]
110 plt.scatter(ta_data_tps[tatmpdx][
'channel'], time_starts, lw=0, color=
'black', marker=
',', s=1)
112 plt.title(f
'Run {run_id}.{file_index:04} Event Display: {tcdx:03}')
113 plt.ylabel(f
"Relative Start Time ({time_unit})")
114 plt.xlabel(
"Channel")
115 plt.ylim(0 - yexpansion, yend + yexpansion)
116 plt.xlim(channel_start - xexpansion, channel_end + xexpansion)
124 filename = args.filename
125 verbosity = args.verbose
132 ta_reader.read_all_fragments()
136 tc_reader.read_all_fragments()
139 plot_all_event_displays(tc_reader.tc_data, tc_reader.ta_data, ta_reader.ta_data, ta_reader.tp_data, tc_reader.run_id, tc_reader.file_index, batch)
141 print(f
"From TCReader: number of TCs: {len(tc_reader.tc_data)}, all the TAs in TCs: {len(np.concatenate(tc_reader.ta_data))}")
142 print(f
"From TAReader: number of TAs: {len(ta_reader.tp_data)}")
None plot_all_event_displays(list[NDArray] tc_data, list[NDArray] tc_data_tas, list[NDArray] ta_data, list[NDArray] ta_data_tps, int run_id, int file_index, bool batch)