Skip to content

Commit

Permalink
MNT #128
Browse files Browse the repository at this point in the history
  • Loading branch information
prjemian committed Apr 22, 2021
1 parent 12de810 commit 93d004b
Showing 1 changed file with 12 additions and 18 deletions.
30 changes: 12 additions & 18 deletions hkl/diffract.py
Original file line number Diff line number Diff line change
Expand Up @@ -235,9 +235,7 @@ def __init__(
self.read_attrs = list(self.PseudoPosition._fields) + list(self.RealPosition._fields)

self.energy.subscribe(self._energy_changed, event_type=Signal.SUB_VALUE)

self.energy_offset.subscribe(self._energy_offset_changed, event_type=Signal.SUB_VALUE)

self.energy_units.subscribe(self._energy_units_changed, event_type=Signal.SUB_VALUE)

@property
Expand Down Expand Up @@ -265,7 +263,7 @@ def _energy_changed(self, value=None, **kwargs):
return

if self._calc_energy_update_permitted:
self._update_calc_energy(value)
self._update_calc_energy()

def _energy_offset_changed(self, value=None, **kwargs):
"""
Expand All @@ -278,20 +276,15 @@ def _energy_offset_changed(self, value=None, **kwargs):
if not self.connected:
logger.warning(
# fmt: off
("%s not fully connected, '%s.calc.energy_offset' not updated"),
"%s not fully connected, %s.calc.energy not updated",
self.name,
self.name,
# fmt: on
)
return

# TODO: is there a loop back through _update_calc_energy?
units = self.energy_units.get()
try:
energy = pint.Quantity(self.calc.energy, "keV").to(units)
except Exception as exc:
raise NotImplementedError(f"units = {units}: {exc}")
self.energy.put(energy.magnitude - value)
if self._calc_energy_update_permitted:
self._update_calc_energy()

def _energy_units_changed(self, value=None, **kwargs):
"""
Expand All @@ -304,16 +297,15 @@ def _energy_units_changed(self, value=None, **kwargs):
if not self.connected:
logger.warning(
# fmt: off
("%s not fully connected, '%s.calc.energy_units' not updated"),
"%s not fully connected, %s.calc.energy not updated",
self.name,
self.name,
# fmt: on
)
return

# TODO: is there a loop back through _update_calc_energy?
energy = pint.Quantity(self.calc.energy, "keV").to(value)
self.energy.put(energy.magnitude - self.energy_offset.get())
if self._calc_energy_update_permitted:
self._update_calc_energy()

def _update_calc_energy(self, value=None, **kwargs):
"""
Expand All @@ -329,8 +321,7 @@ def _update_calc_energy(self, value=None, **kwargs):
)
return

# use either supplied value or get from signal
value = float(value or self.energy.get())
value = float(self.energy.get())

# energy_offset has same units as energy
value += self.energy_offset.get()
Expand All @@ -341,7 +332,10 @@ def _update_calc_energy(self, value=None, **kwargs):
keV = pint.Quantity(value, units).to("keV")
value = keV.magnitude

logger.debug("setting %s.calc.energy = %f (keV)", self.name, value)
if value <= 0:
logger.debug("Computed energy(%s) is not positive", value)
return
logger.debug("setting %s.calc.energy = %s (keV)", self.name, value)
self.calc.energy = value
self._update_position()

Expand Down

0 comments on commit 93d004b

Please sign in to comment.