Files
cristallina/beamline/components.py

82 lines
2.4 KiB
Python
Executable File

from loguru import logger
from slic.devices.xoptics.aramis_attenuator import Attenuator
from slic.devices.xoptics.pulsepicker import PulsePicker
from slic.devices.xdiagnostics.intensitymonitor import IntensityMonitorPBPS
from .Cristallina_mono import CristallinaMono
from .alignment_laser import AlignmentLaser
from slic.devices.xoptics.kb import KBHor, KBVer
from slic.devices.xoptics.offsetmirrors import OffsetMirror
from slic.devices.xoptics.slits import SlitUnitCenterWidth
from .pp_shutter import PP_Shutter
from .i0_chamber import i0_chamber
from .apertures import slits107, slits149
# Attenuators
upstream_attenuator = Attenuator("SARFE10-OATT053", description="Aramis attenuator OATT053")
attenuator = Attenuator("SAROP31-OATA150", description="Cristallina attenuator OATA150")
def test_attenuators():
for att in (upstream_attenuator, attenuator):
tfundamental = att.get_transmission()
try:
assert tfundamental > 0
except TypeError:
logger.warning(f"No transmission value reported from {att.ID}")
test_attenuators()
# Shutter
pp_shutter = PP_Shutter(
"SARES30-LTIM01-EVR0:RearUniv0-Ena-SP", name="Cristallina pulse picker shutter"
) # Shutter button when ufasing the pulse picker
pulsepicker = PulsePicker(
"SAROP31-OPPI151",
"SARES30-LTIM01-EVR0:Pul3",
name="Cristallina X-ray pulse picker OPPI151",
)
# Alignment laser
alignment_laser = AlignmentLaser(
"SAROP31-OLAS147:MOTOR_1", name="Cristallina alignment laser OLAS147"
)
pbps113 = IntensityMonitorPBPS(
"SAROP31-PBPS113",
# vme_crate="SAROP31-CVME-PBPS1", # please check this!
# link=9,
description="Intensity/position monitor in the optics hutch",
)
pbps149 = IntensityMonitorPBPS(
"SAROP31-PBPS149",
# vme_crate="SAROP31-CVME-PBPS2", # please check this!
# link=9,
description="Intensity/position monitor in the experimental hutch",
)
# I0 chamber
i0 = i0_chamber('SARES30-MCS20610')
# Slits
slits149 = SlitUnitCenterWidth('SAROP31-OAPU149')
slits107 = SlitUnitCenterWidth('SAROP31-OAPU107')
slitsi0 = i0.slits
# KB mirrors
kbHor = KBHor("SAROP31-OKBH154", description="Cristallina horizontal KB mirror")
kbVer = KBVer("SAROP31-OKBV153", description="Cristallina vertical KB mirror")
# Mono
mono = CristallinaMono("SAROP31-ODCC110")
# Offset mirrors
m3 = OffsetMirror('SAROP31-ODMV152')
#TODO the other two offset mirros