From 42371701be7d9bfc4716573cc7f3faa305234bd3 Mon Sep 17 00:00:00 2001
From: Philipp Schmidt <philipp.schmidt@xfel.eu>
Date: Wed, 15 Nov 2023 10:04:25 +0100
Subject: [PATCH] Deprecate functionality in EXtra-remi and move to notebook

---
 .../REMI/REMI_Digitize_and_Transform.ipynb    | 36 +++++++++++++++----
 1 file changed, 29 insertions(+), 7 deletions(-)

diff --git a/notebooks/REMI/REMI_Digitize_and_Transform.ipynb b/notebooks/REMI/REMI_Digitize_and_Transform.ipynb
index 46e73f69d..539f2c019 100644
--- a/notebooks/REMI/REMI_Digitize_and_Transform.ipynb
+++ b/notebooks/REMI/REMI_Digitize_and_Transform.ipynb
@@ -136,9 +136,26 @@
     "\n",
     "remi = Analysis(calib_config_path, use_hex=not quad_anode)\n",
     "\n",
+    "# Collect required sources and keys required.\n",
+    "sourcekeys = set()\n",
+    "for det_name in remi['detector'].keys():\n",
+    "    sourcekeys |= remi.get_detector_sourcekeys(det_name)\n",
+    "        \n",
+    "if not reconstruct_ppt:\n",
+    "    sourcekeys.add((ppt_source, 'data.bunchPatternTable'))\n",
+    "\n",
     "with timing('open_run'):\n",
-    "    dc = remi.prepare_dc(RunDirectory(Path(in_folder) / f'r{run:04d}', inc_suspect_trains=True),\n",
-    "                         require_ppt=not reconstruct_ppt)"
+    "    # Initial opening of input data.\n",
+    "    base_dc = RunDirectory(Path(in_folder) / f'r{run:04d}', inc_suspect_trains=True)\n",
+    "    \n",
+    "with timing('select_data'):\n",
+    "    # Filter down to those trains with data for all required sources.\n",
+    "    filter_run = base_dc.select(sourcekeys, require_all=True)\n",
+    "\n",
+    "# Re-select entire data collection to the trains with data.\n",
+    "dc = base_dc.select_trains(by_id[filter_run.train_ids])\n",
+    "base_dc = None\n",
+    "filter_run = None"
    ]
   },
   {
@@ -154,15 +171,19 @@
    "metadata": {},
    "outputs": [],
    "source": [
-    "def print_leaf(leaf, indent=0):\n",
+    "def print_leaf(leaf, indent=0, ignored_keys={}):\n",
     "    for key, value in leaf.items():\n",
+    "        if key in ignored_keys:\n",
+    "            continue\n",
+    "        \n",
     "        if isinstance(value, dict):\n",
     "            print(indent * 4 * ' ' + key)\n",
-    "            print_leaf(value, indent=indent+1)\n",
+    "            print_leaf(value, indent=indent+1, ignored_keys=ignored_keys)\n",
     "        else:\n",
     "            print(indent * 4 * ' ' + f'{key}: {value}')\n",
-    "        \n",
-    "print_leaf(remi.tree)"
+    "\n",
+    "print(calib_config_path.resolve())\n",
+    "print_leaf(remi.tree, ignored_keys={'instrument', 'trigger'})"
    ]
   },
   {
@@ -638,7 +659,8 @@
     "        source_name = remi['digitizer']['source']\n",
     "        bl_start, bl_stop, _ = remi.get_baseline_limits(trace_len)\n",
     "        bl_sym = remi['digitizer']['baseline_symmetry']\n",
-    "        time_cal = remi.get_time_calibration()\n",
+    "        \n",
+    "        time_cal = 1e9 / (2 * remi['digitizer']['clock_factor'] * (1.3e9 / 288))\n",
     "        \n",
     "        traces_corr = np.empty((7, trace_len), dtype=np.float64)\n",
     "        baselines = np.empty(bl_sym, dtype=np.float64)\n",
-- 
GitLab