dls-dodal 1.58.0__py3-none-any.whl → 1.60.0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {dls_dodal-1.58.0.dist-info → dls_dodal-1.60.0.dist-info}/METADATA +3 -3
- {dls_dodal-1.58.0.dist-info → dls_dodal-1.60.0.dist-info}/RECORD +71 -47
- dodal/_version.py +2 -2
- dodal/beamlines/__init__.py +1 -0
- dodal/beamlines/b07.py +10 -5
- dodal/beamlines/b07_1.py +10 -5
- dodal/beamlines/b21.py +22 -0
- dodal/beamlines/i02_1.py +80 -0
- dodal/beamlines/i03.py +5 -3
- dodal/beamlines/i04.py +5 -3
- dodal/beamlines/i09.py +10 -9
- dodal/beamlines/i09_1.py +10 -5
- dodal/beamlines/i10-1.py +25 -0
- dodal/beamlines/i10.py +17 -1
- dodal/beamlines/i11.py +0 -17
- dodal/beamlines/i15.py +242 -0
- dodal/beamlines/i15_1.py +156 -0
- dodal/beamlines/i19_1.py +3 -1
- dodal/beamlines/i19_2.py +12 -1
- dodal/beamlines/i21.py +27 -0
- dodal/beamlines/i22.py +12 -2
- dodal/beamlines/i24.py +32 -3
- dodal/beamlines/k07.py +31 -0
- dodal/beamlines/p60.py +10 -9
- dodal/common/watcher_utils.py +1 -1
- dodal/devices/apple2_undulator.py +18 -142
- dodal/devices/attenuator/attenuator.py +48 -2
- dodal/devices/attenuator/filter.py +3 -0
- dodal/devices/attenuator/filter_selections.py +26 -0
- dodal/devices/eiger.py +2 -1
- dodal/devices/electron_analyser/__init__.py +4 -0
- dodal/devices/electron_analyser/abstract/base_driver_io.py +30 -18
- dodal/devices/electron_analyser/energy_sources.py +101 -0
- dodal/devices/electron_analyser/specs/detector.py +6 -6
- dodal/devices/electron_analyser/specs/driver_io.py +7 -15
- dodal/devices/electron_analyser/vgscienta/detector.py +6 -6
- dodal/devices/electron_analyser/vgscienta/driver_io.py +7 -14
- dodal/devices/fast_grid_scan.py +130 -64
- dodal/devices/focusing_mirror.py +30 -0
- dodal/devices/i02_1/__init__.py +0 -0
- dodal/devices/i02_1/fast_grid_scan.py +61 -0
- dodal/devices/i02_1/sample_motors.py +19 -0
- dodal/devices/i04/murko_results.py +69 -23
- dodal/devices/i10/i10_apple2.py +282 -140
- dodal/devices/i15/dcm.py +77 -0
- dodal/devices/i15/focussing_mirror.py +71 -0
- dodal/devices/i15/jack.py +39 -0
- dodal/devices/i15/laue.py +18 -0
- dodal/devices/i15/motors.py +27 -0
- dodal/devices/i15/multilayer_mirror.py +25 -0
- dodal/devices/i15/rail.py +17 -0
- dodal/devices/i21/__init__.py +3 -0
- dodal/devices/i21/enums.py +8 -0
- dodal/devices/i22/nxsas.py +2 -0
- dodal/devices/i24/commissioning_jungfrau.py +114 -0
- dodal/devices/motors.py +52 -1
- dodal/devices/slits.py +18 -0
- dodal/devices/smargon.py +0 -56
- dodal/devices/temperture_controller/__init__.py +3 -0
- dodal/devices/temperture_controller/lakeshore/__init__.py +0 -0
- dodal/devices/temperture_controller/lakeshore/lakeshore.py +204 -0
- dodal/devices/temperture_controller/lakeshore/lakeshore_io.py +112 -0
- dodal/devices/tetramm.py +38 -16
- dodal/devices/v2f.py +39 -0
- dodal/devices/zebra/zebra.py +1 -0
- dodal/devices/zebra/zebra_constants_mapping.py +1 -1
- dodal/parameters/experiment_parameter_base.py +1 -5
- {dls_dodal-1.58.0.dist-info → dls_dodal-1.60.0.dist-info}/WHEEL +0 -0
- {dls_dodal-1.58.0.dist-info → dls_dodal-1.60.0.dist-info}/entry_points.txt +0 -0
- {dls_dodal-1.58.0.dist-info → dls_dodal-1.60.0.dist-info}/licenses/LICENSE +0 -0
- {dls_dodal-1.58.0.dist-info → dls_dodal-1.60.0.dist-info}/top_level.txt +0 -0
dodal/beamlines/i09_1.py
CHANGED
|
@@ -2,8 +2,8 @@ from dodal.common.beamlines.beamline_utils import (
|
|
|
2
2
|
device_factory,
|
|
3
3
|
)
|
|
4
4
|
from dodal.common.beamlines.beamline_utils import set_beamline as set_utils_beamline
|
|
5
|
-
from dodal.devices.electron_analyser import
|
|
6
|
-
from dodal.devices.electron_analyser.specs import
|
|
5
|
+
from dodal.devices.electron_analyser import EnergySource
|
|
6
|
+
from dodal.devices.electron_analyser.specs import SpecsDetector
|
|
7
7
|
from dodal.devices.i09.dcm import DCM
|
|
8
8
|
from dodal.devices.i09_1 import LensMode, PsuMode
|
|
9
9
|
from dodal.devices.synchrotron import Synchrotron
|
|
@@ -26,13 +26,18 @@ def dcm() -> DCM:
|
|
|
26
26
|
return DCM(prefix=f"{PREFIX.beamline_prefix}-MO-DCM-01:")
|
|
27
27
|
|
|
28
28
|
|
|
29
|
+
@device_factory()
|
|
30
|
+
def energy_source() -> EnergySource:
|
|
31
|
+
return EnergySource(dcm().energy_in_ev)
|
|
32
|
+
|
|
33
|
+
|
|
29
34
|
# Connect will work again after this work completed
|
|
30
35
|
# https://jira.diamond.ac.uk/browse/I09-651
|
|
31
36
|
@device_factory()
|
|
32
|
-
def
|
|
33
|
-
return
|
|
37
|
+
def analyser() -> SpecsDetector[LensMode, PsuMode]:
|
|
38
|
+
return SpecsDetector[LensMode, PsuMode](
|
|
34
39
|
prefix=f"{PREFIX.beamline_prefix}-EA-DET-02:CAM:",
|
|
35
40
|
lens_mode_type=LensMode,
|
|
36
41
|
psu_mode_type=PsuMode,
|
|
37
|
-
|
|
42
|
+
energy_source=energy_source(),
|
|
38
43
|
)
|
dodal/beamlines/i10-1.py
ADDED
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
from dodal.common.beamlines.beamline_utils import (
|
|
2
|
+
device_factory,
|
|
3
|
+
)
|
|
4
|
+
from dodal.common.beamlines.beamline_utils import set_beamline as set_utils_beamline
|
|
5
|
+
from dodal.devices.synchrotron import Synchrotron
|
|
6
|
+
from dodal.devices.temperture_controller import Lakeshore336
|
|
7
|
+
from dodal.log import set_beamline as set_log_beamline
|
|
8
|
+
from dodal.utils import BeamlinePrefix, get_beamline_name
|
|
9
|
+
|
|
10
|
+
BL = get_beamline_name("i10-1")
|
|
11
|
+
PREFIX = BeamlinePrefix(BL, suffix="J")
|
|
12
|
+
set_log_beamline(BL)
|
|
13
|
+
set_utils_beamline(BL)
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
@device_factory()
|
|
17
|
+
def synchrotron() -> Synchrotron:
|
|
18
|
+
return Synchrotron()
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
@device_factory()
|
|
22
|
+
def em_temperature_controller() -> Lakeshore336:
|
|
23
|
+
return Lakeshore336(
|
|
24
|
+
prefix=f"{PREFIX.beamline_prefix}-EA-TCTRL-41:",
|
|
25
|
+
)
|
dodal/beamlines/i10.py
CHANGED
|
@@ -6,6 +6,8 @@ note:
|
|
|
6
6
|
idd == id1, idu == id2.
|
|
7
7
|
"""
|
|
8
8
|
|
|
9
|
+
from daq_config_server.client import ConfigServer
|
|
10
|
+
|
|
9
11
|
from dodal.common.beamlines.beamline_utils import device_factory
|
|
10
12
|
from dodal.common.beamlines.beamline_utils import set_beamline as set_utils_beamline
|
|
11
13
|
from dodal.devices.current_amplifiers import CurrentAmpDet
|
|
@@ -25,6 +27,9 @@ from dodal.devices.i10.rasor.rasor_scaler_cards import RasorScalerCard1
|
|
|
25
27
|
from dodal.devices.i10.slits import I10Slits, I10SlitsDrainCurrent
|
|
26
28
|
from dodal.devices.motors import XYStage, XYZStage
|
|
27
29
|
from dodal.devices.pgm import PGM
|
|
30
|
+
from dodal.devices.temperture_controller import (
|
|
31
|
+
Lakeshore340,
|
|
32
|
+
)
|
|
28
33
|
from dodal.log import set_beamline as set_log_beamline
|
|
29
34
|
from dodal.utils import BeamlinePrefix, get_beamline_name
|
|
30
35
|
|
|
@@ -33,8 +38,10 @@ set_log_beamline(BL)
|
|
|
33
38
|
set_utils_beamline(BL)
|
|
34
39
|
PREFIX = BeamlinePrefix(BL)
|
|
35
40
|
|
|
41
|
+
I10_CONF_CLIENT = ConfigServer(url="https://daq-config.diamond.ac.uk")
|
|
36
42
|
|
|
37
|
-
|
|
43
|
+
|
|
44
|
+
LOOK_UPTABLE_DIR = "/dls_sw/i10/software/gda/workspace_git/gda-diamond.git/configurations/i10-shared/lookupTables/"
|
|
38
45
|
|
|
39
46
|
|
|
40
47
|
@device_factory()
|
|
@@ -60,6 +67,7 @@ def idd() -> I10Id:
|
|
|
60
67
|
pgm=pgm(),
|
|
61
68
|
look_up_table_dir=LOOK_UPTABLE_DIR,
|
|
62
69
|
source=("Source", "idd"),
|
|
70
|
+
config_client=I10_CONF_CLIENT,
|
|
63
71
|
)
|
|
64
72
|
|
|
65
73
|
|
|
@@ -76,6 +84,7 @@ def idu() -> I10Id:
|
|
|
76
84
|
pgm=pgm(),
|
|
77
85
|
look_up_table_dir=LOOK_UPTABLE_DIR,
|
|
78
86
|
source=("Source", "idu"),
|
|
87
|
+
config_client=I10_CONF_CLIENT,
|
|
79
88
|
)
|
|
80
89
|
|
|
81
90
|
|
|
@@ -153,6 +162,13 @@ def sample_stage() -> XYZStage:
|
|
|
153
162
|
return XYZStage(prefix="ME01D-MO-CRYO-01:")
|
|
154
163
|
|
|
155
164
|
|
|
165
|
+
@device_factory()
|
|
166
|
+
def rasor_temperature_controller() -> Lakeshore340:
|
|
167
|
+
return Lakeshore340(
|
|
168
|
+
prefix="ME01D-EA-TCTRL-01:",
|
|
169
|
+
)
|
|
170
|
+
|
|
171
|
+
|
|
156
172
|
@device_factory()
|
|
157
173
|
def rasor_femto() -> RasorFemto:
|
|
158
174
|
return RasorFemto(
|
dodal/beamlines/i11.py
CHANGED
|
@@ -1,13 +1,9 @@
|
|
|
1
|
-
from pathlib import Path
|
|
2
|
-
|
|
3
1
|
from dodal.common.beamlines.beamline_utils import (
|
|
4
2
|
device_factory,
|
|
5
3
|
get_path_provider,
|
|
6
|
-
set_path_provider,
|
|
7
4
|
)
|
|
8
5
|
from dodal.common.beamlines.beamline_utils import set_beamline as set_utils_beamline
|
|
9
6
|
from dodal.common.beamlines.device_helpers import DET_SUFFIX
|
|
10
|
-
from dodal.common.visit import RemoteDirectoryServiceClient, StaticVisitPathProvider
|
|
11
7
|
from dodal.devices.cryostream import OxfordCryoStream
|
|
12
8
|
from dodal.devices.eurotherm import (
|
|
13
9
|
EurothermGeneral,
|
|
@@ -34,19 +30,6 @@ PREFIX = BeamlinePrefix(BL)
|
|
|
34
30
|
set_log_beamline(BL)
|
|
35
31
|
set_utils_beamline(BL)
|
|
36
32
|
|
|
37
|
-
# Currently we must hard-code the visit, determining the visit at runtime requires
|
|
38
|
-
# infrastructure that is still WIP.
|
|
39
|
-
# Communication with GDA is also WIP so for now we determine an arbitrary scan number
|
|
40
|
-
# locally and write the commissioning directory. The scan number is not guaranteed to
|
|
41
|
-
# be unique and the data is at risk - this configuration is for testing only.
|
|
42
|
-
set_path_provider(
|
|
43
|
-
StaticVisitPathProvider(
|
|
44
|
-
BL,
|
|
45
|
-
Path(f"/dls/{BL}/data/2025/cm40625-3/bluesky"),
|
|
46
|
-
client=RemoteDirectoryServiceClient(f"http://{BL}-control:8088/api"),
|
|
47
|
-
)
|
|
48
|
-
)
|
|
49
|
-
|
|
50
33
|
|
|
51
34
|
@device_factory()
|
|
52
35
|
def mythen3() -> Mythen3:
|
dodal/beamlines/i15.py
ADDED
|
@@ -0,0 +1,242 @@
|
|
|
1
|
+
from ophyd_async.epics.motor import Motor
|
|
2
|
+
|
|
3
|
+
from dodal.common.beamlines.beamline_utils import device_factory
|
|
4
|
+
from dodal.common.beamlines.beamline_utils import set_beamline as set_utils_beamline
|
|
5
|
+
from dodal.devices.i15.dcm import DCM
|
|
6
|
+
from dodal.devices.i15.focussing_mirror import (
|
|
7
|
+
FocusingMirror,
|
|
8
|
+
FocusingMirrorHorizontal,
|
|
9
|
+
FocusingMirrorVertical,
|
|
10
|
+
FocusingMirrorWithRoll,
|
|
11
|
+
)
|
|
12
|
+
from dodal.devices.i15.jack import JackX, JackY
|
|
13
|
+
from dodal.devices.i15.motors import UpstreamDownstreamPair
|
|
14
|
+
from dodal.devices.motors import (
|
|
15
|
+
SixAxisGonioKappaPhi,
|
|
16
|
+
XYStage,
|
|
17
|
+
XYZPitchYawStage,
|
|
18
|
+
XYZStage,
|
|
19
|
+
)
|
|
20
|
+
from dodal.devices.slits import Slits, SlitsY
|
|
21
|
+
from dodal.devices.synchrotron import Synchrotron
|
|
22
|
+
from dodal.log import set_beamline as set_log_beamline
|
|
23
|
+
from dodal.utils import BeamlinePrefix, get_beamline_name
|
|
24
|
+
|
|
25
|
+
BL = get_beamline_name("i15") # Default used when not on a live beamline
|
|
26
|
+
PREFIX = BeamlinePrefix(BL)
|
|
27
|
+
set_log_beamline(BL) # Configure logging and util functions
|
|
28
|
+
set_utils_beamline(BL)
|
|
29
|
+
|
|
30
|
+
"""
|
|
31
|
+
Define device factory functions below this point.
|
|
32
|
+
A device factory function is any function that has a return type which conforms
|
|
33
|
+
to one or more Bluesky Protocols.
|
|
34
|
+
"""
|
|
35
|
+
|
|
36
|
+
|
|
37
|
+
@device_factory()
|
|
38
|
+
def arm() -> UpstreamDownstreamPair:
|
|
39
|
+
return UpstreamDownstreamPair(f"{PREFIX.beamline_prefix}-MO-LHEAT-01:ARM:")
|
|
40
|
+
|
|
41
|
+
|
|
42
|
+
@device_factory()
|
|
43
|
+
def beamstop() -> XYStage:
|
|
44
|
+
return XYStage(f"{PREFIX.beamline_prefix}-RS-ABSB-04:")
|
|
45
|
+
|
|
46
|
+
|
|
47
|
+
@device_factory()
|
|
48
|
+
def bs2() -> XYStage:
|
|
49
|
+
return XYStage(f"{PREFIX.beamline_prefix}-RS-ABSB-08:")
|
|
50
|
+
|
|
51
|
+
|
|
52
|
+
@device_factory()
|
|
53
|
+
def bs3() -> XYZStage:
|
|
54
|
+
return XYZStage(f"{PREFIX.beamline_prefix}-RS-ABSB-09:")
|
|
55
|
+
|
|
56
|
+
|
|
57
|
+
@device_factory()
|
|
58
|
+
def dcm() -> DCM:
|
|
59
|
+
return DCM(f"{PREFIX.beamline_prefix}-OP-DCM-01:")
|
|
60
|
+
|
|
61
|
+
|
|
62
|
+
@device_factory()
|
|
63
|
+
def det1z() -> Motor:
|
|
64
|
+
return Motor(f"{PREFIX.beamline_prefix}-MO-DIFF-01:ARM:DETECTOR:Z")
|
|
65
|
+
|
|
66
|
+
|
|
67
|
+
@device_factory()
|
|
68
|
+
def det2z() -> Motor:
|
|
69
|
+
"""Deliberately the same as eht2dtx"""
|
|
70
|
+
return Motor(f"{PREFIX.beamline_prefix}-MO-TABLE-03:DETECTOR2:Z")
|
|
71
|
+
|
|
72
|
+
|
|
73
|
+
@device_factory()
|
|
74
|
+
def diffractometer() -> SixAxisGonioKappaPhi:
|
|
75
|
+
return SixAxisGonioKappaPhi(
|
|
76
|
+
prefix=f"{PREFIX.beamline_prefix}-MO-DIFF-01:SAMPLE:",
|
|
77
|
+
phi_infix="KPHI",
|
|
78
|
+
)
|
|
79
|
+
|
|
80
|
+
|
|
81
|
+
@device_factory()
|
|
82
|
+
def djack1() -> JackX:
|
|
83
|
+
return JackX(f"{PREFIX.beamline_prefix}-MO-DIFF-01:BASE:")
|
|
84
|
+
|
|
85
|
+
|
|
86
|
+
@device_factory()
|
|
87
|
+
def eht2dtx() -> Motor:
|
|
88
|
+
"""Deliberately the same as det2z"""
|
|
89
|
+
return Motor(f"{PREFIX.beamline_prefix}-MO-TABLE-03:DETECTOR2:Z")
|
|
90
|
+
|
|
91
|
+
|
|
92
|
+
@device_factory()
|
|
93
|
+
def f2x() -> Motor:
|
|
94
|
+
return Motor(f"{PREFIX.beamline_prefix}-RS-ABSB-10:X")
|
|
95
|
+
|
|
96
|
+
|
|
97
|
+
@device_factory()
|
|
98
|
+
def fs() -> XYStage:
|
|
99
|
+
return XYStage(f"{PREFIX.beamline_prefix}-EA-SHTR-01:")
|
|
100
|
+
|
|
101
|
+
|
|
102
|
+
@device_factory()
|
|
103
|
+
def fs2() -> XYStage:
|
|
104
|
+
return XYStage(f"{PREFIX.beamline_prefix}-EA-SHTR-02:")
|
|
105
|
+
|
|
106
|
+
|
|
107
|
+
@device_factory()
|
|
108
|
+
def hfm() -> FocusingMirrorWithRoll:
|
|
109
|
+
return FocusingMirrorWithRoll(f"{PREFIX.beamline_prefix}-OP-HFM-01:")
|
|
110
|
+
|
|
111
|
+
|
|
112
|
+
@device_factory()
|
|
113
|
+
def laserboard() -> XYZStage:
|
|
114
|
+
return XYZStage(f"{PREFIX.beamline_prefix}-MO-LHEAT-01:")
|
|
115
|
+
|
|
116
|
+
|
|
117
|
+
@device_factory()
|
|
118
|
+
def obj() -> UpstreamDownstreamPair:
|
|
119
|
+
return UpstreamDownstreamPair(f"{PREFIX.beamline_prefix}-MO-LHEAT-01:OBJ:")
|
|
120
|
+
|
|
121
|
+
|
|
122
|
+
@device_factory()
|
|
123
|
+
def opticds() -> XYStage:
|
|
124
|
+
return XYStage(f"{PREFIX.beamline_prefix}-MO-LHEAT-01:OPTIC:DS:")
|
|
125
|
+
|
|
126
|
+
|
|
127
|
+
@device_factory()
|
|
128
|
+
def opticus() -> XYStage:
|
|
129
|
+
return XYStage(f"{PREFIX.beamline_prefix}-MO-LHEAT-01:OPTIC:US:")
|
|
130
|
+
|
|
131
|
+
|
|
132
|
+
@device_factory()
|
|
133
|
+
def pin3() -> XYStage:
|
|
134
|
+
return XYStage(f"{PREFIX.beamline_prefix}-AL-APTR-03:")
|
|
135
|
+
|
|
136
|
+
|
|
137
|
+
@device_factory()
|
|
138
|
+
def pin() -> XYZPitchYawStage:
|
|
139
|
+
return XYZPitchYawStage(f"{PREFIX.beamline_prefix}-AL-APTR-02:")
|
|
140
|
+
|
|
141
|
+
|
|
142
|
+
@device_factory()
|
|
143
|
+
def qbpm1() -> XYStage:
|
|
144
|
+
return XYStage(f"{PREFIX.beamline_prefix}-DI-QBPM-01:")
|
|
145
|
+
|
|
146
|
+
|
|
147
|
+
@device_factory()
|
|
148
|
+
def qbpm2() -> XYStage:
|
|
149
|
+
return XYStage(f"{PREFIX.beamline_prefix}-DI-QBPM-02:")
|
|
150
|
+
|
|
151
|
+
|
|
152
|
+
@device_factory()
|
|
153
|
+
def s1() -> Slits:
|
|
154
|
+
return Slits(
|
|
155
|
+
prefix=f"{PREFIX.beamline_prefix}-AL-SLITS-01:",
|
|
156
|
+
x_centre="X:CENTER",
|
|
157
|
+
y_centre="Y:CENTER",
|
|
158
|
+
)
|
|
159
|
+
|
|
160
|
+
|
|
161
|
+
@device_factory()
|
|
162
|
+
def s2() -> Slits:
|
|
163
|
+
return Slits(
|
|
164
|
+
prefix=f"{PREFIX.beamline_prefix}-AL-SLITS-02:",
|
|
165
|
+
x_centre="X:CENTER",
|
|
166
|
+
y_centre="Y:CENTER",
|
|
167
|
+
)
|
|
168
|
+
|
|
169
|
+
|
|
170
|
+
@device_factory()
|
|
171
|
+
def s4() -> Slits:
|
|
172
|
+
return Slits(
|
|
173
|
+
prefix=f"{PREFIX.beamline_prefix}-AL-SLITS-04:",
|
|
174
|
+
x_centre="X:CENTER",
|
|
175
|
+
y_centre="Y:CENTER",
|
|
176
|
+
)
|
|
177
|
+
|
|
178
|
+
|
|
179
|
+
@device_factory()
|
|
180
|
+
def s5() -> Slits:
|
|
181
|
+
return Slits(
|
|
182
|
+
prefix=f"{PREFIX.beamline_prefix}-AL-SLITS-05:",
|
|
183
|
+
x_centre="X:CENTER",
|
|
184
|
+
y_centre="Y:CENTER",
|
|
185
|
+
)
|
|
186
|
+
|
|
187
|
+
|
|
188
|
+
@device_factory()
|
|
189
|
+
def s6() -> SlitsY:
|
|
190
|
+
return SlitsY(
|
|
191
|
+
prefix=f"{PREFIX.beamline_prefix}-AL-SLITS-06:",
|
|
192
|
+
y_centre="Y:CENTER",
|
|
193
|
+
)
|
|
194
|
+
|
|
195
|
+
|
|
196
|
+
@device_factory()
|
|
197
|
+
def s7() -> Slits:
|
|
198
|
+
return Slits(
|
|
199
|
+
prefix=f"{PREFIX.beamline_prefix}-AL-SLITS-07:",
|
|
200
|
+
x_centre="X:CENTER",
|
|
201
|
+
y_centre="Y:CENTER",
|
|
202
|
+
)
|
|
203
|
+
|
|
204
|
+
|
|
205
|
+
@device_factory()
|
|
206
|
+
def shd() -> XYZStage:
|
|
207
|
+
return XYZStage(f"{PREFIX.beamline_prefix}-MO-SHEAD-01:")
|
|
208
|
+
|
|
209
|
+
|
|
210
|
+
@device_factory()
|
|
211
|
+
def shd2() -> XYZStage:
|
|
212
|
+
return XYZStage(f"{PREFIX.beamline_prefix}-MO-SHEAD-02:")
|
|
213
|
+
|
|
214
|
+
|
|
215
|
+
@device_factory()
|
|
216
|
+
def shfm() -> FocusingMirrorHorizontal:
|
|
217
|
+
return FocusingMirrorHorizontal(f"{PREFIX.beamline_prefix}-OP-MIRR-03:HFM:")
|
|
218
|
+
|
|
219
|
+
|
|
220
|
+
@device_factory()
|
|
221
|
+
def skb() -> JackY:
|
|
222
|
+
return JackY(f"{PREFIX.beamline_prefix}-OP-MIRR-03:BASE:")
|
|
223
|
+
|
|
224
|
+
|
|
225
|
+
@device_factory()
|
|
226
|
+
def svfm() -> FocusingMirrorVertical:
|
|
227
|
+
return FocusingMirrorVertical(f"{PREFIX.beamline_prefix}-OP-MIRR-03:VFM:")
|
|
228
|
+
|
|
229
|
+
|
|
230
|
+
@device_factory()
|
|
231
|
+
def tab2jack() -> JackX:
|
|
232
|
+
return JackX(f"{PREFIX.beamline_prefix}-MO-TABLE-03:BASE:")
|
|
233
|
+
|
|
234
|
+
|
|
235
|
+
@device_factory()
|
|
236
|
+
def vfm() -> FocusingMirror:
|
|
237
|
+
return FocusingMirror(f"{PREFIX.beamline_prefix}-OP-VFM-01:")
|
|
238
|
+
|
|
239
|
+
|
|
240
|
+
@device_factory()
|
|
241
|
+
def synchrotron() -> Synchrotron:
|
|
242
|
+
return Synchrotron()
|
dodal/beamlines/i15_1.py
ADDED
|
@@ -0,0 +1,156 @@
|
|
|
1
|
+
from ophyd_async.epics.motor import Motor
|
|
2
|
+
|
|
3
|
+
from dodal.common.beamlines.beamline_utils import device_factory
|
|
4
|
+
from dodal.common.beamlines.beamline_utils import set_beamline as set_utils_beamline
|
|
5
|
+
from dodal.devices.i15.laue import LaueMonochrometer
|
|
6
|
+
from dodal.devices.i15.motors import NumberedTripleAxisStage
|
|
7
|
+
from dodal.devices.i15.multilayer_mirror import MultiLayerMirror
|
|
8
|
+
from dodal.devices.i15.rail import Rail
|
|
9
|
+
from dodal.devices.motors import XYPhiStage, XYStage, YZStage
|
|
10
|
+
from dodal.devices.slits import Slits
|
|
11
|
+
from dodal.devices.synchrotron import Synchrotron
|
|
12
|
+
from dodal.log import set_beamline as set_log_beamline
|
|
13
|
+
from dodal.utils import BeamlinePrefix, get_beamline_name
|
|
14
|
+
|
|
15
|
+
BL = get_beamline_name("i15-1") # Default used when not on a live beamline
|
|
16
|
+
PREFIX = BeamlinePrefix(BL, suffix="J")
|
|
17
|
+
set_log_beamline(BL) # Configure logging and util functions
|
|
18
|
+
set_utils_beamline(BL)
|
|
19
|
+
|
|
20
|
+
"""
|
|
21
|
+
Define device factory functions below this point.
|
|
22
|
+
A device factory function is any function that has a return type which conforms
|
|
23
|
+
to one or more Bluesky Protocols.
|
|
24
|
+
"""
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
@device_factory()
|
|
28
|
+
def attY() -> NumberedTripleAxisStage:
|
|
29
|
+
return NumberedTripleAxisStage(
|
|
30
|
+
f"{PREFIX.beamline_prefix}-OP-ATTN-01:",
|
|
31
|
+
axis1_infix="STICK1",
|
|
32
|
+
axis2_infix="STICK2",
|
|
33
|
+
axis3_infix="STICK3",
|
|
34
|
+
)
|
|
35
|
+
|
|
36
|
+
|
|
37
|
+
@device_factory()
|
|
38
|
+
def baseY() -> Motor:
|
|
39
|
+
return Motor(f"{PREFIX.beamline_prefix}-MO-TABLE-01:Y")
|
|
40
|
+
|
|
41
|
+
|
|
42
|
+
@device_factory()
|
|
43
|
+
def blowerY() -> Motor:
|
|
44
|
+
"""Same motor as blowerZ"""
|
|
45
|
+
return Motor(f"{PREFIX.beamline_prefix}-EA-BLOWR-01:TLATE")
|
|
46
|
+
|
|
47
|
+
|
|
48
|
+
@device_factory()
|
|
49
|
+
def blowerZ() -> Motor:
|
|
50
|
+
"""Same motor as blowerY"""
|
|
51
|
+
return Motor(f"{PREFIX.beamline_prefix}-EA-BLOWR-01:TLATE")
|
|
52
|
+
|
|
53
|
+
|
|
54
|
+
@device_factory()
|
|
55
|
+
def bs2() -> XYStage:
|
|
56
|
+
return XYStage(f"{PREFIX.beamline_prefix}-MO-SMAR-02:")
|
|
57
|
+
|
|
58
|
+
|
|
59
|
+
@device_factory()
|
|
60
|
+
def clean() -> XYStage:
|
|
61
|
+
return XYStage(f"{PREFIX.beamline_prefix}-MO-ABSB-01:CLEAN:")
|
|
62
|
+
|
|
63
|
+
|
|
64
|
+
@device_factory()
|
|
65
|
+
def det2() -> YZStage:
|
|
66
|
+
return YZStage(f"{PREFIX.beamline_prefix}-EA-DET-02:")
|
|
67
|
+
|
|
68
|
+
|
|
69
|
+
@device_factory()
|
|
70
|
+
def envX() -> Motor:
|
|
71
|
+
return Motor(f"{PREFIX.beamline_prefix}-MO-TABLE-01:ENV:X")
|
|
72
|
+
|
|
73
|
+
|
|
74
|
+
@device_factory()
|
|
75
|
+
def f2y() -> Motor:
|
|
76
|
+
return Motor(f"{PREFIX.beamline_prefix}-OP-ATTN-02:Y")
|
|
77
|
+
|
|
78
|
+
|
|
79
|
+
@device_factory()
|
|
80
|
+
def m1() -> MultiLayerMirror:
|
|
81
|
+
return MultiLayerMirror(f"{PREFIX.beamline_prefix}-OP-MIRR-01:")
|
|
82
|
+
|
|
83
|
+
|
|
84
|
+
@device_factory()
|
|
85
|
+
def rail() -> Rail:
|
|
86
|
+
return Rail(f"{PREFIX.beamline_prefix}-MO-RAIL-01:")
|
|
87
|
+
|
|
88
|
+
|
|
89
|
+
@device_factory(skip=True)
|
|
90
|
+
def sam() -> XYPhiStage:
|
|
91
|
+
return XYPhiStage(f"{PREFIX.beamline_prefix}-MO-TABLE-01:SAMPLE:", phi_infix="PHI2")
|
|
92
|
+
|
|
93
|
+
|
|
94
|
+
@device_factory()
|
|
95
|
+
def slits_1() -> Slits:
|
|
96
|
+
return Slits(
|
|
97
|
+
prefix=f"{PREFIX.beamline_prefix}-AL-SLITS-01:",
|
|
98
|
+
x_centre="X:CENTER",
|
|
99
|
+
y_centre="Y:CENTER",
|
|
100
|
+
)
|
|
101
|
+
|
|
102
|
+
|
|
103
|
+
@device_factory()
|
|
104
|
+
def slits_2() -> Slits:
|
|
105
|
+
return Slits(
|
|
106
|
+
prefix=f"{PREFIX.beamline_prefix}-AL-SLITS-02:",
|
|
107
|
+
x_centre="X:CENTER",
|
|
108
|
+
y_centre="Y:CENTER",
|
|
109
|
+
)
|
|
110
|
+
|
|
111
|
+
|
|
112
|
+
@device_factory()
|
|
113
|
+
def slits_3() -> Slits:
|
|
114
|
+
return Slits(
|
|
115
|
+
prefix=f"{PREFIX.beamline_prefix}-AL-SLITS-03:",
|
|
116
|
+
x_centre="X:CENTER",
|
|
117
|
+
y_centre="Y:CENTER",
|
|
118
|
+
)
|
|
119
|
+
|
|
120
|
+
|
|
121
|
+
@device_factory()
|
|
122
|
+
def slits_4() -> Slits:
|
|
123
|
+
return Slits(
|
|
124
|
+
prefix=f"{PREFIX.beamline_prefix}-AL-SLITS-04:",
|
|
125
|
+
x_centre="X:CENTER",
|
|
126
|
+
y_centre="Y:CENTER",
|
|
127
|
+
)
|
|
128
|
+
|
|
129
|
+
|
|
130
|
+
@device_factory()
|
|
131
|
+
def slits_5() -> Slits:
|
|
132
|
+
return Slits(
|
|
133
|
+
prefix=f"{PREFIX.beamline_prefix}-AL-SLITS-05:",
|
|
134
|
+
x_centre="X:CENTER",
|
|
135
|
+
y_centre="Y:CENTER",
|
|
136
|
+
)
|
|
137
|
+
|
|
138
|
+
|
|
139
|
+
@device_factory()
|
|
140
|
+
def synchrotron() -> Synchrotron:
|
|
141
|
+
return Synchrotron()
|
|
142
|
+
|
|
143
|
+
|
|
144
|
+
@device_factory()
|
|
145
|
+
def tth() -> Motor:
|
|
146
|
+
return Motor(f"{PREFIX.beamline_prefix}-MO-TABLE-01:TTH")
|
|
147
|
+
|
|
148
|
+
|
|
149
|
+
@device_factory()
|
|
150
|
+
def trans() -> XYPhiStage:
|
|
151
|
+
return XYPhiStage(prefix=f"{PREFIX.beamline_prefix}-MO-TABLE-01:TRANS:")
|
|
152
|
+
|
|
153
|
+
|
|
154
|
+
@device_factory()
|
|
155
|
+
def xtal() -> LaueMonochrometer:
|
|
156
|
+
return LaueMonochrometer(prefix=f"{PREFIX.beamline_prefix}-OP-LAUE-01:")
|
dodal/beamlines/i19_1.py
CHANGED
|
@@ -58,6 +58,8 @@ def oav() -> OAVBeamCentreFile:
|
|
|
58
58
|
)
|
|
59
59
|
|
|
60
60
|
|
|
61
|
+
# NOTE EH1 uses the Zebra 2 box. While a Zebra 1 box exists and is connected
|
|
62
|
+
# on the beamline, it is currently not in use
|
|
61
63
|
@device_factory()
|
|
62
64
|
def zebra() -> Zebra:
|
|
63
65
|
"""Get the i19-1 zebra device, instantiate it if it hasn't already been.
|
|
@@ -65,7 +67,7 @@ def zebra() -> Zebra:
|
|
|
65
67
|
"""
|
|
66
68
|
return Zebra(
|
|
67
69
|
mapping=I19_1_ZEBRA_MAPPING,
|
|
68
|
-
prefix=f"{PREFIX.beamline_prefix}-EA-ZEBRA-
|
|
70
|
+
prefix=f"{PREFIX.beamline_prefix}-EA-ZEBRA-02:",
|
|
69
71
|
)
|
|
70
72
|
|
|
71
73
|
|
dodal/beamlines/i19_2.py
CHANGED
|
@@ -1,5 +1,8 @@
|
|
|
1
|
+
from ophyd_async.fastcs.panda import HDFPanda
|
|
2
|
+
|
|
1
3
|
from dodal.common.beamlines.beamline_utils import (
|
|
2
4
|
device_factory,
|
|
5
|
+
get_path_provider,
|
|
3
6
|
)
|
|
4
7
|
from dodal.common.beamlines.beamline_utils import (
|
|
5
8
|
set_beamline as set_utils_beamline,
|
|
@@ -54,7 +57,7 @@ def zebra() -> Zebra:
|
|
|
54
57
|
"""
|
|
55
58
|
return Zebra(
|
|
56
59
|
mapping=I19_2_ZEBRA_MAPPING,
|
|
57
|
-
prefix=f"{PREFIX.beamline_prefix}-EA-ZEBRA-
|
|
60
|
+
prefix=f"{PREFIX.beamline_prefix}-EA-ZEBRA-03:",
|
|
58
61
|
)
|
|
59
62
|
|
|
60
63
|
|
|
@@ -84,3 +87,11 @@ def backlight() -> BacklightPosition:
|
|
|
84
87
|
If this is called when already instantiated in i19-2, it will return the existing object.
|
|
85
88
|
"""
|
|
86
89
|
return BacklightPosition(prefix=f"{PREFIX.beamline_prefix}-EA-IOC-12:")
|
|
90
|
+
|
|
91
|
+
|
|
92
|
+
@device_factory()
|
|
93
|
+
def panda() -> HDFPanda:
|
|
94
|
+
return HDFPanda(
|
|
95
|
+
prefix=f"{PREFIX.beamline_prefix}-EA-PANDA-01:",
|
|
96
|
+
path_provider=get_path_provider(),
|
|
97
|
+
)
|
dodal/beamlines/i21.py
ADDED
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
from dodal.common.beamlines.beamline_utils import (
|
|
2
|
+
device_factory,
|
|
3
|
+
)
|
|
4
|
+
from dodal.common.beamlines.beamline_utils import set_beamline as set_utils_beamline
|
|
5
|
+
from dodal.devices.i21 import Grating
|
|
6
|
+
from dodal.devices.pgm import PGM
|
|
7
|
+
from dodal.devices.synchrotron import Synchrotron
|
|
8
|
+
from dodal.log import set_beamline as set_log_beamline
|
|
9
|
+
from dodal.utils import BeamlinePrefix, get_beamline_name
|
|
10
|
+
|
|
11
|
+
BL = get_beamline_name("i21")
|
|
12
|
+
PREFIX = BeamlinePrefix(BL, suffix="I")
|
|
13
|
+
set_log_beamline(BL)
|
|
14
|
+
set_utils_beamline(BL)
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
@device_factory()
|
|
18
|
+
def synchrotron() -> Synchrotron:
|
|
19
|
+
return Synchrotron()
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
@device_factory()
|
|
23
|
+
def pgm() -> PGM:
|
|
24
|
+
return PGM(
|
|
25
|
+
prefix=f"{PREFIX.beamline_prefix}-OP-PGM-01:",
|
|
26
|
+
grating=Grating,
|
|
27
|
+
)
|
dodal/beamlines/i22.py
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
from pathlib import Path
|
|
2
2
|
|
|
3
3
|
from ophyd_async.epics.adaravis import AravisDetector
|
|
4
|
-
from ophyd_async.epics.adcore import NDPluginBaseIO
|
|
4
|
+
from ophyd_async.epics.adcore import NDPluginBaseIO, NDPluginStatsIO
|
|
5
5
|
from ophyd_async.epics.adpilatus import PilatusDetector
|
|
6
6
|
from ophyd_async.fastcs.panda import HDFPanda
|
|
7
7
|
|
|
@@ -68,6 +68,11 @@ def saxs() -> PilatusDetector:
|
|
|
68
68
|
drv_suffix=CAM_SUFFIX,
|
|
69
69
|
fileio_suffix=HDF5_SUFFIX,
|
|
70
70
|
metadata_holder=metadata_holder,
|
|
71
|
+
plugins={
|
|
72
|
+
"stats": NDPluginStatsIO(
|
|
73
|
+
prefix=f"{PREFIX.beamline_prefix}-EA-PILAT-01:STAT:"
|
|
74
|
+
)
|
|
75
|
+
},
|
|
71
76
|
)
|
|
72
77
|
|
|
73
78
|
|
|
@@ -93,6 +98,11 @@ def waxs() -> PilatusDetector:
|
|
|
93
98
|
drv_suffix=CAM_SUFFIX,
|
|
94
99
|
fileio_suffix=HDF5_SUFFIX,
|
|
95
100
|
metadata_holder=metadata_holder,
|
|
101
|
+
plugins={
|
|
102
|
+
"stats": NDPluginStatsIO(
|
|
103
|
+
prefix=f"{PREFIX.beamline_prefix}-EA-PILAT-03:STAT:"
|
|
104
|
+
)
|
|
105
|
+
},
|
|
96
106
|
)
|
|
97
107
|
|
|
98
108
|
|
|
@@ -272,7 +282,7 @@ def linkam() -> Linkam3:
|
|
|
272
282
|
return Linkam3(prefix=f"{PREFIX.beamline_prefix}-EA-TEMPC-05:")
|
|
273
283
|
|
|
274
284
|
|
|
275
|
-
@device_factory()
|
|
285
|
+
@device_factory(skip=True)
|
|
276
286
|
def ppump() -> WatsonMarlow323Pump:
|
|
277
287
|
"""Sample Environment Peristaltic Pump"""
|
|
278
288
|
return WatsonMarlow323Pump(f"{PREFIX.beamline_prefix}-EA-PUMP-01:")
|