Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
59 commits
Select commit Hold shift + click to select a range
06b0c49
create i05-shared and move pgm there
Jul 30, 2025
db2bf55
change names to snake case
Jul 30, 2025
7a22f71
minor import change
Jul 30, 2025
49c2eb5
create base mirror
Jul 30, 2025
81166cb
add m1 mirror
Jul 30, 2025
a6bb6f1
add XY and XYZ collimating mirrrors
Jul 31, 2025
6e7a533
fix i10
Jul 31, 2025
ed3592b
add piezo mirror
Jul 31, 2025
1c292b6
add more mirrors
Jul 31, 2025
56e074b
move i05-shared to beamline specific utils
Jul 31, 2025
ba7f819
amend beamlines init file
Jul 31, 2025
b89e69a
move i05-shared to beamline specific utils
Jul 31, 2025
0c889cb
amend beamlines init file
Jul 31, 2025
d7a226e
Merge branch 'create-i05-shared-beamline-module' into common-mirror
Villtord Jul 31, 2025
6b57679
remove XY coll mirror - will be a separate issue
Jul 31, 2025
2cfcce8
Merge remote-tracking branch 'origin/main' into common-mirror
Aug 1, 2025
ca52f00
rename mirror class
Aug 1, 2025
fdce221
move xyzpitchyawroll to motors
Aug 1, 2025
ccf8b5a
rename pgm
Aug 1, 2025
2a97a79
add explicit parameters to child classes
Aug 1, 2025
2d0bd84
Merge branch 'main' into common-mirror
Villtord Aug 1, 2025
80422f0
make common mirror classes generic of strictenum
Aug 4, 2025
0cc78a0
Merge branch 'main' into common-mirror
Villtord Aug 4, 2025
5dc0c0d
Merge branch 'main' into common-mirror
Villtord Aug 5, 2025
c6046b7
add mirrors controls and docstring
Aug 5, 2025
64eff2b
Merge branch 'main' into common-mirror
Villtord Aug 6, 2025
e322968
Merge branch 'main' into common-mirror
Villtord Aug 18, 2025
0710b47
make all new classes depend on Stage only
Aug 19, 2025
7642ffa
Merge branch 'main' into common-mirror
Villtord Aug 19, 2025
559937b
Merge branch 'main' into common-mirror
Villtord Sep 5, 2025
b979135
Merge branch 'main' into common-mirror
Villtord Sep 10, 2025
9fdfcfd
relocate common_mirror to I05 devices
Sep 10, 2025
08322a2
Merge branch 'main' into common-mirror
Villtord Sep 11, 2025
a0cfb59
add comment on mirrors connection
Sep 11, 2025
74045b9
make mirrors locatable and stoppable, fix typos
Sep 19, 2025
c6be37c
Merge branch 'main' into common-mirror
Villtord Sep 19, 2025
67e180e
Merge branch 'main' into common-mirror
Villtord Dec 1, 2025
8d00f21
fix merge
Dec 1, 2025
b752967
fix merge
Dec 1, 2025
5388298
fix test
Dec 1, 2025
6045c0c
Merge branch 'main' into common-mirror
Jan 26, 2026
19ccb05
complete merge with main
Jan 26, 2026
bc774b3
move common_mirror level up
Jan 26, 2026
de0f692
replace i10 PiezoMirror with XYZPiezoCollimatingMirror
Jan 27, 2026
71e1242
make XYZSwitchingMirror parent of XYZPiezoSwitchingMirror
Jan 27, 2026
a82042e
Merge branch 'main' into common-mirror
Villtord Jan 28, 2026
c848470
Merge branch 'main' into common-mirror
Villtord Jan 30, 2026
cf72008
fix merge lint errors
Jan 30, 2026
349a788
Merge branch 'main' into common-mirror
Villtord Feb 3, 2026
83a729f
Merge branch 'main' into common-mirror
Feb 5, 2026
7c21db7
finish merge with main
Feb 5, 2026
07de0b3
Merge branch 'main' into common-mirror
Villtord Feb 5, 2026
254c783
Merge branch 'main' into common-mirror
Villtord Feb 6, 2026
844045a
Merge branch 'main' into common-mirror
Villtord Feb 10, 2026
e1e5953
added docstrings, extract constant suffix
Feb 11, 2026
b6400d1
Merge branch 'main' into common-mirror
Villtord Feb 18, 2026
7ab213b
fix lint
Feb 18, 2026
132a360
fix lint
Feb 18, 2026
e4bf584
Merge branch 'main' into common-mirror
Villtord Feb 19, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 11 additions & 0 deletions src/dodal/beamlines/i05.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,8 @@
from dodal.common.beamlines.beamline_utils import set_beamline as set_utils_beamline
from dodal.device_manager import DeviceManager
from dodal.devices.beamlines.i05 import I05Goniometer
from dodal.devices.beamlines.i05.enums import M4M5Mirror
from dodal.devices.common_mirror import XYZSwitchingMirror
from dodal.devices.temperture_controller import Lakeshore336
from dodal.log import set_beamline as set_log_beamline
from dodal.utils import BeamlinePrefix, get_beamline_name
Expand All @@ -15,6 +17,15 @@
devices.include(i05_shared_devices)


