diff --git a/notebooks/REMI/REMI_Digitize_and_Transform.ipynb b/notebooks/REMI/REMI_Digitize_and_Transform.ipynb index 5dae80017da0519cea7136740ac5334546911389..bd867ae23db81ee0c1e16781caa773e2179509f6 100644 --- a/notebooks/REMI/REMI_Digitize_and_Transform.ipynb +++ b/notebooks/REMI/REMI_Digitize_and_Transform.ipynb @@ -712,9 +712,21 @@ " \n", " with timing(f'find_edges, {det_name}'):\n", " psh.map(find_edges, dc.select(det_sourcekeys))\n", + " \n", + " # Properly offset edges to their trigger offset and convert to time.\n", + " # This is not done earlier to preserve the information for plotting.\n", + " edges += triggers['offset'][:, None, None]\n", + " edges *= remi.get_time_calibration()\n", + " \n", + " det_data[det_name] = {\n", + " 'edges': edges,\n", + " 'amplitudes': amplitudes,\n", + " 'avg_trace': avg_traces.sum(axis=0) / len(dc.train_ids)\n", + " }\n", " \n", " if not np.isfinite(edges).any():\n", " warning(f'No edges found for {det_name}')\n", + " continue\n", " \n", " fig, (ux, bx) = plt.subplots(num=f'digitize_result_{det_name}', ncols=1, nrows=2, figsize=(9.5, 8), clear=True,\n", " gridspec_kw=dict(left=0.1, right=0.98, top=0.98, bottom=0.1, hspace=0.25))\n", @@ -748,18 +760,7 @@ " bx.set_xlabel('Edge positions - ⌊edge positions⌋')\n", " bx.set_yscale('log')\n", " bx.set_xlim(-0.05, 1.2)\n", - " bx.legend()\n", - " \n", - " # Properly offset edges to their trigger offset and convert to time.\n", - " # This is not done earlier to preserve the information for plotting.\n", - " edges += triggers['offset'][:, None, None]\n", - " edges *= remi.get_time_calibration()\n", - " \n", - " det_data[det_name] = {\n", - " 'edges': edges,\n", - " 'amplitudes': amplitudes,\n", - " 'avg_trace': avg_traces.sum(axis=0) / len(dc.train_ids)\n", - " }" + " bx.legend()" ] }, { @@ -881,10 +882,13 @@ " fig = plt.figure(num=f'digitized_spectra_{det_name}', figsize=(9.5, 6))\n", " \n", " edges = det_data[det_name]['edges']\n", - " amplitudes = det_data[det_name]['amplitudes']\n", " \n", " min_edge = np.nanmin(edges)\n", " max_edge = np.nanmax(edges)\n", + " \n", + " if np.isnan(min_edge):\n", + " warning(f'No edges found for {det_name}')\n", + " continue\n", "\n", " grid = fig.add_gridspec(ncols=3, nrows=3, left=0.08, right=0.98, top=0.95, hspace=0.4)\n", "\n", @@ -965,6 +969,10 @@ " min_edge = np.nanmin(edges)\n", " max_edge = np.nanmax(edges)\n", " \n", + " if np.isnan(min_edge):\n", + " warning(f'No edges found for {det_name}')\n", + " continue\n", + " \n", " max_amplitude = np.nanmax(amplitudes)\n", "\n", " for edge_idx, edge_name in enumerate(['u1', 'u2', 'v1', 'v2', 'w1', 'w2', 'mcp']):\n", @@ -982,9 +990,11 @@ "\n", " flat_edges = finite_flattened_slice(edges, np.s_[:, edge_idx, :])\n", " flat_amplitudes = finite_flattened_slice(amplitudes, np.s_[:, edge_idx, :])\n", - " ax.hist2d(flat_edges, flat_amplitudes,\n", - " bins=[tof_bins, 512], norm=LogNorm(),\n", - " range=[[min_edge, max_edge], [0, max_amplitude]])\n", + " \n", + " if flat_edges.size > 1:\n", + " ax.hist2d(flat_edges, flat_amplitudes,\n", + " bins=[tof_bins, 512], norm=LogNorm(),\n", + " range=[[min_edge, max_edge], [0, max_amplitude]])\n", " \n", " if edge_idx == 6:\n", " ax.set_ylabel('Pulse height')\n", @@ -1025,7 +1035,8 @@ " sum_shifts=sum_shifts)\n", " \n", " if not is_valid.any():\n", - " warning(f'No valid preliminary edge combinations found for {det_name}')\n", + " warning(f'No preliminary edge combinations found for {det_name}')\n", + " continue\n", " \n", " signals, sums = remi.get_signals_and_sums(edges, indices=sort.channel_indices, sum_shifts=sum_shifts,\n", " mask=is_valid)\n", @@ -1118,6 +1129,10 @@ " num_hits = num_hits.reshape(-1, agg_window).mean(axis=1)\n", " max_num_hits = max(max_num_hits, num_hits.max())\n", " \n", + " if max_num_hits == 0:\n", + " warning(f'No hits found for {det_name}')\n", + " continue\n", + "\n", " ax.plot(np.arange(0, (num_pulses // agg_window) * agg_window, agg_window), num_hits,\n", " lw=1, label=det_name.upper())\n", " \n", @@ -1177,14 +1192,14 @@ "for det_name in remi['detector'].keys():\n", " hits = det_data[det_name]['hits']\n", " \n", + " if not (hits['m'] >= 0).any():\n", + " warning(f'No hits found for {det_name}')\n", + " continue \n", + " \n", " fig, ax = plt.subplots(num=f'reconstruction_methods_{det_name}', figsize=(9.5, 5), ncols=1, clear=True,\n", " gridspec_kw=dict(left=0.08, right=0.91, top=0.8))\n", " \n", " fig.text(0.02, 0.98, det_name.upper(), rotation=90, ha='left', va='top', size='x-large')\n", - " \n", - " if not (hits['m'] >= 0).any():\n", - " warning(f'No hits found for {det_name}')\n", - " continue\n", "\n", " method_bins = np.bincount(hits['m'][hits['m'] >= 0], minlength=20)\n", " ax.bar(np.arange(20), method_bins, width=0.5)\n", @@ -1258,6 +1273,10 @@ " flat_hits = flat_hits[np.isfinite(flat_hits[:]['x'])]\n", " flat_hits = flat_hits[flat_hits['m'] <= 10]\n", "\n", + " if flat_hits.size == 0:\n", + " warning(f'No hits found for {det_name}')\n", + " continue \n", + " \n", " fig = plt.figure(num=f'detector_results_{det_name}', figsize=(9, 10.5))\n", " \n", " fig.text(0.02, 0.98, det_name.upper(), rotation=90, ha='left', va='top', size='x-large')\n", @@ -1267,10 +1286,6 @@ " txp = fig.add_axes([0.1, 0.27, 0.85, 0.23])\n", " typ = fig.add_axes([0.1, 0.02, 0.85, 0.23])\n", " \n", - " if flat_hits.size == 0:\n", - " warning(f'No hits found for {det_name}')\n", - " continue\n", - " \n", " mcp_radius = remi['detector'][det_name]['mcp_radius']\n", " im_radius = mcp_radius * 1.1\n", " \n",