diff --git a/bernina.py b/bernina.py new file mode 100644 index 0000000..050e880 --- /dev/null +++ b/bernina.py @@ -0,0 +1,54 @@ +from slic.utils.eco_components.config import initFromConfigList +from epics import PV +from slic.utils.eco_components import ecocnf +from slic.utils.eco_components.aliases import NamespaceCollection +import logging + +from devices import components, config +import sys + + +_namespace = globals() + +_mod = sys.modules[__name__] + +_scope_name = "bernina" + +alias_namespaces = NamespaceCollection() + +def init(*args,lazy=None): + if args: + allnames = [tc['name'] for tc in components] + comp_toinit = [] + for arg in args: + if not arg in allnames: + raise Exception(f'The component {arg} has no configuration defined!') + else: + comp_toinit.append(components[allnames.index(arg)]) + else: + comp_toinit = components + + if lazy is None: + lazy=ecocnf.startup_lazy + + op = {} + for key, value in initFromConfigList(comp_toinit, components, lazy=lazy).items(): + # _namespace[key] = value + _mod.__dict__[key] = value + op[key]= value + + + if not ecocnf.startup_lazy: + try: + for ta in value.alias.get_all(): + alias_namespaces.bernina.update( + ta["alias"], ta["channel"], ta["channeltype"] + ) + except: + pass +# alias_namespaces.bernina.store() + return op + +init() + + diff --git a/config/channel_list b/config/channel_list new file mode 100644 index 0000000..93a287f --- /dev/null +++ b/config/channel_list @@ -0,0 +1,17 @@ +#SAROP21-PALMK134:CH1_BUFFER +#SAROP21-PALMK134:CH2_BUFFER +#SARES20-LSCP9-FNS:CH0:BOXCAR.VALF +#SARES20-LSCP9-FNS:CH0:BOXCAR.VALA +#SARES20-LSCP9-FNS:CH5:BOXCAR.VALF +#SARES20-LSCP9-FNS:CH5:BOXCAR.VALA +#SARES20-LSCP9-FNS:CH6:BOXCAR.VALF +#SARES20-LSCP9-FNS:CH6:BOXCAR.VALA +#SAROP21-PALMK134:CH1_BUFFER +#SAROP21-PALMK134:CH2_BUFFER + +#Ioxoscurrent +#SARES20-LSCP9:CH5:2 +SARES20-LSCP9-FNS:CH1:VAL_GET +#SARES20-LSCP9:CH6:2 +#SARES20-LSCP9-FNS:CH6:VAL_GET + diff --git a/config/config.json b/config/config.json new file mode 100644 index 0000000..acff926 --- /dev/null +++ b/config/config.json @@ -0,0 +1,97 @@ +{ + "channels_bs": "/sf/bernina/config/channel_lists/default_channel_list", + "pgroup": "p18163", + "test": "nn", + "jf_pedestal_file": "/sf/bernina/data/p18163/res/JF_pedestals/pedestal_20190312_1048", + "jf_gain_path": "/sf/bernina/config/jungfrau/gainMaps", + "gps_config": [ + "base", + "phi_table", + "phi_hex", + "hlxz", + "hly" + ], + "daq_dia_config": { + "writer": { + "output_file": "/sf/bernina/data/p17534/raw/pcoh_commissioning/test4", + "user_id": 17534, + "n_frames": 100, + "general/user": "17534", + "general/process": "__main__", + "general/created": "2018-12-13 17:06:10.501065", + "general/instrument": "Bernina" + }, + "backend": { + "n_frames": 100, + "bit_depth": 16, + "gain_corrections_filename": "/sf/bernina/config/jungfrau/gainMaps", + "gain_corrections_dataset": "gains", + "pede_corrections_filename": "/sf/bernina/data/p16584/res/JF_pedestals/pedestal_20181215_1209.JF03T01V01.res.h5", + "pede_corrections_dataset": "gains", + "pede_mask_dataset": "pixel_mask", + "activate_corrections_preview": true + }, + "detector": { + "exptime": 5e-06, + "frames": 1, + "cycles": 100, + "timing": "trigger", + "dr": 16 + }, + "bsread": { + "output_file": "/sf/bernina/data/p17534/raw/pcoh_commissioning/test4", + "output_file_format": "compact", + "user_id": 17534, + "general/user": "17534", + "general/process": "__main__", + "general/created": "2018-12-13 17:06:10.501077", + "general/instrument": "Bernina" + } + }, + "sf_pedestal_file": "/sf/bernina/data/p16584/res/JF_pedestals/pedestal_20190115_1551", + "jf_pedestal_directory": "/sf/bernina/data/p18163/res/JF_pedestals/", + "checker_PV": "SLAAR21-LTIM01-EVR0:CALCI", + "checker_thresholds": [ + 0.2, + 5 + ], + "checker_fractionInThreshold": 0.7, + "jf_channels": [ + "JF07T32V01" + ], + "daq_address": "http://sf-daq-bernina:10000", + "path_exp": [ + "/sf/bernina/config/eco", + "/sf/bernina/config/src/python/cta/lib" + ], + "xrd_config": [ + "base", + "kappa", + "arm" + ], + "las_smar_config": { + "pump_gonio": "-ESB3", + "pump_rot": "-ESB13", + "pump_transl": "-ESB7", + "_lic_pump_gonio": "-ESB3", + "_lic_pump_transl": "-ESB7", + "_lic_pump_rot": "-ESB13", + "tt_target_focus": "-ESB16" + }, + "xeye": { + "camera_pv": "SARES20-PROF142-M1", + "zoomstage_pv": "SARES20-MF1:MOT_15" + }, + "cams_qioptiq": { + "zoomstage_pv": "SARES20-MF1:MOT_13", + "camera_pv": "SARES20-CAMS142-M2" + }, + "cams_sigma": { + "camera_pv": "ERROR" + }, + "Kern": { + "vonHamos_horiz": "SARES20-MF1:MOT_5", + "vonHamos_vert": "SARES20-MF1:MOT_6" + } +} + diff --git a/devices.py b/devices.py new file mode 100755 index 0000000..7210b41 --- /dev/null +++ b/devices.py @@ -0,0 +1,604 @@ +# # New configuration of components: +# components is an ordered list of +# - name in parent package +# - type, describing the python Class or factory function. +# - arguments of that type args +# - kwargs of that type + +# # Conventions for the type +# the call of type will try to pass a kwarg 'name' with the +# name of the component, before only calling args and kwargs. +# if arg or kwarg is of type slic.utils.Component (dummy class) +# this indicates that an earlier initialized object is used +# (e.g. from same configuration). +from slic.utils.eco_components.config import ( + Component, + Alias, + init_device, + initFromConfigList, + Configuration, +) + +_eco_lazy_init = False + +config = Configuration( +# "/sf/bernina/config/eco/bernina_config_slic.devices.json", name="bernina_config" + "./slickits/bernina/config/config.json", name="bernina_config" +) + +components = [ + # { + # 'name' : 'device_alias_name', + # 'type' : 'package.module.submodule:ClassOrFactory', + # 'args' : ['all','the','requires','args'], + # 'kwargs': {} + # } + { + "type": "slic.utils.eco_components.config:append_to_path", + "args": config["path_exp"], + "name": "path_exp", + "kwargs": {}, + "lazy": False, + }, + { + "name": "elog", + "type": "slic.utils.elog:Elog", + "args": ["https://elog-gfa.psi.ch/Bernina"], + "kwargs": { + "user": "gac-bernina", + "screenshot_directory": "/sf/bernina/config/screenshots", + "password": "supercorrect" + }, + }, + { + "name": "screenshot", + "type": "slic.utils.elog:Screenshot", + "args": [], + "kwargs": {"screenshot_directory": "/sf/bernina/config/screenshots"}, + }, + { + "name": "slit_und", + "type": "slic.devices.xoptics.slits:SlitFourBlades_old", + "args": ["SARFE10-OAPU044"], + "kwargs": {}, + "desc": "Slit after Undulator", + }, + { + "name": "att_fe", + "type": "slic.devices.xoptics.attenuator_aramis:AttenuatorAramis", + "args": ["SARFE10-OATT053"], + "kwargs": {}, + "z_und": 53, + "desc": "Attenuator in Front End", + }, + { + "name": "mon_und", + "z_und": 53, + "desc": "Intensity/position monitor after Optics hutch", + "type": "slic.devices.xdiagnostics.intensity_monitors:SolidTargetDetectorPBPS", + "args": ["SARFE10-PBPS053"], + "kwargs": {}, + }, + { + "name": "prof_fe", + "args": ["SARFE10-PPRM064"], + "kwargs": {}, + "z_und": 64, + "desc": "Profile monitor after Front End", + "type": "slic.devices.xdiagnostics.profile_monitors:Pprm", + }, + { + "name": "prof_mirr_alv1", + "args": ["SAROP11-PPRM066"], + "kwargs": {}, + "z_und": 66, + "desc": "Profile monitor after Alvra Mirror 1", + "type": "slic.devices.xdiagnostics.profile_monitors:Pprm", + }, + # { + # "name": "slitSwitch", + # "z_und": 92, + # "desc": "Slit in Optics hutch after Photon switchyard and before Bernina optics", + # "type": "slic.devices.xoptics.slits:SlitBlades_old", + # "args": ["SAROP21-OAPU092"], + # "kwargs": {}, + # }, + { + "name": "slit_switch", + "z_und": 92, + "desc": "Slit in Optics hutch after Photon switchyard and before Bernina optics", + "type": "slic.devices.xoptics.slits_new:SlitBlades", + "args": ["SAROP21-OAPU092"], + "kwargs": {}, + }, + { + "name": "prof_mirr1", + "args": ["SAROP21-PPRM094"], + "kwargs": {}, + "z_und": 94, + "desc": "Profile monitor after Mirror 1", + "type": "slic.devices.xdiagnostics.profile_monitors:Pprm", + }, + { + "name": "mirr1", + "args": [], + "kwargs": {}, + "z_und": 92, + "desc": "Vertical offset mirror 1", + "type": "slic.devices.xoptics.offsetMirrors:OffsetMirror", + "kwargs": {"Id": "SAROP21-OOMV092"}, + }, + { + "name": "mirr2", + "args": [], + "kwargs": {}, + "z_und": 96, + "desc": "Vertical offset mirror 2", + "type": "slic.devices.xoptics.offsetMirrors:OffsetMirror", + "kwargs": {"Id": "SAROP21-OOMV096"}, + }, + { + "name": "mono", + "args": ["SAROP21-ODCM098"], + "kwargs": {}, + "z_und": 98, + "desc": "DCM Monochromator", + "type": "slic.devices.xoptics.dcm:Double_Crystal_Mono", + }, + { + "name": "prof_mono", + "args": ["SAROP21-PPRM102"], + "kwargs": {}, + "z_und": 102, + "desc": "Profile monitor after Monochromator", + "type": "slic.devices.xdiagnostics.profile_monitors:Pprm", + }, + { + "name": "xp", + "args": [], + "kwargs": { + "Id": "SAROP21-OPPI103", + "evronoff": "SGE-CPCW-72-EVR0:FrontUnivOut15-Ena-SP", + "evrsrc": "SGE-CPCW-72-EVR0:FrontUnivOut15-Src-SP", + }, + "z_und": 103, + "desc": "X-ray pulse picker", + "type": "slic.devices.xoptics.pp:Pulsepick", + "lazy": False, + }, + { + "name": "mon_opt_old", + "z_und": 133, + "desc": "Intensity/position monitor after Optics hutch", + "type": "slic.devices.xdiagnostics.intensity_monitors:SolidTargetDetectorPBPS", + "args": ["SAROP21-PBPS133"], + "kwargs": {"VME_crate": "SAROP21-CVME-PBPS1", "link": 9}, + }, + { + "name": "mon_opt", + "z_und": 133, + "desc": "Intensity/position monitor after Optics hutch", + "type": "slic.devices.xdiagnostics.intensity_monitors_new:SolidTargetDetectorPBPS_new", + "args": ["SAROP21-PBPS133"], + "kwargs": {"VME_crate": "SAROP21-CVME-PBPS1", "link": 9, 'channels':{'up':'SLAAR21-LSCP1-FNS:CH6:VAL_GET','down':'SLAAR21-LSCP1-FNS:CH7:VAL_GET','left':'SLAAR21-LSCP1-FNS:CH4:VAL_GET','right':'SLAAR21-LSCP1-FNS:CH5:VAL_GET'},'calc':{'itot':'SLAAR21-LTIM01-EVR0:CALCI','xpos':'SLAAR21-LTIM01-EVR0:CALCX','ypos':'SLAAR21-LTIM01-EVR0:CALCY'}}, + }, + { + "name": "prof_opt", + "args": ["SAROP21-PPRM133"], + "kwargs": {}, + "z_und": 133, + "desc": "Profile monitor after Optics hutch", + "type": "slic.devices.xdiagnostics.profile_monitors:Pprm", + }, + { + "name": "spect_tt", + "args": ["SAROP21-PSEN135"], + "kwargs": {"reduction_client_address":"http://sf-daqsync-02:12002/"}, + "z_und": 135, + "desc": "Spectral encoding timing diagnostics before Attenuator.", + "type": "slic.devices.xdiagnostics.timetools:SpectralEncoder", + "lazy":False, + }, + { + "name": "att", + "args": ["SAROP21-OATT135"], + "kwargs": {'pulse_picker':Component('xp')}, + "z_und": 135, + "desc": "Attenuator Bernina", + "type": "slic.devices.xoptics.attenuator_aramis_new:AttenuatorAramis", + }, + { + "name": "ref_laser", + "args": ["SAROP21-OLAS136"], + "kwargs": {}, + "z_und": 136, + "desc": "Bernina beamline reference laser before KBs", + "type": "slic.devices.xoptics.reflaser:RefLaser_Aramis", + }, + { + "name": "slit_att", + "args": ["SAROP21-OAPU136"], + "kwargs": {}, + "z_und": 136, + "desc": "Slits behind attenuator", + "type": "slic.devices.xoptics.slits_new:SlitPosWidth", + "lazy": True, + }, + # { + # "name": "slitAtt", + # "args": ["SAROP21-OAPU136"], + # "kwargs": {}, + # "z_und": 136, + # "desc": "Slits behind attenuator", + # "type": "slic.devices.xoptics.slits:SlitPosWidth_old", + # }, + { + "name": "mon_att", + "args": ["SAROP21-PBPS138"], + "z_und": 138, + "desc": "Intensity/Position monitor after Attenuator", + "type": "slic.devices.xdiagnostics.intensity_monitors:SolidTargetDetectorPBPS", + "kwargs": {"VME_crate": "SAROP21-CVME-PBPS2", "link": 9}, + }, + { + "name": "det_dio", + "args": ["SAROP21-PDIO138"], + "z_und": 138, + "desc": "Diode digitizer for exp data", + "type": "slic.devices.general.detectors:DiodeDigitizer", + "kwargs": {"VME_crate": "SAROP21-CVME-PBPS2", "link": 9}, + }, + { + "name": "prof_att", + "args": ["SAROP21-PPRM138"], + "kwargs": {}, + "z_und": 138, + "desc": "Profile monitor after Attenuator", + "type": "slic.devices.xdiagnostics.profile_monitors:Pprm", + }, + { + "name": "kb_ver", + "args": ["SAROP21-OKBV139"], + "z_und": 139, + "desc": "Vertically focusing Bernina KB mirror", + "type": "slic.devices.xoptics.kbver:KBver", + "kwargs": {}, + }, + { + "args": ["SAROP21-OKBH140"], + "name": "kb_hor", + "z_und": 140, + "desc": "Horizontally focusing Bernina KB mirror", + "type": "slic.devices.xoptics.kbhor:KBhor", + "kwargs": {}, + }, + { + "name": "spatial_tt", + "args": [], + "kwargs": {"reduction_client_address":"http://sf-daqsync-02:12003/"}, + "z_und": 141, + "desc": "spatial encoding timing diagnostics before sample.", + "type": "slic.devices.xdiagnostics.timetools:SpatialEncoder", + "lazy":False, + }, + { + "name": "slit_kb", + "args": [], + "kwargs": {"pvname": "SARES20-MF1"}, + "z_und": 141, + "desc": "Slits behind Kb", + "type": "slic.devices.xoptics.slits_new:SlitBlades_JJ", + #"type": "slic.devices.xoptics.slits:SlitBladesJJ_old", + }, + { + "args": [], + "name": "gps", + "z_und": 142, + "desc": "General purpose station", + "type": "slic.devices.endstations.bernina_diffractometers:GPS", + "kwargs": {"Id": "SARES22-GPS", "configuration": config["gps_config"]}, + }, + { + "args": [], + "name": "xrd", + "z_und": 142, + "desc": "Xray diffractometer", + "type": "slic.devices.endstations.bernina_diffractometers:XRD", + "kwargs": {"Id": "SARES21-XRD", "configuration": config["xrd_config"]}, + }, + + { + "args": [], + "name": "vonHamos", + "z_und": 142, + "desc": "Kern experiment, von Hamos vertical and horizontal stages ", + "type": "slic.devices.general.micos_stage:stage", + "kwargs": { + "vonHamos_horiz_pv": config["Kern"]["vonHamos_horiz"], + "vonHamos_vert_pv": config["Kern"]["vonHamos_vert"],} + }, + { + "args": [], + "name": "xeye", + "z_und": 142, + "desc": "Mobile X-ray eye in Bernina hutch", + "type": "slic.devices.xdiagnostics.profile_monitors_new:Bernina_XEYE", + "kwargs": { + "zoomstage_pv": config["xeye"]["zoomstage_pv"], + "camera_pv": config["xeye"]["camera_pv"], + "bshost": "sf-daqsync-01.psi.ch", + "bsport": 11151, + }, + + }, + { + "args": [], + "name": "cams_qioptiq", + "z_und": 142, + "desc": "Qioptic sample viewer in Bernina hutch", + "type": "slic.devices.endstations.bernina_cameras:Qioptiq", + "kwargs": { + "bshost": "sf-daqsync-01.psi.ch", + "bsport": 11149, + "zoomstage_pv": config["cams_qioptiq"]["zoomstage_pv"], + "camera_pv": config["cams_qioptiq"]["camera_pv"], + }, + }, + { + "args": [], + "name": "cams_sigma", + "z_und": 142, + "desc": "Sigma objective", + "type": "slic.devices.endstations.bernina_cameras:Sigma", + "kwargs": { + "bshost": "sf-daqsync-01.psi.ch", + "bsport": 11149, + "camera_pv": config["cams_sigma"]["camera_pv"], + }, + }, + { + "args": ["SLAAR02-TSPL-EPL"], + "name": "phase_shifter", + "z_und": 142, + "desc": "Experiment laser phase shifter", + "type": "slic.devices.general.timing:PhaseShifterAramis", + "kwargs": {}, + }, + { + "args": [], + "name": "las", + "z_und": 142, + "desc": "Experiment laser optics", + "type": "slic.devices.loptics.bernina_experiment:Laser_Exp", + "kwargs": {"Id": "SLAAR21-LMOT", "smar_config": config["las_smar_config"]}, + "lazy": True, + }, + { + "args": ["SLAAR21-LTIM01-EVR0"], + "name": "laser_shutter", + "z_und": 142, + "desc": "Laser Shutter", + "type": "slic.devices.loptics.laser_shutter:laser_shutter", + "kwargs": {}, + }, + { + "args": [], + "name": "epics_channel_list", + "desc": "epics channel list", + "type": "slic.utils.eco_components.config:ChannelList", +# "kwargs": {"file_name":"/sf/bernina/config/channel_lists/default_channel_list_epics"}, + "kwargs": {"file_name":"./slickits/bernina/config/channel_list"}, + }, + { + "args": [], + "name": "epics_daq", + "z_und": 142, + "desc": "epics data acquisition", + "type": "slic.daq.epics:Epicstools", + "kwargs": { + "channel_list": Component("epics_channel_list"), + "default_file_path": f"/sf/bernina/data/{config['pgroup']}/res/epics_daq/", + }, + }, + { + "args": [], + "name": "daq", + "desc": "server based acquisition", + "type": "slic.daq.dia_new:DIA", + "kwargs": { + "instrument": "bernina", + "api_address": config["daq_address"], + "pgroup": config["pgroup"], + "pedestal_directory": config["jf_pedestal_directory"], + "gain_path": config["jf_gain_path"], + "config_default": config["daq_dia_config"], + "jf_channels": config["jf_channels"], + "default_file_path": None, + }, + }, + { + "args": [ + config["checker_PV"], + config["checker_thresholds"], + config["checker_fractionInThreshold"], + ], #'SARFE10-PBPG050:HAMP-INTENSITY-CAL',[60,700],.7], + "name": "checker", + "desc": "checker functions for data acquisition", + "type": "slic.checkers.cachecker:CAChecker", + "kwargs": {}, + }, + { + "args": [], + "name": "scans", + "desc": "server based acquisition", + "type": "slic.scans:Scanner", + "kwargs": { + "data_base_dir": "scan_data", + "scan_info_dir": f"/sf/bernina/data/{config['pgroup']}/res/scan_info", + "default_counters": [Component("daq")], + "checker": Component("checker"), + "scan_directories": True, + }, + }, + { + "args": [], + "name": "epics_scans", + "desc": "epics non beam synchronous based acquisition", + "type": "slic.scans:Scanner", + "kwargs": { + "data_base_dir": "scan_data", + "scan_info_dir": f"/sf/bernina/data/{config['pgroup']}/res/epics_daq/scan_info", + "default_counters": [Component("epics_daq")], + "checker": Component("checker"), + "scan_directories": True, + }, + }, + { + "args": [], + "name": "lxt", + "desc": "laser timing with pockels cells and phase shifter", + "type": "slic.devices.timing.lasertiming:Lxt", + "kwargs": {}, + }, + { + "args": ["SAR-CCTA-ESB"], + "name": "seq", + "desc": "sequencer timing application (CTA)", + "type": "slic.devices.timing.event_timing:CTA_sequencer", + "kwargs": {}, + }, + { + "args": ["SIN-TIMAST-TMA"], + "name": "event_master", + "desc": "SwissFEL timing master information", + "type": "slic.devices.timing.event_timing:MasterEventSystem", + "kwargs": {}, + }, + { + "args": ["SARES20-CVME-01-EVR0"], + "name": "evr_bernina", + "desc": "Bernina event receiver", + "type": "slic.devices.timing.event_timing:EventReceiver", + "kwargs": {}, + "lazy": True, + }, + { + "args": [], + "name": "default_channel_list", + "desc": "Bernina default channels, used in daq", + "type": "slic.utils.eco_components.config:ChannelList", +# "kwargs": {"file_name":"/sf/bernina/config/channel_lists/default_channel_list"}, + "kwargs": {"file_name":"./slickits/bernina/config/channel_list"}, + "lazy": False, + }, + { + "args": [], + "name": "default_channel_list_bs", + "desc": "Bernina default bs channels, used by bs_daq", + "type": "slic.utils.eco_components.config:ChannelList", +# "kwargs": {"file_name":"/sf/bernina/config/channel_lists/default_channel_list_bs"}, + "kwargs": {"file_name":"./slickits/bernina/config/channel_list"}, + "lazy": False, + }, + { + "args": [], + "name": "channels_spectrometer_projection", + "desc": "", + "type": "slic.utils.eco_components.config:ChannelList", +# "kwargs": {"file_name":"/sf/bernina/config/channel_lists/channel_list_PSSS_projection"}, + "kwargs": {"file_name":"./slickits/bernina/config/channel_list"}, + "lazy": False, + }, + { + "args": [], + "name": "bs_daq", + "desc": "bs daq writer (locally!)", + "type": "slic.daq.bs:BS", + "kwargs": { + "default_channel_list": { + "bernina_default_channels_bs": Component("default_channel_list_bs") + }, + "default_file_path": f"/sf/bernina/data/{config['pgroup']}/res/%s", + }, + "lazy": False, + }, + { + "args": [[Component('slit_und'),Component('slit_switch'),Component('slit_att'),Component('slit_kb')]], + "name": "slits", + "desc": "collection of all slits", + "type": "slic.devices.beamline:Slits", + "kwargs": {}, + "lazy": False, + }, +] + +try: + components.extend(config["components"]) + print("Did append additional components!") +except: + print("Could not append components from config.") + + +#### OLD STUFF TO BE TRANSFERRED OR DELETED #### +components_old = { + "SARFE10-OPSH044": { + "alias": "ShutUnd", + "z_und": 44, + "desc": "Photon shutter after Undulator", + }, + "SARFE10-PBIG050": { + "alias": "GasMon", + "z_und": 50, + "desc": "Gas Monitor Intensity", + }, + "SARFE10-PBPS053": { + "alias": "MonUnd", + "z_und": 44, + "desc": "Intensity position monitor after Undulator", + }, + "SARFE10-SBST060": { + "alias": "ShutFE", + "z_und": 60, + "desc": "Photon shutter in the end of Front End", + }, + "SAROP11-OOMH064": { + "alias": "MirrAlv1", + "z_und": 64, + "desc": "Horizontal mirror Alvra 1", + }, + "SAROP21-PSCR097": { + "alias": "ProfMirr2", + "z_und": 97, + "desc": "Profile Monitor after Mirror 2", + }, + "SAROP21-OPPI103": {"alias": "Pick", "z_und": 103, "desc": "X-ray pulse picker"}, + "SAROP21-BST114": { + "alias": "ShutOpt", + "z_und": 114, + "desc": "Shutter after Optics hutch", + }, + "SAROP21-PALM134": { + "alias": "TimTof", + "z_und": 134, + "desc": "Timing diagnostics THz streaking/TOF", + }, + "SAROP21-PSEN135": { + "alias": "TimRef", + "z_und": 135, + "desc": "Timing diagnostics spectral encoding of ref. index change", + } + # 'SLAAR21-LMOT' : { + # 'alias' : 'Palm', + # 'z_und' : 142, + # 'desc' : 'Streaking arrival time monitor', + # 'eco_type' : 'timing.palm.Palm'}, + # 'SLAAR21-LMOT' : { + # 'alias' : 'Psen', + # 'z_und' : 142, + # 'desc' : 'Streaking arrival time monitor', + # 'eco_type' : 'timing.psen.Psen'} + # = dict( + # alias = '' + # z_und = + # desc = ''}, +}