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.
Files changed (71) hide show
  1. {dls_dodal-1.58.0.dist-info → dls_dodal-1.60.0.dist-info}/METADATA +3 -3
  2. {dls_dodal-1.58.0.dist-info → dls_dodal-1.60.0.dist-info}/RECORD +71 -47
  3. dodal/_version.py +2 -2
  4. dodal/beamlines/__init__.py +1 -0
  5. dodal/beamlines/b07.py +10 -5
  6. dodal/beamlines/b07_1.py +10 -5
  7. dodal/beamlines/b21.py +22 -0
  8. dodal/beamlines/i02_1.py +80 -0
  9. dodal/beamlines/i03.py +5 -3
  10. dodal/beamlines/i04.py +5 -3
  11. dodal/beamlines/i09.py +10 -9
  12. dodal/beamlines/i09_1.py +10 -5
  13. dodal/beamlines/i10-1.py +25 -0
  14. dodal/beamlines/i10.py +17 -1
  15. dodal/beamlines/i11.py +0 -17
  16. dodal/beamlines/i15.py +242 -0
  17. dodal/beamlines/i15_1.py +156 -0
  18. dodal/beamlines/i19_1.py +3 -1
  19. dodal/beamlines/i19_2.py +12 -1
  20. dodal/beamlines/i21.py +27 -0
  21. dodal/beamlines/i22.py +12 -2
  22. dodal/beamlines/i24.py +32 -3
  23. dodal/beamlines/k07.py +31 -0
  24. dodal/beamlines/p60.py +10 -9
  25. dodal/common/watcher_utils.py +1 -1
  26. dodal/devices/apple2_undulator.py +18 -142
  27. dodal/devices/attenuator/attenuator.py +48 -2
  28. dodal/devices/attenuator/filter.py +3 -0
  29. dodal/devices/attenuator/filter_selections.py +26 -0
  30. dodal/devices/eiger.py +2 -1
  31. dodal/devices/electron_analyser/__init__.py +4 -0
  32. dodal/devices/electron_analyser/abstract/base_driver_io.py +30 -18
  33. dodal/devices/electron_analyser/energy_sources.py +101 -0
  34. dodal/devices/electron_analyser/specs/detector.py +6 -6
  35. dodal/devices/electron_analyser/specs/driver_io.py +7 -15
  36. dodal/devices/electron_analyser/vgscienta/detector.py +6 -6
  37. dodal/devices/electron_analyser/vgscienta/driver_io.py +7 -14
  38. dodal/devices/fast_grid_scan.py +130 -64
  39. dodal/devices/focusing_mirror.py +30 -0
  40. dodal/devices/i02_1/__init__.py +0 -0
  41. dodal/devices/i02_1/fast_grid_scan.py +61 -0
  42. dodal/devices/i02_1/sample_motors.py +19 -0
  43. dodal/devices/i04/murko_results.py +69 -23
  44. dodal/devices/i10/i10_apple2.py +282 -140
  45. dodal/devices/i15/dcm.py +77 -0
  46. dodal/devices/i15/focussing_mirror.py +71 -0
  47. dodal/devices/i15/jack.py +39 -0
  48. dodal/devices/i15/laue.py +18 -0
  49. dodal/devices/i15/motors.py +27 -0
  50. dodal/devices/i15/multilayer_mirror.py +25 -0
  51. dodal/devices/i15/rail.py +17 -0
  52. dodal/devices/i21/__init__.py +3 -0
  53. dodal/devices/i21/enums.py +8 -0
  54. dodal/devices/i22/nxsas.py +2 -0
  55. dodal/devices/i24/commissioning_jungfrau.py +114 -0
  56. dodal/devices/motors.py +52 -1
  57. dodal/devices/slits.py +18 -0
  58. dodal/devices/smargon.py +0 -56
  59. dodal/devices/temperture_controller/__init__.py +3 -0
  60. dodal/devices/temperture_controller/lakeshore/__init__.py +0 -0
  61. dodal/devices/temperture_controller/lakeshore/lakeshore.py +204 -0
  62. dodal/devices/temperture_controller/lakeshore/lakeshore_io.py +112 -0
  63. dodal/devices/tetramm.py +38 -16
  64. dodal/devices/v2f.py +39 -0
  65. dodal/devices/zebra/zebra.py +1 -0
  66. dodal/devices/zebra/zebra_constants_mapping.py +1 -1
  67. dodal/parameters/experiment_parameter_base.py +1 -5
  68. {dls_dodal-1.58.0.dist-info → dls_dodal-1.60.0.dist-info}/WHEEL +0 -0
  69. {dls_dodal-1.58.0.dist-info → dls_dodal-1.60.0.dist-info}/entry_points.txt +0 -0
  70. {dls_dodal-1.58.0.dist-info → dls_dodal-1.60.0.dist-info}/licenses/LICENSE +0 -0
  71. {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 SelectedSource
6
- from dodal.devices.electron_analyser.specs import SpecsAnalyserDriverIO
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 analyser_driver() -> SpecsAnalyserDriverIO[LensMode, PsuMode]:
33
- return SpecsAnalyserDriverIO[LensMode, PsuMode](
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
- energy_sources={SelectedSource.SOURCE1: dcm().energy_in_ev},
42
+ energy_source=energy_source(),
38
43
  )
@@ -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
- LOOK_UPTABLE_DIR = "/dls_sw/i10/software/blueapi/scratch/i10-config/lookupTables/"
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()
@@ -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-03:",
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-01:",
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:")