diff --git a/maloja.py b/maloja.py index bb77a21..3c22f57 100644 --- a/maloja.py +++ b/maloja.py @@ -1,10 +1,11 @@ #!/usr/bin/env python from slic.gui import GUI -from slic.core.adjustable import PVAdjustable, DummyAdjustable +from slic.core.adjustable import PVAdjustable, PVEnumAdjustable, DummyAdjustable from slic.core.acquisition import SFAcquisition from slic.core.condition import PVCondition from slic.core.scanner import Scanner +from slic.devices.simpledevice import SimpleDevice from slic.devices.general.motor import Motor from slic.devices.general.delay_stage import DelayStage from slic.devices.general.smaract import SmarActAxis @@ -25,7 +26,8 @@ jet_delay = PVAdjustable("SATES20-CVME-EVR0:Pul6-Delay-SP", "SATES20-CVME-EVR0:P waveplate = Motor("SLAAT21-LMOT-M702:MOT", name="Laser Waveplate") exp_delay = Motor("SLAAT21-LMOT-M704:MOT", name="PP delay chamber 3") -laser_delay = DelayStage("SLAAT21-LMOT-M708:MOT", name="Laser Delay") +#laser_delay = DelayStage("SLAAT21-LMOT-M708:MOT", name="Laser Delay") +laser_delay = Motor("SLAAT21-LMOT-M708:MOT", name="Laser Delay") lxt = PVAdjustable("SLAAT01-LTIM-PDLY:DELAY", pvname_done_moving="SLAAT01-LTIM-PDLY:WAITING", name="LXT") source_y = Motor("SATES20-MANIP1:MOTOR_1", name="Source manipulator y") @@ -33,13 +35,18 @@ source_x = Motor("SATES20-MANIP1:MOTOR_2", name="Source manipulator x") att = Attenuator("SATFE10-OATT064") -n_und_ref = 6 +##n_und_ref = 6 +#n_und_ref = None 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 -und = Undulators(n_unds, n_und_ref, chic_fudge_offset, name="z Athos Undulators") +#chic_fudge_offset = 0 +#und = Undulators(n_unds, n_und_ref, chic_fudge_offset, adjust_chic=False, name="z Athos Undulators") + +und1 = Undulators([6, 7, 8, 9, 10, 11, 12, 13], n_und_ref=13, adjust_chic=False, name="z Athos Undulators 6-13") +und2 = Undulators([15, 16, 17, 18, 19, 20, 21, 22], n_und_ref=22, adjust_chic=False, name="z Athos Undulators 15-22") + xota_z_trans = Motor("SATES21-XOTA166:W_Z", name="Table 1: Z coordinated") #xota_hori_z = Motor("SATES21-XOTA166:MOTOR_Z", name="Table 1: Z raw") @@ -51,6 +58,60 @@ mot1_z = SmarActAxis("SATES21-XSMA166:MOT6", name="Table 1: sma Z") mot3_z = SmarActAxis("SATES23-XSMA169:MOT3", name="Table 3: sma Z") + +undulator_info = {} +for i in n_unds: + undulator_info[f"energy{i}"] = PVAdjustable(f"SATUN{i:02}-UIND030:FELPHOTENE", internal=True) + undulator_info[f"polarisation{i}"] = PVEnumAdjustable(f"SATUN{i:02}-UIND030:POL-SET", internal=True) + + +overview = SimpleDevice("Maloja Overview", + exp_delay = exp_delay, + laser_delay = laser_delay, + LXT = lxt, + FELrepRate = PVAdjustable("SWISSFEL-STATUS:Bunch-2-Appl-Freq-RB", internal=True), + PaddleChamber1x = PVAdjustable("SATES21-XSMA166:MOT1:MOTRBV", internal=True), + PaddleChamber1y = PVAdjustable("SATES21-XSMA166:MOT2:MOTRBV", internal=True), + PaddleChamber1z = PVAdjustable("SATES21-XSMA166:MOT3:MOTRBV", internal=True), + SmartActTTx = PVAdjustable("SATES22-XSMA168:MOT10:MOTRBV", internal=True), + SmartActTTy = PVAdjustable("SATES22-XSMA168:MOT11:MOTRBV", internal=True), + SmartActTTz = PVAdjustable("SATES22-XSMA168:MOT12:MOTRBV", internal=True), + ToFV1m = PVAdjustable("SATES21-XSHV166:V-1-S-CH0", internal=True), + ToFV1p = PVAdjustable("SATES21-XSHV166:V-0-S-CH0", internal=True), + ToFV2m = PVAdjustable("SATES21-XSHV166:V-1-S-CH1", internal=True), + ToFV2p = PVAdjustable("SATES21-XSHV166:V-0-S-CH1", internal=True), + ToFV3m = PVAdjustable("SATES21-XSHV166:V-1-S-CH2", internal=True), + ToFV3p = PVAdjustable("SATES21-XSHV166:V-0-S-CH2", internal=True), +# energy1 = PVAdjustable("SATUN06-UIND030:FELPHOTENE", internal=True), +# energy2 = PVAdjustable("SATUN15-UIND030:FELPHOTENE", internal=True), + manip2needleESx = PVAdjustable("SATES20-MANIP2:MOTOR_1.VAL", internal=True), + manip2needleESy = PVAdjustable("SATES20-MANIP2:MOTOR_2.VAL", internal=True), + manip2needleESz = PVAdjustable("SATES20-MANIP2:MOTOR_3.VAL", internal=True), +# pol1 = PVEnumAdjustable("SATUN06-UIND030:POL-SET", internal=True), +# pol2 = PVEnumAdjustable("SATUN15-UIND030:POL-SET", internal=True), + pressChamb2 = PVAdjustable("SATES21-VM-VT2020:PRESSURE", internal=True), + pressChamb3 = PVAdjustable("SATES21-VM-VT3010:PRESSURE", internal=True), + pressChamb3GasCell = PVAdjustable("SATES21-VM-VT3030:PRESSURE", internal=True), + pulse_energy = PVAdjustable("SATFE10-PEPG046:PHOTON-ENERGY-PER-PULSE-AVG", internal=True), + timeStamp = PVAdjustable("SF-CPCL-TIM:TIME", internal=True), + chicane_current = PVAdjustable("SATUN14-MBND100:I-READ", internal=True), + **undulator_info +) + +@as_shortcut +def print_overview(): + print(overview) + + + +standa = Motor("SLAAT21-LMOT-M707:MOT", name="Standa Motor") + +mark_microscope = Marker(standa, 141.344, "Microscope") +mark_gascell = Marker(standa, 88.334, "Gas Cell") +mark_tof = Marker(standa, 28.330, "TOF") + + + # "SLAAR11-LTIM01-EVR0:DUMMY_PV5_NBS", channels_nbs = [f"SATES20-CVME-EVR0:DUMMY_PV{i+1}_NBS" for i in range(10)] @@ -77,20 +138,36 @@ channels_ks = [ # "SATES21-GES1:A4_VALUES", ] -channels_cam = [ +channels_cam_pco = [ "SATES21-CAMS154-M1:FPICTURE", "SATES24-CAMS161-M1:FPICTURE", -# "SATES21-PATT-M1:FPICTURE", + "SATES21-PATT-M1:FPICTURE", ] -channels_giges = [ -# "SATES21-CAMS154-GIGE3:FPICTURE", +channels_cam_gige = [ + f"SATES21-CAMS154-GIGE{i+1}:FPICTURE" for i in range(8) ] -#channels = channels_nbs + channels_inten + channels_ks + channels_cam -channels = channels_nbs + channels_inten + channels_ks + channels_giges + channels_cam #channels = channels_nbs + channels_inten + channels_ks +#channels = channels_nbs + channels_inten + channels_ks + channels_cam_pco +channels = channels_nbs + channels_inten + channels_ks + channels_cam_pco + channels_cam_gige + + +names_cam_pco = [ + "SATES21-CAMS154-M1", + "SATES24-CAMS161-M1", + "SATES21-PATT-M1", +] +suffices_proc = [ + "processing_parameters", + "projection_background", + "projection_signal", +] +for n in names_cam_pco: + for s in suffices_proc: + c = f"{n}.{s}" + channels.append(c) pvs = [ @@ -114,13 +191,14 @@ instrument = "maloja" #pgroup = "p19342" # XMCD #pgroup = "p19343" # slic dev #pgroup = "p19373" # laser -pgroup = "p19483" # pilot 1 +#pgroup = "p19483" # pilot 1 -- TRXPS +pgroup = "p19488" # pilot 2 -- Non-Linear Spectroscopy daq = SFAcquisition(instrument, pgroup, default_channels=channels, default_pvs=pvs, default_detectors=detectors, rate_multiplicator=1) #daq = FakeAcquisition(instrument, pgroup) -check_intensity = PVCondition("SATBD01-DBPM060:Q2", 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 scan = Scanner(scan_info_dir=f"/sf/{instrument}/data/{pgroup}/res/scan_info", default_acquisitions=[daq], condition=check_intensity) @@ -129,3 +207,48 @@ gui = GUI(scan, show_goto=True) + +from epics import PV +from time import sleep +from datetime import datetime + + +def overnight(): + shutter = PV("SATOP21-OPSH138:REQUEST") + + print("open shutter") + shutter.put(1) + sleep(3) + + #base = "I4d_high_resolution_Ek472_Ep100_TTincluded_slit_2_008" + #base = "I4d_high_resolution_Ek472_Ep200_TTincluded_slit_2_010" + + base = "CF3I_C1s_Ek230_Ep200_TTincluded_slit2_2609_130microJ_002" + + x0 = 15.813 + + start = x0 - 0.12 + stop = x0 + 0.4 + + step = 0.004 + + n_pulses = 2 * 300 + + for i in range(1000): + print(i, "sig") + scan.scan1D(exp_delay, start, stop, step, n_pulses, f"{base}_sig_{i:04}", return_to_initial_values=True) + + print("close shutter") + shutter.put(0) + sleep(3) + + print(i, "bkg") + daq.acquire(f"{base}_bkg_{i:04}", n_pulses=n_pulses) + + print("open shutter") + shutter.put(1) + sleep(3) + + + +