# will connect after https://jira.diamond.ac.uk/browse/I05-731
@devices.factory(skip=True)
def m4m5() -> XYZSwitchingMirror:
return XYZSwitchingMirror(
prefix=f"{PREFIX.beamline_prefix}-OP-RFM-01:",
mirrors=M4M5Mirror,
)


@devices.factory()
def sample_temperature_controller() -> Lakeshore336:
return Lakeshore336(prefix=f"{PREFIX.beamline_prefix}-EA-TCTRL-02:")
Expand Down
11 changes: 11 additions & 0 deletions src/dodal/beamlines/i05_1.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,9 @@
from dodal.beamlines.i05_shared import devices as i05_shared_devices
from dodal.common.beamlines.beamline_utils import set_beamline as set_utils_beamline
from dodal.device_manager import DeviceManager
from dodal.devices.beamlines.i05.enums import Mj7j8Mirror
from dodal.devices.beamlines.i05_1 import XYZPolarAzimuthDefocusStage
from dodal.devices.common_mirror import XYZPiezoSwitchingMirror
from dodal.log import set_beamline as set_log_beamline
from dodal.utils import BeamlinePrefix, get_beamline_name

Expand All @@ -14,6 +16,15 @@
devices.include(i05_shared_devices)


# will connect after https://jira.diamond.ac.uk/browse/I05-731
@devices.factory(skip=True)
def mj7j8() -> XYZPiezoSwitchingMirror:
return XYZPiezoSwitchingMirror(
prefix=f"{PREFIX.beamline_prefix}-OP-RFM-01:",
mirrors=Mj7j8Mirror,
)


@devices.factory
def sm() -> XYZPolarAzimuthDefocusStage:
"""Sample Manipulator."""
Expand Down
18 changes: 17 additions & 1 deletion src/dodal/beamlines/i05_shared.py
Original file line number Diff line number Diff line change
@@ -1,10 +1,12 @@
from dodal.device_manager import DeviceManager
from dodal.devices.beamlines.i05.enums import Grating
from dodal.devices.beamlines.i05.enums import Grating, M3MJ6Mirror
from dodal.devices.common_mirror import XYZPiezoSwitchingMirror
from dodal.devices.insertion_device import (
Apple2,
UndulatorGap,
UndulatorLockedPhaseAxes,
)
from dodal.devices.motors import XYZPitchYawRollStage
from dodal.devices.pgm import PlaneGratingMonochromator
from dodal.devices.synchrotron import Synchrotron
from dodal.utils import BeamlinePrefix, get_beamline_name
Expand Down Expand Up @@ -49,3 +51,17 @@ def id(
) -> Apple2[UndulatorLockedPhaseAxes]:
"""i05 insertion device."""
return Apple2[UndulatorLockedPhaseAxes](id_gap=id_gap, id_phase=id_phase)


@devices.factory()
def m1_collimating_mirror() -> XYZPitchYawRollStage:
return XYZPitchYawRollStage(prefix=f"{PREFIX.beamline_prefix}-OP-COL-01:")


