From 5f464dc1d90a917f8dff9371d5ba4472610cbd1c Mon Sep 17 00:00:00 2001 From: David Hammer <dhammer@mailbox.org> Date: Fri, 26 Feb 2021 17:19:59 +0100 Subject: [PATCH] Adding prototype gain mode detection from slow data --- .../Characterize_AGIPD_Gain_Darks_NBC.ipynb | 34 +++++++++++++++---- 1 file changed, 28 insertions(+), 6 deletions(-) diff --git a/notebooks/AGIPD/Characterize_AGIPD_Gain_Darks_NBC.ipynb b/notebooks/AGIPD/Characterize_AGIPD_Gain_Darks_NBC.ipynb index 4672a39e2..c15bbfba5 100644 --- a/notebooks/AGIPD/Characterize_AGIPD_Gain_Darks_NBC.ipynb +++ b/notebooks/AGIPD/Characterize_AGIPD_Gain_Darks_NBC.ipynb @@ -26,7 +26,6 @@ "run_high = 9985 # run number in which high gain data was recorded, required\n", "run_med = 9984 # run number in which medium gain data was recorded, required\n", "run_low = 9983 # run number in which low gain data was recorded, required\n", - "operation_mode = 'ADAPTIVE_GAIN' # Detector operation mode, optional\n", "\n", "karabo_id = \"HED_DET_AGIPD500K2G\" # karabo karabo_id\n", "karabo_da = ['-1'] # a list of data aggregators names, Default [-1] for selecting all data aggregators\n", @@ -99,6 +98,7 @@ "\n", "from cal_tools.agipdlib import (get_acq_rate, get_bias_voltage,\n", " get_gain_setting, get_num_cells)\n", + "from cal_tools.enums import AgipdGainMode\n", "from cal_tools.plotting import (create_constant_overview, plot_badpix_3d,\n", " show_overview, show_processed_modules)\n", "from cal_tools.tools import (get_dir_creation_date, get_from_db,\n", @@ -115,6 +115,23 @@ "metadata": {}, "outputs": [], "source": [ + "def get_gain_mode(h5fn):\n", + " h5path_gainmode = f'{h5path_ctrl.replace(\"/CONTROL/\", \"/RUN/\", 1)}/gainModeIndex/value'\n", + " with h5py.File(h5fn, 'r') as fd:\n", + " if h5path_gainmode in fd:\n", + " return AgipdGainMode(fd[h5path_gainmode][0])\n", + " return AgipdGainMode.ADAPTIVE_GAIN" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# insert control device if format string (does nothing otherwise)\n", + "h5path_ctrl = h5path_ctrl.format(karabo_id_control)\n", + "\n", "gains = np.arange(3)\n", "\n", "max_cells = mem_cells\n", @@ -148,12 +165,20 @@ " nmods = 8\n", "\n", "control_names = [f'{in_folder}/r{r:04d}/RAW-R{r:04d}-{karabo_da_control}-S00000.h5'\n", - " for r in (run_high, run_med, run_low)] \n", + " for r in (run_high, run_med, run_low)]\n", + "\n", + "run_gain_modes = [get_gain_mode(fn) for fn in control_names]\n", + "if all(gm == AgipdGainMode.ADAPTIVE_GAIN for gm in run_gain_modes):\n", + " fixed_gain_mode = False\n", + "elif run_gain_modes == [AgipdGainMode.FIXED_HIGH_GAIN, AgipdGainMode.FIXED_MEDIUM_GAIN, AgipdGainMode.FIXED_LOW_GAIN]:\n", + " fixed_gain_mode = True\n", + "else:\n", + " print(f'Something is clearly wrong; slow data indicates gain modes {run_gain_modes}')\n", "\n", "print(f\"Detector in use is {karabo_id}\")\n", "print(f\"Instrument {instrument}\")\n", "print(f\"Detector instance {dinstance}\")\n", - "print(f\"Operation mode is {operation_mode}\")" + "print(f\"Operation mode is {'fixed' if fixed_gain_mode else 'adaptive'} gain mode\")" ] }, { @@ -164,9 +189,6 @@ "source": [ "runs = [run_high, run_med, run_low]\n", "\n", - "# insert control device if format string (does nothing otherwise)\n", - "h5path_ctrl = h5path_ctrl.format(karabo_id_control)\n", - "\n", "if gain_setting == 0.1:\n", " if creation_time.replace(tzinfo=None) < dateutil.parser.parse('2020-01-31'):\n", " print(\"Set gain-setting to None for runs taken before 2020-01-31\")\n", -- GitLab