Skip to content
Snippets Groups Projects
Commit 49240d0d authored by David Hammer's avatar David Hammer
Browse files

Make md_additional_offset configurable

parent 5275a7a8
No related branches found
No related tags found
2 merge requests!12Snapshot: field test deployed version as of end of run 202201,!3Base correction device, CalCat interaction, DSSC and AGIPD devices
......@@ -3,6 +3,7 @@ import timeit
import numpy as np
from karabo.bound import (
BOOL_ELEMENT,
FLOAT_ELEMENT,
KARABO_CLASSINFO,
STRING_ELEMENT,
TABLE_ELEMENT,
......@@ -88,6 +89,28 @@ class AgipdCorrection(BaseCorrection):
.commit(),
)
(
BOOL_ELEMENT(expected)
.key("corrections.overrideMdAdditionalOffset")
.displayedName("Override md_additional_offset")
.assignmentOptional()
.defaultValue(False)
.reconfigurable()
.commit(),
FLOAT_ELEMENT(expected)
.key("corrections.mdAdditionalOffset")
.displayedName("Value for md_additional_offset (if overriding)")
.description(
"Normally, md_additional_offset (part of relative gain correction) is "
"computed when loading SlopesPC. In case you want to use a different "
"value (global for all medium gain pixels), you can specify it here "
"and set corrections.overrideMdAdditionalOffset to True."
)
.assignmentOptional()
.defaultValue(0)
.reconfigurable()
.commit(),
)
# TODO: hook this up to actual correction done
bad_pixel_selection_schema = Schema()
(
......@@ -143,6 +166,12 @@ class AgipdCorrection(BaseCorrection):
else:
self._output_transpose = None
self._update_shapes()
if config.get("corrections.overrideMdAdditionalOffset"):
self._override_md_additional_offset = config.get(
"corrections.mdAdditionalOffset"
)
else:
self._override_md_additional_offset = None
self.updateState(State.ON)
def process_input(self, data, metadata):
......@@ -286,6 +315,10 @@ class AgipdCorrection(BaseCorrection):
self.set("corrections.available.relGainPc", True)
self.set("corrections.enabled.relGainPc", True)
self.set("corrections.preview.relGainPc", True)
if self._override_md_additional_offset is not None:
self.gpu_runner.md_additional_offset_gpu.fill(
self._override_md_additional_offset
)
elif constant_name == "SlopesFF":
self.gpu_runner.load_rel_gain_ff_map(constant_data)
if not self.get("corrections.available.relGainXray"):
......@@ -310,3 +343,17 @@ class AgipdCorrection(BaseCorrection):
new_filter = np.array(eval(filter_string), dtype=np.uint16)
assert np.max(new_filter) < self.get("dataFormat.memoryCells")
self.pulse_filter = new_filter
def preReconfigure(self, config):
super().preReconfigure(config)
if config.has("corrections.overrideMdAdditionalOffset"):
if config.get("corrections.overrideMdAdditionalOffset"):
md_additional_offset = self.get("corrections.mdAdditionalOffset")
if config.has("corrections.mdAdditionalOffset"):
md_additional_offset = config.get("corrections.mdAdditionalOffset")
self._override_md_additional_offset = md_additional_offset
self.gpu_runner.md_additional_offset_gpu.fill(
self._override_md_additional_offset
)
else:
self._override_md_additional_offset = None
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment