diff --git a/src/calng/JungfrauCorrection.py b/src/calng/JungfrauCorrection.py index 4ef0fe34896ab289bd11e7b177c7ef2f47131ad5..9fc8eadca2438c167b130f746973ca82cfca978e 100644 --- a/src/calng/JungfrauCorrection.py +++ b/src/calng/JungfrauCorrection.py @@ -22,6 +22,7 @@ _pretend_pulse_table = np.arange(16, dtype=np.uint8) class JungfrauConstants(enum.Enum): Offset10Hz = enum.auto() BadPixelsDark10Hz = enum.auto() + BadPixelsFF10Hz = enum.auto() RelativeGain10Hz = enum.auto() @@ -104,6 +105,11 @@ class JungfrauGpuRunner(base_gpu.BaseGpuRunner): if self.burst_mode: self.cell_table_gpu.set(cell_table) + def flush_buffers(self): + self.offset_map_gpu.fill(0) + self.rel_gain_map_gpu.fill(1) + self.bad_pixel_map_gpu.fill(0) + def correct(self, flags): self.correction_kernel( self.full_grid, @@ -130,6 +136,7 @@ class JungfrauCalcatFriend(calcat_utils.BaseCalcatFriend): self._constants_need_conditions = { JungfrauConstants.Offset10Hz: self.dark_condition, JungfrauConstants.BadPixelsDark10Hz: self.dark_condition, + JungfrauConstants.BadPixelsFF10Hz: self.dark_condition, JungfrauConstants.RelativeGain10Hz: self.dark_condition, } @@ -397,9 +404,11 @@ class JungfrauCorrection(BaseCorrection): self.kernel_runner.rel_gain_map_gpu.set(constant_data.astype(np.float32)) if not self.get("corrections.relGain.available"): self.set("corrections.relGain.available", True) - elif constant is JungfrauConstants.BadPixelsDark10Hz: + elif constant in ( + JungfrauConstants.BadPixelsDark10Hz, JungfrauConstants.BadPixelsFF10Hz + ): constant_data = np.transpose(constant_data, (2, 0, 1, 3)) - self.kernel_runner.bad_pixel_map_gpu.set(constant_data) + self.kernel_runner.bad_pixel_map_gpu |= cupy.asarray(constant_data) if not self.get("corrections.badPixels.available"): self.set("corrections.badPixels.available", True)