From 59cc78162d5a71fa113a05afccb7ce8c8170b03a Mon Sep 17 00:00:00 2001 From: Philipp Schmidt <philipp.schmidt@xfel.eu> Date: Wed, 15 Nov 2023 10:05:03 +0100 Subject: [PATCH] Add spectral pulse height distribution plot --- .../REMI/REMI_Digitize_and_Transform.ipynb | 58 +++++++++++++++++++ 1 file changed, 58 insertions(+) diff --git a/notebooks/REMI/REMI_Digitize_and_Transform.ipynb b/notebooks/REMI/REMI_Digitize_and_Transform.ipynb index 539f2c019..3ecb0b103 100644 --- a/notebooks/REMI/REMI_Digitize_and_Transform.ipynb +++ b/notebooks/REMI/REMI_Digitize_and_Transform.ipynb @@ -855,6 +855,7 @@ " fig = plt.figure(num=20+i, 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", @@ -914,6 +915,63 @@ "pass" ] }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Spectral pulse height distributions" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "for i, det_name in enumerate(remi['detector'].keys()):\n", + " fig = plt.figure(num=2323232+i, figsize=(9.5, 12.0))\n", + " grid = fig.add_gridspec(ncols=2, nrows=4, left=0.08, right=0.98, top=0.95, hspace=0.3)\n", + " fig.text(0.02, 0.98, det_name.upper(), rotation=90, ha='left', va='top', size='x-large')\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", + " max_amplitude = np.nanmax(amplitudes)\n", + "\n", + " for edge_idx, edge_name in enumerate(['u1', 'u2', 'v1', 'v2', 'w1', 'w2', 'mcp']):\n", + " if edge_idx < 6:\n", + " row = 1 + edge_idx // 2\n", + " col = edge_idx % 2\n", + " tof_bins = int((max_edge - min_edge) // 20)\n", + " else:\n", + " row = 0\n", + " col = np.s_[:]\n", + " tof_bins = int((max_edge - min_edge) // 10)\n", + "\n", + " ax = fig.add_subplot(grid[row, col])\n", + " ax.set_title(f'Spectral pulse amplitudes: {edge_name}')\n", + "\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 edge_idx == 6:\n", + " ax.set_ylabel('Pulse height')\n", + " pass" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "A more detailed view into the distribution of pulse heights as a function of TOF, e.g. to indicate whether the spectrometer transmission may depend on the kinetic energy and/or (in the case of ions) mass." + ] + }, { "cell_type": "markdown", "metadata": {}, -- GitLab