diff --git a/channels.py b/channels.py index 3bb3dc8..5230977 100644 --- a/channels.py +++ b/channels.py @@ -17,7 +17,7 @@ channels = [ "SATOP31-PMOS132-2D:SPECTRUM_FWHM", "SATOP31-PMOS132-2D:SPECTRUM_X", "SATOP31-PMOS132-2D:SPECTRUM_Y", -# "SATOP31-PMOS132-2D:FPICTURE", + # "SATOP31-PMOS132-2D:FPICTURE", "SATOP31-PMOS132-2D:processing_parameters", # "SATES30-CVME-EVR0:CALCS", # "SATES30-LSCP10-FNS:CH0:WFMi", @@ -61,7 +61,7 @@ channels = [ "SLAAT31-LTIM01-EVR0:CALCU", "SLAAT01-LCAM-C603:FPICTURE", "SLAAT01-LCAM-C604:FPICTURE", - # "SATOP11-PSAS079:FPICTURE", + #"SATOP11-PSAS079:FPICTURE", "SAT-CVME-TIFALL5:EvtSet", "SAT-CVME-TIFALL6:EvtSet", "SATOP31-PMOS132-2D:SPECTRUM_X", @@ -161,6 +161,10 @@ pvs = [ "SATOP11-PSAS079:MOT_UG_X.RBV", "SATOP11-PSAS079:MOT_UG_Y.RBV", "SATOP11-PSAS079:MOT_UG_Z.RBV", + "SATOP11-PSAS079:MOT_DG_X.RBV", + "SATOP11-PSAS079:MOT_DG_Y.RBV", + "SATOP11-PSAS079:MOT_DG_Z.RBV", + "SATOP11-PSAS079:MOT_DG_RZ.RBV", "SATOP11-PSAS079:MOT_DDC_Y.RBV", "SATOP11-PSAS079:MOT_DDCAM_Y.RBV", "SATOP11-PSAS079:MOT_DDF_X.RBV", diff --git a/furka.py b/furka.py index 145411d..c4d1c9f 100644 --- a/furka.py +++ b/furka.py @@ -206,7 +206,7 @@ spreadsheet = Spreadsheet(spreadsheet_info, placeholders=["comment", "sample"], instrument = "furka" -pgroup = "p21645" #User p group +pgroup = "p21972" #User p group #check_intensity = PVCondition("SATFE10-PEPG046:FCUP-INTENSITY-CAL", vmin=5, vmax=None, wait_time=3, required_fraction=0.8) check_intensity = PVCondition("SATBD01-DBPM060:Q2", vmin=5, vmax=None, wait_time=1, required_fraction=0.8) @@ -306,23 +306,29 @@ def KBh_Pointing(KBh_RYv): print("KBh pointing change done") -def GoToXAS_RIXS(TRYv, Del_or_Norm, ESv, GAv, MonoNewv, HWPv, KBv_B1v, KBv_B2v, KBh_B1v, KBh_B2v, KBv_RXv, KBh_RYv, DC_updownv ): +def GoToXAS_RIXS(RYv, TwoTRYv, Del_or_Norm, ESv, GAv, MonoNewv, HWPv, KBv_B1v, KBv_B2v, KBh_B1v, KBh_B2v, KBv_RXv, KBh_RYv, DC_updownv ): #close shutter caput('SATOP31-OPSH138:REQUEST', 'close') - caput('SATES30-MCS003:MOT_5.VAL', DC_updownv) - print("DC target moved") + #caput('SATES30-MCS003:MOT_5.VAL', DC_updownv) + #print("DC target moved") + KBv_Focusing(KBv_B1v-0.1, KBv_B2v-0.1) KBv_Focusing(KBv_B1v, KBv_B2v) KBv_Pointing(KBv_RXv) + KBh_Focusing(KBh_B1v-0.1, KBh_B2v-0.1) KBh_Focusing(KBh_B1v, KBh_B2v) KBh_Pointing(KBh_RYv) - TwoTRY.set_target_value(TRYv).wait() - print("2TRY movement done") + print("KB pointing done") + TwoTRY.set_target_value(TwoTRYv).wait() + print("2TRY done") + mu.set_target_value(RYv) + print("RY movement done") if Del_or_Norm == "Del": caput('SLAAT01-LTIM-PDLY:DELAYEDSHOT.PROC', 1 ) else: caput('SLAAT01-LTIM-PDLY:NORMAL.PROC', 1 ) print("delay mode done") - #Mon_ES.set_target_value(ESv).wait() + Mon_ES.set_target_value(ESv).wait() + print("Exit slit done") gas_attenuator_trans.set_target_value(GAv).wait() print("GA done") mono_new.set_target_value( MonoNewv).wait() @@ -335,23 +341,23 @@ def GoToXAS_RIXS(TRYv, Del_or_Norm, ESv, GAv, MonoNewv, HWPv, KBv_B1v, KBv_B2v, @as_shortcut def TrXAS_pos(name = "TrXAS Positions"): - GoToXAS_RIXS(85, "Del", 400, 1.0, 528.6, 44, 3.221, 3.444, 3.723, 3.917, 13.218, 13.215, -11.8) + GoToXAS_RIXS(-44.8, 45, "Del", 400, 1.0, 578.2, 22.0, 3.8459, 3.8378, 3.8200, 4.0200, 13.1998, 13.11231, 0.0) @as_shortcut def RIXS_pos(name = "RIXS Positions"): - GoToXAS_RIXS(85, "Norm", 100, 0.8, 528.6, 44, 3.0678, 3.3279, 3.023, 3.217, 13.233, 13.245, 4) + GoToXAS_RIXS(-36.8,50, "Norm", 70, 0.2, 576.8, 22.0, 3.1890, 3.340, 3.810, 4.010, 13.188, 13.128, 4) -@as_shortcut -def EOS_pos(name = "EOS Positions"): - Diffr_pos(148.26, 80.5, 1.3, 5.12, -3.0, 0, -90, -4.0) +#@as_shortcut +#def EOS_pos(name = "EOS Positions"): +# Diffr_pos(148.26, 80.5, 1.3, 5.12, -3.0, 0, -90, -4.0) -@as_shortcut -def CTape_pos(name = "X-ray knife edge"): - Diffr_pos(85, 95, -1, -1.6, -1.5, 0, -30, 0) +#@as_shortcut +#def CTape_pos(name = "X-ray knife edge"): +# Diffr_pos(85, 95, -1, -1.6, -1.5, 0, -30, 0) -@as_shortcut -def xray_knife(name = "X-ray knife edge"): - Diffr_pos(125, 165.3, 0, 2.0, -6.5, 0, -90, -3.0) +#@as_shortcut +#def xray_knife(name = "X-ray knife edge"): +# Diffr_pos(125, 165.3, 0, 2.0, -6.5, 0, -90, -3.0) #@as_shortcut #def Sample_position_RIXS(name = "Sample Positions RIXS"): @@ -361,9 +367,9 @@ def xray_knife(name = "X-ray knife edge"): #def EOS_LV_pos(name = "EOS LV Positions"): # Diffr_pos(149.440, 29.5, 3.0, 2.5, -0.69, 15, 82, 0) -@as_shortcut -def Transfer_pos(name = "Transfer Positions"): - Diffr_pos(148.40, 80.5, 4.21, -2.0, -0.5, 0, 60, 0) +#@as_shortcut +#def Transfer_pos(name = "Transfer Positions"): +# Diffr_pos(148.40, 80.5, 4.21, -2.0, -0.5, 0, 60, 0) print("To start the GUI, run: gui()") diff --git a/furka_modified.py b/furka_modified.py new file mode 100644 index 0000000..274b63f --- /dev/null +++ b/furka_modified.py @@ -0,0 +1,377 @@ +#!/usr/bin/env python + +from slic.core.acquisition import SFAcquisition +from slic.core.acquisition import PVAcquisition +from slic.core.acquisition import BSChannels, PVChannels, DetectorConfig +#from slic.core.acquisition import FakeAcquisition +from slic.core.adjustable import PVAdjustable, DummyAdjustable +from slic.core.condition import PVCondition +from slic.core.device import SimpleDevice +from slic.core.scanner import Scanner +from slic.devices.general.delay_stage import DelayStage +from slic.devices.general.motor import Motor +from slic.devices.general.smaract import SmarActAxis +from slic.gui import GUI +from slic.utils import devices +from slic.utils import as_shortcut, Marker + +from spreadsheet import overview, print_overview, print_line_for_spreadsheet +from channels import channels, pvs +from sensors import * + +#from undulator import Undulators +#from undulator import Mono +#from undulator import Coupled_MonoUnd + +mono_new = PVAdjustable("SATOP11-OSGM087:SetEnergy", "SATOP11-OSGM087:photonenergy", accuracy=0.1, process_time=10, name="Mono new") + + +from tth import Coupled_tth, Coupled_tth_outer, Coupled_tth_RIXSside +from tth import LakeShore +from tth import Coupled_THzGate +from tth import Coupled_THzGate_fixedDelta + +from SASE_motions import SASE_coupled_camera + +from qspace import QSpace3D +from qspace import Wavelength +from qspace import HistoryDummy + +from constraints import ExtraConstraint + +from sasespec import sasespecs + + + +from epics import caput + +class ParkableMotor(Motor): + def park(self): + kill_pvname = self.pvname + "_KILL" + caput(kill_pvname, 1) + + + +dummy = DummyAdjustable(units="au") + + +from slic.devices.general.smaract import SmarActAxis +parab_RY = Motor("SATES30-MCS001:MOT_4", name="Parab RY") +parab_RX = Motor("SATES30-MCS001:MOT_7", name="Parab RX") +taget_along_beam = SmarActAxis("SATES30-XSMA184:MOT6", name="Target along beam") + +#Retro Chamber Motors +#mot_x = Motor("SATES30-RETRO:MOT_X", name="Retro X") +#mot_y = Motor("SATES30-RETRO:MOT_Y", name="Retro Y") +#mot_z = Motor("SATES30-RETRO:MOT_Z", name="Retro Z") +#mot_theta = Motor("SATES30-RETRO:MOT_RY", name="Retro Theta") +#retro = SimpleDevice("Retro Stages", x=mot_x, y=mot_y, z=mot_z, theta=mot_theta) + + +#Furka Kbs motors +KBv_RX = PVAdjustable("SATOP31-OKBV178:W_RX.VAL", pvname_moving="SATOP31-OKBV178:MOVING", name = "KB Ver RX") +KBv_B1 = PVAdjustable("SATOP31-OKBV178:BU.VAL", pvname_moving="SATOP31-OKBV178:MOVING", name = "KB Ver B1") +KBv_B2 = PVAdjustable("SATOP31-OKBV178:BD.VAL", pvname_moving="SATOP31-OKBV178:MOVING", name = "KB Ver B2") + + +KBh_RY = PVAdjustable("SATOP31-OKBH179:W_RY.VAL", pvname_moving="SATOP31-OKBH179:MOVING", name = "KB Horiz RY") +KBh_B1 = PVAdjustable("SATOP31-OKBH179:BU.VAL", pvname_moving="SATOP31-OKBH179:MOVING", name = "KB Hor B1") +KBh_B2 = PVAdjustable("SATOP31-OKBH179:BD.VAL", pvname_moving="SATOP31-OKBH179:MOVING", name = "KB Hor B2") + + + +## PMOS adjustables +PMOS127_FOCUS = PVAdjustable("SLAAT-GSLENS0:SET_CTS_POWER", process_time=1, name="PMOS127_FOCUS") +PMOS132_FOCUS = PVAdjustable("SLAAT-GSLENS1:SET_CTS_POWER", process_time=1, name="PMOS132_FOCUS") +#PMOS_FOCUS = PVAdjustable("SLAAT-GSLENS1:SET_CTS_POWER", process_time=1, name="PMOS_FOCUS") +MONO_G_rad = PVAdjustable("SATOP11-OSGM087:G_RADIUS", pvname_moving="SATOP11-OSGM087:MONO_STATUS", name="MONO_G_rad") +MONO_M_rad = PVAdjustable("SATOP11-OSGM087:M_RADIUS", pvname_moving="SATOP11-OSGM087:MONO_STATUS", name="MONO_M_rad") +MONO_M_curv = PVAdjustable("SATOP11-OSGM087:M_CURVATURE", pvname_moving="SATOP11-OSGM087:MONO_STATUS", name="MONO_M_curv") + +## OAPU085 +OAPU085_vert = PVAdjustable("SATOP11-OAPU085:MOTOR_Y.VAL", process_time=1, name="OAPU085_vert") + +##mono_slits = PVAdjustable("SATOP11-OSGM087:EXITSLIT",pvname_done_moving="SATOP31-OEXS132:MOT_H.DMOV", name = "Mono_Slits" ) + +##undulators set-up +#n_und_ref = 13 +#n_unds = [ +# 6, 7, 8, 9, 10, 11, 12, 13, # 14 is the CHIC +# 15, 16, 17, 18, 19, 20, 21, 22 +#] +#chic_fudge_offset = 0 +#Mon2Unds_offset = 3.0 + +#und = Undulators(n_unds, n_und_ref, chic_fudge_offset, name="z Athos Undulators") +##und = Undulators(name="Undulators") + + +##Mono set up +#mono_name = "Athos_mono" +#pv_mono_name="SATOP11-OSGM087" + +##Mon = PVAdjustable("SATOP11-OSGM087:SetEnergy", pvname_done_moving="SATOP11-OSGM087:MOVING", name="MONO") +#Mon = Mono(pv_mono_name=pv_mono_name, mono_name=mono_name) +#MonUnd = Coupled_MonoUnd( +# n_unds, n_und_ref, chic_fudge_offset, unds_name="z Athos Undulators", +# pv_mono_name=pv_mono_name, mono_name=mono_name, delta=Mon2Unds_offset, +# name="Mono+Und" +#) + +Mon_ES = PVAdjustable("SATOP11-OSGM087:EXITSLIT", pvname_done_moving="SATOP31-OEXS132:MOT_H.DMOV", name = "Mono ES") +gas_attenuator_trans = PVAdjustable("SATFE10-OGAT053:TRANSMISSION", process_time=20, name="Gas Attenuator Transmission") + + +lakeshore = PVAdjustable("SATES30-LS336:LOOP1_SP", "SATES30-LS336:A_RBV", accuracy=0.25, name="Lakeshore Temp") + + +#att = Attenuator("SATFE10-OATT064") +#shutter = Shutter("SATOP31-OPSH138") + + + + +#lakeshore = LakeShore(name="Temperature") + + +#wl = Wavelength(Mon) +wl = Wavelength(mono_new) + + + +##Diffractometer motions +mu = ParkableMotor("SATES30-ARES:MOT_SRY", name = "Diff RY") +chi = ParkableMotor("SATES30-ARES:MOT_SRZ", name = "Diff RZ") +phi = ParkableMotor("SATES30-ARES:MOT_SRX", name = "Diff RX") +nu = ParkableMotor("SATES30-ARES:MOT_DRY", name = "Diff DRY") +#q = QSpace3D("SOMETHING:Q", mu, chi, phi, nu, wl) + +TX = ParkableMotor("SATES30-ARES:MOT_STX", name = "Diff TX") +TY = ParkableMotor("SATES30-ARES:MOT_STY", name = "Diff TY") +TZ = ParkableMotor("SATES30-ARES:MOT_STZ", name = "Diff TZ") +TwoTRY=ParkableMotor("SATES30-ARES:MOT_2TRY", name = "Diff 2TRY") + + +tth_scan = Coupled_tth(delta=0, name="theta 2theta") +tth_scan_RIXS = Coupled_tth_RIXSside(delta=0, name='theta 2theta RIXS side') +tth_scan_outer = Coupled_tth_outer(delta=0, name="theta 2theta outer") +Thz_Gate_scan = Coupled_THzGate( name = "THz Gate coupled ") +Thz_Gate_scan_fixedD = Coupled_THzGate_fixedDelta(delta=73.11, name = "Thz Gate fix Delta") + +GRX = Motor("SATES30-RIXS:MOT_GRX", name = "Pitch grating") +DTZ = Motor("SATES30-RIXS:MOT_DTZ", name = "DTZ (r2)") + + +SASE_camera_scan = SASE_coupled_camera(delta=-41.149, name="SASE YAG Coupled Camera") + +#fake_mu = HistoryDummy.init_from(mu) +#fake_chi = HistoryDummy.init_from(chi) +#fake_phi = HistoryDummy.init_from(phi) +#fake_nu = HistoryDummy.init_from(nu) +#fake_q = QSpace3D("FAKE:Q", fake_mu, fake_chi, fake_phi, fake_nu, wl) +##fake_q.set_lattice("FAKE:Q", fake_mu, fake_chi, fake_phi, fake_nu, wl) + + + +#Laser motors + +lxt = PVAdjustable("SLAAT01-LTIM-PDLY:DELAY", pvname_done_moving="SLAAT01-LTIM-PDLY:WAITING", name="LXT") + +PICO_X1 = PVAdjustable("SLAAT31-LMNP-PICO11:DRIVE", name="PICO X1") +PICO_Y1 = PVAdjustable("SLAAT31-LMNP-PICO12:DRIVE", name="PICO Y1") + +Thz_delay = Motor("SLAAT31-LMOT-M806:MOT", name="Thz Delay") +WL_delay = Motor("SLAAT31-LMOT-M807:MOT", name="WL Delay") +gate_delay = Motor("SLAAT31-LMOT-M808:MOT", name="Gate Delay") +twomicron_delay = Motor("SLAAT31-LMOT-M813:MOT", name="2um Delay") +ss_EO_gate = PVAdjustable("SLAAT31-LMTS-SMAR13:DRIVE", pvname_readback="SLAAT31-LMTS-SMAR13:MOTRBV", name="ss EO Gate Delay") + +#laser_WP = Motor("SLAAT31-LMOT-M801:MOT", name="Laser WavePlate") +laser_WP = Motor("SLAAT31-LMOT-M809:MOT", name="Laser WavePlate") +laser_fluence = Motor("SLAAT31-LMOT-M801:MOT", name="Laser fluence") + + + + + +#overview.Thz_delay = Thz_delay + + +from spreadsheet import overview, print_overview, print_line_for_spreadsheet, spreadsheet_info +from slic.core.acquisition.spreadsheet import Spreadsheet + +spreadsheet = Spreadsheet(spreadsheet_info, placeholders=["comment", "sample"], host="satesf-cons-03", port=9090) + + + + +instrument = "furka" +pgroup = "p21972" #User p group + +#check_intensity = PVCondition("SATFE10-PEPG046:FCUP-INTENSITY-CAL", vmin=5, vmax=None, wait_time=3, required_fraction=0.8) +check_intensity = PVCondition("SATBD01-DBPM060:Q2", vmin=5, vmax=None, wait_time=1, required_fraction=0.8) +#check_intensity = None + + + +detectors = DetectorConfig("JF18T01V01") +#detectors = None #Remove this line to enable Jungfrau! + +daq = SFAcquisition(instrument, pgroup, default_channels=channels, default_pvs=pvs, default_detectors=detectors, rate_multiplicator=1, spreadsheet=spreadsheet) +daq.update_config_pvs() +#daq = FakeAcquisition(instrument, pgroup, default_channels=channels, default_pvs=pvs, rate_multiplicator=1) +#daq = BSAcquisition .... TBI + +#daqPV = PVAcquisition(instrument, pgroup, default_channels=live_channels) +scan = Scanner(default_acquisitions=[daq], condition=check_intensity, default_sensor=s3) + +gui = GUI(scan, show_goto=True, show_spec=True, show_run=True) +guitest = GUI(scan, show_goto=True, show_spec=True, show_run=True, title="Test GUI") + + +#scanPV = Scanner(default_acquisitions=[daqPV], condition=check_intensity) + + +# Test park function motor + + + + +''' +Button that runs a function +''' +@as_shortcut +def test(name="TEST"): + print("test") +# use marker() to go to a marker position + +@as_shortcut +def dump_status_to_stand(): + daq.spreadsheet.add(None, None, None) + +''' +Single marker +''' +m1 = Marker(dummy,value=25,name='Normal IN') + + + + +def Diffr_pos(TRYv, DRYv, TXv , TYv, TZv, RXv, RYv, RZv): + print(f"2TRY = {TRYv}, DRY = {DRYv}, TX = {TXv} , TY = {TYv}, TZ = {TZv}, RX = {RXv}, RY = {RYv}, RZ = {RZv}") + t1 = TwoTRY.set_target_value(TRYv) + t2 = nu.set_target_value(DRYv) + t3 = TX.set_target_value(TXv) + t4 = TY.set_target_value(TYv) + t5 = TZ.set_target_value(TZv) + t6 = phi.set_target_value(RXv) + t7 = mu.set_target_value(RYv) + t8 = chi.set_target_value(RZv) + + ts = [t1, t2, t3, t4, t5, t6, t7, t8] + for t in ts: + t.wait() + print("moving done") + pms=[TwoTRY, nu, TX, TY, TZ, phi, mu, chi] + for pm in pms: + pm.park() + print("done") + +def KBv_Focusing(KBv_B1v, KBv_B2v): + KBv_B1.set_target_value(KBv_B1v-0.15).wait() + KBv_B1.set_target_value(KBv_B1v).wait() + + KBv_B2.set_target_value(KBv_B2v-0.15).wait() + KBv_B2.set_target_value(KBv_B2v).wait() + + print("KBv moving done") + +def KBh_Focusing(KBh_B1v, KBh_B2v): + KBh_B1.set_target_value(KBh_B1v-0.15).wait() + KBh_B1.set_target_value(KBh_B1v).wait() + + KBh_B2.set_target_value(KBh_B2v-0.15).wait() + KBh_B2.set_target_value(KBh_B2v).wait() + + print("KBh moving done") + +def KBv_Pointing(KBv_RXv): + KBv_RX.set_target_value(KBv_RXv-0.15).wait() + KBv_RX.set_target_value(KBv_RXv).wait() + print("KBv pointing change done") + +def KBh_Pointing(KBh_RYv): + KBh_RY.set_target_value(KBh_RYv-0.15).wait() + KBh_RY.set_target_value(KBh_RYv).wait() + print("KBh pointing change done") + + +def GoToXAS_RIXS(RYv, TwoTRYv, Del_or_Norm, ESv, GAv, MonoNewv, HWPv, KBv_B1v, KBv_B2v, KBh_B1v, KBh_B2v, KBv_RXv, KBh_RYv, DC_updownv ): + #close shutter + caput('SATOP31-OPSH138:REQUEST', 'close') + #caput('SATES30-MCS003:MOT_5.VAL', DC_updownv) + #print("DC target moved") + KBv_Focusing(KBv_B1v-0.1, KBv_B2v-0.1) + KBv_Focusing(KBv_B1v, KBv_B2v) + KBv_Pointing(KBv_RXv) + KBh_Focusing(KBh_B1v-0.1, KBh_B2v-0.1) + KBh_Focusing(KBh_B1v, KBh_B2v) + KBh_Pointing(KBh_RYv) + print("KB pointing done") + TwoTRY.set_target_value(TwoTRYv).wait() + print("2TRY done") + mu.set_target_value(RYv) + print("RY movement done") + if Del_or_Norm == "Del": + caput('SLAAT01-LTIM-PDLY:DELAYEDSHOT.PROC', 1 ) + else: + caput('SLAAT01-LTIM-PDLY:NORMAL.PROC', 1 ) + print("delay mode done") + Mon_ES.set_target_value(ESv).wait() ## comment this out if ES error + print("Exit slit done") + gas_attenuator_trans.set_target_value(GAv).wait() + print("GA done") + mono_new.set_target_value( MonoNewv).wait() + print("Mono done") + laser_WP.set_target_value(HWPv).wait() + print("HWP done") + print("all done") + return 1 + + +@as_shortcut +def TrXAS_pos(name = "TrXAS Positions"): + GoToXAS_RIXS(-44.8, 45, "Del", 400, 1.0, 578.5, 22.0, 3.8459, 3.8378, 3.8200, 4.0200, 13.1998, 13.11231, 0.0) + +@as_shortcut +def RIXS_pos(name = "RIXS Positions"): + GoToXAS_RIXS(0.0,50, "Norm", 70, 0.2, 576.8, 22.0, 3.1890, 3.340, 3.810, 4.010, 13.188, 13.128, 4) + +#@as_shortcut +#def EOS_pos(name = "EOS Positions"): +# Diffr_pos(148.26, 80.5, 1.3, 5.12, -3.0, 0, -90, -4.0) + +#@as_shortcut +#def CTape_pos(name = "X-ray knife edge"): +# Diffr_pos(85, 95, -1, -1.6, -1.5, 0, -30, 0) + +#@as_shortcut +#def xray_knife(name = "X-ray knife edge"): +# Diffr_pos(125, 165.3, 0, 2.0, -6.5, 0, -90, -3.0) + +#@as_shortcut +#def Sample_position_RIXS(name = "Sample Positions RIXS"): +# Diffr_pos(85.0, 80.5, -3.6, -1.3, -3, 0, -8, -4) + +#@as_shortcut +#def EOS_LV_pos(name = "EOS LV Positions"): +# Diffr_pos(149.440, 29.5, 3.0, 2.5, -0.69, 15, 82, 0) + +#@as_shortcut +#def Transfer_pos(name = "Transfer Positions"): +# Diffr_pos(148.40, 80.5, 4.21, -2.0, -0.5, 0, 60, 0) + +print("To start the GUI, run: gui()") + + + diff --git a/sasespec.py b/sasespec.py index e67f29e..26ff1b9 100644 --- a/sasespec.py +++ b/sasespec.py @@ -25,11 +25,21 @@ ds_det = SimpleDevice( cam_y = Motor("SATOP11-PSAS079:MOT_DDCAM_Y", name="SASE DS Camera Y"), ) +ds_gr = SimpleDevice( + "SASE Spec DS Grating", + grd_x = Motor("SATOP11-PSAS079:MOT_DG_X", name="SASE DS Grating X"), + grd_y = Motor("SATOP11-PSAS079:MOT_DG_Y", name="SASE DS Grating Y"), + grd_z = Motor("SATOP11-PSAS079:MOT_DG_Z", name="SASE DS Grating Z"), + grd_rz = Motor("SATOP11-PSAS079:MOT_DG_RZ", name="SASE DS Grating RZ"), + +) + sasespecs = SimpleDevice( "SASE Spectrometer", us_gr = us_gr, - ds_det = ds_det + ds_det = ds_det, + ds_gr = ds_gr, )