Source code for syned.beamline.element_coordinates

"""
Position coordinates of a beamline component.
"""

from syned.syned_object import SynedObject

[docs]class ElementCoordinates(SynedObject): """ """ def __init__(self, p = 0.0, q = 0.0, angle_radial=0.0, angle_azimuthal=0.0, angle_radial_out=None): """ Parameters ---------- p : float, optional distance from previous element in m. q : float, optional distance to next element in m. angle_radial : float, optional Radial inclination angle in rads. angle_azimuthal : float, optional Azimuthal inclination angle in rads. angle_radial_out : float, optional The radial angle in rads in the output direction (default=None, the same as angle_radial). """ self._p = p self._q = q self._angle_radial = angle_radial self._angle_azimuthal = angle_azimuthal self._angle_radial_out = angle_radial_out # support text containg name of variable, help text and unit. Will be stored in self._support_dictionary self._set_support_text([ ("p", "distance from previous continuation plane", "m" ), ("q", "distance to next continuation plane", "m" ), ("angle_radial", "incident angle [to normal]", "rad" ), ("angle_radial_out", "output angle [to normal]", "rad"), ("angle_azimuthal", "rotation along beam axis", "rad" ), ])
[docs] def p(self): """ Returns the distance from previous element. Returns ------- float """ return self._p
[docs] def q(self): """ Returns the distance to next element. Returns ------- float """ return self._q
[docs] def angle_radial(self): """ Returns the radial angle. Returns ------- float """ return self._angle_radial
[docs] def angle_radial_out(self): """ Returns the radial angle in the output direction. Returns ------- float """ if self._angle_radial_out is None: return self.angle_radial() else: return self._angle_radial_out
[docs] def angle_azimuthal(self): """ Returns the azimuthal angle. Returns ------- float """ return self._angle_azimuthal
[docs] def set_positions(self, p=0.0, q=0.0, angle_radial=0.0, angle_radial_out=None, angle_azimuthal=0.0): """ Sets the coordinates. Parameters ---------- p : float, optional distance from previous element in m. q : float, optional distance to next element in m. angle_radial : float, optional Radial inclination angle in rads. angle_azimuthal : float, optional Azimuthal inclination angle in rads. angle_radial_out : float, optional The radial angle in rads in the output direction (default=None, the same as angle_radial). """ self._p = p self._q = q self._angle_radial = angle_radial self._angle_radial_out = angle_radial_out self._angle_azimuthal = angle_azimuthal
[docs] def get_positions(self): """ Gets the coordinates. Returns ------- tuple (p, q, angle_radial, angle_radial_out, angle_azimuthal) """ return self.p(), \ self.q(), \ self.angle_radial(), \ self.angle_radial_out(), \ self.angle_azimuthal()
[docs] def set_p_and_q(self, p=0.0, q=0.0): """ Set the distances p and q. Parameters ---------- p : float, optional distance from previous element in m. q : float, optional distance to next element in m. """ self._p = p self._q = q
[docs] def get_p_and_q(self): """ Gets p and q. Returns ------- tuple (p,q). """ return self.p(), self.q()
[docs] def set_angles(self, angle_radial=0.0, angle_radial_out=None, angle_azimuthal=0.0): """ Sets the angles. Parameters ---------- angle_radial : float, optional Radial inclination angle in rads. angle_azimuthal : float, optional Azimuthal inclination angle in rads. angle_radial_out : float, optional The radial angle in rads in the output direction (default=None, the same as angle_radial). Returns ------- """ self._angle_radial = angle_radial self._angle_radial_out = angle_radial_out self._angle_azimuthal = angle_azimuthal
[docs] def get_angles(self): """ Get the angles. Returns ------- tuple (angle_radial, angle_radial_out, angle_azimuthal) """ return self.angle_radial(), self.angle_radial_out(), self.angle_azimuthal()