diff --git a/eco/bernina/config.py b/eco/bernina/config.py index 77e29f0..0aee99a 100755 --- a/eco/bernina/config.py +++ b/eco/bernina/config.py @@ -246,7 +246,7 @@ components = [ "z_und": 142, "desc": "Xray diffractometer", "type": "eco.endstations.bernina_diffractometers:XRD", - "kwargs": {"Id": "SARES21-XRD"}, + "kwargs": {"Id": "SARES21-XRD", "configuration": config['xrd_config']}, }, { "args": [], diff --git a/eco/endstations/bernina_diffractometers.py b/eco/endstations/bernina_diffractometers.py index adfb978..a07361b 100644 --- a/eco/endstations/bernina_diffractometers.py +++ b/eco/endstations/bernina_diffractometers.py @@ -75,78 +75,75 @@ class GPS: class XRD: - def __init__(self, name=None, Id=None, configuration=[]): + def __init__(self, name=None, Id=None, configuration=['base']): """X-ray diffractometer platform in AiwssFEL Bernina.\ : list of elements mounted on the plaform, options are kappa, nutable, hlgonio, polana""" self.Id = Id self.name = name self.alias = Alias(name) + self.configuration = configuration - ### motors base platform ### - addMotorRecordToSelf(self, Id=Id + ":MOT_TX", name="xbase") - addMotorRecordToSelf(self, Id=Id + ":MOT_TY", name="ybase") - addMotorRecordToSelf(self, Id=Id + ":MOT_RX", name="rxbase") - addMotorRecordToSelf(self, Id=Id + ":MOT_MY_RYTH", name="omega") + if "base" in self.configuration: + ### motors base platform ### + ### motors base platform ### + addMotorRecordToSelf(self, Id=Id + ":MOT_TX", name="xbase") + addMotorRecordToSelf(self, Id=Id + ":MOT_TY", name="ybase") + addMotorRecordToSelf(self, Id=Id + ":MOT_RX", name="rxbase") + addMotorRecordToSelf(self, Id=Id + ":MOT_MY_RYTH", name="omega") - ### motors XRD detector arm ### - addMotorRecordToSelf(self, Id=Id + ":MOT_NY_RY2TH", name="gamma") - addMotorRecordToSelf(self, Id=Id + ":MOT_DT_RX2TH", name="delta") + if "arm" in self.configuration: + ### motors XRD detector arm ### + addMotorRecordToSelf(self, Id=Id + ":MOT_NY_RY2TH", name="gamma") + addMotorRecordToSelf(self, Id=Id + ":MOT_DT_RX2TH", name="delta") + ### motors XRD area detector branch ### + addMotorRecordToSelf(self, Id=Id + ":MOT_D_T", name="tdet") - ### motors XRD area detector branch ### - addMotorRecordToSelf(self, Id=Id + ":MOT_D_T", name="tdet") + ### motors XRD polarisation analyzer branch ### + addMotorRecordToSelf(self, Id=Id + ":MOT_P_T", name="tpol") + # missing: slits of flight tube - ### motors XRD polarisation analyzer branch ### - addMotorRecordToSelf(self, Id=Id + ":MOT_P_T", name="tpol") - # missing: slits of flight tube + if "hlxz" in self.configuration: + ### motors heavy load goniometer ### + addMotorRecordToSelf(self, Id=Id + ":MOT_TBL_TX", name="xhl") + addMotorRecordToSelf(self, Id=Id + ":MOT_TBL_TZ", name="zhl") + if "hly" in self.configuration: + addMotorRecordToSelf(self, Id=Id + ":MOT_TBL_TY", name="yhl") - ### motors heavy load goniometer ### - addMotorRecordToSelf(self, Id=Id + ":MOT_TBL_TX", name="xhl") - addMotorRecordToSelf(self, Id=Id + ":MOT_TBL_TZ", name="zhl") - addMotorRecordToSelf(self, Id=Id + ":MOT_TBL_TY", name="yhl") - try: - addMotorRecordToSelf(self, Id=Id + ":MOT_TBL_RX", name="rxhl") - except: - print("XRD.rxhl not found") - pass - try: - addMotorRecordToSelf(self, Id=Id + ":MOT_TBL_RY", name="rzhl") - except: - print("XRD.rzhl not found") - pass + if "hlrxrz" in self.configuration: + try: + addMotorRecordToSelf(self, Id=Id + ":MOT_TBL_RX", name="rxhl") + except: + print("XRD.rxhl not found") + pass + try: + addMotorRecordToSelf(self, Id=Id + ":MOT_TBL_RY", name="rzhl") + except: + print("XRD.rzhl not found") + pass - ### motors nu table ### - addMotorRecordToSelf(self, Id=Id + ":MOT_HEX_TX", name="teta") - addMotorRecordToSelf(self, Id=Id + ":MOT_HEX_RX", name="eta") + if "phi_table" in self.configuration: + ### motors nu table ### + addMotorRecordToSelf(self, Id=Id + ":MOT_HEX_TX", name="teta") + addMotorRecordToSelf(self, Id=Id + ":MOT_HEX_RX", name="eta") - ### motors PI hexapod ### - self.hex_x = PV("SARES20-HEX_PI:POSI-X") - self.hex_y = PV("SARES20-HEX_PI:POSI-Y") - self.hex_z = PV("SARES20-HEX_PI:POSI-Z") - self.hex_u = PV("SARES20-HEX_PI:POSI-U") - self.hex_v = PV("SARES20-HEX_PI:POSI-V") - self.hex_w = PV("SARES20-HEX_PI:POSI-W") + if "phi_hex" in self.configuration: + ### motors PI hexapod ### + self.hex_x = PV("SARES20-HEX_PI:POSI-X") + self.hex_y = PV("SARES20-HEX_PI:POSI-Y") + self.hex_z = PV("SARES20-HEX_PI:POSI-Z") + self.hex_u = PV("SARES20-HEX_PI:POSI-U") + self.hex_v = PV("SARES20-HEX_PI:POSI-V") + self.hex_w = PV("SARES20-HEX_PI:POSI-W") + + def get_adjustable_positions_str(self): + ostr = "*****XRD motor positions******\n" + + for tkey, item in self.__dict__.items(): + if hasattr(item, "get_current_value"): + pos = item.get_current_value() + ostr += " " + tkey.ljust(17) + " : % 14g\n" % pos + return ostr def __repr__(self): - s = "**Heavy Load**\n" - motors = "xmu mu tth xbase ybase".split() - for motor in motors: - s += " - %s %.4f\n" % (motor, getattr(self, motor).wm()) - - s += " - xhl %.4f\n" % (self.xhl.wm()) - s += " - yhl %.4f\n" % (self.yhl.wm()) - s += " - zhl %.4f\n" % (self.zhl.wm()) - s += " - th %.4f\n" % (self.th.wm()) - s += "\n" - - s += "**Gonio**\n" - motors = "xmu mu tth delta det_z cam_z xbase ybase".split() - for motor in motors: - s += " - %s %.4f\n" % (motor, getattr(self, motor).wm()) - s += "\n" - - s += "**Hexapod**\n" - motors = "x y z u v w".split() - for motor in motors: - s += " - hex_%s %.4f\n" % (motor, getattr(self, "hex_" + motor).get()) - return s + return self.get_adjustable_positions_str()