From b22bdfd40c9bd6242699ce111bfae1d96f2593fd Mon Sep 17 00:00:00 2001 From: Sven Augustin Date: Fri, 4 Dec 2020 19:42:26 +0100 Subject: [PATCH] reorderd classes --- slic/devices/xoptics/dcm.py | 73 ++++++++++++++++++------------------- 1 file changed, 35 insertions(+), 38 deletions(-) diff --git a/slic/devices/xoptics/dcm.py b/slic/devices/xoptics/dcm.py index 27dee697..2cfb4613 100755 --- a/slic/devices/xoptics/dcm.py +++ b/slic/devices/xoptics/dcm.py @@ -8,37 +8,19 @@ from slic.devices.general.motor import Motor from ..device import Device -class EcolEnergy: +class DoubleCrystalMono(Device): - def __init__(self, Id, val="SARCL02-MBND100:P-SET", rb="SARCL02-MBND100:P-READ", dmov="SFB_BEAM_ENERGY_ECOL:SUM-ERROR-OK"): - self.Id = Id - self.setter = PV(val) - self.readback = PV(rb) - self.dmov = PV(dmov) - self.done = False - - def get_current_value(self): - return self.readback.get() - - def move_and_wait(self, value, checktime=0.01, precision=2): - curr = self.setter.get() - while abs(curr - value) > 0.1: - curr = self.setter.get() - self.setter.put(curr + np.sign(value - curr) * 0.1) - sleep(0.3) - - self.setter.put(value) - while abs(self.get_current_value() - value) > precision: - sleep(checktime) - while not self.dmov.get(): - # print(self.dmov.get()) - sleep(checktime) - - def set_target_value(self, value, hold=False): - changer = lambda: self.move_and_wait(value) - return Task(changer, hold=hold) + def __init__(self, Id, **kwargs): + super().__init__(Id, **kwargs) + self.theta = Motor(Id + ":RX12") + self.x = Motor(Id + ":TX12") + self.gap = Motor(Id + ":T2") + self.roll1 = Motor(Id + ":RZ1") + self.roll2 = Motor(Id + ":RZ2") + self.pitch2 = Motor(Id + ":RX2") + self.energy = DoubleCrystalMonoEnergy(Id) @@ -106,21 +88,35 @@ class DoubleCrystalMonoEnergy(Adjustable): -class DoubleCrystalMono(Device): +class EcolEnergy: - def __init__(self, Id, **kwargs): - super().__init__(Id, **kwargs) + def __init__(self, Id, val="SARCL02-MBND100:P-SET", rb="SARCL02-MBND100:P-READ", dmov="SFB_BEAM_ENERGY_ECOL:SUM-ERROR-OK"): + self.Id = Id + self.setter = PV(val) + self.readback = PV(rb) + self.dmov = PV(dmov) + self.done = False - self.theta = Motor(Id + ":RX12") - self.x = Motor(Id + ":TX12") - self.gap = Motor(Id + ":T2") - self.roll1 = Motor(Id + ":RZ1") - self.roll2 = Motor(Id + ":RZ2") - self.pitch2 = Motor(Id + ":RX2") + def get_current_value(self): + return self.readback.get() - self.energy = DoubleCrystalMonoEnergy(Id) + def move_and_wait(self, value, checktime=0.01, precision=2): + curr = self.setter.get() + while abs(curr - value) > 0.1: + curr = self.setter.get() + self.setter.put(curr + np.sign(value - curr) * 0.1) + sleep(0.3) + self.setter.put(value) + while abs(self.get_current_value() - value) > precision: + sleep(checktime) + while not self.dmov.get(): + # print(self.dmov.get()) + sleep(checktime) + def set_target_value(self, value, hold=False): + changer = lambda: self.move_and_wait(value) + return Task(changer, hold=hold) @@ -155,6 +151,7 @@ class MonoEcolEnergy: return (eV - self.offset["dcm"]) * self.MeVperEV + self.offset["ecol"] + class AlvraDCM_FEL: def __init__(self, Id):