From dde3eb0becf99e0518e339ea0bf60e45e1603083 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Lo=C3=AFc=20Le=20Guyader?= <loic.le.guyader@xfel.eu>
Date: Sun, 23 Apr 2023 18:15:37 +0200
Subject: [PATCH] Prevent negative flat field correction

---
 src/toolbox_scs/routines/boz.py | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

diff --git a/src/toolbox_scs/routines/boz.py b/src/toolbox_scs/routines/boz.py
index 5c66f72..e040325 100644
--- a/src/toolbox_scs/routines/boz.py
+++ b/src/toolbox_scs/routines/boz.py
@@ -1162,6 +1162,10 @@ def ff_refine_crit(p, alpha, params, arr_dark, arr, tid, rois,
     """
     params.set_flat_field(p)
     ff = compute_flat_field_correction(rois, params)
+    if np.any(ff < 0.0):
+        bad = 1e6
+    else:
+        bad = 0.0
 
     data = process(None, arr_dark, arr, tid, rois, mask, ff,
         sat_level, params._using_gpu)
@@ -1179,7 +1183,7 @@ def ff_refine_crit(p, alpha, params, arr_dark, arr, tid, rois,
                 (1.0 - np.nanmean(rp['muA']))**2 +
                 (1.0 - np.nanmean(rd['muA']))**2)
 
-    return 1e3*(alpha*err_sigma + (1-alpha)*err_mean)
+    return bad + 1e3*(alpha*err_sigma + (1-alpha)*err_mean)
 
 
 def ff_refine_fit(params):
-- 
GitLab