75 lines
2.6 KiB
Python
Executable File
75 lines
2.6 KiB
Python
Executable File
""" 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, **kwargs):
|
|
super().__init__(ID, **kwargs)
|
|
|
|
self.twotheta = Motor(ID + ":ROT2THETA") # , ID=None, name=None, units=None, internal=False):
|
|
self.theta = Motor(ID + ":ROTTHETA") # , ID=None, name=None, units=None, internal=False):
|
|
|
|
self.trx_base = Motor(ID + ":TRXBASE") # , ID=None, name=None, units=None, internal=False):
|
|
self.try_base = Motor(ID + ":TRYBASE") # , ID=None, name=None, units=None, internal=False):
|
|
|
|
self.tr_x = Motor(ID + ":TRX")
|
|
self.tr_y = Motor(ID + ":TRY")
|
|
self.tr_z = Motor(ID + ":TRZ")
|
|
|
|
self.td = Motor(ID + ":TD")
|
|
|
|
if ID == "SARES32-GPS":
|
|
self.name = "DM2: Cristallina pulsed magnet diffractometer"
|
|
# This diffractometer also has extra swivel stages
|
|
self.rotx = Motor(ID + ":ROTX")
|
|
self.rotz = Motor(ID + ":ROTZ")
|
|
if ID == "SARES31-GPS":
|
|
self.name = "DM1: Cristallina dilution fridge diffractometer"
|
|
|
|
# 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
|
|
|
|
|