diff --git a/src/calng/JungfrauCorrection.py b/src/calng/JungfrauCorrection.py index dddfd1791d14c66f50c796d5398fcd3789be8270..0cbe7fc8e31cf3022aef91faffaa51e076279a0e 100644 --- a/src/calng/JungfrauCorrection.py +++ b/src/calng/JungfrauCorrection.py @@ -17,23 +17,13 @@ from .base_correction import BaseCorrection, add_correction_step_schema _pretend_pulse_table = np.arange(16, dtype=np.uint8) + class JungfrauConstants(enum.Enum): Offset10Hz = enum.auto() BadPixelsDark10Hz = enum.auto() RelativeGain10Hz = enum.auto() -class JungfrauGainMode(enum.IntEnum): - # TODO: coordinate with pycalibration and check what is saved by control device - # gain stages: G0, G1, G2 (plus secret HG0 - high CDS) - dynamicgain = enum.auto() # default; uses G0-G2 - dynamichg0 = enum.auto() # uses HG0, G1, G2 - fixgain1 = enum.auto() # fix, use only G1 - fixgain2 = enum.auto() # fix, use only G2 - forceswitchg1 = enum.auto() # only for darks - forceswitchg2 = enum.auto() # only for darks - - class CorrectionFlags(enum.IntFlag): NONE = 0 OFFSET = 1 @@ -55,7 +45,6 @@ class JungfrauGpuRunner(base_gpu.BaseGpuRunner): output_data_dtype=cupy.float32, bad_pixel_mask_value=cupy.nan, burst_mode=False, - gain_mode=JungfrauGainMode.dynamicgain, ): self.burst_mode = burst_mode self.input_shape = (memory_cells, pixels_y, pixels_x) @@ -203,10 +192,15 @@ class JungfrauCalcatFriend(calcat_utils.BaseCalcatFriend): STRING_ELEMENT(schema) .key(f"{param_prefix}.gainMode") - .description("Gain mode (WIP)") + .displayedName("Gain mode") + .description( + "Detector may be operating in one of several gain modes. For this " + "device to query appropriate constants, it is sufficient to know " + "whether gain mode is dynamic or fixed." + ) .assignmentOptional() .defaultValue("dynamicgain") - .options("dynamicgain,fixgain1,fixgain2") + .options("dynamicgain,fixedgain") .commit(), ) managed_keys.add(f"{param_prefix}.integrationTime") @@ -226,9 +220,9 @@ class JungfrauCalcatFriend(calcat_utils.BaseCalcatFriend): res["Integration Time"] = self._get_param("integrationTime") res["Sensor Temperature"] = self._get_param("sensorTemperature") res["Gain Setting"] = self._get_param("gainSetting") - gain_mode = JungfrauGainMode[self._get_param("gainMode")] - if gain_mode != 0: #is not JungfrauGainMode.dynamicgain: - # TODO: figure out what to set + gain_mode = self._get_param("gainMode") + if gain_mode != "dynamicgain": + # NOTE: always include if CalCat is updated for this res["Gain mode"] = 1 return res @@ -300,7 +294,6 @@ class JungfrauCorrection(BaseCorrection): def __init__(self, config): super().__init__(config) # TODO: gain mode as constant parameter and / or device configuration - self.gain_mode = JungfrauGainMode[config.get("constantParameters.gainMode")] try: self.bad_pixel_mask_value = np.float32( @@ -310,7 +303,6 @@ class JungfrauCorrection(BaseCorrection): self.bad_pixel_mask_value = np.float32("nan") self._kernel_runner_init_args = { - "gain_mode": self.gain_mode, "bad_pixel_mask_value": self.bad_pixel_mask_value, "burst_mode": False, # TODO }