From b6683a20259d654a573e80e8f0897aaf00129338 Mon Sep 17 00:00:00 2001 From: Sven Augustin Date: Tue, 28 Jan 2025 18:19:52 +0100 Subject: [PATCH] added several adjustables; consistent undulator names; coupled mono-und units; added shortcuts for powering on/off modules; added some pgroups; commented CTA DAQ --- maloja.py | 161 +++++++++++++++++++++++++++++++++++++++--------------- 1 file changed, 118 insertions(+), 43 deletions(-) diff --git a/maloja.py b/maloja.py index 58889bd..d8a64af 100644 --- a/maloja.py +++ b/maloja.py @@ -40,30 +40,34 @@ gas_attenuator_trans = PVAdjustable("SATFE10-OGAT053:TRANSMISSION", process_time #jet_delay = PVAdjustable("SATES20-CVME-EVR0:Pul6-Delay-SP", "SATES20-CVME-EVR0:Pul6-Delay-RB", accuracy=1, name="Jet Delay") -source_delay = PVAdjustable("SATES20-CVME-EVR0:Pul1-Delay-SP", "SATES20-CVME-EVR0:Pul1-Delay-RB", accuracy=1, name="Source Delay") +source_delay = PVAdjustable("SATES20-CVME-EVR0:Pul12_NEW_DELAY", "SATES20-CVME-EVR0:Pul12_NEW_DELAY", accuracy=1, name="Source Delay") +vmi_gate = PVAdjustable("SATES20-CVME-EVR0:Pul11_NEW_DELAY", "SATES20-CVME-EVR0:Pul11_NEW_DELAY", accuracy=1, name="VMI Gate Delay") -mono = PVAdjustable("SATOP11-OSGM087:SetEnergy", "SATOP11-OSGM087:photonenergy", accuracy=0.1, process_time=3, name="Mono Coupled") +mono = PVAdjustable("SATOP11-OSGM087:SetEnergy", "SATOP11-OSGM087:photonenergy", accuracy=0.1, process_time=3, name="Mono Coupled WORKING") -#waveplate = Motor("SLAAT21-LMOT-M712:MOT", name="Laser Waveplate") -TT_delay = DelayStage("SLAAT21-LMOT-M704:MOT", name="TT_delay") +#waveplate = Motor("SLAAT21-LMOT-M702:MOT", name="Laser Waveplate (laser pulse energy)") +waveplate = Motor("SLAAT21-LMOT-M702:MOT", name="Laser Waveplate (pump laser T3)") +TT_delay = DelayStage("SLAAT21-LMOT-M704:MOT", name="Time tool delay") #laser_comp21 = Motor("SLAAT21-LMOT-M701:MOT", name="Laser Comp T2") #laser_comp11 = Motor("SLAAT21-LMOT-M705:MOT", name="Laser Comp T1 1") -pump_probe_delay = DelayStage("SLAAT21-LMOT-M703:MOT", name="pump_probe_delay") + +pump_probe_delay2 = DelayStage("SLAAT21-LMOT-M703:MOT", name="pump_probe_delay_ch2") +#pump_probe_delay1 = DelayStage("SLAAT21-LMOT-M713:MOT", name="pump_probe_delay_ch1") + #laser_comp12 = Motor("SLAAT21-LMOT-M706:MOT", name="Laser Comp T1 2") #laser_delay = DelayStage("SLAAT21-LMOT-M708:MOT", name="Laser Delay") -EO_delay = Motor("SLAAT21-LMOT-M714:MOT", name="EO_delay") -laser_delay = Motor("SLAAT21-LMOT-M708:MOT", name="Laser Global Delay") +#laser_delay = Motor("SLAAT21-LMOT-M708:MOT", name="Laser Global Delay") lxt = PVAdjustable("SLAAT01-LTIM-PDLY:DELAY", pvname_done_moving="SLAAT01-LTIM-PDLY:WAITING", name="LXT") -source_y = Motor("SATES20-MANIP2:MOTOR_2", name="Needle y") -source_x = Motor("SATES20-MANIP2:MOTOR_1", name="Needle x") +#source_y = Motor("SATES20-MANIP2:MOTOR_2", name="Needle y") +#source_x = Motor("SATES20-MANIP2:MOTOR_1", name="Needle x") -injector_x = Motor("SATES20-MANIP1:MOTOR_1", name="Injector X") -injector_y = Motor("SATES20-MANIP1:MOTOR_2", name="Injector Y") +#injector_x = Motor("SATES20-MANIP1:MOTOR_1", name="Injector X") +#injector_y = Motor("SATES20-MANIP1:MOTOR_2", name="Injector Y") -pump_pulse_energy = Motor("SLAAT21-LMOT-M702:MOT", name="Pump Pulse Energy (Waveplate)") +pump_pulse_energy = Motor("SLAAT21-LMOT-M702:MOT", name="Pump Pulse Energy (Waveplate global)") att = Attenuator("SATFE10-OATT064") shutter = Shutter("SATOP21-OPSH138") @@ -73,7 +77,7 @@ chic_delay_delay = TwoColorChicaneDelay(name="zz Two Color Chicane as delay") chic_delay = chic_delay_current #TODO remove, and rename above und = Undulators(name="z Athos Undulators (both colors)") -und1 = Undulators([6, 7, 8, 9, 10, 11, 12, 13], n_und_ref=10, name="z Athos Undulators 6-13 (first color)") +und1 = Undulators([6, 7, 8, 9, 10, 11, 12, 13], n_und_ref=10, name="z Athos Undulators 06-13 (first color)") und2 = Undulators([15, 16, 17, 18, 19, 20, 21, 22], n_und_ref=19, name="z Athos Undulators 15-22 (second color)") und.set_limits(320, 1300) @@ -84,7 +88,7 @@ und2.set_limits(320, 1300) class MonoUndCoupled(Adjustable): def __init__(self, mono, und, und_energy_offset=0): - super().__init__("MONO-UND-COUPLED", name="z mono and undulators coupled") + super().__init__("MONO-UND-COUPLED", name="z mono and undulators coupled", units="eV") self.mono = mono self.und = und self.und_energy_offset = und_energy_offset @@ -104,7 +108,7 @@ class MonoUndCoupled(Adjustable): -mono_und_coupled = MonoUndCoupled(mono, und, und_energy_offset=5) +#mono_und_coupled = MonoUndCoupled(mono, und, und_energy_offset=14.0) @@ -114,8 +118,8 @@ mono_und_coupled = MonoUndCoupled(mono, und, und_energy_offset=5) m1 = PVAdjustable("SATES23-XSMA169:MOT7:DRIVE", internal=True) m2 = PVAdjustable("SATES23-XSMA169:MOT8:DRIVE", internal=True) -holo_sample_motion_y = HoloSample(m1, m2) -holo_sample_motion_x = SmarActAxis("SATES23-XSMA169:MOT7", name="Table 3: Sample X") +#holo_sample_motion_y = HoloSample(m1, m2) +#holo_sample_motion_x = SmarActAxis("SATES23-XSMA169:MOT7", name="Table 3: Sample X") #params = unpickle("devices/phases/UE38_meas_and_fit_data.pickle")["fitdata"] @@ -123,6 +127,18 @@ holo_sample_motion_x = SmarActAxis("SATES23-XSMA169:MOT7", name="Table 3: Sample #polarization = UndPhases("SATUN-PHASES", params, und_names=und_names, isparallel=True, name="z Polarization") +#target_x = PVAdjustable("SATES10-CMOV-M004:MOT.VAL", name="Streaking Target X") +#target_y = PVAdjustable("SATES10-CMOV-M005:MOT.VAL", name="Streaking Target Y") +#target_z = PVAdjustable("SATES10-CMOV-M006:MOT.VAL", name="Streaking Target Z") + +#parabola_x = PVAdjustable("SATES10-CMOV-M007:MOT.VAL", name="Streaking parabola X") +#parabola_y = PVAdjustable("SATES10-CMOV-M008:MOT.VAL", name="Streaking parabola Y") +#parabola_z = PVAdjustable("SATES10-CMOV-M009:MOT.VAL", name="Streaking parabola Z") +#parabola_R = PVAdjustable("SATES10-CMOV-M010:MOT.VAL", name="Streaking parabola R") + +#tof_x = PVAdjustable("SATES10-CMOV-M001:MOT.VAL", name="Streaking TOF X") + + xota1_z_trans = Motor("SATES21-XOTA166:W_Z", name="Table 1: Z coordinated") xota1_y_trans = Motor("SATES21-XOTA166:W_Y", name="Table 1: Y coordinated") @@ -131,21 +147,19 @@ xota1_y_trans = Motor("SATES21-XOTA166:W_Y", name="Table 1: Y coordinated") xota3_z_trans = Motor("SATES23-XOTA169:W_Z", name="Table 3: Z coordinated") xota3_y_trans = Motor("SATES23-XOTA169:W_Y", name="Table 3: Y coordinated") -#mot1_x = SmarActAxis("SATES21-XSMA166:MOT4", name="Table 1: sma X") -#mot1_y = SmarActAxis("SATES21-XSMA166:MOT5", name="Table 1: sma Y") -#mot1_z = SmarActAxis("SATES21-XSMA166:MOT6", name="Table 1: sma Z") -#mot3_z = SmarActAxis("SATES23-XSMA169:MOT3", name="Table 3: sma Z") -mot3_x = SmarActAxis("SATES23-XSMA169:MOT7", name="Table 3: sma x") -mot3_y = SmarActAxis("SATES23-XSMA169:MOT8", name="Table 3: sma y") +mot3_x = Motor("SATES23-XSMA169:MOT_7", name="Table 3: sma x") +mot3_y = Motor("SATES23-XSMA169:MOT_8", name="Table 3: sma y") -mirror_tilt = PVAdjustable("SATES20-XSMA165:MOT17:DRIVE", name="Mirror_tilt") -mirror_tip = PVAdjustable("SATES20-XSMA165:MOT16:DRIVE", name="Mirror_tip") +#linear_detector = Motor("SATES23-XSMA169:MOT_13", name="Linear detector Z") + +#mirror_tilt = PVAdjustable("SATES20-XSMA165:MOT17:DRIVE", name="Mirror_tilt") +#mirror_tip = PVAdjustable("SATES20-XSMA165:MOT16:DRIVE", name="Mirror_tip") -jet_rot = SmarActAxis("SATES24-XSMA171:MOT1", name="Jet Rotation degrees") -jet_X = SmarActAxis("SATES24-XSMA171:MOT4", name="Jet X mm") -jet_Z = SmarActAxis("SATES24-XSMA171:MOT6", name="Jet Z mm") +#Sample_Y = SmarActAxis("SATES23-XSMA169:MOT1", name="Holo sample Y") +#Sample_Z = SmarActAxis("SATES23-XSMA169:MOT2", name="Holo sample Z") +#Sample_X = SmarActAxis("SATES23-XSMA169:MOT3", name="Holo sample X") standa = Motor("SLAAT21-LMOT-M707:MOT", name="Standa Motor") @@ -178,7 +192,7 @@ def cycle_magnet(): # add some more devices to the overview overview.standa = standa overview.TT_delay = TT_delay -overview.pump_probe_delay = pump_probe_delay +overview.pump_probe_delay = pump_probe_delay2 overview.LXT = lxt @@ -189,9 +203,21 @@ def unstuck_undulators(): +from slic.core.acquisition.broker import restapi + +@as_shortcut +def power_on_modules(): + restapi.power_on_modules("http://sf-daq:10003", "JF15T08V01", [1, 3]) + +@as_shortcut +def power_off_modules(): + restapi.power_off_modules("http://sf-daq:10003", "JF15T08V01", [1, 3]) + + + from slic.core.acquisition.spreadsheet import Spreadsheet -spreadsheet = Spreadsheet(spreadsheet_info, placeholders=["comment", "sample"], host="satese-cons-01", port=9090) +spreadsheet = Spreadsheet(spreadsheet_info, placeholders=["comment", "sample"], host="satese-cons-01.psi.ch", port=9090) @@ -234,11 +260,28 @@ instrument = "maloja" #pgroup = "p21509" # HBT #pgroup = "p21510" # Time-resolved ferromagnetic resonance #pgroup = "p21584" # Transverse cavity and spike counting test -pgroup = "p21512" # REMI: Molecular Clock -- Xinhua +#pgroup = "p21512" # REMI: Molecular Clock -- Xinhua +#pgroup = "p21511" # XPS, Rolles +#pgroup = "p21638" # oven test and time tool, inhouse, coltrims +#pgroup = "p21624" #XPS Ingo Fischer +#pgroup = "p21919" #wavefront tests +#pgroup = "p21626" #Skyrmion nucleation +#pgroup = "p21623" #XPS Artem +#pgroup = "p21625" #Holo VO2 +#pgroup = "p21978" #streaking two tofs +#pgroup = "p22175" #EtOH TOF +#pgroup = "p22190" # XPS Lorenzo +#pgroup = "p22224" #JF startup +#pgroup = "p22083" #Kling +pgroup = "p22224" #Photon spectrometer tests -daq = SFAcquisition(instrument, pgroup, default_channels=channels, default_pvs=pvs, default_detectors=None, rate_multiplicator=1, append_user_tag_to_data_dir=True, spreadsheet=spreadsheet) + +daq = SFAcquisition(instrument, pgroup, default_channels=channels, default_pvs=pvs, default_detectors=detectors, rate_multiplicator=1, append_user_tag_to_data_dir=True, spreadsheet=spreadsheet) #daq = FakeAcquisition(instrument, pgroup) +# tell sf-daq which PVs to monitor +daq.update_config_pvs() + #daqPV = PVAcquisition(instrument, pgroup, default_channels=channels_ks) # workaround for KS not going to DB check_intensity = PVCondition("SATBD01-DBPM060:Q2", vmin=5, vmax=None, wait_time=1, required_fraction=0.8) @@ -247,20 +290,52 @@ check_intensity = PVCondition("SATBD01-DBPM060:Q2", vmin=5, vmax=None, wait_time scan = Scanner(scan_info_dir=f"/sf/{instrument}/data/{pgroup}/res/scan_info", default_acquisitions=[daq], condition=check_intensity) gui = GUI(scan, show_goto=True, show_spec=True, show_run=True) -# CTA DAQ -from ctadaq import CTAAcquisition -import sys -sys.path.append('/photonics/home/gac-maloja/Andrin') -from scripts import * -muphase = PVAdjustable("VXGC:Phase", name='Microwave Phase') -#mufreq = PV('VXGC:Freq') -ctadaq = CTAAcquisition(instrument, pgroup, default_channels=channels, default_pvs=pvs, default_detectors=None, rate_multiplicator=1, append_user_tag_to_data_dir=True, spreadsheet=spreadsheet) -ctascan = Scanner(scan_info_dir=f"/sf/{instrument}/data/{pgroup}/res/scan_info", default_acquisitions=[ctadaq], condition=check_intensity) -ctagui = GUI(ctascan, show_goto=True, show_spec=True, show_run=True, title="CTA DAQ") +## CTA DAQ +#from ctadaq_skyrmion_nucleation import CTAAcquisition -from devices.adrian import turboscope, microwave + +##muphase = PVAdjustable("VXGC:Phase", name='Microwave Phase') +###mufreq = PV('VXGC:Freq') +#ctadaq = CTAAcquisition(instrument, pgroup, default_channels=channels, default_pvs=pvs, default_detectors=None, rate_multiplicator=1, append_user_tag_to_data_dir=True, spreadsheet=spreadsheet) +#ctascan = Scanner(scan_info_dir=f"/sf/{instrument}/data/{pgroup}/res/scan_info", default_acquisitions=[ctadaq], condition=check_intensity) +#ctagui = GUI(ctascan, show_goto=True, show_spec=True, show_run=True, title="CTA DAQ") + + +#from devices.adrian import turboscope, microwave + + +## holo scan script +#def holo_scan(): +# +# energies = [ +# 528.5, +# 529.2, +# 529.7, +# 530.2, +# 531.0, +# ] +# +# n_repeats = 1 +# reps = 10 +# +# energies = sorted(sorted(set(energies)) * n_repeats) +# +# for E in energies: +# +# mono.set(E).wait() +# +# for i in range(reps): +# +# printable_E = str(round(E, 1)).replace(".", "_") +# +# fname = f"holo_scan_{printable_E}eV" +# print(fname) +# +# while check_intensity.wants_repeat(): +# daq.acquire(fname, n_pulses=10, is_scan_step=(i != 0)).wait() +#