pcdsdevices.lodcm.LODCM
- class pcdsdevices.lodcm.LODCM(prefix, *, name, main_line='MAIN', mono_line='MONO', **kwargs)
Large Offset Dual Crystal Monochromator.
This is the device that allows XPP and XCS to multiplex with downstream hutches. It contains two crystals that steer/split the beam and a number of diagnostic devices between them. Beam can continue onto the main line, onto the mono line, onto both, or onto neither.
Tower 1 has the Si and C crystals with 2 angles and 5 linear motions. Tower 2 has the second Si and C crystals and a diode behind the crystals.
- Parameters
Ophyd Device Components Attribute
Class
Suffix
Docs
Kind
Notes
yag
:DV
omitted
dectris
:DH
omitted
diode
:DIODE
omitted
foil
:FOIL
omitted
tower1 (FCpt)
{self._prefix}
normal
tower2 (FCpt)
{self._prefix}
normal
diag_tower (FCpt)
{self._prefix}
normal
energy_si (FCpt)
{self._prefix}
normal
energy_c (FCpt)
{self._prefix}
normal
Methods
- calc_geometry(energy, material=None, reflection=None)
Calculate the lom geometry.
- configure(d: Dict[str, Any]) Tuple[Dict[str, Any], Dict[str, Any]]
Configure the device for something during a run
This default implementation allows the user to change any of the
configuration_attrs
. Subclasses might override this to perform additional input validation, cleanup, etc.- Parameters
d (dict) – The configuration dictionary. To specify the order that the changes should be made, use an OrderedDict.
- Returns
(old, new) tuple of dictionaries
Where old and new are pre- and post-configure configuration states.
- describe() ophyd.device.OrderedDictType[str, Dict[str, Any]]
Provide schema and meta-data for
read()
.This keys in the
OrderedDict
this method returns must match the keys in theOrderedDict
return byread()
.This provides schema related information, (ex shape, dtype), the source (ex PV name), and if available, units, limits, precision etc.
- Returns
data_keys (OrderedDict) – The keys must be strings and the values must be dict-like with the
event_model.event_descriptor.data_key
schema.
- get(**kwargs)
Get the value of all components in the device
Keyword arguments are passed onto each signal.get(). Components beginning with an underscore will not be included.
- get_energy(material=None, reflection=None)
Get photon energy from first tower in keV.
Energy is determined by the first crystal (Theta motor).
- get_material()
Get the current crystals material.
- Parameters
check (bool) – Indicates if an exception should occure in case it could not determine the material for a tower.
- Returns
m_1 (str) – Crystals material.
- get_reflection()
Get the crystal reflection.
Check both towers, and compare the if they match. If they do not match an error will be raised.
- Returns
ref_1 (tuple) – Reflection of the two Crystal Towers.
- Raises
ValueError – When the reflection of first tower does not match the one of second tower.
- post_elog_status()
Post device status to the primary elog, if possible.
- read() ophyd.device.OrderedDictType[str, Dict[str, Any]]
Read data from the device.
This method is expected to be as instantaneous as possible, with any substantial acquisition time taken care of in
trigger()
.The
OrderedDict
returned by this method must have identical keys (in the same order) as theOrderedDict
returned bydescribe()
.By convention, the first key in the return is the ‘primary’ key and maybe used by heuristics in
bluesky
.The values in the ordered dictionary must be dict (-likes) with the keys
{'value', 'timestamp'}
. The'value'
may have any type, the timestamp must be a float UNIX epoch timestamp in UTC.- Returns
data (OrderedDict) – The keys must be strings and the values must be dict-like with the keys
{'value', 'timestamp'}
- read_configuration() ophyd.device.OrderedDictType[str, Dict[str, Any]]
Dictionary mapping names to value dicts with keys: value, timestamp
To control which fields are included, change the Component kinds on the device, or modify the
configuration_attrs
list.
- remove(moved_cb=None, timeout=None, wait=False)
Moves the h1n crystal out of the beam.
- remove_dia(moved_cb=None, timeout=None, wait=False)
Remove all diagnostic components.
- Parameters
moved_cb (callable, optional) – Call this callback when movement is finished. This callback must accept one keyword argument,
obj
, which will be set to this instance.timeout (float, optional) – Maximum time to wait for the motion.
wait (bool, optional) – If
True
, do not continue until the move is complete.
- Returns
moved_status (
Status
) – Status that will be marked as done when the motion is complete.
- set_energy(energy, material=None, reflection=None)
Set the current positions of th1, th2, z1 and z2 offset motors.
- stage_group_instances() collections.abc.Iterator[ophyd.ophydobj.OphydObject]
Yields an iterator of subdevices that should be staged.
- stop(*, success=False)
Stop the Device and all (instantiated) subdevices
- summary()
- trigger() ophyd.status.StatusBase
Trigger the device and return status object.
This method is responsible for implementing ‘trigger’ or ‘acquire’ functionality of this device.
If there is an appreciable time between triggering the device and it being able to be read (via the
read()
method) then this method is also responsible for arranging that theStatusBase
object returned by this method is notified when the device is ready to be read.If there is no delay between triggering and being readable, then this method must return a
StatusBase
object which is already completed.- Returns
status (StatusBase) –
StatusBase
object which will be marked as complete when the device is ready to be read.
- tweak_parallel(p_value, material=None, wait=False)
Tweak the
x2
andz2
motors.
- tweak_x(x_value, material=None, wait=False)
Tweak some motors to center the beam on YAG2 horizontally based on the calibrated s4 position.
- wait_energy(timeout=None)
Block all these motors untill some action completes.
- Parameters
timeout (number, optional) – If None, wait indefinitely until the status finishes. Defaults to None.
Attributes
- branches
Returns possible destinations as a list of strings.
- configuration_attrs
- connected
- destination
Which beamline the light is reaching.
Indeterminate states will show as blocked.
- Returns
destination (list of str) –
.main_line
if the light continues on the main line..mono_line
if the light continues on the mono line.
- energy
- hints
- kind
- needs_parent: list[type[OphydObject]] = [<class 'ophyd.signal.AttributeSignal'>, <class 'ophyd.signal.DerivedSignal'>, <class 'ophyd.areadetector.plugins.PluginBase'>, <class 'ophyd.pseudopos.PseudoSingle'>, <class 'pcdsdevices.signal.PVStateSignal'>]
- transmission
Returns h1n’s transmission value.