diff --git a/slic/devices/xoptics/slits/old/slitblades.py b/slic/devices/xoptics/slits/old/slitblades.py new file mode 100644 index 00000000..62d85add --- /dev/null +++ b/slic/devices/xoptics/slits/old/slitblades.py @@ -0,0 +1,38 @@ +from slic.devices.general.motor import Motor + + +class SlitBlades: + + def __init__(self, ID, mot1, mot2): + self.ID = ID + self.mot1 = Motor(mot1) + self.mot2 = Motor(mot2) + + @classmethod + def from_motor_name(cls, ID, motor_name="MOTOR_X"): + mot1 = ID + ":" + motor_name + "1" + mot2 = ID + ":" + motor_name + "2" + return cls(ID, mot1, mot2) + + def get_gap(self): + return self.mot2.get_current_value() - self.mot1.get_current_value() + + def get_pos(self): + return (self.mot1.get_current_value() + self.mot2.get_current_value()) / 2 + + def set_gap(self, value, pos=None): + if pos is None: + pos = self.get_pos() + t1 = self.mot1.set_target_value(pos - value / 2) + t2 = self.mot2.set_target_value(pos + value / 2) + return t1, t2 + + def set_pos(self, value, gap=None): + if gap is None: + gap = self.get_gap() + t1 = self.mot1.set_target_value(value - gap / 2) + t2 = self.mot2.set_target_value(value + gap / 2) + return t1, t2 + + + diff --git a/slic/devices/xoptics/slits/old/slitunit.py b/slic/devices/xoptics/slits/old/slitunit.py index cf43595e..7ebcc2e1 100644 --- a/slic/devices/xoptics/slits/old/slitunit.py +++ b/slic/devices/xoptics/slits/old/slitunit.py @@ -1,16 +1,13 @@ -from slic.devices.general.motor import Motor - from slitbase import SlitBase +from slitblades import SlitBlades class SlitUnit(SlitBase): - def __init__(self, ID, x1="MOTOR_X1", x2="MOTOR_X2", y1="MOTOR_Y1", y2="MOTOR_Y2"): + def __init__(self, ID, x1, x2, y1, y2): self.ID = ID - self.x1 = Motor(x1) - self.x2 = Motor(x2) - self.y1 = Motor(y1) - self.y2 = Motor(y2) + self.x = SlitBlades(ID + "-X", x1, x2) + self.y = SlitBlades(ID + "-Y", y1, y2) @classmethod def from_motor_name(cls, ID, motor_name="MOTOR_"): @@ -18,47 +15,31 @@ class SlitUnit(SlitBase): x2 = ID + ":" + motor_name + "X2" y1 = ID + ":" + motor_name + "Y1" y2 = ID + ":" + motor_name + "Y2" - return cls(ID, x1=x1, x2=x2, y1=y1, y2=y2) + return cls(ID, x1, x2, y1, y2) def get_hg(self): - return self.x2.get_current_value() - self.x1.get_current_value() + return self.x.get_gap() def get_vg(self): - return self.y2.get_current_value() - self.y1.get_current_value() + return self.y.get_gap def get_ho(self): - return (self.x1.get_current_value() + self.x2.get_current_value()) / 2 + return self.x.get_pos() def get_vo(self): - return (self.y1.get_current_value() + self.y2.get_current_value()) / 2 + return self.y.get_pos() - def set_hg(self, value, ho=None): - if ho is None: - ho = self.get_ho() - c1 = self.x1.set_target_value(ho - value / 2) - c2 = self.x2.set_target_value(ho + value / 2) - return c1, c2 + def set_hg(self, *args, **kwargs): + return self.x.set_gap(*args, **kwargs) - def set_vg(self, value, vo=None): - if vo is None: - vo = self.get_vo() - c1 = self.y1.set_target_value(vo - value / 2) - c2 = self.y2.set_target_value(vo + value / 2) - return c1, c2 + def set_vg(self, *args, **kwargs): + return self.y.set_gap(*args, **kwargs) - def set_ho(self, value, hg=None): - if hg is None: - hg = self.get_hg() - c1 = self.x1.set_target_value(value - hg / 2) - c2 = self.x2.set_target_value(value + hg / 2) - return c1, c2 + def set_ho(self, *args, **kwargs): + return self.x.set_pos(*args, **kwargs) - def set_vo(self, value, vg=None): - if vg is None: - vg = self.get_vg() - c1 = self.y1.set_target_value(value - vg / 2) - c2 = self.y2.set_target_value(value + vg / 2) - return c1, c2 + def set_vo(self, *args, **kwargs): + return self.y.set_pos(*args, **kwargs) diff --git a/slic/devices/xoptics/slits/old/slitunitjj.py b/slic/devices/xoptics/slits/old/slitunitjj.py index cfc5f7b8..b32aa9d3 100644 --- a/slic/devices/xoptics/slits/old/slitunitjj.py +++ b/slic/devices/xoptics/slits/old/slitunitjj.py @@ -4,7 +4,11 @@ from slitunit import SlitUnit class SlitUnitJJ(SlitUnit): def __init__(self, ID): - super().__init__(ID, x1="MOT3", x2="MOT2", y1="MOT5", y2="MOT4") + x1 = ID + ":MOT3" + x2 = ID + ":MOT2" + y1 = ID + ":MOT5" + y2 = ID + ":MOT4" + super().__init__(ID, x1, x2, y1, y2)