##########################################################################################################
##########################################################################################################
##########################################################################################################
###    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("JF16T03V02","JF20T01V01")
# 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
#detectors["JF16T03V02"]['disabled_modules'] = [0, 2] # bottom module:0, middle module:1, top module:2

# 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

# JF 8M default settings
# detectors["JF17T16V01"]['remove_raw_files'] = True # We switched off quite a few modules, let's not keep all the raw data.
# detectors["JF17T16V01"]['factor'] = 0.1 # Some useful compromise to save space.
# detectors["JF17T16V01"]['adc_to_energy'] = True # We switched off quite a few modules, let's not keep all the raw data.
# detectors["JF17T16V01"]['compression'] = True 
# detectors["JF17T16V01"]['save_dap_results'] = False
# detectors["JF17T16V01"]['geometry'] = True
#detectors["JF17T16V01"]['disabled_modules'] = [0, 1, 2, 3, 9, 10, 11, 12, 13, 14, 15]



detectors_I0_only = DetectorConfig(["JF20T01V01"])
# I0 JF settings with finer resolution
detectors_I0_only["JF20T01V01"]['remove_raw_files'] = True
detectors_I0_only["JF20T01V01"]['factor'] = 0.1 # Less space saving but more resolution
detectors_I0_only["JF20T01V01"]['adc_to_energy'] = True 
detectors_I0_only["JF20T01V01"]['compression'] = True
detectors_I0_only["JF20T01V01"]['save_dap_results'] = False
detectors_I0_only["JF20T01V01"]['geometry'] = False


#detectors_stripsel = DetectorConfig(["JF20T01V01"])
# JF stripsel settings with finer resolution
#detectors_stripsel["JF05T01V01"]['remove_raw_files'] = True
#detectors_stripsel["JF05T01V01"]['factor'] = 0.1 # Less space saving but more resolution
#detectors_stripsel["JF05T01V01"]['adc_to_energy'] = True 
#detectors_stripsel["JF05T01V01"]['compression'] = True
#detectors_stripsel["JF05T01V01"]['save_dap_results'] = False
#detectors_stripsel["JF05T01V01"]['geometry'] = True


# 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.1 # Some useful compromise to save space.
#detectors["JF17T16V01"]['save_dap_results'] = False
#detectors["JF17T16V01"]['geometry'] = True


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
)
