Files
cristallina/crq_exp/diffractometer.py

51 lines
1.5 KiB
Python

""" Diffractometer
motorized axis:
SARES30-CPCL-ECMC02:ROT2THETA
SARES30-CPCL-ECMC02:ROTTHETA
SARES30-CPCL-ECMC02:TRXBASE
SARES30-CPCL-ECMC02:TRYBASE
"""
from slic.core.adjustable import Adjustable, Linked
from slic.core.device import Device, SimpleDevice
from slic.devices.general.motor import Motor
class Diffractometer(Device):
def __init__(self, ID, motor_naming="MOTOR", **kwargs):
super().__init__(ID, **kwargs)
self.twotheta = Motor("SARES30-CPCL-ECMC02:ROT2THETA") # , ID=None, name=None, units=None, internal=False):
self.theta = Motor("SARES30-CPCL-ECMC02:ROTTHETA") # , ID=None, name=None, units=None, internal=False):
self.trx_base = Motor("SARES30-CPCL-ECMC02:TRXBASE") # , ID=None, name=None, units=None, internal=False):
self.try_base = Motor("SARES30-CPCL-ECMC02:TRYBASE") # , ID=None, name=None, units=None, internal=False):
self.tr_x = Motor("SARES30-CPCL-ECMC02:TRX")
self.tr_y = Motor("SARES30-CPCL-ECMC02:TRY")
self.tr_z = Motor("SARES30-CPCL-ECMC02:TRZ")
self.td = Motor("SARES30-CPCL-ECMC02:TD")
# Set speed:
# diffractometer.theta._motor.VELO = 0.25
class ThetasCombined(Linked):
def __init__(self, *args, **kwargs):
super().__init__(self, *args, **kwargs)
def connect_axis(self):
"""
calculate offset to match scale factor
"""
offset = self.secondary.get_current_value() - self.primary.get_current_value() * self.scale_factor
self.offset = offset