# will connect after https://jira.diamond.ac.uk/browse/I05-731
@devices.factory(skip=True)
def m3mj6_switching_mirror() -> XYZPiezoSwitchingMirror:
return XYZPiezoSwitchingMirror(
prefix=f"{PREFIX.beamline_prefix}-OP-SWTCH-01:",
mirrors=M3MJ6Mirror,
)
6 changes: 3 additions & 3 deletions src/dodal/beamlines/i10.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,6 @@
I10Diagnostic5ADet,
I10Slits,
I10SlitsDrainCurrent,
PiezoMirror,
)
from dodal.devices.beamlines.i10.diagnostics import I10Diagnostic, I10Diagnostic5ADet
from dodal.devices.beamlines.i10.rasor.rasor_current_amp import RasorFemto, RasorSR570
Expand All @@ -16,6 +15,7 @@
PaStage,
)
from dodal.devices.beamlines.i10.rasor.rasor_scaler_cards import RasorScalerCard1
from dodal.devices.common_mirror import XYZPiezoCollimatingMirror
from dodal.devices.current_amplifiers import CurrentAmpDet
from dodal.devices.motors import XYStage, XYZStage
from dodal.devices.temperture_controller import (
Expand All @@ -34,8 +34,8 @@


@devices.factory()
def focusing_mirror() -> PiezoMirror:
return PiezoMirror(prefix=f"{PREFIX.beamline_prefix}-OP-FOCS-01:")
def focusing_mirror() -> XYZPiezoCollimatingMirror:
return XYZPiezoCollimatingMirror(prefix=f"{PREFIX.beamline_prefix}-OP-FOCS-01:")


"""Optic slits"""
Expand Down
7 changes: 4 additions & 3 deletions src/dodal/beamlines/i10_1.py
Original file line number Diff line number Diff line change
@@ -1,12 +1,13 @@
from dodal.beamlines.i10_shared import devices as i10_shared_devices
from dodal.common.beamlines.beamline_utils import set_beamline as set_utils_beamline
from dodal.device_manager import DeviceManager
from dodal.devices.beamlines.i10 import I10JDiagnostic, I10JSlits, PiezoMirror
from dodal.devices.beamlines.i10 import I10JDiagnostic, I10JSlits
from dodal.devices.beamlines.i10_1 import (
ElectromagnetMagnetField,
ElectromagnetStage,
I10JScalerCard,
)
from dodal.devices.common_mirror import XYZPiezoCollimatingMirror
from dodal.devices.current_amplifiers import SR570, CurrentAmpDet
from dodal.devices.temperture_controller.lakeshore.lakeshore import Lakeshore336
from dodal.log import set_beamline as set_log_beamline
Expand Down Expand Up @@ -40,8 +41,8 @@ def diagnostic() -> I10JDiagnostic:


@devices.factory()
def focusing_mirror() -> PiezoMirror:
return PiezoMirror(prefix=f"{PREFIX.beamline_prefix}-OP-FOCA-01:")
def focusing_mirror() -> XYZPiezoCollimatingMirror:
return XYZPiezoCollimatingMirror(prefix=f"{PREFIX.beamline_prefix}-OP-FOCA-01:")


"""I10J Electromagnet Devices"""
Expand Down
10 changes: 5 additions & 5 deletions src/dodal/beamlines/i10_shared.py
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,6 @@
I10SharedDiagnostic,
I10SharedSlits,
I10SharedSlitsDrainCurrent,
PiezoMirror,
)
from dodal.devices.beamlines.i10.i10_apple2 import (
I10Apple2,
Expand All @@ -25,6 +24,7 @@

# Imports taken from i10 while we work out how to deal with split end stations
from dodal.devices.beamlines.i10.i10_setting_data import I10Grating
from dodal.devices.common_mirror import XYZPiezoCollimatingMirror
from dodal.devices.insertion_device import (
BeamEnergy,
InsertionDeviceEnergy,
Expand Down Expand Up @@ -63,8 +63,8 @@ def synchrotron() -> Synchrotron:


@devices.factory()
def first_mirror() -> PiezoMirror:
return PiezoMirror(prefix=f"{PREFIX.beamline_prefix}-OP-COL-01:")
def first_mirror() -> XYZPiezoCollimatingMirror:
return XYZPiezoCollimatingMirror(prefix=f"{PREFIX.beamline_prefix}-OP-COL-01:")


@devices.factory()
Expand All @@ -80,8 +80,8 @@ def pgm() -> PlaneGratingMonochromator:


@devices.factory()
def switching_mirror() -> PiezoMirror:
return PiezoMirror(prefix=f"{PREFIX.beamline_prefix}-OP-SWTCH-01:")
def switching_mirror() -> XYZPiezoCollimatingMirror:
return XYZPiezoCollimatingMirror(prefix=f"{PREFIX.beamline_prefix}-OP-SWTCH-01:")


"""ID"""
Expand Down
17 changes: 15 additions & 2 deletions src/dodal/devices/beamlines/i05/__init__.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,18 @@
from dodal.devices.beamlines.i05.enums import (
Grating,
M3MJ6Mirror,
M4M5Mirror,
Mj7j8Mirror,
)

from .compound_motors import PolynomCompoundMotors
from .enums import Grating
from .i05_motors import I05Goniometer

__all__ = ["Grating", "PolynomCompoundMotors", "I05Goniometer"]
__all__ = [
"Grating",
"I05Goniometer",
"M3MJ6Mirror",
"M4M5Mirror",
"Mj7j8Mirror",
"PolynomCompoundMotors",
]
21 changes: 21 additions & 0 deletions src/dodal/devices/beamlines/i05/enums.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,3 +6,24 @@ class Grating(StrictEnum):
C_1600 = "C 1600 lines/mm"
RH_1600 = "Rh 1600 lines/mm"
PT_800 = "B 800 lines/mm"


class M3MJ6Mirror(StrictEnum):
UNKNOWN = "Unknown"
MJ6 = "MJ6"
M3 = "M3"
REFERENCE = "Reference"


class M4M5Mirror(StrictEnum):
UNKNOWN = "Unknown"
M4 = "M4"
M5 = "M5"
REFERENCE = "Reference"


class Mj7j8Mirror(StrictEnum):
UNKNOWN = "Unknown"
MJ8 = "MJ8"
MJ7 = "MJ7"
REFERENCE = "Reference"
2 changes: 0 additions & 2 deletions src/dodal/devices/beamlines/i10/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,6 @@
I10PneumaticStage,
I10SharedDiagnostic,
)
from .mirrors import PiezoMirror
from .slits import (
I10JSlits,
I10SharedSlits,
Expand All @@ -18,7 +17,6 @@
"I10Diagnostic",
"I10Diagnostic5ADet",
"I10PneumaticStage",
"PiezoMirror",
"I10Slits",
"I10SlitsDrainCurrent",
"I10SharedDiagnostic",
Expand Down
18 changes: 0 additions & 18 deletions src/dodal/devices/beamlines/i10/mirrors.py

This file was deleted.

Loading