From 5ff5e66f34326794ffebbb876c52044b7699fb00 Mon Sep 17 00:00:00 2001
From: Philipp Schmidt <philipp.schmidt@xfel.eu>
Date: Tue, 25 Oct 2022 16:53:47 +0200
Subject: [PATCH] Add support for quad anodes to REMI reconstruction

---
 notebooks/REMI/REMI_Digitize_and_Transform.ipynb | 13 ++++++++++---
 1 file changed, 10 insertions(+), 3 deletions(-)

diff --git a/notebooks/REMI/REMI_Digitize_and_Transform.ipynb b/notebooks/REMI/REMI_Digitize_and_Transform.ipynb
index eaef141a3..dfd153de6 100644
--- a/notebooks/REMI/REMI_Digitize_and_Transform.ipynb
+++ b/notebooks/REMI/REMI_Digitize_and_Transform.ipynb
@@ -37,6 +37,9 @@
     "dataset_compression = 'gzip'  # HDF compression method.\n",
     "dataset_compression_opts = 3  # HDF GZIP compression level.\n",
     "\n",
+    "# Detector parameters.\n",
+    "quad_anode = False  # Reconstruction assumes a hex anode by default, change for quad anodes.\n",
+    "\n",
     "# Trigger parameters.\n",
     "ppt_source = 'SQS_RR_UTC/TSYS/TIMESERVER:outputBunchPattern'\n",
     "ignore_ppl = False  # Ignore any PPL entries in the PPT.\n",
@@ -74,10 +77,14 @@
     "from extra_data import RunDirectory\n",
     "from extra_remi import Analysis, trigger_dt\n",
     "from extra_remi.util import timing\n",
-    "from extra_remi.plots import plot_detector_diagnostics\n",
     "from extra_remi.rd_resort import signal_dt, hit_dt\n",
     "from extra_remi.files import DataFile, sequence_pulses\n",
     "\n",
+    "if quad_anode:\n",
+    "    from extra_remi.plots import plot_detector_diagnostics_quad as plot_detector_diagnostics\n",
+    "else:\n",
+    "    from extra_remi.plots import plot_detector_diagnostics_hex as plot_detector_diagnostics\n",
+    "\n",
     "%matplotlib inline"
    ]
   },
@@ -97,7 +104,7 @@
     "        # Disallow implicit config file creation.\n",
     "        raise ValueError('calib_config_path not found - neither absolute nor relative to in_folder')\n",
     "\n",
-    "remi = Analysis(calib_config_path)\n",
+    "remi = Analysis(calib_config_path, use_hex=not quad_anode)\n",
     "\n",
     "with timing('open_run'):\n",
     "    dc = remi.prepare_dc(RunDirectory(Path(in_folder) / f'r{run:04d}', inc_suspect_trains=True))"
@@ -627,7 +634,7 @@
     "    \n",
     "    sum_shifts = sort.sum_shifts if sort.sum_shifts != (0.0, 0.0, 0.0) else None\n",
     "    \n",
-    "    is_valid = remi.get_presort_mask(edges, edge_idx=0,\n",
+    "    is_valid = remi.get_presort_mask(edges, edge_idx=0, w=not quad_anode,\n",
     "                                     sum_limit=max(sort.uncorrected_time_sum_half_widths),\n",
     "                                     sum_shifts=sum_shifts)\n",
     "    signals, sums = remi.get_signals_and_sums(edges, indices=sort.channel_indices, sum_shifts=sum_shifts,\n",
-- 
GitLab