before MX beamtime October 2024

This commit is contained in:
2024-10-23 17:59:59 +02:00
parent 4bf7321e2d
commit 792e562d48
6 changed files with 277 additions and 28 deletions

View File

@ -9,8 +9,10 @@ from slic.core.acquisition.detcfg import DetectorConfig
# TODO: JF settings regarding raw conversion, compression, etc.
detectors = [
"JF16T03V01",
"JF16T03V02",
# "JF16T03V01",
# "JF17T16V01",
"JF20T01V01",
]
# ALLOWED_PARAMS = dict(
@ -160,6 +162,7 @@ channels_Xeye = ["SARES30-CAMS156-XE:intensity",
"SARES30-CAMS156-XE:y_fwhm",
"SARES30-CAMS156-XE:y_profile",
"SARES30-CAMS156-XE:y_rms",
# "SARES30-CAMS156-XE:FPICTURE",
]
######################
@ -207,15 +210,49 @@ channels_PSSS059_LB = [
###################################
## Bernina channels
# Beam position monitor PBPS113
channels_Bernina = [
#channels_Bernina = [
# "SAROP21-PBPS103:INTENSITY",
# "SAROP21-PBPS103:XPOS",
# "SAROP21-PBPS103:YPOS",
# #"SAROP21-PPRM113:FPICTURE",
# "SAROP21-PPRM113:intensity",
# "SAROP21-PPRM113:x_fit_mean",
# "SAROP21-PPRM113:y_fit_mean",
#]
channels_PBPS113_bernina = [
"SAROP21-PBPS103:INTENSITY",
"SAROP21-PBPS103:INTENSITY_UJ",
"SAROP21-PBPS103:Lnk9Ch0-PP_VAL_PD0",
"SAROP21-PBPS103:Lnk9Ch0-PP_VAL_PD1",
"SAROP21-PBPS103:Lnk9Ch0-PP_VAL_PD2",
"SAROP21-PBPS103:Lnk9Ch0-PP_VAL_PD3",
"SAROP21-PBPS103:XPOS",
"SAROP21-PBPS103:YPOS",
#"SAROP21-PPRM113:FPICTURE",
"SAROP21-PPRM113:intensity",
"SAROP21-PPRM113:x_fit_mean",
"SAROP21-PPRM113:y_fit_mean",
]
channels_PPRM113_bernina = [
"SAROP21-PPRM113:intensity",
"SAROP21-PPRM113:x_center_of_mass",
"SAROP21-PPRM113:x_fit_amplitude",
"SAROP21-PPRM113:x_fit_mean",
"SAROP21-PPRM113:x_fit_offset",
"SAROP21-PPRM113:x_fit_standard_deviation",
"SAROP21-PPRM113:x_fwhm",
"SAROP21-PPRM113:x_profile",
"SAROP21-PPRM113:x_rms",
"SAROP21-PPRM113:y_center_of_mass",
"SAROP21-PPRM113:y_fit_amplitude",
"SAROP21-PPRM113:y_fit_mean",
"SAROP21-PPRM113:y_fit_offset",
"SAROP21-PPRM113:y_fit_standard_deviation",
"SAROP21-PPRM113:y_fwhm",
"SAROP21-PPRM113:y_profile",
"SAROP21-PPRM113:y_rms",
# "SAROP31-PPRM113:FPICTURE", # full pictures for debugging purposes at the moment, from _ib process
]
###################################
# Beam position monitor PBPS113
channels_PBPS113 = [
@ -360,3 +397,12 @@ bs_channels = (
+ channels_other
)
bs_channels_bernina_DCM = (
channels_gas_monitor
# + channels_RF
+ channels_PBPS053
+ channels_PSSS059
+ channels_PSSS059_LB
+ channels_PBPS113_bernina
# + channels_PPRM113_bernina
)

View File

@ -193,9 +193,84 @@ pvs_PPRM053 = [
###################
# Bernina mono
pvs_Bernina = [
#pvs_Bernina = [
# "SAROP21-ARAMIS:ENERGY_SP",
# "SAROP21-ARAMIS:ENERGY",
# "SAROP21-PBPS103:MOTOR_X1.DRBV",
# "SAROP21-PBPS103:MOTOR_Y1.DRBV",
# "SAROP21-PBPS103:MOTOR_X1.RBV",
# "SAROP21-PBPS103:MOTOR_Y1.RBV",
# "SAROP21-PBPS103:MOTOR_PROBE.RBV",
# "SAROP21-PPRM113:MOTOR_PROBE.RBV"
#]
pvs_photon_energy_bernina = [
"SAROP21-ARAMIS:ENERGY_SP",
"SAROP21-ARAMIS:ENERGY",
]
pvs_OAPU092_bernina = [
"SAROP21-OAPU044:MOTOR_X.RBV",
"SAROP21-OAPU044:MOTOR_Y.RBV",
"SAROP21-OAPU044:MOTOR_W.RBV",
"SAROP21-OAPU044:MOTOR_H.RBV",
]
pvs_OOMV092_bernina = [
"SAROP21-OOMV092:W_X.RBV",
"SAROP21-OOMV092:W_Y.RBV",
"SAROP21-OOMV092:W_RX.RBV",
"SAROP21-OOMV092:W_RZ.RBV",
"SAROP21-OOMV092:BU.RBV",
"SAROP21-OOMV092:BD.RBV",
"SAROP21-OOMV092:VS1.RBV",
"SAROP21-OOMV092:VS2.RBV",
"SAROP21-OOMV092:VS3.RBV",
"SAROP21-OOMV092:TX.RBV",
]
pvs_PPRM094_bernina = [
"SAROP21-PPRM113:MOTOR_PROBE",
#"SAROP21-PPRM113:FPICTURE",
]
pvs_OOMV096_bernina = [
"SAROP21-OOMV096:W_X.RBV",
"SAROP21-OOMV096:W_Y.RBV",
"SAROP21-OOMV096:W_RX.RBV",
"SAROP21-OOMV096:W_RZ.RBV",
"SAROP21-OOMV096:BU.RBV",
"SAROP21-OOMV096:BD.RBV",
"SAROP21-OOMV096:VS1.RBV",
"SAROP21-OOMV096:VS2.RBV",
"SAROP21-OOMV096:VS3.RBV",
"SAROP21-OOMV096:TX.RBV",
]
pvs_PSCR097_bernina = [
"SAROP21-PSCR097:MOTOR_Y1.RBV",
]
pvs_ODCM098_bernina = [
"SAROP21-ODCM098:RX12.RBV", # BRAGG
"SAROP21-ODCM098:TX12.RBV", # Horizontal
"SAROP21-ODCM098:T2.RBV", # Crystal gap T2
"SAROP21-ODCM098:RZ1.RBV", # 1st xtal roll
"SAROP21-ODCM098:RZ2.RBV", # 2nd xtal roll
"SAROP21-ODCM098:RX2.RBV", # 2nd xtal pitch
]
pvs_OAPU102_bernina = [
"SAROP21-OAPU092:MOTOR_X.RBV",
"SAROP21-OAPU092:MOTOR_Y.RBV",
"SAROP21-OAPU092:MOTOR_W.RBV",
"SAROP21-OAPU092:MOTOR_H.RBV",
]
pvs_PSRD103_bernina = [
"SAROP21-PSRD103:MOTOR_PROBE",
]
pvs_PBPS113_bernina = [
"SAROP21-PBPS103:MOTOR_X1.DRBV",
"SAROP21-PBPS103:MOTOR_Y1.DRBV",
"SAROP21-PBPS103:MOTOR_X1.RBV",
@ -204,6 +279,17 @@ pvs_Bernina = [
"SAROP21-PPRM113:MOTOR_PROBE.RBV"
]
pvs_OPPI113_bernina = [
"SAROP21-OPPI113:MOTOR_X1.RBV", # X1 instead of X
"SAROP21-OPPI113:MOTOR_Y1.RBV", # Y1 instead of X
"SAROP21-OPPI113:TC1", # Pulse picker temperature
]
pvs_PPRM113 = [
"SAROP21-PPRM113:MOTOR_PROBE.RBV",
]
####################
# First Cristallina horizontal offset mirror OOMH067
@ -347,8 +433,8 @@ pvs_OATA150 = [
####################
# Pulse picker OPPI151
pvs_OPPI151 = [
# "SAROP31-OPPI151:MOTOR_X.RBV", # Not available
# "SAROP31-OPPI151:MOTOR_Y.RBV", # Not available
"SAROP31-OPPI151:MOTOR_X1.RBV", # X1 instead of X
"SAROP31-OPPI151:MOTOR_Y1.RBV", # Y1 instead of X
"SAROP31-OPPI151:TC1", # Pulse picker temperature
]
@ -528,3 +614,42 @@ pv_channels = (
# + pvs_attocube
# + pvs_smaract_juraj
pv_channels_front_end = (
pvs_machine
# + pvs_RF
# + pvs_undulator
+ pvs_gas_monitor
+ pvs_OAPU044
+ pvs_PBPS053
+ pvs_OATT053
+ pvs_PPRM053
+ pvs_PSSS059
+ pvs_OOMH067
+ pvs_PSCR068
)
pv_channels_bernina = (
pvs_machine
# + pvs_RF
# + pvs_undulator
+ pvs_gas_monitor
+ pvs_OAPU044
+ pvs_PBPS053
+ pvs_OATT053
+ pvs_PPRM053
+ pvs_PSSS059
+ pvs_OOMH067
+ pvs_PSCR068
+ pvs_photon_energy_bernina
+ pvs_OAPU092_bernina
+ pvs_OOMV092_bernina
+ pvs_PPRM094_bernina
+ pvs_OOMV096_bernina
+ pvs_PSCR097_bernina
+ pvs_ODCM098_bernina
+ pvs_OAPU102_bernina
+ pvs_PSRD103_bernina
+ pvs_PBPS113_bernina
+ pvs_PPRM113
)

View File

@ -133,9 +133,15 @@ from crq_exp.diffractometer import Diffractometer
diffractometer = Diffractometer("diffractometer")
# Dilution fridge
from crq_exp.dilsc import Dilution
dilution = Dilution()
try:
dilution = Dilution()
except Exception as e:
logger.warning(f"Error: Could not connect to dilution fridge. {e}")
dilution = None
# MX adajustables
import mx.mx_adjustables
@ -145,10 +151,11 @@ import mx.mx_adjustables
# TODO: requires the stand client, need small howto how to start and configure or let it run all the time
from slic.core.acquisition.spreadsheet import Spreadsheet
from stand.time import Time
# setup spreadsheet for transmission to stand
spreadsheet = Spreadsheet(
{
adjs_for_spreadsheet = {
#"Time": Time(),
"Transmission": attenuator.trans1st,
"Upstream Transmission": upstream_attenuator.trans1st,
"Energy_setpoint": undulators,
@ -160,12 +167,27 @@ spreadsheet = Spreadsheet(
"TRYBASE": diffractometer.try_base,
"THETA": diffractometer.theta,
"TWOTHETA": diffractometer.twotheta,
}
if dilution is not None:
adjs_dilsc = {
"Magnet_X": dilution.x,
"Magnet_Y": dilution.y,
"Magnet_Z": dilution.z,
"DilSc_T_chip": dilution.T_chip,
"DilSc_T_pucksensor": dilution.T_pucksensor,
},
}
adjs_for_spreadsheet.update(adjs_dilsc)
# temporary mono
from exp_temp.mono import Mono_rotation
# setup spreadsheet for transmission to stand
spreadsheet = Spreadsheet(
adjs_for_spreadsheet,
placeholders=("comment", "sample", "run_usable"),
host="saresc-vcons-02.psi.ch",
port=9090,
@ -187,26 +209,47 @@ except Exception as error:
################# DAQ Setup #################
instrument = "cristallina"
experiment_type = "MX" # "MX" or "Q" for the different setups and detector configurations
from pgroups import pgroup, pgroup_scratch
# setup pgroup specific logger
setup_logging_pgroup(pgroup)
daq = SFAcquisition(
instrument,
pgroup,
default_channels=bs_channels,
default_pvs=pv_channels,
default_detectors=detectors,
rate_multiplicator=1,
spreadsheet=spreadsheet,
)
logger.info(f"Using Cristallina{experiment_type} setup for detectors.")
if experiment_type == "MX":
daq = SFAcquisition(
instrument,
pgroup,
default_channels=bs_channels,
default_pvs=pv_channels,
default_detectors=detectors_MX,
rate_multiplicator=1,
spreadsheet=spreadsheet,
)
elif experiment_type == "Q":
daq = SFAcquisition(
instrument,
pgroup,
default_channels=bs_channels,
default_pvs=pv_channels,
default_detectors=detectors,
rate_multiplicator=1,
spreadsheet=spreadsheet,
)
else:
logger.error(f"Experiment type {experiment_type} not supported. Exiting.")
sys.exit(1)
daq.update_config_pvs()
# There is a new EPICS buffer, so the archiver is no longer used. This makes sure we are taking PVs from the right place.
daq.update_config_pvs()
try:
daq.update_config_pvs()
except Exception as e:
print(e)
from acquisition import multiple_daqs
@ -228,5 +271,5 @@ check_intensity_gas_monitor = PVCondition(
scan = Scanner(default_acquisitions=[daq], condition=check_intensity_gas_monitor)
gui = GUI(scan, show_goto=True, show_spec=True)
logger.info(f"Running at {instrument} with pgroup {pgroup}.")
logger.info(f"Running at {instrument} with pgroup {pgroup}. Experiment type: {experiment_type}.")
logger.info("Loading finished.")

6
exp_temp/mono.py Normal file
View File

@ -0,0 +1,6 @@
from slic.devices.general.motor import Motor
Mono_rotation = Motor("SARES30-MOBI2:MOT_RY") # large rotation stage

View File

@ -33,7 +33,11 @@ pgroup_scratch = "p19150" # Scratch
# pgroup = "p21741" # CrQ - DilSc - SAXS LiHoF4
#pgroup = "p21735" # Cr-MX Aller 2024-06-04
# pgroup = "p21735" # Cr-MX Aller 2024-06-04
# pgroup = "p21736" # Cr-MX Weik 2024-06-07
pgroup = "p21977" # CrQ - Dilsc - LiErF4
# pgroup = "p21977" # CrQ - Dilsc - LiErF4
# pgroup = "p21981" # CrMX JFJ commissioning and other related detector bullocks
pgroup = "p22198" # CrMX Fromme - 2024-10-25

25
stand/time.py Normal file
View File

@ -0,0 +1,25 @@
from slic.core.adjustable import Adjustable
import datetime
class Time(Adjustable):
""" Adjustable only for spreadsheet, no other functionality
"""
def __init__(self):
super().__init__(self, "")
def get_current_value(self):
return datetime.datetime.now().replace(microsecond=0).isoformat()
def is_moving(self):
return False
def set_target_value(self):
pass
def __repr__(self):
name = "Time"
value = self._printable_value()
return f"{name} : {value}"
def __str__(self):
return self._printable_value()