from time import sleep import numpy as np from epics import PV from logzero import logger as log from slic.core.adjustable import Adjustable from slic.core.adjustable import PVAdjustable from slic.core.scanner.scanbackend import wait_for_all #, stop_all from slic.devices.general.motor import Motor class LakeShore(Adjustable): def __init__(self, ID="Temp", units="T", accuracy=0, name="" ): super().__init__(ID, name=name, units=units) self.SP_RBV_T=PVAdjustable("SATES30-LS336:LOOP1_SP", "SATES30-LS336:A_RBV", name = "Temp") self.accuracy=accuracy def set_target_value(self, value): t_T= self.SP_RBV_T.set_target_value(value) t_T.wait() def get_current_value(self): return self.SP_RBV_T.get_current_value() def is_moving(self): delta = abs(self.SP_RBV_T.pvs.setvalue.get() - self.SP_RBV_T.pvs.readback.get() ) return (delta > self.accuracy) class Coupled_tth(Adjustable): def __init__(self, ID="tth", units="deg", delta=0, name="" ): super().__init__(ID, name=name, units=units) self.SRY = Motor("SATES30-RIXS:MOT_SRY.VAL") self.DRY = Motor("SATES30-RIXS:MOT_DRY.VAL") self.delta = delta def set_target_value(self, value): s_SRY = 90 - value + self.delta s_DRY = -2*value t_SRY = self.SRY.set_target_value(s_SRY) t_DRY = self.DRY.set_target_value(s_DRY) t_SRY.wait() t_DRY.wait() def get_current_value(self): return self.DRY.get_current_value()*(-.5) def is_moving(self): return any([self.SRY.is_moving(),self.DRY.is_moving()])