Channel list cleanup and split to bs_channels and pv_channels
This commit is contained in:
35
PMS.py
Normal file
35
PMS.py
Normal file
@ -0,0 +1,35 @@
|
||||
from slic.utils.hastyepics import get_pv as PV
|
||||
from slic.core.device.basedevice import BaseDevice
|
||||
from slic.core.adjustable import PVAdjustable
|
||||
from slic.utils import typename
|
||||
|
||||
CTA_sequence_start_PID = PV("SAR-CCTA-ESC:seq0Ctrl-StartedAt-O")
|
||||
|
||||
class PP_Shutter:
|
||||
"""Pulsed magnet instrument classs"""
|
||||
def __init__(self, ID,name="Pulsed Magnet Instrument"):
|
||||
self.ID = ID
|
||||
self.name = name or ID
|
||||
pvname_setvalue = ID
|
||||
pvname_readback = ID
|
||||
self._adj = PVAdjustable(pvname_setvalue, pvname_readback, accuracy=0, internal=True)
|
||||
|
||||
def close(self):
|
||||
self._adj.set_target_value(0).wait()
|
||||
|
||||
def open(self):
|
||||
self._adj.set_target_value(1).wait()
|
||||
|
||||
@property
|
||||
def status(self):
|
||||
state = self._adj.get_current_value()
|
||||
if state is None:
|
||||
return "not connected"
|
||||
return "open" if state else "closed"
|
||||
|
||||
def __repr__(self):
|
||||
tn = typename(self)
|
||||
return f"{tn} \"{self.name}\" is {self.status}"
|
||||
|
||||
|
||||
|
BIN
__pycache__/alignment_laser.cpython-39.pyc
Normal file
BIN
__pycache__/alignment_laser.cpython-39.pyc
Normal file
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
__pycache__/bs_channels.cpython-39.pyc
Normal file
BIN
__pycache__/bs_channels.cpython-39.pyc
Normal file
Binary file not shown.
Binary file not shown.
BIN
__pycache__/cristallina.cpython-39.pyc
Normal file
BIN
__pycache__/cristallina.cpython-39.pyc
Normal file
Binary file not shown.
Binary file not shown.
BIN
__pycache__/pv_channels.cpython-39.pyc
Normal file
BIN
__pycache__/pv_channels.cpython-39.pyc
Normal file
Binary file not shown.
Binary file not shown.
Binary file not shown.
@ -1,6 +1,42 @@
|
||||
from attocube import AttocubeStage
|
||||
|
||||
attocube = AttocubeStage("SARES30-ATTOCUBE",
|
||||
Z='SARES30-ATTOCUBE:A0',
|
||||
Y='SARES30-ATTOCUBE:A2',
|
||||
X='SARES30-ATTOCUBE:A1',
|
||||
)
|
||||
)
|
||||
|
||||
# def make_AttocubeStage(name):
|
||||
# return AttocubeStage(name,
|
||||
# Z=name+':A0',
|
||||
# X=name+':A1',
|
||||
# )
|
||||
|
||||
# class NamedAttocubeStage(AttocubeStage):
|
||||
# def __init__(self, name):
|
||||
# super().__init__(name,
|
||||
# Z=name+':A0',
|
||||
# X=name+':A1',
|
||||
# )
|
||||
|
||||
|
||||
|
||||
# def set_target_value(self, value):
|
||||
# t1 = self.stage1.set_target_value(value)
|
||||
# t2 = self.stage2.set_target_value(-value)
|
||||
# t1.wait()
|
||||
# t2.wait()
|
||||
|
||||
# def is_moving(self):
|
||||
# return any(self.stage1.is_moving(), self.stage2.is_moving())
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# t = daq.aquire(...)
|
||||
# for pos in []:
|
||||
# mot.set_target_value(pos).wait()
|
||||
# sleep()
|
||||
# t.stop()
|
170
bs_channels.py
Normal file
170
bs_channels.py
Normal file
@ -0,0 +1,170 @@
|
||||
# Channels to save at Cristallina endstation
|
||||
|
||||
##########################################################################################################
|
||||
##########################################################################################################
|
||||
##########################################################################################################
|
||||
# BS channels
|
||||
|
||||
# TODO: JF settings regarding raw conversion, compression, etc.
|
||||
detectors = [
|
||||
"JF16T03V01",
|
||||
]
|
||||
|
||||
camera_channels = [
|
||||
# "SARES30-CAMS156-PCO1:FPICTURE", # PCO edge camera for the wavefront analysis (from Alvra)
|
||||
# "SARES30-CAMS156-SMX-OAV:FPICTURE", # SwissMX OAV camera picture
|
||||
# "SARES30-CAMS156-XE:FPICTURE", # X-ray eye
|
||||
]
|
||||
|
||||
####################
|
||||
# Machine gas intensity monitor
|
||||
channels_gas_monitor = [
|
||||
"SARFE10-PBPG050:PHOTON-ENERGY-PER-PULSE-AVG",
|
||||
# "SARFE10-PBPG050:SLOW-X",
|
||||
# "SARFE10-PBPG050:SLOW-Y",
|
||||
"SARFE10-PBIG050-EVR0:CALCI", # good for correlations with total beam intensity
|
||||
"SARFE10-PBPG050:HAMP-INTENSITY-CAL",
|
||||
]
|
||||
|
||||
######################
|
||||
# PBPS053
|
||||
channels_PBPS053 = [
|
||||
"SARFE10-PBPS053:INTENSITY",
|
||||
"SARFE10-PBPS053:XPOS",
|
||||
"SARFE10-PBPS053:YPOS",
|
||||
]
|
||||
|
||||
####################
|
||||
# PSSS059
|
||||
channels_PSSS059=[
|
||||
"SARFE10-PSSS059:FIT-COM",
|
||||
"SARFE10-PSSS059:FIT-FWHM",
|
||||
"SARFE10-PSSS059:FIT-RES",
|
||||
"SARFE10-PSSS059:FIT-RMS",
|
||||
"SARFE10-PSSS059:SPECT-COM",
|
||||
"SARFE10-PSSS059:SPECT-RES",
|
||||
"SARFE10-PSSS059:SPECT-RMS",
|
||||
"SARFE10-PSSS059:SPECTRUM_Y_SUM"
|
||||
"SARFE10-PSSS059:SPECTRUM_X",
|
||||
"SARFE10-PSSS059:SPECTRUM_Y",
|
||||
# "SARFE10-PSSS059:FPICTURE",
|
||||
# "SARFE10-PSSS059:FIT_ERR",
|
||||
"SARFE10-PSSS059:processing_parameters",
|
||||
# "SARFE10-PSSS059:SPECTRUM_AVG_CENTER",
|
||||
# "SARFE10-PSSS059:SPECTRUM_AVG_FWHM",
|
||||
# "SARFE10-PSSS059:SPECTRUM_AVG_Y",
|
||||
]
|
||||
|
||||
###################################
|
||||
# Beam position monitor PBPS113
|
||||
channels_PBPS113 = [
|
||||
"SAROP31-PBPS113:INTENSITY",
|
||||
"SAROP31-PBPS113:INTENSITY_UJ",
|
||||
"SAROP31-PBPS113:Lnk9Ch0-PP_VAL_PD0",
|
||||
"SAROP31-PBPS113:Lnk9Ch0-PP_VAL_PD1",
|
||||
"SAROP31-PBPS113:Lnk9Ch0-PP_VAL_PD2",
|
||||
"SAROP31-PBPS113:Lnk9Ch0-PP_VAL_PD3",
|
||||
# "SAROP31-PBPS113:Lnk9Ch0-PP_VAL_PD4",
|
||||
"SAROP31-PBPS113:XPOS",
|
||||
"SAROP31-PBPS113:YPOS",
|
||||
]
|
||||
|
||||
####################
|
||||
# Profile monitor PPRM113 (from _proc process)
|
||||
channels_PPRM113 = [
|
||||
"SAROP31-PPRM113:intensity",
|
||||
"SAROP31-PPRM113:x_center_of_mass",
|
||||
"SAROP31-PPRM113:x_fit_amplitude",
|
||||
"SAROP31-PPRM113:x_fit_mean",
|
||||
"SAROP31-PPRM113:x_fit_offset",
|
||||
"SAROP31-PPRM113:x_fit_standard_deviation",
|
||||
"SAROP31-PPRM113:x_fwhm",
|
||||
"SAROP31-PPRM113:x_profile",
|
||||
"SAROP31-PPRM113:x_rms",
|
||||
"SAROP31-PPRM113:y_center_of_mass",
|
||||
"SAROP31-PPRM113:y_fit_amplitude",
|
||||
"SAROP31-PPRM113:y_fit_mean",
|
||||
"SAROP31-PPRM113:y_fit_offset",
|
||||
"SAROP31-PPRM113:y_fit_standard_deviation",
|
||||
"SAROP31-PPRM113:y_fwhm",
|
||||
"SAROP31-PPRM113:y_profile",
|
||||
"SAROP31-PPRM113:y_rms",
|
||||
# "SAROP31-PPRM113:FPICTURE", # full pictures for debugging purposes at the moment, from _ib process
|
||||
]
|
||||
|
||||
###########################
|
||||
# Beam position monitor PBPS149
|
||||
channel_PBPS149 = [
|
||||
"SAROP31-PBPS149:INTENSITY",
|
||||
"SAROP31-PBPS149:INTENSITY_UJ",
|
||||
"SAROP31-PBPS149:Lnk9Ch0-PP_VAL_PD0",
|
||||
"SAROP31-PBPS149:Lnk9Ch0-PP_VAL_PD1",
|
||||
"SAROP31-PBPS149:Lnk9Ch0-PP_VAL_PD2",
|
||||
"SAROP31-PBPS149:Lnk9Ch0-PP_VAL_PD3",
|
||||
# "SAROP31-PBPS149:Lnk9Ch0-PP_VAL_PD4",
|
||||
"SAROP31-PBPS149:XPOS",
|
||||
"SAROP31-PBPS149:YPOS",
|
||||
]
|
||||
|
||||
#######################
|
||||
# Profile monitor PPRM150 (from _proc process)
|
||||
channels_PPRM150 = [
|
||||
"SAROP31-PPRM150:intensity",
|
||||
"SAROP31-PPRM150:x_center_of_mass",
|
||||
"SAROP31-PPRM150:x_fit_amplitude",
|
||||
"SAROP31-PPRM150:x_fit_mean",
|
||||
"SAROP31-PPRM150:x_fit_offset",
|
||||
"SAROP31-PPRM150:x_fit_standard_deviation",
|
||||
"SAROP31-PPRM150:x_fwhm",
|
||||
"SAROP31-PPRM150:x_profile",
|
||||
"SAROP31-PPRM150:x_rms",
|
||||
"SAROP31-PPRM150:y_center_of_mass",
|
||||
"SAROP31-PPRM150:y_fit_amplitude",
|
||||
"SAROP31-PPRM150:y_fit_mean",
|
||||
"SAROP31-PPRM150:y_fit_offset",
|
||||
"SAROP31-PPRM150:y_fit_standard_deviation",
|
||||
"SAROP31-PPRM150:y_fwhm",
|
||||
"SAROP31-PPRM150:y_profile",
|
||||
"SAROP31-PPRM150:y_rms",
|
||||
# "SAROP31-PPRM150:FPICTURE", # full pictures for debugging purposes at the moment, from _ib process
|
||||
]
|
||||
|
||||
#######################
|
||||
# Cristallina event reciever
|
||||
channels_EVR = [
|
||||
'SAR-CVME-TIFALL6:EvtSet',
|
||||
]
|
||||
|
||||
#######################
|
||||
# Digitizer
|
||||
channels_digitizer =[
|
||||
"SARES30-LTIM01-EVR0:DUMMY_PV1_NBS",
|
||||
"SARES30-LTIM01-EVR0:DUMMY_PV2_NBS",
|
||||
"SARES30-LTIM01-EVR0:DUMMY_PV3_NBS",
|
||||
"SARES30-LTIM01-EVR0:DUMMY_PV4_NBS",
|
||||
"SARES30-LSCP1-FNS:CH0:VAL_GET", # Signal-Background
|
||||
"SARES30-LSCP1-CRISTA1:CH0:1", # Waveform signal
|
||||
"SARES30-LSCP1-CRISTA1:CH2:1", # Waveform trigger
|
||||
"SARES30-LTIM01-EVR0:CALCI", # Calculated intensity
|
||||
]
|
||||
|
||||
#######################
|
||||
# Other BS channels that we sometimes use
|
||||
channels_other = [
|
||||
]
|
||||
|
||||
bs_channels = (
|
||||
camera_channels
|
||||
+ channels_gas_monitor
|
||||
+ channels_PBPS053
|
||||
+ channels_PBPS053
|
||||
+ channels_PSSS059
|
||||
+ channels_PBPS113
|
||||
+ channels_PPRM113
|
||||
+ channel_PBPS149
|
||||
+ channels_PPRM150
|
||||
+ channels_EVR
|
||||
# + channels_digitizer
|
||||
# + channels_other
|
||||
)
|
||||
|
@ -33,7 +33,8 @@ from slic.utils import Channels, Config, Elog, Screenshot, PV
|
||||
from slic.core.acquisition.fakeacquisition import FakeAcquisition
|
||||
from slic.devices.timing.events import CTASequencer
|
||||
|
||||
from channels import detectors, bs_channels, pvs
|
||||
from bs_channels import detectors, bs_channels
|
||||
from pv_channels import pvs
|
||||
from spreadsheet import overview
|
||||
from channels_minimal import detectors_min, channels_min, pvs_min
|
||||
from pp_shutter import PP_Shutter
|
||||
@ -157,7 +158,7 @@ import daq_client as sf_daq_client
|
||||
CTA_sequence_start_PID = PV("SAR-CCTA-ESC:seq0Ctrl-StartedAt-O")
|
||||
|
||||
# Number of pulses to ask from the SFDAQ. This will depend on the CTA sequence.
|
||||
npulses = 22
|
||||
# npulses = 100
|
||||
|
||||
def pulse(run_comment=None):
|
||||
# Start the CTA sequence
|
||||
@ -176,11 +177,12 @@ def pulse(run_comment=None):
|
||||
used_detectors = detectors
|
||||
used_detectors = {"JF16T03V01":{}}
|
||||
|
||||
# TODO: change to SFAcquisition.retrieve(...) from slic
|
||||
# Ask the DAQ client to download the data
|
||||
run_number = sf_daq_client.retrieve_data_from_buffer(pgroup=pgroup, user_tag=run_comment,
|
||||
camera_channels=[], bsread_channels=channels, epics_channels=pvs,
|
||||
camera_channels=[], bsread_channels=bs_channels, epics_channels=pvs,
|
||||
detectors=used_detectors,
|
||||
start_pulseid=start_PID, stop_pulseid=start_PID+npulses,
|
||||
start_pulseid=start_PID-90, stop_pulseid=start_PID+20,
|
||||
rate_multiplicator=1,
|
||||
)
|
||||
print('\n')
|
||||
|
10
measurement_scripts/DilSc_commisioning_pulses.py
Normal file
10
measurement_scripts/DilSc_commisioning_pulses.py
Normal file
@ -0,0 +1,10 @@
|
||||
from time import sleep, time
|
||||
from cristallina import cta, daq
|
||||
|
||||
def make_pulse_train():
|
||||
recording = daq.acquire('pulsing_sequence',n_pulses=100*101,wait=False)
|
||||
cta.start()
|
||||
recording.wait()
|
||||
print('done')
|
||||
|
||||
#daq.acquire(filename, data_base_dir=None, detectors=None, channels=None, pvs=None, scan_info=None, n_pulses=100, continuous=False, is_scan_step=False, wait=True):
|
Binary file not shown.
BIN
measurement_scripts/__pycache__/inprints.cpython-39.pyc
Normal file
BIN
measurement_scripts/__pycache__/inprints.cpython-39.pyc
Normal file
Binary file not shown.
@ -6,6 +6,7 @@ import numpy as np
|
||||
#from slic.devices.general.motor import Motor
|
||||
import matplotlib.pyplot as plt
|
||||
import epics
|
||||
from cristallina import attocube, attenuator
|
||||
|
||||
from slic.devices.xoptics.aramis_attenuator import Attenuator
|
||||
attenuator = Attenuator("SAROP31-OATA150", description="Cristallina attenuator OATA150")
|
||||
@ -38,7 +39,7 @@ between_KB_settings = 500
|
||||
KBvs = [[1,2],[1,3],[1,2],[1,3],[1,2]]
|
||||
KBhs = [[1,2],[1,2],[1,2],[1,3],[1,2]]
|
||||
|
||||
# Time estimates for total time calculation
|
||||
# Time estimates for total time calculation (time in seconds)
|
||||
t_kb_change = 30
|
||||
t_shot = 5
|
||||
t_atten_change = 20
|
||||
@ -48,8 +49,9 @@ def shoot(pos=pos,testing=testing_flag):
|
||||
print(f'Shot at: {pos}')
|
||||
return pos
|
||||
else:
|
||||
epics.caput("SAR-CCTA-ESC:seq0Ctrl-Start-I",1)
|
||||
|
||||
print(f'Shot at: {pos}')
|
||||
#epics.caput("SAR-CCTA-ESC:seq0Ctrl-Start-I",1)
|
||||
pass
|
||||
|
||||
def change_benders(bender_1,bender_2,KB = None,do_not_move_benders = do_not_move_benders):
|
||||
check_KB_value(KB)
|
||||
@ -104,6 +106,8 @@ def move_x_rel(distance,testing=testing_flag,pos=pos):
|
||||
return pos
|
||||
else:
|
||||
attocube.X.set_target_value(distance, relative=True).wait()
|
||||
pos = pos + np.array([distance,0])
|
||||
return pos
|
||||
|
||||
def move_y_rel(distance,testing=testing_flag,pos=pos):
|
||||
if testing == True:
|
||||
@ -111,6 +115,8 @@ def move_y_rel(distance,testing=testing_flag,pos=pos):
|
||||
return pos
|
||||
else:
|
||||
attocube.Y.set_target_value(distance, relative=True).wait()
|
||||
pos = pos + np.array([0,distance])
|
||||
return pos
|
||||
|
||||
def move_x(value,testing=testing_flag,pos=pos):
|
||||
if testing == True:
|
||||
@ -149,7 +155,7 @@ def make_attenuations(attenuations,testing=testing_flag,pos=pos):
|
||||
attenuator.trans1st(attenuation).wait()
|
||||
print('Making same shots')
|
||||
make_same_shots(n_same_holes,pos=pos)
|
||||
pos = move_y_rel(between_attenuations,pos=pos)
|
||||
pos = move_y_rel(between_attenuations,pos=pos,testing=testing)
|
||||
|
||||
# Return back to where you started
|
||||
if testing == True:
|
||||
@ -163,18 +169,21 @@ def make_same_shots(n_same_holes,testing=testing_flag,pos=pos):
|
||||
original_position = pos
|
||||
else:
|
||||
original_position = [attocube.X.get_current_value(),attocube.Y.get_current_value()]
|
||||
|
||||
|
||||
# Make holes
|
||||
for shot in range(n_same_holes):
|
||||
sleep(1)
|
||||
shoot(pos=pos)
|
||||
pos = move_x_rel(between_same_shots,pos=pos)
|
||||
pos = move_x_rel(between_same_shots,pos=pos,testing=testing)
|
||||
|
||||
# Return back to where you started
|
||||
move(original_position)
|
||||
|
||||
|
||||
# Estimate total time
|
||||
total_time = len(KBhs)*len(KBvs)*(t_kb_change+len(attenuations)*(t_atten_change+n_same_holes*t_shot) )
|
||||
def estimate_total_time(KBhs=KBhs,KBvs=KBvs,attenuations=attenuations,n_same_holes=n_same_holes,t_kb_change=t_kb_change,t_atten_change=t_atten_change,t_shot=t_shot):
|
||||
total_time = len(KBhs)*len(KBvs)*(t_kb_change+len(attenuations)*(t_atten_change+n_same_holes*t_shot) )
|
||||
print(f'Total time estimate: {(total_time/60):.1f} minutes or {(total_time/60/60):.1f} hours')
|
||||
return total_time
|
||||
|
||||
# Get the starting x-position
|
||||
if testing_flag == True:
|
||||
@ -182,34 +191,37 @@ if testing_flag == True:
|
||||
else:
|
||||
starting_x_pos = attocube.X.get_current_value()
|
||||
|
||||
# The actual loop to make inprints
|
||||
for i,KBv in enumerate(KBvs):
|
||||
change_benders(KBv[0],KBv[1],KB = 'v')
|
||||
|
||||
for ind,KBh in enumerate(KBhs):
|
||||
change_benders(KBh[0],KBh[1],KB = 'h')
|
||||
|
||||
print(f'Progress so far: KBv loop: {i+1}/{len(KBvs)}. KBh loop:{ind+1}/{len(KBhs)}')
|
||||
make_attenuations(attenuations,pos=pos)
|
||||
|
||||
print(f'Moving to a new KBh setting')
|
||||
def make_everything(KBvs,KBhs,attenuations,n_same_holes,testing=testing_flag,pos=pos):
|
||||
# The actual loop to make inprints
|
||||
for i,KBv in enumerate(KBvs):
|
||||
change_benders(KBv[0],KBv[1],KB = 'v')
|
||||
|
||||
for ind,KBh in enumerate(KBhs):
|
||||
change_benders(KBh[0],KBh[1],KB = 'h')
|
||||
|
||||
print(f'Progress so far: KBv loop: {i+1}/{len(KBvs)}. KBh loop:{ind+1}/{len(KBhs)}')
|
||||
make_attenuations(attenuations,pos=pos)
|
||||
|
||||
print(f'Moving to a new KBh setting')
|
||||
# Move to the last shot of the same shot + the spacing between KB settings
|
||||
pos = move_x_rel(between_KB_settings+between_same_shots*(n_same_holes-1),pos=pos)
|
||||
|
||||
print('KBh set done, returning to starting_x_pos')
|
||||
# Move to the last shot of the same shot + the spacing between KB settings
|
||||
pos = move_x_rel(between_KB_settings+between_same_shots*(n_same_holes-1),pos=pos)
|
||||
|
||||
print('KBh set done, returning to starting_x_pos')
|
||||
# Move to the last shot of the same shot + the spacing between KB settings
|
||||
pos = move_x(starting_x_pos,pos=pos)
|
||||
|
||||
pos = move_x(starting_x_pos,pos=pos)
|
||||
print('#################################################################################')
|
||||
print('Moving to a new KBv setting')
|
||||
# Move to the last shot of the same shot + the spacing between KB settings
|
||||
|
||||
print('#################################################################################')
|
||||
print('Moving to a new KBv setting')
|
||||
# Move to the last shot of the same shot + the spacing between KB settings
|
||||
|
||||
pos = move_y_rel(between_KB_settings+between_attenuations*(len(attenuations)-1),pos=pos)
|
||||
pos = move_y_rel(between_KB_settings+between_attenuations*(len(attenuations)-1),pos=pos)
|
||||
|
||||
|
||||
print('Inprints are done')
|
||||
print(f'Total time estimate: {(total_time/60):.1f} minutes or {(total_time/60/60):.1f} hours')
|
||||
print('Inprints are done')
|
||||
print(f'Total time estimate: {(total_time/60):.1f} minutes or {(total_time/60/60):.1f} hours')
|
||||
|
||||
# To do:
|
||||
# Fix movement of the attocubes in real time
|
||||
|
355
pv_channels.py
Normal file
355
pv_channels.py
Normal file
@ -0,0 +1,355 @@
|
||||
##########################################################################################################
|
||||
##########################################################################################################
|
||||
##########################################################################################################
|
||||
# Epics PVS
|
||||
|
||||
# Compression, charge settings
|
||||
#######################
|
||||
# Machine
|
||||
pvs_machine = [
|
||||
"SARCL02-MBND100:P-READ", # Predicted bunch energy
|
||||
"SARUN:FELPHOTENE.VAL", # Predicted photon energy from machine settings
|
||||
"SARFE10-PBPG050:PHOTON-ENERGY-PER-PULSE-AVG.VAL" # Average pulse energy from the gas detector
|
||||
]
|
||||
|
||||
#######################
|
||||
# Undulator gap
|
||||
pvs_undulator =[
|
||||
"SARUN03-UIND030:K_SET.VAL",
|
||||
"SARUN04-UIND030:K_SET.VAL",
|
||||
"SARUN05-UIND030:K_SET.VAL",
|
||||
"SARUN06-UIND030:K_SET.VAL",
|
||||
"SARUN07-UIND030:K_SET.VAL",
|
||||
"SARUN08-UIND030:K_SET.VAL",
|
||||
"SARUN09-UIND030:K_SET.VAL",
|
||||
"SARUN10-UIND030:K_SET.VAL",
|
||||
"SARUN11-UIND030:K_SET.VAL",
|
||||
"SARUN12-UIND030:K_SET.VAL",
|
||||
"SARUN13-UIND030:K_SET.VAL",
|
||||
"SARUN14-UIND030:K_SET.VAL",
|
||||
"SARUN15-UIND030:K_SET.VAL",
|
||||
]
|
||||
|
||||
####################
|
||||
# Machine gas intensity monitor
|
||||
pvs_gas_monitor = [
|
||||
"SARFE10-PBPG050:PHOTON-ENERGY-PER-PULSE-US",
|
||||
"SARFE10-PBPG050:PHOTON-ENERGY-PER-PULSE-DS",
|
||||
]
|
||||
|
||||
#####################
|
||||
# Slits OAPU044
|
||||
pvs_OAPU044=[
|
||||
"SARFE10-OAPU044:MOTOR_X",
|
||||
"SARFE10-OAPU044:MOTOR_Y",
|
||||
"SARFE10-OAPU044:MOTOR_W",
|
||||
"SARFE10-OAPU044:MOTOR_H",
|
||||
]
|
||||
|
||||
###################
|
||||
# Beam position monitor PBPS053
|
||||
pvs_PBPS053 = [
|
||||
"SARFE10-PBPS053:MOTOR_X1",
|
||||
"SARFE10-PBPS053:MOTOR_X2",
|
||||
"SARFE10-PBPS053:MOTOR_PROBE",
|
||||
]
|
||||
|
||||
####################
|
||||
# Upstream attenuator OATT053
|
||||
pvs_OATT053=[
|
||||
"SARFE10-OATT053:MOTOR_1",
|
||||
"SARFE10-OATT053:MOTOR_1.RBV",
|
||||
"SARFE10-OATT053:MOTOR_2",
|
||||
"SARFE10-OATT053:MOTOR_2.RBV",
|
||||
"SARFE10-OATT053:MOTOR_3",
|
||||
"SARFE10-OATT053:MOTOR_3.RBV",
|
||||
"SARFE10-OATT053:MOTOR_4",
|
||||
"SARFE10-OATT053:MOTOR_4.RBV",
|
||||
"SARFE10-OATT053:MOTOR_5",
|
||||
"SARFE10-OATT053:MOTOR_5.RBV",
|
||||
"SARFE10-OATT053:MOTOR_6",
|
||||
"SARFE10-OATT053:MOTOR_6.RBV",
|
||||
"SARFE10-OATT053:ENERGY",
|
||||
"SARFE10-OATT053:TRANS_SP",
|
||||
"SARFE10-OATT053:TRANS_RB",
|
||||
]
|
||||
|
||||
###################
|
||||
# Beam profile monitor PPRM053
|
||||
pvs_PPRM053 = [
|
||||
"SARFE10-PPRM053:MOTOR_PROBE.RBV",
|
||||
]
|
||||
|
||||
####################
|
||||
# Single shot spectrometer PSS059
|
||||
pvs_PSSS059 = [
|
||||
# "SARFE10-PSSS059:FPICTURE", # full pictures only when really needed
|
||||
"SARFE10-PSSS059:SPECTRUM_X",
|
||||
"SARFE10-PSSS059:SPECTRUM_Y",
|
||||
"SARFE10-PSSS059:SPECTRUM_CENTER",
|
||||
"SARFE10-PSSS059:SPECTRUM_COM",
|
||||
"SARFE10-PSSS059:SPECTRUM_FWHM",
|
||||
"SARFE10-PSSS059:SPECTRUM_STD",
|
||||
"SARFE10-PSSS059:FIT_ERR",
|
||||
"SARFE10-PSSS059:processing_parameters",
|
||||
"SARFE10-PSSS059:SPECTRUM_AVG_CENTER,"
|
||||
"SARFE10-PSSS059:SPECTRUM_AVG_FWHM",
|
||||
"SARFE10-PSSS059:SPECTRUM_AVG_Y",
|
||||
]
|
||||
|
||||
####################
|
||||
# First Cristallina horizontal offset mirror OOMH067
|
||||
pvs_OOMH067 = [
|
||||
"SAROP31-OOMH067:W_X.RBV",
|
||||
"SAROP31-OOMH067:W_Y.RBV",
|
||||
"SAROP31-OOMH067:W_RX.RBV",
|
||||
"SAROP31-OOMH067:W_RY.RBV",
|
||||
"SAROP31-OOMH067:W_RZ.RBV",
|
||||
"SAROP31-OOMH067:BU.RBV",
|
||||
"SAROP31-OOMH067:BD.RBV",
|
||||
"SAROP31-OOMH067:VS1.RBV",
|
||||
"SAROP31-OOMH067:VS2.RBV",
|
||||
"SAROP31-OOMH067:VS3.RBV",
|
||||
"SAROP31-OOMH067:TX.RBV",
|
||||
"SAROP31-OOMH067:RY.RBV",
|
||||
]
|
||||
|
||||
####################
|
||||
# Beam screen between the first two horizontal mirrors PSCR068
|
||||
pvs_PSCR068 = [
|
||||
"SAROP31-PSCR068:MOTOR_PROBE.RBV",
|
||||
]
|
||||
|
||||
####################
|
||||
# Second Cristallina horizontal offset mirror OOMH084
|
||||
pvs_OOMH084 = [
|
||||
"SAROP31-OOMH084:W_X.RBV",
|
||||
"SAROP31-OOMH084:W_Y.RBV",
|
||||
"SAROP31-OOMH084:W_RX.RBV",
|
||||
"SAROP31-OOMH084:W_RY.RBV",
|
||||
"SAROP31-OOMH084:W_RZ.RBV",
|
||||
"SAROP31-OOMH084:BU.RBV",
|
||||
"SAROP31-OOMH084:BD.RBV",
|
||||
"SAROP31-OOMH084:VS1.RBV",
|
||||
"SAROP31-OOMH084:VS2.RBV",
|
||||
"SAROP31-OOMH084:VS3.RBV",
|
||||
"SAROP31-OOMH084:TX.RBV",
|
||||
"SAROP31-OOMH084:RY.RBV",
|
||||
]
|
||||
|
||||
###################
|
||||
# Beam profile monitor PPRM085
|
||||
pvs_PPRM085 = [
|
||||
"SAROP31-PPRM085:MOTOR_PROBE.RBV",
|
||||
]
|
||||
|
||||
###################
|
||||
# Slits OAPU107
|
||||
pvs_OAPU107 = [
|
||||
"SAROP31-OAPU107:MOTOR_X.VAL",
|
||||
"SAROP31-OAPU107:MOTOR_X.RBV",
|
||||
"SAROP31-OAPU107:MOTOR_Y.VAL",
|
||||
"SAROP31-OAPU107:MOTOR_Y.RBV",
|
||||
]
|
||||
|
||||
###################
|
||||
## Beam position and intensity monitor PBPS113
|
||||
pvs_PBPS113 = [
|
||||
"SAROP31-PBPS113:MOTOR_X1.RBV",
|
||||
"SAROP31-PBPS113:MOTOR_Y1.RBV",
|
||||
"SAROP31-PBPS113:MOTOR_PROBE.RBV",
|
||||
""
|
||||
]
|
||||
|
||||
###################
|
||||
# Beam profile monitor PPRM113
|
||||
pvs_PPRM113 = [
|
||||
"SAROP31-PPRM113:MOTOR_PROBE.RBV",
|
||||
]
|
||||
|
||||
####################
|
||||
# Alignment laser mirror OLAS147
|
||||
pvs_OLAS147 = [
|
||||
"SAROP31-OLAS147:MOTOR_1.RBV",
|
||||
]
|
||||
|
||||
###################
|
||||
# Slits OAPU149
|
||||
pvs_OAPU149 = [
|
||||
"SAROP31-OAPU149:MOTOR_X.VAL",
|
||||
"SAROP31-OAPU149:MOTOR_X.RBV",
|
||||
"SAROP31-OAPU149:MOTOR_Y.VAL",
|
||||
"SAROP31-OAPU149:MOTOR_Y.RBV",
|
||||
]
|
||||
|
||||
###################
|
||||
# Beam position and intensity monitor PBPS149
|
||||
pvs_PBPS149 = [
|
||||
"SAROP31-PBPS149:MOTOR_X1.RBV",
|
||||
"SAROP31-PBPS149:MOTOR_Y1.RBV",
|
||||
"SAROP31-PBPS149:MOTOR_PROBE.RBV",
|
||||
]
|
||||
|
||||
###################
|
||||
# Beam profile monitor PPRM150
|
||||
pvs_PPRM150 = [
|
||||
"SAROP31-PPRM150:MOTOR_PROBE.RBV",
|
||||
]
|
||||
|
||||
####################
|
||||
# Attenuators OATA150
|
||||
pvs_OATA150 = [
|
||||
"SAROP31-OATA150:MOTOR_1.RBV",
|
||||
"SAROP31-OATA150:MOTOR_2.RBV",
|
||||
"SAROP31-OATA150:MOTOR_3.RBV",
|
||||
"SAROP31-OATA150:MOTOR_4.RBV",
|
||||
"SAROP31-OATA150:MOTOR_5.RBV",
|
||||
"SAROP31-OATA150:MOTOR_6.RBV",
|
||||
"SAROP31-OATA150:TRANS_SP",
|
||||
"SAROP31-OATA150:TRANS_RB",
|
||||
]
|
||||
|
||||
####################
|
||||
# Pulse picker OPPI151
|
||||
pvs_OPPI151 = [
|
||||
"SAROP31-OPPI151:MOTOR_X.RBV",
|
||||
"SAROP31-OPPI151:MOTOR_Y.RBV",
|
||||
]
|
||||
|
||||
####################
|
||||
## Horizontal offset mirror ODMV152
|
||||
pvs_ODMV152 = [
|
||||
"SAROP31-ODMV152:W_X.RBV",
|
||||
"SAROP31-ODMV152:W_Y.RBV",
|
||||
"SAROP31-ODMV152:W_RX.RBV",
|
||||
"SAROP31-ODMV152:W_RZ.RBV",
|
||||
"SAROP31-ODMV152:BU.RBV",
|
||||
"SAROP31-ODMV152:BD.RBV",
|
||||
"SAROP31-ODMV152:VS1.RBV",
|
||||
"SAROP31-ODMV152:VS2.RBV",
|
||||
"SAROP31-ODMV152:VS3.RBV",
|
||||
"SAROP31-ODMV152:TX.RBV",
|
||||
]
|
||||
|
||||
#######################
|
||||
# from _proc process
|
||||
pvs_PPRM150 = [
|
||||
"SAROP31-PPRM150:intensity",
|
||||
"SAROP31-PPRM150:x_center_of_mass",
|
||||
"SAROP31-PPRM150:x_fit_amplitude",
|
||||
"SAROP31-PPRM150:x_fit_mean",
|
||||
"SAROP31-PPRM150:x_fit_offset",
|
||||
"SAROP31-PPRM150:x_fit_standard_deviation",
|
||||
"SAROP31-PPRM150:x_fwhm",
|
||||
"SAROP31-PPRM150:x_profile",
|
||||
"SAROP31-PPRM150:x_rms",
|
||||
"SAROP31-PPRM150:y_center_of_mass",
|
||||
"SAROP31-PPRM150:y_fit_amplitude",
|
||||
"SAROP31-PPRM150:y_fit_mean",
|
||||
"SAROP31-PPRM150:y_fit_offset",
|
||||
"SAROP31-PPRM150:y_fit_standard_deviation",
|
||||
"SAROP31-PPRM150:y_fwhm",
|
||||
"SAROP31-PPRM150:y_profile",
|
||||
"SAROP31-PPRM150:y_rms",
|
||||
# "SAROP31-PPRM150:FPICTURE", # full pictures for debugging purposes at the moment, from _ib process
|
||||
]
|
||||
|
||||
|
||||
###########################
|
||||
# Vertical KB mirror OKBV153
|
||||
pvs_OKBV153 = [
|
||||
"SAROP31-OKBV153:W_X.RBV",
|
||||
"SAROP31-OKBV153:W_Y.RBV",
|
||||
"SAROP31-OKBV153:W_RX.RBV",
|
||||
"SAROP31-OKBV153:W_RY.RBV",
|
||||
"SAROP31-OKBV153:W_RZ.RBV",
|
||||
"SAROP31-OKBV153:BU.RBV",
|
||||
"SAROP31-OKBV153:BD.RBV",
|
||||
"SAROP31-OKBV153:TY1.RBV",
|
||||
"SAROP31-OKBV153:TY2.RBV",
|
||||
"SAROP31-OKBV153:TY3.RBV",
|
||||
"SAROP31-OKBV153:TX1.RBV",
|
||||
"SAROP31-OKBV153:TX2.RBV",
|
||||
]
|
||||
|
||||
####################
|
||||
# Screen between the KB's PSCD153
|
||||
# Not implemented yet
|
||||
pvs_PSCD153 = [
|
||||
# "SAROP31-PSCD153"
|
||||
]
|
||||
|
||||
###########################
|
||||
# Horizontal KB mirror OKBH154
|
||||
pvs_OKBH154 = [
|
||||
"SAROP31-OKBH154:W_X.RBV",
|
||||
"SAROP31-OKBH154:W_Y.RBV",
|
||||
"SAROP31-OKBH154:W_RX.RBV",
|
||||
"SAROP31-OKBH154:W_RY.RBV",
|
||||
"SAROP31-OKBH154:W_RZ.RBV",
|
||||
"SAROP31-OKBH154:BU.RBV",
|
||||
"SAROP31-OKBH154:BD.RBV",
|
||||
"SAROP31-OKBH154:TY1.RBV",
|
||||
"SAROP31-OKBH154:TY2.RBV",
|
||||
"SAROP31-OKBH154:TY3.RBV",
|
||||
"SAROP31-OKBH154:TX2.RBV",
|
||||
]
|
||||
|
||||
####################
|
||||
# Standa motors (mainly used with the X-ray eye)
|
||||
pvs_standa = [
|
||||
"SARES30MOBI1:MOT_1",
|
||||
"SARES30MOBI1:MOT_2",
|
||||
"SARES30MOBI1:MOT_3",
|
||||
]
|
||||
|
||||
|
||||
####################
|
||||
# Attocube motors
|
||||
pvs_attocube=[
|
||||
"SARES30-ATTOCUBE:A0-POS",
|
||||
"SARES30-ATTOCUBE:A1-POS",
|
||||
]
|
||||
|
||||
###############################
|
||||
# Smaract stages from Juraj
|
||||
pvs_smaract = [
|
||||
"SARES30-XSMA156:X:MOTRBV",
|
||||
"SARES30-XSMA156:Y:MOTRBV",
|
||||
"SARES30-XSMA156:Z:MOTRBV",
|
||||
"SARES30-XSMA156:Ry:MOTRBV",
|
||||
"SARES30-XSMA156:Rx:MOTRBV",
|
||||
"SARES30-XSMA156:Rz:MOTRBV",
|
||||
]
|
||||
|
||||
pvs = (
|
||||
pvs_machine
|
||||
+ pvs_undulator
|
||||
+ pvs_gas_monitor
|
||||
+ pvs_OAPU044
|
||||
+ pvs_PBPS053
|
||||
+ pvs_OATT053
|
||||
+ pvs_PPRM053
|
||||
+ pvs_PSSS059
|
||||
+ pvs_OOMH067
|
||||
+ pvs_PSCR068
|
||||
+ pvs_OOMH084
|
||||
+ pvs_PPRM085
|
||||
+ pvs_OAPU107
|
||||
+ pvs_PBPS113
|
||||
+ pvs_PPRM113
|
||||
+ pvs_OLAS147
|
||||
+ pvs_OAPU149
|
||||
+ pvs_PBPS149
|
||||
+ pvs_PPRM150
|
||||
+ pvs_OATA150
|
||||
+ pvs_OPPI151
|
||||
+ pvs_ODMV152
|
||||
+ pvs_PPRM150
|
||||
+ pvs_OKBV153
|
||||
+ pvs_PSCD153
|
||||
+ pvs_OKBH154
|
||||
+ pvs_standa
|
||||
# + pvs_attocube
|
||||
# + pvs_smaract
|
||||
)
|
21
smaract.py
21
smaract.py
@ -52,13 +52,17 @@ class SmarActStage(BaseDevice):
|
||||
|
||||
class SmarActAxis(Adjustable):
|
||||
|
||||
def __init__(self, ID, name=None, units=None, internal=False):
|
||||
def __init__(self, ID, name=None, units=None, internal=False,tolerance=0.5):
|
||||
super().__init__(ID, name=name, units=units, internal=internal)
|
||||
|
||||
self.wait_time = 0.1
|
||||
self.timeout = 60
|
||||
self._move_requested = False
|
||||
|
||||
self.config = SimpleNamespace(
|
||||
tolerance = tolerance,
|
||||
)
|
||||
|
||||
self.pvs = SimpleNamespace(
|
||||
drive = PV(ID + ":DRIVE"),
|
||||
readback = PV(ID + ":MOTRBV"),
|
||||
@ -119,6 +123,16 @@ class SmarActAxis(Adjustable):
|
||||
self._move_requested = False
|
||||
print("move done")
|
||||
|
||||
def is_at_target(self,from_pv=False, tolerance = None):
|
||||
"""Check whether target was reached.
|
||||
If from_pv is True TARGET_REACHED_RB is used, else it's calculated as diffrence between the readback and set value within tolerance.
|
||||
Default is False, because otherwise tolerance can only be set and read out as an integer."""
|
||||
if tolerance == None:
|
||||
tolerance = self.config.tolerance
|
||||
if from_pv == True:
|
||||
return self.pvs.target_reached.value == 1
|
||||
else:
|
||||
return abs( self.pvs.readback.get() - self.pvs.drive.get() ) < tolerance
|
||||
|
||||
def stop(self):
|
||||
self._move_requested = False
|
||||
@ -260,7 +274,8 @@ class SmarActAxis(Adjustable):
|
||||
|
||||
twv = self.pvs.twv.get()
|
||||
twv = abs(twv)
|
||||
|
||||
|
||||
ca.poll(evt=1.0e-1)
|
||||
while stat == Status.HOLDING and time.time() <= tout:
|
||||
ca.poll(evt=1.0e-2)
|
||||
stat = self.status
|
||||
@ -275,7 +290,7 @@ class SmarActAxis(Adjustable):
|
||||
|
||||
def gui(self):
|
||||
device, motor = self.ID.split(":")
|
||||
cmd = f'caqtdm -macro "P={device}:,M={motor}" ESB_MX_SMARACT_mot_exp.ui'
|
||||
cmd = f'caqtdm -macro "P={device}:,M={motor}" SARES30-CPCL-SMARACTX1_6axis_old.ui'
|
||||
return subprocess.Popen(cmd, shell=True)
|
||||
|
||||
|
||||
|
139
spreadsheet.py
139
spreadsheet.py
@ -8,109 +8,80 @@ class PVStringAdjustable(PVAdjustable):
|
||||
return self.pvs.readback.get(as_string=True).strip()
|
||||
|
||||
|
||||
|
||||
n_unds = [
|
||||
6, 7, 8, 9, 10, 11, 12, 13, # 14 is the CHIC
|
||||
15, 16, 17, 18, 19, 20, 21, 22
|
||||
]
|
||||
|
||||
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)
|
||||
#UND_NAME_FMT = "SARUN{:02}-UIND030"
|
||||
#N_UND_CHIC = None
|
||||
|
||||
#N_UNDS = list(range(3, 15+1))
|
||||
|
||||
|
||||
#undulator_info = {}
|
||||
#for i in n_unds:
|
||||
# undulator_info[f"energy{i}"] = PVAdjustable(f"SARUN{i:02}-UIND030:FELPHOTENE", internal=True)
|
||||
# undulator_info[f"polarisation{i}"] = PVEnumAdjustable(f"SARUN{i:02}-UIND030:POL-SET", internal=True)
|
||||
|
||||
overview = SimpleDevice("Maloja Overview",
|
||||
# standa = standa,
|
||||
# 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),
|
||||
overview = SimpleDevice("Cristallina Overview",
|
||||
OKHB154_X_trans = PVAdjustable("SAROP31-OKBH154:W_X.RBV", internal=True),
|
||||
OKHB154_Y_trans = PVAdjustable("SAROP31-OKBH154:W_Y.RBV", internal=True),
|
||||
OKHB154_X_rot = PVAdjustable("SAROP31-OKBH154:W_RX.RBV", internal=True),
|
||||
OKHB154_Y_rot = PVAdjustable("SAROP31-OKBH154:W_RY.RBV", internal=True),
|
||||
OKHB154_Z_rot = PVAdjustable("SAROP31-OKBH154:W_RZ.RBV", internal=True),
|
||||
|
||||
chicane_current_rb = PVAdjustable("SATUN14-MBND100:I-READ", internal=True),
|
||||
chicane_current_sv = PVAdjustable("SATUN14-MBND100:I-SET", internal=True),
|
||||
OKBV153_X_trans = PVAdjustable("SAROP31-OKBV153:W_X.RBV", internal=True),
|
||||
OKBV153_Y_trans = PVAdjustable("SAROP31-OKBV153:W_Y.RBV", internal=True),
|
||||
OKBV153_X_rot = PVAdjustable("SAROP31-OKBV153:W_RX.RBV", internal=True),
|
||||
OKBV153_Y_rot = PVAdjustable("SAROP31-OKBV153:W_RY.RBV", internal=True),
|
||||
OKBV153_Z_rot = PVAdjustable("SAROP31-OKBV153:W_RZ.RBV", internal=True),
|
||||
|
||||
att64 = PVStringAdjustable("SATFE10-OATT064:MOT2TRANS.VALD", internal=True),
|
||||
att65 = PVStringAdjustable("SATFE10-OATT065:MOT2TRANS.VALD", internal=True),
|
||||
ODMV152_X_trans = PVAdjustable("SAROP31-OKBV153:W_X.RBV", internal=True),
|
||||
ODMV152_Y_trans = PVAdjustable("SAROP31-OKBV153:W_Y.RBV", internal=True),
|
||||
ODMV152_X_rot = PVAdjustable("SAROP31-OKBV153:W_RX.RBV", internal=True),
|
||||
ODMV152_Y_rot = PVAdjustable("SAROP31-OKBV153:W_RY.RBV", internal=True),
|
||||
ODMV152_COATING = PVAdjustable("SAROP31-ODMV152:COATING_SP", internal=True),
|
||||
|
||||
OATA150_transmission = PVAdjustable("SAROP31-OATA150:TRANS_SP", internal=True),
|
||||
|
||||
PBPS149_motor_probe = PVAdjustable("SAROP31-PBPS149:MOTOR_PROBE.RBV", internal=True),
|
||||
PBPS149_motor_X1 = PVAdjustable("SAROP31-PBPS149:MOTOR_X1.RBV", internal=True),
|
||||
PBPS149_motor_Y1 = PVAdjustable("SAROP31-PBPS149:MOTOR_Y1.RBV", internal=True),
|
||||
PBPS149_wafer = PVAdjustable("SAROP31-PBPS149:PROBE_SP", internal=True),
|
||||
|
||||
OAPU149_hor_pos = PVAdjustable("SAROP31-OAPU149:MOTOR_X.VAL", internal=True),
|
||||
OAPU149_hor_width = PVAdjustable("SAROP31-OAPU149:MOTOR_W.VAL", internal=True),
|
||||
OAPU149_vert_pos = PVAdjustable("SAROP31-OAPU149:MOTOR_Y.VAL", internal=True),
|
||||
OAPU149_vert_width = PVAdjustable("SAROP31-OAPU149:MOTOR_H.VAL", internal=True),
|
||||
|
||||
OAPU107_hor_pos = PVAdjustable("SAROP31-OAPU107:MOTOR_X.VAL", internal=True),
|
||||
OAPU107_hor_width = PVAdjustable("SAROP31-OAPU107:MOTOR_W.VAL", internal=True),
|
||||
OAPU107_vert_pos = PVAdjustable("SAROP31-OAPU107:MOTOR_Y.VAL", internal=True),
|
||||
OAPU107_vert_width = PVAdjustable("SAROP31-OAPU107:MOTOR_H.VAL", internal=True),
|
||||
|
||||
OOMH084_X_trans = PVAdjustable("SAROP31-OOMH084:W_X.RBV", internal=True),
|
||||
OOMH084_Y_trans = PVAdjustable("SAROP31-OOMH084:W_Y.RBV", internal=True),
|
||||
OOMH084_X_rot = PVAdjustable("SAROP31-OOMH084:W_RX.RBV", internal=True),
|
||||
OOMH084_Y_rot = PVAdjustable("SAROP31-OOMH084:W_RY.RBV", internal=True),
|
||||
OOMH084_Z_rot = PVAdjustable("SAROP31-OOMH084:W_RZ.RBV", internal=True),
|
||||
OOMH084_COATING = PVAdjustable("SAROP31-OOMH084:COATING_SP", internal=True),
|
||||
|
||||
OOMH067_X_trans = PVAdjustable("SAROP31-OOMH067:W_X.RBV", internal=True),
|
||||
OOMH067_Y_trans = PVAdjustable("SAROP31-OOMH067:W_Y.RBV", internal=True),
|
||||
OOMH067_X_rot = PVAdjustable("SAROP31-OOMH067:W_RX.RBV", internal=True),
|
||||
OOMH067_Y_rot = PVAdjustable("SAROP31-OOMH067:W_RY.RBV", internal=True),
|
||||
OOMH067_Z_rot = PVAdjustable("SAROP31-OOMH067:W_RZ.RBV", internal=True),
|
||||
OOMH067_COATING = PVAdjustable("SAROP31-OOMH067:COATING_SP", internal=True),
|
||||
|
||||
**undulator_info
|
||||
)
|
||||
|
||||
|
||||
|
||||
spreadsheet_line = [
|
||||
"timeStamp", "File name",
|
||||
"Gas cell / TOF",
|
||||
"standa","Sample",
|
||||
"pressChamb3",
|
||||
"pressChamb3GasCell", "Static/scan", "Scan parameter", "ScanStep", "shots", "Comments", "Two colors (Y/N)", "energy1",
|
||||
"polarisation10", "energy2",
|
||||
"polarisation19",
|
||||
"pulse_energy",
|
||||
"chicane_current_rb",
|
||||
"FELrepRate",
|
||||
"att64",
|
||||
"att65", "Grating", "order", "Slit", "Detector position X", "Detector position Y", "Detector position (angle)","Ek", "Ep", "Slit", "Mode",
|
||||
"pressChamb2", "Gas",
|
||||
"manip2needleESx",
|
||||
"manip2needleESy",
|
||||
"manip2needleESz",
|
||||
"ToFV1p",
|
||||
"ToFV2p",
|
||||
"ToFV3p",
|
||||
"ToFV1m",
|
||||
"ToFV2m",
|
||||
"ToFV3m",
|
||||
"PaddleChamber1x",
|
||||
"PaddleChamber1y",
|
||||
"PaddleChamber1z",
|
||||
"energy6",
|
||||
"energy7",
|
||||
"energy8",
|
||||
"energy9",
|
||||
"energy10",
|
||||
"energy11",
|
||||
"energy12",
|
||||
"energy13",
|
||||
"energy14",
|
||||
"energy15",
|
||||
"energy16",
|
||||
"energy17",
|
||||
"energy18",
|
||||
"energy19",
|
||||
"energy20",
|
||||
"energy21",
|
||||
"energy22",
|
||||
]
|
||||
|
||||
|
||||
|
||||
@as_shortcut
|
||||
def print_overview():
|
||||
print(overview)
|
||||
|
Reference in New Issue
Block a user