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:
149
maloja.py
149
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)
|
||||
|
||||
|
||||
|
||||
|
||||
|
Reference in New Issue
Block a user