Files
cristallina/channels/bs_channels.py

582 lines
17 KiB
Python
Executable File

##########################################################################################################
##########################################################################################################
##########################################################################################################
### JUNGFRAU DETECTORS
from slic.core.acquisition.detcfg import DetectorConfig
# TODO: JF settings regarding raw conversion, compression, etc.
detectors = [
"JF16T03V02", # 1.5M from 2025
# "JF16T03V01", # 1.5M from 2022
# "JF17T16V01", # 8M
"JF20T01V01", # IO
# "JF05T01V01", # 0.5M stripsel borrowed from Bernina, now registered in esc network
]
# ALLOWED_PARAMS = dict(
# adc_to_energy = bool,
# compression = bool,
# crystfel_lists_laser = bool,
# disabled_modules = Sequence,
# double_pixels_action = ["mask", "interp", "keep"],
# downsample = tuple,
# factor = Number,
# geometry = bool,
# remove_raw_files = bool,
# roi = dict, # TODO: test with these definitions: {'beam': [1775, 1875, 1070, 1170]} achtung: doesnt work with geometry = True
# save_dap_results = bool
# )
detectors = DetectorConfig(detectors)
# detectors_with_config["JF16T03V01"]['save_dap_results'] = True
# JF 1.5M default settings
detectors["JF16T03V02"]['remove_raw_files'] = True
detectors["JF16T03V02"]['factor'] = 0.1 # Some useful compromise to save space.
detectors["JF16T03V02"]['adc_to_energy'] = True
detectors["JF16T03V02"]['compression'] = True
detectors["JF16T03V02"]['save_dap_results'] = False
detectors["JF16T03V02"]['geometry'] = True
# I0 JF default settings
detectors["JF20T01V01"]['remove_raw_files'] = True
detectors["JF20T01V01"]['factor'] = 1 # Some useful compromise to save space.
detectors["JF20T01V01"]['adc_to_energy'] = True
detectors["JF20T01V01"]['compression'] = True
detectors["JF20T01V01"]['save_dap_results'] = False
detectors["JF20T01V01"]['geometry'] = False
detectors_I0_only = DetectorConfig(["JF20T01V01"])
# I0 JF settings with finer resolution
detectors["JF20T01V01"]['remove_raw_files'] = True
detectors["JF20T01V01"]['factor'] = 0.1 # Less space saving but more resolution
detectors["JF20T01V01"]['adc_to_energy'] = True
detectors["JF20T01V01"]['compression'] = True
detectors["JF20T01V01"]['save_dap_results'] = False
detectors["JF20T01V01"]['geometry'] = False
# detectors_with_config["JF16T03V01"]['disabled_modules'] = [0, 1] # bottom module:0, middle module:1, top module:2
#detectors["JF17T16V01"]['disabled_modules'] = [0, 1, 2, 3,
# 9, 10, 11,
# 12, 13, 14, 15] # bottom module:0, middle module:1, top module:2
#detectors["JF17T16V01"]['remove_raw_files'] = True # We switched off quite a few modules, let's not keep all the raw data.
#detectors["JF17T16V01"]['compression'] = True
#detectors["JF17T16V01"]['adc_to_energy'] = True # We switched off quite a few modules, let's not keep all the raw data.
#detectors["JF17T16V01"]['factor'] = 0.2 # Some useful compromise to save space.
#detectors["JF17T16V01"]['save_dap_results'] = False
#detectors["JF17T16V01"]['geometry'] = False
detectors_MX = DetectorConfig()
detectors_MX.add("JF17T16V01", adc_to_energy=True, compression=True, crystfel_lists_laser=True, double_pixels_action="mask", factor=12.00, remove_raw_files=True, save_dap_results=True, geometry=False)
##########################################################################################################
##########################################################################################################
##########################################################################################################
### BS CHANNELS
###########################################################################
#### CAMERAS COLLECTED
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-SMX-OAV.jet_projection", #SWISSMX oav jET PROJECTION
# "SARES30-CAMS156-XE:FPICTURE", # X-ray eye
]
###########################################################################
#### MACHINE
# RF phases and amplitudes
channels_RF = [
"SINSB01-RLLE-DSP:PHASE-VS",
"SINSB02-RLLE-DSP:PHASE-VS",
"SINSB03-RLLE-DSP:PHASE-VS",
"SINSB04-RLLE-DSP:PHASE-VS",
"SINXB01-RLLE-DSP:PHASE-VS",
"SINDI01-RLLE-DSP:PHASE-VS",
"S10CB01-RLLE-DSP:PHASE-VS",
"S10CB02-RLLE-DSP:PHASE-VS",
"S10CB03-RLLE-DSP:PHASE-VS",
"S10CB04-RLLE-DSP:PHASE-VS",
"S10CB05-RLLE-DSP:PHASE-VS",
"S10CB06-RLLE-DSP:PHASE-VS",
"S10CB07-RLLE-DSP:PHASE-VS",
"S10CB08-RLLE-DSP:PHASE-VS",
"S10CB09-RLLE-DSP:PHASE-VS",
"S20CB01-RLLE-DSP:PHASE-VS",
"S20CB02-RLLE-DSP:PHASE-VS",
"S20CB03-RLLE-DSP:PHASE-VS",
"S20CB04-RLLE-DSP:PHASE-VS",
"S30CB01-RLLE-DSP:PHASE-VS",
"S30CB02-RLLE-DSP:PHASE-VS",
"S30CB03-RLLE-DSP:PHASE-VS",
"S30CB04-RLLE-DSP:PHASE-VS",
"S30CB05-RLLE-DSP:PHASE-VS",
"S30CB06-RLLE-DSP:PHASE-VS",
"S30CB07-RLLE-DSP:PHASE-VS",
"S30CB08-RLLE-DSP:PHASE-VS",
"S30CB09-RLLE-DSP:PHASE-VS",
"S30CB10-RLLE-DSP:PHASE-VS",
"S30CB11-RLLE-DSP:PHASE-VS",
"S30CB12-RLLE-DSP:PHASE-VS",
"S30CB13-RLLE-DSP:PHASE-VS",
"S30CB14-RLLE-DSP:PHASE-VS",
"SINEG01-RLLE-DSP:AMPLT-VS",
"SINSB01-RLLE-DSP:AMPLT-VS",
"SINSB02-RLLE-DSP:AMPLT-VS",
"SINSB03-RLLE-DSP:AMPLT-VS",
"SINSB04-RLLE-DSP:AMPLT-VS",
"SINXB01-RLLE-DSP:AMPLT-VS",
"SINDI01-RLLE-DSP:AMPLT-VS",
"S10CB01-RLLE-DSP:AMPLT-VS",
"S10CB02-RLLE-DSP:AMPLT-VS",
"S10CB03-RLLE-DSP:AMPLT-VS",
"S10CB04-RLLE-DSP:AMPLT-VS",
"S10CB05-RLLE-DSP:AMPLT-VS",
"S10CB06-RLLE-DSP:AMPLT-VS",
"S10CB07-RLLE-DSP:AMPLT-VS",
"S10CB08-RLLE-DSP:AMPLT-VS",
"S10CB09-RLLE-DSP:AMPLT-VS",
"S20CB01-RLLE-DSP:AMPLT-VS",
"S20CB02-RLLE-DSP:AMPLT-VS",
"S20CB03-RLLE-DSP:AMPLT-VS",
"S20CB04-RLLE-DSP:AMPLT-VS",
"S30CB01-RLLE-DSP:AMPLT-VS",
"S30CB02-RLLE-DSP:AMPLT-VS",
"S30CB03-RLLE-DSP:AMPLT-VS",
"S30CB04-RLLE-DSP:AMPLT-VS",
"S30CB05-RLLE-DSP:AMPLT-VS",
"S30CB06-RLLE-DSP:AMPLT-VS",
"S30CB07-RLLE-DSP:AMPLT-VS",
"S30CB08-RLLE-DSP:AMPLT-VS",
"S30CB09-RLLE-DSP:AMPLT-VS",
"S30CB10-RLLE-DSP:AMPLT-VS",
"S30CB11-RLLE-DSP:AMPLT-VS",
"S30CB12-RLLE-DSP:AMPLT-VS",
"S30CB13-RLLE-DSP:AMPLT-VS",
"S30CB14-RLLE-DSP:AMPLT-VS",
]
###########################################################################
#### FRONT-END
####################
# Gas intensity monitor PBPG050
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",
]
###################
# Beam position and intensity monitor PBPS053
channels_PBPS053 = [
"SARFE10-PBPS053:INTENSITY",
"SARFE10-PBPS053:XPOS",
"SARFE10-PBPS053:YPOS",
]
###################
# Spectrometer 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:processing_parameters",
]
###################
# Spectrometer PSSS059, large bandwidth camera
channels_PSSS059_LB = [
"SARFE10-PSSS059-LB:FIT-COM",
"SARFE10-PSSS059-LB:FIT-FWHM",
"SARFE10-PSSS059-LB:FIT-RES",
"SARFE10-PSSS059-LB:FIT-RMS",
"SARFE10-PSSS059-LB:SPECT-COM",
"SARFE10-PSSS059-LB:SPECT-RES",
"SARFE10-PSSS059-LB:SPECT-RMS",
"SARFE10-PSSS059-LB:SPECTRUM_X",
"SARFE10-PSSS059-LB:SPECTRUM_Y",
"SARFE10-PSSS059-LB:SPECTRUM_Y_SUM",
"SARFE10-PSSS059-LB:processing_parameters",
# "SARFE10-PSSS059-LB:FPICTURE", # only in special circumstances
"SARFE10-PSSS059-LB:FIT-BRT",
]
###########################################################################
#### BERNINA BRANCH until DCM
###################
# Bernina beam intensity and position monitor PBPS113 (alias PBPS103)
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",
]
###################
# Bernina screen PPRM113
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
]
###########################################################################
#### CRISTALLINA BRANCH
###################
## Beam position and intensity 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",
]
channels_PBPS113_waveforms = [
"SAROP31-PBPS113:Lnk9Ch0-WF-DATA",
"SAROP31-PBPS113:Lnk9Ch1-WF-DATA",
"SAROP31-PBPS113:Lnk9Ch2-WF-DATA",
"SAROP31-PBPS113:Lnk9Ch3-WF-DATA",
"SAROP31-PBPS113:Lnk9Ch4-WF-DATA",
"SAROP31-PBPS113:Lnk9Ch5-WF-DATA",
"SAROP31-PBPS113:Lnk9Ch6-WF-DATA",
"SAROP31-PBPS113:Lnk9Ch7-WF-DATA",
"SAROP31-PBPS113:Lnk9Ch8-WF-DATA",
"SAROP31-PBPS113:Lnk9Ch9-WF-DATA",
"SAROP31-PBPS113:Lnk9Ch10-WF-DATA",
"SAROP31-PBPS113:Lnk9Ch11-WF-DATA",
"SAROP31-PBPS113:Lnk9Ch12-WF-DATA",
"SAROP31-PBPS113:Lnk9Ch13-WF-DATA",
"SAROP31-PBPS113:Lnk9Ch14-WF-DATA",
"SAROP31-PBPS113:Lnk9Ch15-WF-DATA",
]
###################
# Diode PDIM113
channels_PDIM113 = [
"SAROP31-PBPS113:Lnk9Ch0-PP_VAL_PD4",
]
###################
# Beam profile monitor PPRM113
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 and intensity monitor PBPS149
channels_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: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
]
####################
# Diode under screen between the KB's PSCD153
channels_PSCD153 = [
"SAROP31-PBPS149:Lnk9Ch0-PP_VAL_PD4",
]
###########################################################################
#### GENERAL PURPOSE EXPERIMENT
#######################
# Cristallina event reciever
channels_EVR = [
"SAR-CVME-TIFALL6:EvtSet",
]
#######################
# Digitizer
channels_digitizer = [
# extra non-beam synchronous channels:
#"SARES30-LTIM01-EVR0:DUMMY_PV1_NBS",
#"SARES30-LTIM01-EVR0:DUMMY_PV2_NBS",
#"SARES30-LTIM01-EVR0:DUMMY_PV3_NBS",
#"SARES30-LTIM01-EVR0:DUMMY_PV4_NBS",
# other EVR channels:
"SARES30-LSCP1-FNS:CH0:VAL_GET", # Signal-Background
"SARES30-LSCP1-FNS:CH1:VAL_GET", # Signal-Background
"SARES30-LSCP1-FNS:CH2:VAL_GET", # Signal-Background
"SARES30-LSCP1-FNS:CH3:VAL_GET", # Signal-Background
"SARES30-LSCP1-FNS:CH4:VAL_GET", # Signal-Background
"SARES30-LSCP1-FNS:CH5:VAL_GET", # Signal-Background
"SARES30-LSCP1-FNS:CH6:VAL_GET", # Signal-Background
"SARES30-LSCP1-FNS:CH7:VAL_GET", # Signal-Background
"SARES30-LSCP1-CRISTA1:CH0:1", # Waveform signal
"SARES30-LSCP1-CRISTA1:CH1:1", # Waveform signal
"SARES30-LSCP1-CRISTA1:CH2:1", # Waveform signal
"SARES30-LSCP1-CRISTA1:CH3:1", # Waveform signal
"SARES30-LSCP1-CRISTA1:CH4:1", # Waveform signal
"SARES30-LSCP1-CRISTA1:CH5:1", # Waveform signal
"SARES30-LSCP1-CRISTA1:CH6:1", # Waveform signal
"SARES30-LSCP1-CRISTA1:CH7:1", # Waveform signal
# "SARES30-LSCP1-CRISTA1:CH2:1", # Waveform trigger
"SARES30-LTIM01-EVR0:CALCI", # Calculated intensity
]
#######################
# X-ray eye
channels_Xeye = [
"SARES30-CAMS156-XE:intensity",
"SARES30-CAMS156-XE:x_center_of_mass",
"SARES30-CAMS156-XE:x_fit_amplitude",
"SARES30-CAMS156-XE:x_fit_mean",
"SARES30-CAMS156-XE:x_fit_offset",
"SARES30-CAMS156-XE:x_fit_standard_deviation",
"SARES30-CAMS156-XE:x_fwhm",
"SARES30-CAMS156-XE:x_profile",
"SARES30-CAMS156-XE:x_rms",
"SARES30-CAMS156-XE:y_center_of_mass",
"SARES30-CAMS156-XE:y_fit_amplitude",
"SARES30-CAMS156-XE:y_fit_mean",
"SARES30-CAMS156-XE:y_fit_offset",
"SARES30-CAMS156-XE:y_fit_standard_deviation",
"SARES30-CAMS156-XE:y_fwhm",
"SARES30-CAMS156-XE:y_profile",
"SARES30-CAMS156-XE:y_rms",
# "SARES30-CAMS156-XE:FPICTURE",
]
###########################################################################
#### CRISTALLINA-Q EXPERIMENT
#######################
# Diffractometer 1 bs_channels
ID_dm1 = "SARES31-GPS"
diffractometer_1_bs = [
ID_dm1 + ":ROT2THETA-BS",
ID_dm1 + ":ROTTHETA-BS",
ID_dm1 + ":TRX-BS",
ID_dm1 + ":TRY-BS",
ID_dm1 + ":TRZ-BS",
ID_dm1 + ":TD-BS",
ID_dm1 + ":TRXBASE-BS",
ID_dm1 + ":TRYBASE-BS",
ID_dm1 + ":TRYBASE-Avg-BS",
ID_dm1 + "::CALC1",
ID_dm1 + "::CALC2",
ID_dm1 + "::CALC3",
ID_dm1 + "::CALC4",
]
ID_dm2 = "SARES32-GPS"
diffractometer_2_bs = [
ID_dm2 + ":ROT2THETA-BS",
ID_dm2 + ":ROTTHETA-BS",
ID_dm2 + ":TRX-BS",
ID_dm2 + ":TRY-BS",
ID_dm2 + ":TRZ-BS",
ID_dm2 + ":TD-BS",
ID_dm2 + ":TRXBASE-BS",
ID_dm2 + ":TRYBASE-BS",
ID_dm2 + ":TRYBASE-Avg-BS",
ID_dm2 + "::CALC1",
ID_dm2 + "::CALC2",
ID_dm2 + "::CALC3",
ID_dm2 + "::CALC4",
]
###########################################################################
#### CHANNEL GROUPS
bs_channels = (
channels_gas_monitor
# + channels_RF
+ channels_PBPS053
+ channels_PSSS059
+ channels_PSSS059_LB
+ channels_PBPS113
# + channels_PBPS113_waveforms
+ channels_PDIM113
# + channels_PPRM113
+ channels_PBPS149
# + channels_PBPS149_waveforms
# + channels_PPRM150 # only if screen is inserted
+ channels_PSCD153
+ channels_EVR
+ channels_digitizer
# + channels_Xeye
+ diffractometer_1_bs
+ diffractometer_2_bs
# + camera_channels
)
bs_channels_cristallina_beamline = (
channels_gas_monitor
# + channels_RF
+ channels_PBPS053
+ channels_PSSS059
+ channels_PSSS059_LB
+ channels_PBPS113
# + channels_PBPS113_waveforms
+ channels_PDIM113
# + channels_PPRM113
+ channels_PBPS149
# + channels_PBPS149_waveforms
# + channels_PPRM150 # only if screen is inserted
+ channels_PSCD153
+ channels_EVR
)
bs_channels_bernina_DCM = (
channels_gas_monitor
# + channels_RF
+ channels_PBPS053
+ channels_PSSS059
+ channels_PSSS059_LB
+ channels_PBPS113_bernina
# + channels_PPRM113_bernina
)