added overview; split undulators into two parts; added Standa motor plus Markers for it; added all giges; added online proc channels; updated pgroup; adjusted condition; overnight routine

This commit is contained in:
2021-10-06 19:41:28 +02:00
parent d907b62e2e
commit 530594682c

149
maloja.py
View File

@ -1,10 +1,11 @@
#!/usr/bin/env python #!/usr/bin/env python
from slic.gui import GUI 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.acquisition import SFAcquisition
from slic.core.condition import PVCondition from slic.core.condition import PVCondition
from slic.core.scanner import Scanner from slic.core.scanner import Scanner
from slic.devices.simpledevice import SimpleDevice
from slic.devices.general.motor import Motor from slic.devices.general.motor import Motor
from slic.devices.general.delay_stage import DelayStage from slic.devices.general.delay_stage import DelayStage
from slic.devices.general.smaract import SmarActAxis 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") waveplate = Motor("SLAAT21-LMOT-M702:MOT", name="Laser Waveplate")
exp_delay = Motor("SLAAT21-LMOT-M704:MOT", name="PP delay chamber 3") 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") 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") 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") att = Attenuator("SATFE10-OATT064")
n_und_ref = 6 ##n_und_ref = 6
#n_und_ref = None
n_unds = [ n_unds = [
6, 7, 8, 9, 10, 11, 12, 13, # 14 is the CHIC 6, 7, 8, 9, 10, 11, 12, 13, # 14 is the CHIC
15, 16, 17, 18, 19, 20, 21, 22 15, 16, 17, 18, 19, 20, 21, 22
] ]
chic_fudge_offset = 0 #chic_fudge_offset = 0
und = Undulators(n_unds, n_und_ref, chic_fudge_offset, name="z Athos Undulators") #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_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") #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") 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", # "SLAAR11-LTIM01-EVR0:DUMMY_PV5_NBS",
channels_nbs = [f"SATES20-CVME-EVR0:DUMMY_PV{i+1}_NBS" for i in range(10)] 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", # "SATES21-GES1:A4_VALUES",
] ]
channels_cam = [ channels_cam_pco = [
"SATES21-CAMS154-M1:FPICTURE", "SATES21-CAMS154-M1:FPICTURE",
"SATES24-CAMS161-M1:FPICTURE", "SATES24-CAMS161-M1:FPICTURE",
# "SATES21-PATT-M1:FPICTURE", "SATES21-PATT-M1:FPICTURE",
] ]
channels_giges = [ channels_cam_gige = [
# "SATES21-CAMS154-GIGE3:FPICTURE", 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 = 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 = [ pvs = [
@ -114,13 +191,14 @@ instrument = "maloja"
#pgroup = "p19342" # XMCD #pgroup = "p19342" # XMCD
#pgroup = "p19343" # slic dev #pgroup = "p19343" # slic dev
#pgroup = "p19373" # laser #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 = SFAcquisition(instrument, pgroup, default_channels=channels, default_pvs=pvs, default_detectors=detectors, rate_multiplicator=1)
#daq = FakeAcquisition(instrument, pgroup) #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 #check_intensity = None
scan = Scanner(scan_info_dir=f"/sf/{instrument}/data/{pgroup}/res/scan_info", default_acquisitions=[daq], condition=check_intensity) 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)