155 lines
4.6 KiB
Python
155 lines
4.6 KiB
Python
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-ARES:MOT_SRY.VAL")
|
|
self.DRY = Motor("SATES30-ARES: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()])
|
|
|
|
class Coupled_tth_RIXSside(Adjustable):
|
|
|
|
|
|
def __init__(self, ID="tth", units="deg", delta=0, name="" ):
|
|
super().__init__(ID, name=name, units=units)
|
|
self.SRY = Motor("SATES30-ARES:MOT_SRY.VAL")
|
|
self.DRY = Motor("SATES30-ARES:MOT_DRY.VAL")
|
|
self.delta = delta
|
|
|
|
def set_target_value(self, value):
|
|
s_SRY = value -90 + self.delta
|
|
s_DRY = 2*value-199.9
|
|
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()*(-1)-199.9)*(-.5)
|
|
def is_moving(self):
|
|
return any([self.SRY.is_moving(),self.DRY.is_moving()])
|
|
|
|
|
|
class Coupled_tth_outer_RixsSide(Adjustable):
|
|
|
|
|
|
def __init__(self, ID="tth", units="deg", delta=0, name="" ):
|
|
super().__init__(ID, name=name, units=units)
|
|
self.SRY = Motor("SATES30-ARES:MOT_SRY.VAL")
|
|
self.twoTRY = Motor("SATES30-ARES:MOT_2TRY.VAL")
|
|
self.delta = delta
|
|
|
|
def set_target_value(self, value):
|
|
s_SRY =-(90-value)+self.delta
|
|
s_2TRY = 124.4 -2*value
|
|
|
|
t_SRY = self.SRY.set_target_value(s_SRY)
|
|
t_2TRY = self.twoTRY.set_target_value(s_2TRY)
|
|
t_SRY.wait()
|
|
t_2TRY.wait()
|
|
def get_current_value(self):
|
|
return (124.4-self.twoTRY.get_current_value())*0.5
|
|
def is_moving(self):
|
|
return any([self.SRY.is_moving(),self.twoTRY.is_moving()])
|
|
|
|
|
|
|
|
|
|
|
|
class Coupled_THzGate(Adjustable):
|
|
|
|
|
|
def __init__(self, ID="THzGate", units="mm", name="" ):
|
|
super().__init__(ID, name=name, units=units)
|
|
self.THz = Motor("SLAAT31-LMOT-M806:MOT")
|
|
self.Gate = Motor("SLAAT31-LMOT-M808:MOT")
|
|
#self.delta = delta
|
|
|
|
|
|
def set_target_value(self, value):
|
|
s_THz = value
|
|
s_Gate = value - ( self.THz.get_current_value() - self.Gate.get_current_value())
|
|
|
|
t_THz = self.THz.set_target_value(s_THz)
|
|
t_Gate = self.Gate.set_target_value(s_Gate)
|
|
t_THz.wait()
|
|
t_Gate.wait()
|
|
def get_current_value(self):
|
|
return self.THz.get_current_value()
|
|
def is_moving(self):
|
|
return any([self.THz.is_moving(),self.Gate.is_moving()])
|
|
|
|
|
|
class Coupled_THzGate_fixedDelta(Adjustable):
|
|
|
|
|
|
def __init__(self, ID="THzGate_fixed", units="mm", delta=0, name="" ):
|
|
super().__init__(ID, name=name, units=units)
|
|
self.THz = Motor("SLAAT31-LMOT-M806:MOT")
|
|
self.Gate = Motor("SLAAT31-LMOT-M808:MOT")
|
|
self.delta = delta
|
|
|
|
|
|
def set_target_value(self, value):
|
|
s_THz = value
|
|
s_Gate = value - self.delta
|
|
|
|
t_THz = self.THz.set_target_value(s_THz)
|
|
t_Gate = self.Gate.set_target_value(s_Gate)
|
|
t_THz.wait()
|
|
t_Gate.wait()
|
|
def get_current_value(self):
|
|
return self.THz.get_current_value()
|
|
def is_moving(self):
|
|
return any([self.THz.is_moving(),self.Gate.is_moving()])
|
|
|
|
|