added xrd in you convention
This commit is contained in:
+20
-1
@@ -38,7 +38,26 @@ namespace.append_obj(
|
||||
name="cam_south",
|
||||
module_name="eco.devices_general.cameras_ptz",
|
||||
)
|
||||
|
||||
namespace.append_obj(
|
||||
"XRDYou",
|
||||
module_name="eco.endstations.bernina_diffractometers",
|
||||
Id="SARES21-XRD",
|
||||
configuration=config_berninamesp["xrd_config"],
|
||||
diff_detector={"jf_id": "JF01T03V01"},
|
||||
name="xrd_you",
|
||||
)
|
||||
# {
|
||||
# "args": [],
|
||||
# "name": "xrd",
|
||||
# "z_und": 142,
|
||||
# "desc": "Xray diffractometer",
|
||||
# "type": "eco.endstations.bernina_diffractometers:XRD",
|
||||
# "kwargs": {
|
||||
# "Id": "SARES21-XRD",
|
||||
# "configuration": config["xrd_config"],
|
||||
# "diff_detector": {"jf_id": "JF01T03V01"},
|
||||
# },
|
||||
# },
|
||||
namespace.append_obj(
|
||||
"Daq",
|
||||
instrument="bernina",
|
||||
|
||||
@@ -0,0 +1,295 @@
|
||||
*-------------------------------------------------------
|
||||
* itemType: Rectangle
|
||||
*-------------------------------------------------------
|
||||
pvs=0(Visibility),1(Alarm)
|
||||
controlPoints=1,2
|
||||
*-------------------------------------------------------
|
||||
* itemType: Line
|
||||
*-------------------------------------------------------
|
||||
pvs=0(Visibility),1(Alarm)
|
||||
controlPoints=1,2
|
||||
*-------------------------------------------------------
|
||||
* itemType: Triangle
|
||||
*-------------------------------------------------------
|
||||
pvs=0(Visibility),1(Alarm)
|
||||
controlPoints=1,2
|
||||
*-------------------------------------------------------
|
||||
* itemType: Circle
|
||||
*-------------------------------------------------------
|
||||
pvs=0(Visibility),1(Alarm)
|
||||
controlPoints=1,2,11,12
|
||||
contextActions(editmode)=10(ClosePath),21(Pie),20(Arc),30(90deg),31(180deg),32(270deg),33(360deg)
|
||||
*-------------------------------------------------------
|
||||
* itemType: Polygon
|
||||
*-------------------------------------------------------
|
||||
pvs=0(Visibility),1(Alarm)
|
||||
controlPoints=1,2
|
||||
*-------------------------------------------------------
|
||||
* itemType: Path
|
||||
*-------------------------------------------------------
|
||||
pvs=0(Visibility),1(Alarm)
|
||||
controlPoints=1,2
|
||||
contextActions(editmode)=10(ClosePath),11(FillSolid),20(OddEven),21(Winding)
|
||||
*-------------------------------------------------------
|
||||
* itemType: Text
|
||||
*-------------------------------------------------------
|
||||
pvs=0(Visibility),1(Alarm)
|
||||
controlPoints=1,2
|
||||
*-------------------------------------------------------
|
||||
* itemType: Image
|
||||
*-------------------------------------------------------
|
||||
pvs=0(Visibility),1(Alarm),2(Monitor)
|
||||
controlPoints=1,2
|
||||
*-------------------------------------------------------
|
||||
* itemType: Symbol
|
||||
*-------------------------------------------------------
|
||||
pvs=0(Visibility),1(Alarm)
|
||||
controlPoints=1,2
|
||||
*-------------------------------------------------------
|
||||
* itemType: AttachLabel
|
||||
*-------------------------------------------------------
|
||||
pvs=0(Visibility),1(Alarm)
|
||||
controlPoints=1,2
|
||||
*-------------------------------------------------------
|
||||
* itemType: AttachTransform
|
||||
*-------------------------------------------------------
|
||||
pvs=0(Visibility),1(Alarm)
|
||||
controlPoints=1,2
|
||||
*-------------------------------------------------------
|
||||
* itemType: Frame
|
||||
*-------------------------------------------------------
|
||||
pvs=0(Visibility),1(Alarm)
|
||||
controlPoints=1,2
|
||||
*-------------------------------------------------------
|
||||
* itemType: ScrollArea
|
||||
*-------------------------------------------------------
|
||||
pvs=0(Visibility),1(Alarm)
|
||||
controlPoints=1,2
|
||||
*-------------------------------------------------------
|
||||
* itemType: GroupBox
|
||||
*-------------------------------------------------------
|
||||
pvs=0(Visibility),1(Alarm)
|
||||
controlPoints=1,2
|
||||
*-------------------------------------------------------
|
||||
* itemType: Stacked
|
||||
*-------------------------------------------------------
|
||||
pvs=0(Visibility),1(Alarm)
|
||||
controlPoints=1,2
|
||||
contextActions(editmode)=100(Add Tab),101(Delete Tab)
|
||||
*-------------------------------------------------------
|
||||
* itemType: SubPicture
|
||||
*-------------------------------------------------------
|
||||
pvs=0(Visibility),1(Alarm)
|
||||
controlPoints=1,2
|
||||
*-------------------------------------------------------
|
||||
* itemType: MonitorText
|
||||
*-------------------------------------------------------
|
||||
pvs=0(Visibility),1(Alarm),2(Monitor)
|
||||
controlPoints=1,2,10
|
||||
contextActions(editmode)=1(Show Unit)
|
||||
*-------------------------------------------------------
|
||||
* itemType: MonitorBar
|
||||
*-------------------------------------------------------
|
||||
pvs=0(Visibility),1(Alarm),2(Monitor),3(Monitor)
|
||||
controlPoints=1,2,10,11
|
||||
contextActions(editmode)=30(No),31(Gradient),32(Solid),33(Warning&Alarm Gradient),34(Warning&Alarm Solid),35(Alarm Solid),36(Warning Solid),20(No),21(Inside),22(Outside)
|
||||
*-------------------------------------------------------
|
||||
* itemType: MonitorMeter
|
||||
*-------------------------------------------------------
|
||||
pvs=0(Visibility),1(Alarm),2(Monitor),3(Monitor)
|
||||
controlPoints=1,2,10,11
|
||||
contextActions(editmode)=30(No),31(Gradient),32(Solid),33(Warning&Alarm Gradient),34(Warning&Alarm Solid),35(Alarm Solid),36(Warning Solid),20(No),21(Inside),22(Outside),50(Two Third),51(Three Quarters),60(Upper Half),70(TopRight Quarter),71(TopLeft Quarter),72(BotRight Quarter),73(BotLeft Quarter)
|
||||
*-------------------------------------------------------
|
||||
* itemType: MonitorIndic
|
||||
*-------------------------------------------------------
|
||||
pvs=0(Visibility),1(Alarm),2(Monitor)
|
||||
controlPoints=1,2
|
||||
*-------------------------------------------------------
|
||||
* itemType: MonitorBits
|
||||
*-------------------------------------------------------
|
||||
pvs=0(Visibility),1(Alarm),2(Monitor)
|
||||
controlPoints=1,2
|
||||
contextActions(editmode)=1(Up),2(Down),3(Left),4(Right)
|
||||
*-------------------------------------------------------
|
||||
* itemType: MonitorBitnames
|
||||
*-------------------------------------------------------
|
||||
pvs=0(Visibility),1(Alarm),2(Monitor),3(Monitor)
|
||||
controlPoints=1,2
|
||||
contextActions(editmode)=1(Up),2(Down),3(Left),4(Right)
|
||||
*-------------------------------------------------------
|
||||
* itemType: StateSymbol
|
||||
*-------------------------------------------------------
|
||||
pvs=0(Visibility),1(Alarm),2(Monitor)
|
||||
controlPoints=1,2
|
||||
*-------------------------------------------------------
|
||||
* itemType: MonitorStripChart
|
||||
*-------------------------------------------------------
|
||||
pvs=0(Visibility),1(Alarm),2(Monitor),3(Monitor),4(Monitor),5(Monitor),6(Monitor),7(Monitor),8(Monitor),9(Monitor),10(Monitor)
|
||||
controlPoints=1,2
|
||||
contextActions(editmode)=30(PV),31(Received),10(None),11(TopLeft),12(Top),13(TopRight),14(Right),15(BottomRight),16(Bottom),17(BottomLeft),18(Left),40(Absolut),41(Relative),60(Right to Left),61(Left to Right),50(None),51(Horizontal),52(Vertical),53(Hor&Vert)
|
||||
contextActions(runtime)=80(Clear Curve),30(PV),31(Received),10(None),11(TopLeft),12(Top),13(TopRight),14(Right),15(BottomRight),16(Bottom),17(BottomLeft),18(Left),40(Absolut),41(Relative),60(Right to Left),61(Left to Right),50(None),51(Horizontal),52(Vertical),53(Hor&Vert)
|
||||
*-------------------------------------------------------
|
||||
* itemType: MonitorXYPlot
|
||||
*-------------------------------------------------------
|
||||
pvs=0(Visibility),1(Alarm),10(Monitor),18(Monitor),11(Monitor),19(Monitor),12(Monitor),20(Monitor),13(Monitor),21(Monitor),14(Monitor),22(Monitor),15(Monitor),23(Monitor),16(Monitor),24(Monitor),17(Monitor),25(Monitor),3(Monitor),2(Monitor),4(Monitor),50(Monitor),52(Monitor),51(Monitor),53(Monitor)
|
||||
controlPoints=1,2
|
||||
contextActions(editmode)=30(PV),31(Received),10(None),11(TopLeft),12(Top),13(TopRight),14(Right),15(BottomRight),16(Bottom),17(BottomLeft),18(Left),50(None),51(Horizontal),52(Vertical),53(Hor&Vert)
|
||||
contextActions(runtime)=80(Clear Plot),30(PV),31(Received),10(None),11(TopLeft),12(Top),13(TopRight),14(Right),15(BottomRight),16(Bottom),17(BottomLeft),18(Left),50(None),51(Horizontal),52(Vertical),53(Hor&Vert)
|
||||
*-------------------------------------------------------
|
||||
* itemType: MonitorCamera
|
||||
*-------------------------------------------------------
|
||||
pvs=0(Visibility),1(Alarm),2(Monitor),3(Monitor),4(Monitor),5(Monitor),6(Monitor)
|
||||
controlPoints=1,2,10,11
|
||||
contextActions(editmode)=21(Information),20(Histogram),22(Level Bar),11(<Disable All>),1(Default),2(Grey),3(Spectrum),4(Automatic Levels)
|
||||
contextActions(runtime)=21(Information),20(Histogram),22(Level Bar),11(<Disable All>),1(Default),2(Grey),3(Spectrum),4(Automatic Levels)
|
||||
*-------------------------------------------------------
|
||||
* itemType: MonitorTable
|
||||
*-------------------------------------------------------
|
||||
pvs=0(Visibility),1(Alarm)
|
||||
controlPoints=1,2,100,101,102
|
||||
*-------------------------------------------------------
|
||||
* itemType: MonitorWaterfallPlot
|
||||
*-------------------------------------------------------
|
||||
pvs=0(Visibility),1(Alarm),2(Monitor),3(Monitor),4(Monitor)
|
||||
controlPoints=1,2,10,11
|
||||
contextActions(editmode)=30(Scroll),31(Repeate),32(Single),40(Down),41(Up),21(Information),20(Intensity),22(Grid),11(<Disable All>),2(Grey),3(Spectrum0),4(Spectrum1)
|
||||
contextActions(runtime)=90(Clear Plot),30(Scroll),31(Repeate),32(Single),40(Down),41(Up),21(Information),20(Intensity),22(Grid),11(<Disable All>),2(Grey),3(Spectrum0),4(Spectrum1)
|
||||
*-------------------------------------------------------
|
||||
* itemType: ControlKnob
|
||||
*-------------------------------------------------------
|
||||
pvs=0(Visibility),1(Alarm),2(Control)
|
||||
controlPoints=1,2,10,11
|
||||
contextActions(editmode)=10(Unit),30(No),31(Gradient),32(Solid),33(Warning&Alarm Gradient),34(Warning&Alarm Solid),35(Alarm Solid),36(Warning Solid)
|
||||
*-------------------------------------------------------
|
||||
* itemType: ControlSlider
|
||||
*-------------------------------------------------------
|
||||
pvs=0(Visibility),1(Alarm),2(Control),3(Monitor)
|
||||
controlPoints=1,2,10,11
|
||||
contextActions(editmode)=30(No),31(Gradient),32(Solid),33(Warning&Alarm Gradient),34(Warning&Alarm Solid),35(Alarm Solid),36(Warning Solid),20(No),21(Inside),22(Outside)
|
||||
*-------------------------------------------------------
|
||||
* itemType: ControlTextEntry
|
||||
*-------------------------------------------------------
|
||||
pvs=0(Visibility),1(Alarm),2(Control)
|
||||
controlPoints=1,2,10
|
||||
contextActions(editmode)=1(Show Unit)
|
||||
*-------------------------------------------------------
|
||||
* itemType: ControlNumeric
|
||||
*-------------------------------------------------------
|
||||
pvs=0(Visibility),1(Alarm),2(Control)
|
||||
controlPoints=1,2,10
|
||||
contextActions(editmode)=1(Show Unit)
|
||||
*-------------------------------------------------------
|
||||
* itemType: ControlMessageButton
|
||||
*-------------------------------------------------------
|
||||
pvs=0(Visibility),1(Alarm),2(Control)
|
||||
controlPoints=1,2
|
||||
*-------------------------------------------------------
|
||||
* itemType: ControlChoiceButton
|
||||
*-------------------------------------------------------
|
||||
pvs=0(Visibility),1(Alarm),2(Control)
|
||||
controlPoints=1,2
|
||||
*-------------------------------------------------------
|
||||
* itemType: ControlCheckBox
|
||||
*-------------------------------------------------------
|
||||
pvs=0(Visibility),1(Alarm),2(Control)
|
||||
controlPoints=1,2
|
||||
*-------------------------------------------------------
|
||||
* itemType: ActionDisplayGroup
|
||||
*-------------------------------------------------------
|
||||
pvs=0(Visibility),1(Alarm)
|
||||
controlPoints=1,2
|
||||
*-------------------------------------------------------
|
||||
* itemType: ActionLoadPicture
|
||||
*-------------------------------------------------------
|
||||
pvs=0(Visibility),1(Alarm)
|
||||
controlPoints=1,2
|
||||
*-------------------------------------------------------
|
||||
* itemType: ActionShellCommand
|
||||
*-------------------------------------------------------
|
||||
pvs=0(Visibility),1(Alarm)
|
||||
controlPoints=1,2
|
||||
*-------------------------------------------------------
|
||||
* itemType: PropertyModifierCheckBox
|
||||
*-------------------------------------------------------
|
||||
pvs=0(Visibility),1(Alarm)
|
||||
controlPoints=1,2
|
||||
*-------------------------------------------------------
|
||||
* itemType: ScriptContext2d
|
||||
*-------------------------------------------------------
|
||||
pvs=0(Visibility),1(Alarm)
|
||||
controlPoints=1,2
|
||||
*-------------------------------------------------------
|
||||
* itemType: ScriptActionButton
|
||||
*-------------------------------------------------------
|
||||
pvs=0(Visibility),1(Alarm)
|
||||
controlPoints=1,2
|
||||
*-------------------------------------------------------
|
||||
* itemType: BackgroundImage
|
||||
*-------------------------------------------------------
|
||||
pvs=0(Visibility),1(Alarm),2(Monitor)
|
||||
*-------------------------------------------------------
|
||||
* itemType: TestEvents
|
||||
*-------------------------------------------------------
|
||||
pvs=0(Visibility),1(Alarm)
|
||||
controlPoints=1,2
|
||||
*-------------------------------------------------------
|
||||
* itemType: TestTGeneric
|
||||
*-------------------------------------------------------
|
||||
pvs=0(Visibility),1(Alarm)
|
||||
controlPoints=1,2
|
||||
*-------------------------------------------------------
|
||||
* itemType: TestArea
|
||||
*-------------------------------------------------------
|
||||
pvs=0(Visibility),1(Alarm)
|
||||
controlPoints=1,2
|
||||
*-------------------------------------------------------
|
||||
* itemType: Button
|
||||
*-------------------------------------------------------
|
||||
pvs=0(Visibility),1(Alarm)
|
||||
controlPoints=1,2
|
||||
*-------------------------------------------------------
|
||||
* itemType: SymOriginPosition
|
||||
*-------------------------------------------------------
|
||||
pvs=0(Visibility),1(Alarm)
|
||||
*-------------------------------------------------------
|
||||
* itemType: SymConnectionPoint
|
||||
*-------------------------------------------------------
|
||||
pvs=0(Visibility),1(Alarm)
|
||||
*-------------------------------------------------------
|
||||
* itemType: SymConnectionLine
|
||||
*-------------------------------------------------------
|
||||
pvs=0(Visibility),1(Alarm)
|
||||
controlPoints=100
|
||||
*-------------------------------------------------------
|
||||
* itemType: SymElmFrame
|
||||
*-------------------------------------------------------
|
||||
pvs=0(Visibility),1(Alarm)
|
||||
*-------------------------------------------------------
|
||||
* itemType: SymElmRectangle
|
||||
*-------------------------------------------------------
|
||||
pvs=0(Visibility),1(Alarm)
|
||||
*-------------------------------------------------------
|
||||
* itemType: SymElmCircle
|
||||
*-------------------------------------------------------
|
||||
pvs=0(Visibility),1(Alarm)
|
||||
controlPoints=11,12
|
||||
contextActions(editmode)=10(ClosePath),21(Pie),20(Arc),30(90deg),31(180deg),32(270deg),33(360deg)
|
||||
*-------------------------------------------------------
|
||||
* itemType: SymElmText
|
||||
*-------------------------------------------------------
|
||||
pvs=0(Visibility),1(Alarm)
|
||||
*-------------------------------------------------------
|
||||
* itemType: SymElmPath
|
||||
*-------------------------------------------------------
|
||||
pvs=0(Visibility),1(Alarm)
|
||||
contextActions(editmode)=10(ClosePath),11(FillSolid),20(OddEven),21(Winding)
|
||||
*-------------------------------------------------------
|
||||
* itemType: SymElmImage
|
||||
*-------------------------------------------------------
|
||||
pvs=0(Visibility),1(Alarm),2(Monitor)
|
||||
*-------------------------------------------------------
|
||||
* itemType: Cross
|
||||
*-------------------------------------------------------
|
||||
pvs=0(Visibility),1(Alarm)
|
||||
controlPoints=1,2
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -2,7 +2,7 @@ import sys
|
||||
|
||||
sys.path.append("..")
|
||||
from ..devices_general.motors import MotorRecord, MotorRecord_new
|
||||
from ..devices_general.adjustable import PvRecord
|
||||
from ..devices_general.adjustable import PvRecord, AdjustableVirtual
|
||||
|
||||
from epics import PV
|
||||
from ..aliases import Alias, append_object_to_object
|
||||
@@ -12,6 +12,7 @@ import subprocess
|
||||
from ..elements.assembly import Assembly
|
||||
from ..detector.jungfrau import Jungfrau
|
||||
from .kappa_conversion import kappa2you, you2kappa
|
||||
import numpy as np
|
||||
|
||||
|
||||
def addMotorRecordToSelf(self, name=None, Id=None):
|
||||
@@ -189,6 +190,292 @@ class DeltaTauCurrOff:
|
||||
self.set_off()
|
||||
|
||||
|
||||
class XRDYou(Assembly):
|
||||
def __init__(self, name=None, Id=None, configuration=["base"], diff_detector=None):
|
||||
"""X-ray diffractometer platform in AiwssFEL Bernina.\
|
||||
<configuration> : list of elements mounted on
|
||||
the plaform, options are kappa, nutable, hlgonio, polana"""
|
||||
# self.Id = Id
|
||||
super().__init__(name=name)
|
||||
self.configuration = configuration
|
||||
|
||||
if "base" in self.configuration:
|
||||
### motors base platform ###
|
||||
### motors base platform ###
|
||||
self._append(MotorRecord_new, Id + ":MOT_TX", name="xbase", is_setting=True)
|
||||
self._append(MotorRecord_new, Id + ":MOT_TY", name="ybase", is_setting=True)
|
||||
self._append(
|
||||
MotorRecord_new, Id + ":MOT_RX", name="rxbase", is_setting=True
|
||||
)
|
||||
self._append(
|
||||
MotorRecord_new, Id + ":MOT_MY_RYTH", name="mu", is_setting=True
|
||||
)
|
||||
self.set_base_off = DeltaTauCurrOff("SARES21-XRD:asyn4.AOUT")
|
||||
|
||||
if "arm" in self.configuration:
|
||||
### motors XRD detector arm ###
|
||||
self._append(
|
||||
MotorRecord_new, Id + ":MOT_NY_RY2TH", name="nu", is_setting=True
|
||||
)
|
||||
self._append(
|
||||
MotorRecord_new, Id + ":MOT_DT_RX2TH", name="delta", is_setting=True
|
||||
)
|
||||
### motors XRD area detector branch ###
|
||||
self._append(MotorRecord_new, Id + ":MOT_D_T", name="tdet", is_setting=True)
|
||||
|
||||
### motors XRD polarisation analyzer branch ###
|
||||
self._append(MotorRecord_new, Id + ":MOT_P_T", name="tpol", is_setting=True)
|
||||
# missing: slits of flight tube
|
||||
self.set_detarm_off = DeltaTauCurrOff("SARES21-XRD:asyn3.AOUT")
|
||||
|
||||
if "hlxz" in self.configuration:
|
||||
### motors heavy load goniometer ###
|
||||
self._append(
|
||||
MotorRecord_new, Id + ":MOT_TBL_TX", name="xhl", is_setting=True
|
||||
)
|
||||
self._append(
|
||||
MotorRecord_new, Id + ":MOT_TBL_TZ", name="zhl", is_setting=True
|
||||
)
|
||||
self.set_phi_off = DeltaTauCurrOff("SARES21-XRD:asyn1.AOUT")
|
||||
if "hly" in self.configuration:
|
||||
self._append(
|
||||
MotorRecord_new, Id + ":MOT_TBL_TY", name="yhl", is_setting=True
|
||||
)
|
||||
self.set_phi_off = DeltaTauCurrOff("SARES21-XRD:asyn1.AOUT")
|
||||
|
||||
if "hlrxrz" in self.configuration:
|
||||
try:
|
||||
self._append(
|
||||
MotorRecord_new, Id + ":MOT_TBL_RX", name="rxhl", is_setting=True
|
||||
)
|
||||
except:
|
||||
print("XRD.rxhl not found")
|
||||
pass
|
||||
try:
|
||||
self._append(
|
||||
MotorRecord_new, Id + ":MOT_TBL_RY", name="rzhl", is_setting=True
|
||||
)
|
||||
except:
|
||||
print("XRD.rzhl not found")
|
||||
self.set_phi_off = DeltaTauCurrOff("SARES21-XRD:asyn1.AOUT")
|
||||
|
||||
if "phi_table" in self.configuration:
|
||||
### motors nu table ###
|
||||
self._append(
|
||||
MotorRecord_new, Id + ":MOT_HEX_TX", name="tphi", is_setting=True
|
||||
)
|
||||
self._append(
|
||||
MotorRecord_new, Id + ":MOT_HEX_RX", name="phi", is_setting=True
|
||||
)
|
||||
|
||||
if "phi_hex" in self.configuration:
|
||||
### motors PI hexapod ###
|
||||
append_object_to_object(
|
||||
self,
|
||||
PvRecord,
|
||||
"SARES20-HEX_PI:SET-POSI-X",
|
||||
pvreadbackname="SARES20-HEX_PI:POSI-X",
|
||||
name="xhex",
|
||||
)
|
||||
append_object_to_object(
|
||||
self,
|
||||
PvRecord,
|
||||
"SARES20-HEX_PI:SET-POSI-Y",
|
||||
pvreadbackname="SARES20-HEX_PI:POSI-Y",
|
||||
name="yhex",
|
||||
)
|
||||
append_object_to_object(
|
||||
self,
|
||||
PvRecord,
|
||||
"SARES20-HEX_PI:SET-POSI-Z",
|
||||
pvreadbackname="SARES20-HEX_PI:POSI-Z",
|
||||
name="zhex",
|
||||
)
|
||||
append_object_to_object(
|
||||
self,
|
||||
PvRecord,
|
||||
"SARES20-HEX_PI:SET-POSI-U",
|
||||
pvreadbackname="SARES20-HEX_PI:POSI-U",
|
||||
name="uhex",
|
||||
)
|
||||
append_object_to_object(
|
||||
self,
|
||||
PvRecord,
|
||||
"SARES20-HEX_PI:SET-POSI-V",
|
||||
pvreadbackname="SARES20-HEX_PI:POSI-V",
|
||||
name="vhex",
|
||||
)
|
||||
append_object_to_object(
|
||||
self,
|
||||
PvRecord,
|
||||
"SARES20-HEX_PI:SET-POSI-W",
|
||||
pvreadbackname="SARES20-HEX_PI:POSI-W",
|
||||
name="whex",
|
||||
)
|
||||
|
||||
if "kappa" in self.configuration:
|
||||
self._append(
|
||||
MotorRecord_new,
|
||||
"SARES21-XRD:MOT_KAP_KRX",
|
||||
name="eta_kap",
|
||||
is_setting=True,
|
||||
)
|
||||
self._append(
|
||||
MotorRecord_new,
|
||||
"SARES21-XRD:MOT_KAP_KAP",
|
||||
name="kappa",
|
||||
is_setting=True,
|
||||
)
|
||||
self._append(
|
||||
MotorRecord_new,
|
||||
"SARES21-XRD:MOT_KAP_KPH",
|
||||
name="phi_kap",
|
||||
is_setting=True,
|
||||
)
|
||||
self._append(
|
||||
MotorRecord_new, "SARES21-XRD:MOT_KAP_DTY", name="zkap", is_setting=True
|
||||
)
|
||||
self._append(
|
||||
MotorRecord_new, "SARES21-XRD:MOT_KAP_DTX", name="xkap", is_setting=True
|
||||
)
|
||||
self._append(
|
||||
MotorRecord_new, "SARES21-XRD:MOT_KAP_DTZ", name="ykap", is_setting=True
|
||||
)
|
||||
self._append(
|
||||
MotorRecord_new,
|
||||
"SARES21-XRD:MOT_KAP_DRX",
|
||||
name="rxkap",
|
||||
is_setting=True,
|
||||
)
|
||||
self._append(
|
||||
MotorRecord_new,
|
||||
"SARES21-XRD:MOT_KAP_DRZ",
|
||||
name="rykap",
|
||||
is_setting=True,
|
||||
)
|
||||
self.set_kappa_off = DeltaTauCurrOff("SARES21-XRD:asyn1.AOUT")
|
||||
|
||||
def get_current_kappa2you(self):
|
||||
return self.calc_kappa2you(
|
||||
self.eta_kap.get_current_value(),
|
||||
self.kappa.get_current_value(),
|
||||
self.phi_kap.get_current_value(),
|
||||
)
|
||||
|
||||
def set_youvar_value_to_current_kappa(value, varind):
|
||||
vars = list(get_current_kappa2you())
|
||||
vars[varind] = value
|
||||
return self.calc_you2kappa(*vars)
|
||||
|
||||
self._append(
|
||||
AdjustableVirtual,
|
||||
[self.eta_kap, self.kappa, self.phi_kap],
|
||||
lambda eta_kap, kappa, phi_kap: self.calc_kappa2you(
|
||||
eta_kap, kappa, phi_kap
|
||||
)[0],
|
||||
lambda value_eta: set_youvar_value_to_current_kappa(value_eta, 0),
|
||||
name="eta",
|
||||
)
|
||||
self._append(
|
||||
AdjustableVirtual,
|
||||
[self.eta_kap, self.kappa, self.phi_kap],
|
||||
lambda eta_kap, kappa, phi_kap: self.calc_kappa2you(
|
||||
eta_kap, kappa, phi_kap
|
||||
)[1],
|
||||
lambda value_chi: set_youvar_value_to_current_kappa(value_eta, 1),
|
||||
name="chi",
|
||||
)
|
||||
self._append(
|
||||
AdjustableVirtual,
|
||||
[self.eta_kap, self.kappa, self.phi_kap],
|
||||
lambda eta_kap, kappa, phi_kap: self.calc_kappa2you(
|
||||
eta_kap, kappa, phi_kap
|
||||
)[2],
|
||||
lambda value_eta: set_youvar_value_to_current_kappa(value_eta, 2),
|
||||
name="phi",
|
||||
)
|
||||
|
||||
if diff_detector:
|
||||
self._append(
|
||||
Jungfrau,
|
||||
diff_detector["jf_id"],
|
||||
name="det_diff",
|
||||
is_setting=False,
|
||||
is_status=True,
|
||||
view_toplevel_only=True,
|
||||
)
|
||||
|
||||
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 gui(self, guiType="xdm"):
|
||||
""" Adjustable convention"""
|
||||
cmd = ["caqtdm", "-macro"]
|
||||
cmd = [
|
||||
"-noMsg",
|
||||
"-stylefile",
|
||||
"sfop.qss",
|
||||
"-macro",
|
||||
"P=SARES21-XRD",
|
||||
"/sf/common/config/qt/ESB_XRD_exp.ui",
|
||||
]
|
||||
return subprocess.Popen(" ".join(cmd), shell=True)
|
||||
|
||||
# def calc_kappa2you(self, eta_k, kappa, phi_k):
|
||||
# return kappa2you(eta_k, kappa, phi_k)
|
||||
|
||||
# def calc_you2kappa(self, eta, chi, phi):
|
||||
# return you2kappa(eta, chi, phi)
|
||||
|
||||
def calc_you2kappa(
|
||||
self, eta, chi, phi, kappa_angle=60, degrees=True, bernina_kappa=True
|
||||
):
|
||||
"""tool to convert from you definition angles to kappa angles, in
|
||||
particular the bernina kappa where the"""
|
||||
if degrees:
|
||||
eta, chi, phi, kappa_angle = np.deg2rad([eta, chi, phi, kappa_angle])
|
||||
delta_angle = np.arcsin(-np.tan(chi / 2) / np.tan(kappa_angle))
|
||||
eta_k = eta - delta_angle
|
||||
kappa = 2 * np.arcsin(np.sin(chi / 2) / np.sin(kappa_angle))
|
||||
phi_k = phi - delta_angle
|
||||
|
||||
if bernina_kappa:
|
||||
eta_k = eta_k - np.pi / 2
|
||||
kappa = -kappa
|
||||
phi_k = -phi_k
|
||||
if degrees:
|
||||
eta_k, kappa, phi_k = np.rad2deg([eta_k, kappa, phi_k])
|
||||
return eta_k, kappa, phi_k
|
||||
|
||||
def calc_kappa2you(
|
||||
self, eta_k, kappa, phi_k, kappa_angle=60, degrees=True, bernina_kappa=True
|
||||
):
|
||||
if degrees:
|
||||
eta_k, kappa, phi_k, kappa_angle = np.deg2rad(
|
||||
[eta_k, kappa, phi_k, kappa_angle]
|
||||
)
|
||||
if bernina_kappa:
|
||||
eta_k = eta_k + np.pi / 2
|
||||
kappa = -kappa
|
||||
phi_k = -phi_k
|
||||
delta_angle = np.arctan(np.tan(kappa / 2) * np.cos(kappa_angle))
|
||||
eta = eta_k - delta_angle
|
||||
chi = 2 * np.arcsin(np.sin(kappa / 2) * np.sin(kappa_angle))
|
||||
phi = phi_k - delta_angle
|
||||
if degrees:
|
||||
eta, chi, phi = np.rad2deg([eta, chi, phi])
|
||||
return eta, chi, phi
|
||||
|
||||
# def __repr__(self):
|
||||
# return self.get_adjustable_positions_str()
|
||||
|
||||
|
||||
class XRD(Assembly):
|
||||
def __init__(self, name=None, Id=None, configuration=["base"], diff_detector=None):
|
||||
"""X-ray diffractometer platform in AiwssFEL Bernina.\
|
||||
|
||||
Reference in New Issue
Block a user