dls-dodal 1.68.0__py3-none-any.whl → 2.0.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 (292) hide show
  1. {dls_dodal-1.68.0.dist-info → dls_dodal-2.0.0.dist-info}/METADATA +1 -31
  2. dls_dodal-2.0.0.dist-info/RECORD +354 -0
  3. {dls_dodal-1.68.0.dist-info → dls_dodal-2.0.0.dist-info}/WHEEL +1 -1
  4. dodal/_version.py +2 -2
  5. dodal/beamlines/__init__.py +10 -17
  6. dodal/beamlines/adsim.py +40 -33
  7. dodal/beamlines/b01_1.py +11 -0
  8. dodal/beamlines/b07.py +17 -21
  9. dodal/beamlines/b07_1.py +20 -22
  10. dodal/beamlines/b07_shared.py +12 -0
  11. dodal/beamlines/b16.py +1 -1
  12. dodal/beamlines/b21.py +15 -6
  13. dodal/beamlines/i02_1.py +17 -45
  14. dodal/beamlines/i02_2.py +6 -12
  15. dodal/beamlines/i03.py +8 -5
  16. dodal/beamlines/i03_supervisor.py +19 -0
  17. dodal/beamlines/i04.py +87 -184
  18. dodal/beamlines/i05.py +9 -39
  19. dodal/beamlines/i05_1.py +4 -13
  20. dodal/beamlines/i05_shared.py +51 -0
  21. dodal/beamlines/i06_1.py +26 -0
  22. dodal/beamlines/{i06.py → i06_shared.py} +25 -14
  23. dodal/beamlines/i07.py +14 -16
  24. dodal/beamlines/i09.py +76 -29
  25. dodal/beamlines/i09_1.py +25 -56
  26. dodal/beamlines/i09_1_shared.py +61 -0
  27. dodal/beamlines/i09_2.py +6 -100
  28. dodal/beamlines/i09_2_shared.py +110 -0
  29. dodal/beamlines/i10.py +60 -54
  30. dodal/beamlines/i10_1.py +99 -10
  31. dodal/beamlines/{i10_optics.py → i10_shared.py} +80 -66
  32. dodal/beamlines/i11.py +31 -18
  33. dodal/beamlines/i13_1.py +1 -1
  34. dodal/beamlines/i15.py +6 -6
  35. dodal/beamlines/i15_1.py +6 -6
  36. dodal/beamlines/i16.py +11 -0
  37. dodal/beamlines/i17.py +37 -28
  38. dodal/beamlines/i18.py +3 -4
  39. dodal/beamlines/i19_1.py +95 -34
  40. dodal/beamlines/i19_2.py +68 -52
  41. dodal/beamlines/i19_optics.py +26 -13
  42. dodal/beamlines/i20_1.py +17 -11
  43. dodal/beamlines/i21.py +44 -29
  44. dodal/beamlines/i22.py +19 -4
  45. dodal/beamlines/i23.py +20 -27
  46. dodal/beamlines/i24.py +64 -113
  47. dodal/beamlines/k07.py +99 -5
  48. dodal/beamlines/p38.py +3 -3
  49. dodal/beamlines/p60.py +35 -14
  50. dodal/beamlines/p99.py +16 -15
  51. dodal/beamlines/training_rig.py +20 -12
  52. dodal/cli.py +36 -2
  53. dodal/common/__init__.py +2 -1
  54. dodal/common/beamlines/beamline_parameters.py +2 -1
  55. dodal/common/beamlines/beamline_utils.py +11 -9
  56. dodal/common/beamlines/commissioning_mode.py +6 -3
  57. dodal/common/coordination.py +12 -14
  58. dodal/common/crystal_metadata.py +5 -8
  59. dodal/common/device_utils.py +4 -3
  60. dodal/common/maths.py +87 -19
  61. dodal/common/udc_directory_provider.py +13 -8
  62. dodal/common/visit.py +18 -21
  63. dodal/common/watcher_utils.py +13 -12
  64. dodal/device_manager.py +94 -54
  65. dodal/devices/aperturescatterguard.py +26 -27
  66. dodal/devices/areadetector/plugins/cam.py +1 -3
  67. dodal/devices/areadetector/plugins/mjpg.py +6 -5
  68. dodal/devices/attenuator/attenuator.py +12 -11
  69. dodal/devices/beamlines/b07/__init__.py +3 -0
  70. dodal/devices/{b07_1 → beamlines/b07_1}/__init__.py +2 -2
  71. dodal/devices/{b07_1 → beamlines/b07_1}/ccmc.py +5 -10
  72. dodal/devices/{b16 → beamlines/b16}/detector.py +2 -3
  73. dodal/devices/{i02_1 → beamlines/i02_1}/fast_grid_scan.py +2 -3
  74. dodal/devices/{i02_1 → beamlines/i02_1}/sample_motors.py +1 -1
  75. dodal/devices/{i03 → beamlines/i03}/beamsize.py +11 -7
  76. dodal/devices/{i03 → beamlines/i03}/dcm.py +1 -2
  77. dodal/devices/{i03 → beamlines/i03}/undulator_dcm.py +4 -5
  78. dodal/devices/beamlines/i04/beam_centre.py +151 -0
  79. dodal/devices/{i04 → beamlines/i04}/beamsize.py +11 -7
  80. dodal/devices/beamlines/i04/max_pixel.py +25 -0
  81. dodal/devices/{i04 → beamlines/i04}/murko_results.py +23 -8
  82. dodal/devices/{i04 → beamlines/i04}/transfocator.py +10 -15
  83. dodal/devices/beamlines/i05/__init__.py +3 -0
  84. dodal/devices/beamlines/i06_shared/__init__.py +3 -0
  85. dodal/devices/beamlines/i06_shared/i06_enum.py +7 -0
  86. dodal/devices/{i07 → beamlines/i07}/dcm.py +2 -3
  87. dodal/devices/{i07 → beamlines/i07}/id.py +8 -9
  88. dodal/devices/beamlines/i09/__init__.py +3 -0
  89. dodal/devices/{i09_1_shared → beamlines/i09_1_shared}/hard_energy.py +5 -6
  90. dodal/devices/{i09_1_shared → beamlines/i09_1_shared}/hard_undulator_functions.py +19 -16
  91. dodal/devices/{i10 → beamlines/i10}/diagnostics.py +4 -3
  92. dodal/devices/{i10 → beamlines/i10}/i10_apple2.py +37 -51
  93. dodal/devices/{i10 → beamlines/i10}/rasor/rasor_current_amp.py +1 -24
  94. dodal/devices/{i10 → beamlines/i10}/rasor/rasor_motors.py +2 -2
  95. dodal/devices/{i10 → beamlines/i10}/slits.py +5 -3
  96. dodal/devices/beamlines/i10_1/__init__.py +9 -0
  97. dodal/devices/beamlines/i10_1/electromagnet/magnet.py +16 -0
  98. dodal/devices/beamlines/i10_1/electromagnet/stages.py +14 -0
  99. dodal/devices/beamlines/i10_1/scaler_cards.py +13 -0
  100. dodal/devices/{i11 → beamlines/i11}/cyberstar_blower.py +1 -1
  101. dodal/devices/{i11 → beamlines/i11}/diff_stages.py +4 -6
  102. dodal/devices/{i11 → beamlines/i11}/mythen.py +3 -4
  103. dodal/devices/{i11 → beamlines/i11}/nx100robot.py +6 -6
  104. dodal/devices/{i11 → beamlines/i11}/spinner.py +1 -1
  105. dodal/devices/{i13_1 → beamlines/i13_1}/merlin.py +1 -1
  106. dodal/devices/{i15 → beamlines/i15}/dcm.py +1 -2
  107. dodal/devices/{i15 → beamlines/i15}/focussing_mirror.py +5 -5
  108. dodal/devices/{i15 → beamlines/i15}/jack.py +2 -2
  109. dodal/devices/{i15 → beamlines/i15}/multilayer_mirror.py +1 -1
  110. dodal/devices/{i17 → beamlines/i17}/i17_apple2.py +16 -22
  111. dodal/devices/{i18 → beamlines/i18}/diode.py +1 -1
  112. dodal/devices/{i19 → beamlines/i19}/access_controlled/attenuator_motor_squad.py +12 -8
  113. dodal/devices/{i19 → beamlines/i19}/access_controlled/blueapi_device.py +16 -15
  114. dodal/devices/beamlines/i19/access_controlled/piezo_control.py +72 -0
  115. dodal/devices/{i19 → beamlines/i19}/access_controlled/shutter.py +11 -9
  116. dodal/devices/{i19 → beamlines/i19}/backlight.py +3 -1
  117. dodal/devices/{i19 → beamlines/i19}/mapt_configuration.py +2 -1
  118. dodal/devices/{i19 → beamlines/i19}/pin_col_stages.py +11 -8
  119. dodal/devices/beamlines/i19/pin_tip.py +32 -0
  120. dodal/devices/beamlines/i21/__init__.py +3 -0
  121. dodal/devices/{i22 → beamlines/i22}/dcm.py +1 -2
  122. dodal/devices/{i22 → beamlines/i22}/fswitch.py +1 -3
  123. dodal/devices/{i22 → beamlines/i22}/nxsas.py +5 -4
  124. dodal/devices/{i24 → beamlines/i24}/beam_center.py +1 -1
  125. dodal/devices/{i24 → beamlines/i24}/beamstop.py +2 -2
  126. dodal/devices/{i24 → beamlines/i24}/commissioning_jungfrau.py +12 -12
  127. dodal/devices/{i24 → beamlines/i24}/dcm.py +1 -3
  128. dodal/devices/{i24 → beamlines/i24}/dual_backlight.py +3 -3
  129. dodal/devices/{i24 → beamlines/i24}/pmac.py +9 -7
  130. dodal/devices/{p60 → beamlines/p60}/lab_xray_source.py +1 -1
  131. dodal/devices/beamlines/p99/__init__.py +0 -0
  132. dodal/devices/{p99 → beamlines/p99}/andor2_point.py +11 -15
  133. dodal/devices/bimorph_mirror.py +22 -20
  134. dodal/devices/collimation_table.py +3 -2
  135. dodal/devices/common_dcm.py +30 -20
  136. dodal/devices/controllers.py +2 -2
  137. dodal/devices/cryostream.py +8 -0
  138. dodal/devices/current_amplifiers/current_amplifier.py +16 -18
  139. dodal/devices/current_amplifiers/current_amplifier_detector.py +9 -10
  140. dodal/devices/current_amplifiers/femto.py +8 -9
  141. dodal/devices/current_amplifiers/sr570.py +16 -16
  142. dodal/devices/current_amplifiers/struck_scaler_counter.py +5 -5
  143. dodal/devices/detector/det_resolution.py +9 -8
  144. dodal/devices/detector/detector.py +4 -2
  145. dodal/devices/diamond_filter.py +3 -4
  146. dodal/devices/eiger.py +32 -17
  147. dodal/devices/eiger_odin.py +1 -1
  148. dodal/devices/electron_analyser/base/__init__.py +3 -3
  149. dodal/devices/electron_analyser/base/base_controller.py +32 -21
  150. dodal/devices/electron_analyser/base/base_detector.py +15 -20
  151. dodal/devices/electron_analyser/base/base_driver_io.py +39 -46
  152. dodal/devices/electron_analyser/base/base_enums.py +0 -5
  153. dodal/devices/electron_analyser/base/base_region.py +29 -31
  154. dodal/devices/electron_analyser/base/base_util.py +18 -16
  155. dodal/devices/electron_analyser/base/energy_sources.py +35 -40
  156. dodal/devices/electron_analyser/specs/specs_detector.py +7 -6
  157. dodal/devices/electron_analyser/vgscienta/vgscienta_detector.py +7 -6
  158. dodal/devices/eurotherm.py +3 -2
  159. dodal/devices/fast_grid_scan.py +31 -34
  160. dodal/devices/fast_shutter.py +125 -39
  161. dodal/devices/flux.py +1 -1
  162. dodal/devices/focusing_mirror.py +29 -11
  163. dodal/devices/hutch_shutter.py +6 -6
  164. dodal/devices/insertion_device/__init__.py +20 -8
  165. dodal/devices/insertion_device/apple2_controller.py +371 -0
  166. dodal/devices/insertion_device/apple2_undulator.py +184 -587
  167. dodal/devices/insertion_device/apple_knot_controller.py +222 -0
  168. dodal/devices/insertion_device/energy.py +161 -0
  169. dodal/devices/insertion_device/energy_motor_lookup.py +21 -28
  170. dodal/devices/insertion_device/lookup_table_models.py +47 -52
  171. dodal/devices/insertion_device/polarisation.py +36 -0
  172. dodal/devices/ipin.py +1 -1
  173. dodal/devices/linkam3.py +7 -5
  174. dodal/devices/motors.py +107 -19
  175. dodal/devices/mx_phase1/beamstop.py +2 -4
  176. dodal/devices/oav/oav_calculations.py +20 -13
  177. dodal/devices/oav/oav_detector.py +92 -22
  178. dodal/devices/oav/oav_parameters.py +4 -9
  179. dodal/devices/oav/oav_to_redis_forwarder.py +22 -18
  180. dodal/devices/oav/pin_image_recognition/__init__.py +4 -6
  181. dodal/devices/oav/pin_image_recognition/manual_test.py +1 -2
  182. dodal/devices/oav/pin_image_recognition/utils.py +30 -32
  183. dodal/devices/oav/snapshots/grid_overlay.py +10 -9
  184. dodal/devices/oav/snapshots/snapshot_image_processing.py +15 -13
  185. dodal/devices/oav/utils.py +20 -6
  186. dodal/devices/p45.py +3 -9
  187. dodal/devices/pgm.py +8 -14
  188. dodal/devices/pressure_jump_cell.py +93 -32
  189. dodal/devices/qbpm.py +1 -3
  190. dodal/devices/robot.py +45 -20
  191. dodal/devices/s4_slit_gaps.py +1 -1
  192. dodal/devices/selectable_source.py +41 -0
  193. dodal/devices/slits.py +2 -5
  194. dodal/devices/smargon.py +2 -3
  195. dodal/devices/temperture_controller/lakeshore/lakeshore.py +38 -64
  196. dodal/devices/temperture_controller/lakeshore/lakeshore_io.py +21 -35
  197. dodal/devices/tetramm.py +7 -7
  198. dodal/devices/turbo_slit.py +8 -7
  199. dodal/devices/undulator.py +42 -56
  200. dodal/devices/util/adjuster_plans.py +2 -3
  201. dodal/devices/util/epics_util.py +10 -10
  202. dodal/devices/util/lookup_tables.py +17 -18
  203. dodal/devices/v2f.py +2 -3
  204. dodal/devices/watsonmarlow323_pump.py +1 -1
  205. dodal/devices/xbpm_feedback.py +3 -2
  206. dodal/devices/xspress3/xspress3.py +8 -11
  207. dodal/devices/xspress3/xspress3_channel.py +3 -6
  208. dodal/devices/zebra/zebra.py +21 -7
  209. dodal/devices/zebra/zebra_constants_mapping.py +12 -7
  210. dodal/devices/zebra/zebra_controlled_shutter.py +2 -1
  211. dodal/devices/zocalo/zocalo_interaction.py +14 -14
  212. dodal/devices/zocalo/zocalo_results.py +33 -33
  213. dodal/log.py +23 -20
  214. dodal/plan_stubs/check_topup.py +15 -15
  215. dodal/plan_stubs/data_session.py +6 -6
  216. dodal/plan_stubs/motor_utils.py +22 -18
  217. dodal/plan_stubs/pressure_jump_cell.py +18 -0
  218. dodal/plan_stubs/wrapped.py +40 -55
  219. dodal/plans/bimorph.py +63 -52
  220. dodal/plans/configure_arm_trigger_and_disarm_detector.py +0 -1
  221. dodal/plans/device_setup_plans/__init__.py +5 -0
  222. dodal/plans/device_setup_plans/setup_pin_tip_params.py +63 -0
  223. dodal/plans/preprocessors/verify_undulator_gap.py +10 -8
  224. dodal/plans/spec_path.py +3 -5
  225. dodal/plans/verify_undulator_gap.py +1 -2
  226. dodal/plans/wrapped.py +4 -3
  227. dodal/testing/__init__.py +0 -0
  228. dodal/testing/electron_analyser/device_factory.py +5 -7
  229. dodal/testing/fixtures/devices/apple2.py +38 -0
  230. dodal/testing/fixtures/run_engine.py +3 -7
  231. dodal/testing/fixtures/utils.py +1 -2
  232. dodal/utils.py +60 -58
  233. dls_dodal-1.68.0.dist-info/RECORD +0 -330
  234. dodal/beamline_specific_utils/i05_shared.py +0 -14
  235. dodal/devices/b07/__init__.py +0 -3
  236. dodal/devices/i04/max_pixel.py +0 -38
  237. dodal/devices/i05/__init__.py +0 -3
  238. dodal/devices/i09/__init__.py +0 -3
  239. dodal/devices/i21/__init__.py +0 -5
  240. {dls_dodal-1.68.0.dist-info → dls_dodal-2.0.0.dist-info}/entry_points.txt +0 -0
  241. {dls_dodal-1.68.0.dist-info → dls_dodal-2.0.0.dist-info}/licenses/LICENSE +0 -0
  242. {dls_dodal-1.68.0.dist-info → dls_dodal-2.0.0.dist-info}/top_level.txt +0 -0
  243. /dodal/{beamline_specific_utils → devices/beamlines}/__init__.py +0 -0
  244. /dodal/devices/{b07 → beamlines/b07}/enums.py +0 -0
  245. /dodal/devices/{b07_1 → beamlines/b07_1}/enums.py +0 -0
  246. /dodal/devices/{b16 → beamlines/b16}/__init__.py +0 -0
  247. /dodal/devices/{i02_1 → beamlines/i02_1}/__init__.py +0 -0
  248. /dodal/devices/{i02_2 → beamlines/i02_2}/__init__.py +0 -0
  249. /dodal/devices/{i03 → beamlines/i03}/__init__.py +0 -0
  250. /dodal/devices/{i03 → beamlines/i03}/constants.py +0 -0
  251. /dodal/devices/{i04 → beamlines/i04}/__init__.py +0 -0
  252. /dodal/devices/{i04 → beamlines/i04}/constants.py +0 -0
  253. /dodal/devices/{i05 → beamlines/i05}/enums.py +0 -0
  254. /dodal/devices/{i07 → beamlines/i07}/__init__.py +0 -0
  255. /dodal/devices/{i09 → beamlines/i09}/enums.py +0 -0
  256. /dodal/devices/{i09_1 → beamlines/i09_1}/__init__.py +0 -0
  257. /dodal/devices/{i09_1 → beamlines/i09_1}/enums.py +0 -0
  258. /dodal/devices/{i09_1_shared → beamlines/i09_1_shared}/__init__.py +0 -0
  259. /dodal/devices/{i09_2_shared → beamlines/i09_2_shared}/__init__.py +0 -0
  260. /dodal/devices/{i09_2_shared → beamlines/i09_2_shared}/i09_apple2.py +0 -0
  261. /dodal/devices/{i10 → beamlines/i10}/__init__.py +0 -0
  262. /dodal/devices/{i10 → beamlines/i10}/i10_setting_data.py +0 -0
  263. /dodal/devices/{i10 → beamlines/i10}/mirrors.py +0 -0
  264. /dodal/devices/{i10 → beamlines/i10}/rasor/__init__.py +0 -0
  265. /dodal/devices/{i10 → beamlines/i10}/rasor/rasor_scaler_cards.py +0 -0
  266. /dodal/devices/{i11 → beamlines/i10_1/electromagnet}/__init__.py +0 -0
  267. /dodal/devices/{i13_1 → beamlines/i11}/__init__.py +0 -0
  268. /dodal/devices/{i15 → beamlines/i13_1}/__init__.py +0 -0
  269. /dodal/devices/{i13_1 → beamlines/i13_1}/merlin_controller.py +0 -0
  270. /dodal/devices/{i17 → beamlines/i15}/__init__.py +0 -0
  271. /dodal/devices/{i15 → beamlines/i15}/laue.py +0 -0
  272. /dodal/devices/{i15 → beamlines/i15}/motors.py +0 -0
  273. /dodal/devices/{i15 → beamlines/i15}/rail.py +0 -0
  274. /dodal/devices/{i18 → beamlines/i17}/__init__.py +0 -0
  275. /dodal/devices/{i19 → beamlines/i18}/__init__.py +0 -0
  276. /dodal/devices/{i18 → beamlines/i18}/kb_mirror.py +0 -0
  277. /dodal/devices/{i19/access_controlled → beamlines/i19}/__init__.py +0 -0
  278. /dodal/devices/{i20_1 → beamlines/i19/access_controlled}/__init__.py +0 -0
  279. /dodal/devices/{i19 → beamlines/i19}/access_controlled/hutch_access.py +0 -0
  280. /dodal/devices/{i19 → beamlines/i19}/beamstop.py +0 -0
  281. /dodal/devices/{i19 → beamlines/i19}/diffractometer.py +0 -0
  282. /dodal/devices/{i22 → beamlines/i20_1}/__init__.py +0 -0
  283. /dodal/devices/{i21 → beamlines/i21}/enums.py +0 -0
  284. /dodal/devices/{i24 → beamlines/i22}/__init__.py +0 -0
  285. /dodal/devices/{p99 → beamlines/i24}/__init__.py +0 -0
  286. /dodal/devices/{i24 → beamlines/i24}/aperture.py +0 -0
  287. /dodal/devices/{i24 → beamlines/i24}/focus_mirrors.py +0 -0
  288. /dodal/devices/{i24 → beamlines/i24}/vgonio.py +0 -0
  289. /dodal/devices/{p60 → beamlines/p60}/__init__.py +0 -0
  290. /dodal/devices/{p60 → beamlines/p60}/enums.py +0 -0
  291. /dodal/devices/{p99 → beamlines/p99}/sample_stage.py +0 -0
  292. /dodal/devices/insertion_device/{id_enum.py → enum.py} +0 -0
dodal/beamlines/i04.py CHANGED
@@ -1,11 +1,8 @@
1
1
  from ophyd_async.core import Reference
2
2
 
3
3
  from dodal.common.beamlines.beamline_parameters import get_beamline_parameters
4
- from dodal.common.beamlines.beamline_utils import (
5
- device_factory,
6
- device_instantiation,
7
- )
8
4
  from dodal.common.beamlines.beamline_utils import set_beamline as set_utils_beamline
5
+ from dodal.device_manager import DeviceManager
9
6
  from dodal.devices.aperturescatterguard import (
10
7
  AperturePosition,
11
8
  ApertureScatterguard,
@@ -14,22 +11,25 @@ from dodal.devices.aperturescatterguard import (
14
11
  from dodal.devices.attenuator.attenuator import BinaryFilterAttenuator
15
12
  from dodal.devices.backlight import Backlight
16
13
  from dodal.devices.baton import Baton
17
- from dodal.devices.detector import DetectorParams
14
+ from dodal.devices.beamlines.i03.dcm import DCM
15
+ from dodal.devices.beamlines.i04.beam_centre import CentreEllipseMethod
16
+ from dodal.devices.beamlines.i04.beamsize import Beamsize
17
+ from dodal.devices.beamlines.i04.constants import RedisConstants
18
+ from dodal.devices.beamlines.i04.max_pixel import MaxPixel
19
+ from dodal.devices.beamlines.i04.murko_results import MurkoResultsDevice
20
+ from dodal.devices.beamlines.i04.transfocator import Transfocator
18
21
  from dodal.devices.detector.detector_motion import DetectorMotion
19
22
  from dodal.devices.diamond_filter import DiamondFilter, I04Filters
20
23
  from dodal.devices.eiger import EigerDetector
21
24
  from dodal.devices.fast_grid_scan import ZebraFastGridScanThreeD
22
25
  from dodal.devices.flux import Flux
23
- from dodal.devices.i03.dcm import DCM
24
- from dodal.devices.i04.beamsize import Beamsize
25
- from dodal.devices.i04.constants import RedisConstants
26
- from dodal.devices.i04.max_pixel import MaxPixel
27
- from dodal.devices.i04.murko_results import MurkoResultsDevice
28
- from dodal.devices.i04.transfocator import Transfocator
29
26
  from dodal.devices.ipin import IPin
30
27
  from dodal.devices.motors import XYZStage
31
28
  from dodal.devices.mx_phase1.beamstop import Beamstop
32
- from dodal.devices.oav.oav_detector import OAVBeamCentrePV
29
+ from dodal.devices.oav.oav_detector import (
30
+ OAVBeamCentrePV,
31
+ ZoomControllerWithBeamCentres,
32
+ )
33
33
  from dodal.devices.oav.oav_parameters import OAVConfig
34
34
  from dodal.devices.oav.oav_to_redis_forwarder import OAVToRedisForwarder
35
35
  from dodal.devices.oav.pin_image_recognition import PinTipDetection
@@ -67,129 +67,87 @@ I04_ZEBRA_MAPPING = ZebraMapping(
67
67
  outputs=(ZebraTTLOutputs(TTL_DETECTOR=1, TTL_FAST_SHUTTER=2, TTL_XSPRESS3=3)),
68
68
  sources=ZebraSources(),
69
69
  )
70
-
71
70
  PREFIX = BeamlinePrefix(BL)
72
71
 
72
+ devices = DeviceManager()
73
73
 
74
- @device_factory()
74
+
75
+ @devices.factory()
75
76
  def smargon() -> Smargon:
76
- """Get the i04 Smargon device, instantiate it if it hasn't already been.
77
- If this is called when already instantiated in i04, it will return the existing object.
78
- """
79
77
  return Smargon(f"{PREFIX.beamline_prefix}-MO-SGON-01:")
80
78
 
81
79
 
82
- @device_factory()
80
+ @devices.factory()
83
81
  def gonio_positioner() -> XYZStage:
84
- """Get the i04 lower_gonio_stages device, instantiate it if it hasn't already been.
85
- If this is called when already instantiated in i04, it will return the existing object.
86
- """
87
82
  return XYZStage(
88
83
  f"{PREFIX.beamline_prefix}-MO-GONIO-01:",
89
84
  "lower_gonio_stages",
90
85
  )
91
86
 
92
87
 
93
- @device_factory()
88
+ @devices.factory()
94
89
  def sample_delivery_system() -> XYZStage:
95
- """Get the i04 sample_delivery_system device, instantiate it if it hasn't already been.
96
- If this is called when already instantiated in i04, it will return the existing object.
97
- """
98
90
  return XYZStage(f"{PREFIX.beamline_prefix}-MO-SDE-01:")
99
91
 
100
92
 
101
- @device_factory()
93
+ @devices.factory()
102
94
  def ipin() -> IPin:
103
- """Get the i04 ipin device, instantiate it if it hasn't already been.
104
- If this is called when already instantiated in i04, it will return the existing object.
105
- """
106
95
  return IPin(f"{PREFIX.beamline_prefix}-EA-PIN-01:")
107
96
 
108
97
 
109
- @device_factory()
98
+ @devices.factory()
110
99
  def beamstop() -> Beamstop:
111
- """Get the i04 beamstop device, instantiate it if it hasn't already been.
112
- If this is called when already instantiated in i04, it will return the existing object.
113
- """
114
100
  return Beamstop(
115
101
  f"{PREFIX.beamline_prefix}-MO-BS-01:",
116
102
  beamline_parameters=get_beamline_parameters(),
117
103
  )
118
104
 
119
105
 
120
- @device_factory()
106
+ @devices.factory()
121
107
  def sample_shutter() -> ZebraShutter:
122
- """Get the i04 sample shutter device, instantiate it if it hasn't already been.
123
- If this is called when already instantiated in i04, it will return the existing object.
124
- """
125
108
  return ZebraShutter(f"{PREFIX.beamline_prefix}-EA-SHTR-01:")
126
109
 
127
110
 
128
- @device_factory()
111
+ @devices.factory()
129
112
  def attenuator() -> BinaryFilterAttenuator:
130
- """Get the i04 attenuator device, instantiate it if it hasn't already been.
131
- If this is called when already instantiated in i04, it will return the existing object.
132
- """
133
113
  return BinaryFilterAttenuator(
134
114
  prefix=f"{PREFIX.beamline_prefix}-EA-ATTN-01:",
135
115
  num_filters=16,
136
116
  )
137
117
 
138
118
 
139
- @device_factory()
119
+ @devices.factory()
140
120
  def transfocator() -> Transfocator:
141
- """Get the i04 transfocator device, instantiate it if it hasn't already been.
142
- If this is called when already instantiated in i04, it will return the existing object.
143
- """
144
121
  return Transfocator(f"{PREFIX.beamline_prefix}-MO-FSWT-01:")
145
122
 
146
123
 
147
- @device_factory()
124
+ @devices.factory()
148
125
  def baton() -> Baton:
149
- """Get the i04 baton device, instantiate it if it hasn't already been.
150
- If this is called when already instantiated in i04, it will return the existing object.
151
- """
152
126
  return Baton(f"{PREFIX.beamline_prefix}-CS-BATON-01:")
153
127
 
154
128
 
155
- @device_factory()
156
- def xbpm_feedback() -> XBPMFeedback:
157
- """Get the i04 xbpm_feedback device, instantiate it if it hasn't already been.
158
- If this is called when already instantiated in i04, it will return the existing object.
159
- """
160
- return XBPMFeedback(f"{PREFIX.beamline_prefix}-EA-FDBK-01:", baton=baton())
129
+ @devices.factory()
130
+ def xbpm_feedback(baton: Baton) -> XBPMFeedback:
131
+ return XBPMFeedback(f"{PREFIX.beamline_prefix}-EA-FDBK-01:", baton=baton)
161
132
 
162
133
 
163
- @device_factory()
134
+ @devices.factory()
164
135
  def flux() -> Flux:
165
- """Get the i04 flux device, instantiate it if it hasn't already been.
166
- If this is called when already instantiated in i04, it will return the existing object.
167
- """
168
136
  return Flux(f"{PREFIX.beamline_prefix}-MO-FLUX-01:")
169
137
 
170
138
 
171
- @device_factory()
139
+ @devices.factory()
172
140
  def dcm() -> DCM:
173
- """Get the i04 DCM device, instantiate it if it hasn't already been.
174
- If this is called when already instantiated in i04, it will return the existing object.
175
- """
176
141
  return DCM(f"{PREFIX.beamline_prefix}-MO-DCM-01:")
177
142
 
178
143
 
179
- @device_factory()
144
+ @devices.factory()
180
145
  def backlight() -> Backlight:
181
- """Get the i04 backlight device, instantiate it if it hasn't already been.
182
- If this is called when already instantiated in i04, it will return the existing object.
183
- """
184
146
  return Backlight(PREFIX.beamline_prefix)
185
147
 
186
148
 
187
- @device_factory()
149
+ @devices.factory()
188
150
  def aperture_scatterguard() -> ApertureScatterguard:
189
- """Get the i04 aperture and scatterguard device, instantiate it if it hasn't already
190
- been. If this is called when already instantiated in i04, it will return the existing
191
- object.
192
- """
193
151
  params = get_beamline_parameters()
194
152
  return ApertureScatterguard(
195
153
  aperture_prefix=f"{PREFIX.beamline_prefix}-MO-MAPT-01:",
@@ -199,96 +157,59 @@ def aperture_scatterguard() -> ApertureScatterguard:
199
157
  )
200
158
 
201
159
 
202
- @device_factory(skip=BL == "s04")
203
- def eiger(mock: bool = False, params: DetectorParams | None = None) -> EigerDetector:
204
- """Get the i04 Eiger device, instantiate it if it hasn't already been.
205
- If this is called when already instantiated in i04, it will return the existing object.
206
- If called with params, will update those params to the Eiger object.
207
- """
208
-
209
- def set_params(eiger: EigerDetector):
210
- if params is not None:
211
- eiger.set_detector_parameters(params)
212
-
213
- return device_instantiation(
214
- device_factory=EigerDetector,
215
- name="eiger",
216
- prefix="-EA-EIGER-01:",
217
- wait=False,
218
- fake=mock,
219
- post_create=set_params,
220
- )
160
+ @devices.v1_init(EigerDetector, prefix="BL04I-EA-EIGER-01:", wait=False)
161
+ def eiger(eiger: EigerDetector) -> EigerDetector:
162
+ eiger.detector_id = 78
163
+ return eiger
221
164
 
222
165
 
223
- @device_factory()
166
+ @devices.factory()
224
167
  def zebra_fast_grid_scan() -> ZebraFastGridScanThreeD:
225
- """Get the i04 zebra_fast_grid_scan device, instantiate it if it hasn't already been.
226
- If this is called when already instantiated in i04, it will return the existing object.
227
- """
228
- return ZebraFastGridScanThreeD(
229
- prefix=f"{PREFIX.beamline_prefix}-MO-SGON-01:",
230
- )
168
+ return ZebraFastGridScanThreeD(prefix=f"{PREFIX.beamline_prefix}-MO-SGON-01:")
231
169
 
232
170
 
233
- @device_factory()
171
+ @devices.factory()
234
172
  def s4_slit_gaps() -> S4SlitGaps:
235
- """Get the i04 s4_slit_gaps device, instantiate it if it hasn't already been.
236
- If this is called when already instantiated in i04, it will return the existing object.
237
- """
238
173
  return S4SlitGaps(f"{PREFIX.beamline_prefix}-AL-SLITS-04:")
239
174
 
240
175
 
241
- @device_factory()
242
- def undulator() -> UndulatorInKeV:
243
- """Get the i04 undulator device, instantiate it if it hasn't already been.
244
- If this is called when already instantiated in i04, it will return the existing object.
245
- """
176
+ @devices.fixture
177
+ def daq_configuration_path() -> str:
178
+ return DAQ_CONFIGURATION_PATH
179
+
180
+
181
+ @devices.factory()
182
+ def undulator(baton: Baton, daq_configuration_path: str) -> UndulatorInKeV:
246
183
  return UndulatorInKeV(
247
184
  prefix=f"{PREFIX.insertion_prefix}-MO-SERVC-01:",
248
- id_gap_lookup_table_path="/dls_sw/i04/software/daq_configuration/lookup/BeamLine_Undulator_toGap.txt",
249
- baton=baton(),
185
+ id_gap_lookup_table_path=f"{daq_configuration_path}/lookup/BeamLine_Undulator_toGap.txt",
186
+ baton=baton,
250
187
  )
251
188
 
252
189
 
253
- @device_factory(skip=BL == "s04")
190
+ @devices.factory()
254
191
  def synchrotron() -> Synchrotron:
255
- """Get the i04 synchrotron device, instantiate it if it hasn't already been.
256
- If this is called when already instantiated in i04, it will return the existing object.
257
- """
258
192
  return Synchrotron()
259
193
 
260
194
 
261
- @device_factory()
195
+ @devices.factory()
262
196
  def zebra() -> Zebra:
263
- """Get the i04 zebra device, instantiate it if it hasn't already been.
264
- If this is called when already instantiated in i04, it will return the existing object.
265
- """
266
197
  return Zebra(
267
198
  prefix=f"{PREFIX.beamline_prefix}-EA-ZEBRA-01:",
268
199
  mapping=I04_ZEBRA_MAPPING,
269
200
  )
270
201
 
271
202
 
272
- @device_factory(
273
- skip=BL == "s04",
274
- )
203
+ @devices.factory()
275
204
  def oav(params: OAVConfig | None = None) -> OAVBeamCentrePV:
276
- """Get the i04 OAV device, instantiate it if it hasn't already been.
277
- If this is called when already instantiated in i04, it will return the existing object.
278
- """
279
205
  return OAVBeamCentrePV(
280
206
  prefix=f"{PREFIX.beamline_prefix}-DI-OAV-01:",
281
207
  config=params or OAVConfig(ZOOM_PARAMS_FILE),
282
208
  )
283
209
 
284
210
 
285
- @device_factory(
286
- skip=BL == "s04",
287
- )
211
+ @devices.factory()
288
212
  def oav_full_screen(params: OAVConfig | None = None) -> OAVBeamCentrePV:
289
- """Get the i04 OAV device, instantiate it if it hasn't already been.
290
- If this is called when already instantiated in i04, it will return the existing object.
291
- """
292
213
  return OAVBeamCentrePV(
293
214
  prefix=f"{PREFIX.beamline_prefix}-DI-OAV-01:",
294
215
  config=params or OAVConfig(ZOOM_PARAMS_FILE),
@@ -297,55 +218,40 @@ def oav_full_screen(params: OAVConfig | None = None) -> OAVBeamCentrePV:
297
218
  )
298
219
 
299
220
 
300
- @device_factory(
301
- skip=BL == "s04",
302
- )
221
+ @devices.factory()
303
222
  def detector_motion() -> DetectorMotion:
304
- """Get the i04 detector motion device, instantiate it if it hasn't already been.
305
- If this is called when already instantiated in i04, it will return the existing object.
306
- """
307
223
  return DetectorMotion(
308
224
  device_prefix=f"{PREFIX.beamline_prefix}-MO-DET-01:",
309
225
  pmac_prefix=f"{PREFIX.beamline_prefix}-MO-PMAC-02:",
310
226
  )
311
227
 
312
228
 
313
- @device_factory()
229
+ @devices.factory()
314
230
  def thawer() -> Thawer:
315
- """Get the i04 thawer, instantiate it if it hasn't already been.
316
- If this is called when already instantiated in i04, it will return the existing object.
317
- """
318
231
  return Thawer(f"{PREFIX.beamline_prefix}-EA-THAW-01")
319
232
 
320
233
 
321
- @device_factory()
234
+ @devices.factory()
322
235
  def robot() -> BartRobot:
323
- """Get the i04 robot device, instantiate it if it hasn't already been.
324
- If this is called when already instantiated in i04, it will return the existing object.
325
- """
326
236
  return BartRobot(f"{PREFIX.beamline_prefix}-MO-ROBOT-01:")
327
237
 
328
238
 
329
- @device_factory()
330
- def oav_to_redis_forwarder() -> OAVToRedisForwarder:
331
- """Get the i04 OAV to redis forwarder, instantiate it if it hasn't already been.
332
- If this is called when already instantiated in i04, it will return the existing object.
333
- """
239
+ @devices.factory()
240
+ def oav_to_redis_forwarder(
241
+ oav: OAVBeamCentrePV, oav_full_screen: OAVBeamCentrePV
242
+ ) -> OAVToRedisForwarder:
334
243
  return OAVToRedisForwarder(
335
244
  f"{PREFIX.beamline_prefix}-DI-OAV-01:",
336
- oav_roi=oav(),
337
- oav_fs=oav_full_screen(),
245
+ oav_roi=oav,
246
+ oav_fs=oav_full_screen,
338
247
  redis_host=RedisConstants.REDIS_HOST,
339
248
  redis_password=RedisConstants.REDIS_PASSWORD,
340
249
  redis_db=RedisConstants.MURKO_REDIS_DB,
341
250
  )
342
251
 
343
252
 
344
- @device_factory()
253
+ @devices.factory()
345
254
  def murko_results() -> MurkoResultsDevice:
346
- """Get the i04 OAV to redis forwarder, instantiate it if it hasn't already been.
347
- If this is called when already instantiated in i04, it will return the existing object.
348
- """
349
255
  return MurkoResultsDevice(
350
256
  redis_host=RedisConstants.REDIS_HOST,
351
257
  redis_password=RedisConstants.REDIS_PASSWORD,
@@ -353,60 +259,57 @@ def murko_results() -> MurkoResultsDevice:
353
259
  )
354
260
 
355
261
 
356
- @device_factory()
262
+ @devices.factory()
357
263
  def diamond_filter() -> DiamondFilter[I04Filters]:
358
- """Get the i04 diamond filter device, instantiate it if it hasn't already been.
359
- If this is called when already instantiated in i04, it will return the existing object.
360
- """
361
264
  return DiamondFilter[I04Filters](
362
265
  f"{PREFIX.beamline_prefix}-MO-FLTR-01:Y", I04Filters
363
266
  )
364
267
 
365
268
 
366
- @device_factory()
269
+ @devices.factory()
367
270
  def zocalo() -> ZocaloResults:
368
- """Get the i04 ZocaloResults device, instantiate it if it hasn't already been.
369
- If this is called when already instantiated in i04, it will return the existing object.
370
- """
371
271
  return ZocaloResults(channel="xrc.i04", results_source=ZocaloSource.CPU)
372
272
 
373
273
 
374
- @device_factory()
274
+ @devices.factory()
375
275
  def pin_tip_detection() -> PinTipDetection:
376
- """Get the i04 pin tip detection device, instantiate it if it hasn't already been.
377
- If this is called when already instantiated in i04, it will return the existing object.
378
- """
379
276
  return PinTipDetection(f"{PREFIX.beamline_prefix}-DI-OAV-01:")
380
277
 
381
278
 
382
- @device_factory()
383
- def scintillator() -> Scintillator:
384
- """Get the i04 scintillator device, instantiate it if it hasn't already been.
385
- If this is called when already instantiated in i04, it will return the existing object.
386
- """
279
+ @devices.factory()
280
+ def scintillator(aperture_scatterguard: ApertureScatterguard) -> Scintillator:
387
281
  return Scintillator(
388
282
  f"{PREFIX.beamline_prefix}-MO-SCIN-01:",
389
- Reference(aperture_scatterguard()),
283
+ Reference(aperture_scatterguard),
390
284
  get_beamline_parameters(),
391
285
  )
392
286
 
393
287
 
394
- @device_factory()
288
+ @devices.factory()
395
289
  def max_pixel() -> MaxPixel:
396
- """Get the i04 max pixel device, instantiate it if it hasn't already been.
397
- If this is called when already instantiated in i04, it will return the existing object.
398
- """
399
- return MaxPixel(
290
+ return MaxPixel(f"{PREFIX.beamline_prefix}-DI-OAV-01:")
291
+
292
+
293
+ @devices.factory()
294
+ def beamsize(
295
+ transfocator: Transfocator, aperture_scatterguard: ApertureScatterguard
296
+ ) -> Beamsize:
297
+ return Beamsize(
298
+ transfocator,
299
+ aperture_scatterguard,
300
+ )
301
+
302
+
303
+ @devices.factory()
304
+ def beam_centre() -> CentreEllipseMethod:
305
+ return CentreEllipseMethod(
400
306
  f"{PREFIX.beamline_prefix}-DI-OAV-01:",
401
307
  )
402
308
 
403
309
 
404
- @device_factory()
405
- def beamsize() -> Beamsize:
406
- """Get the i04 beamsize device, instantiate it if it hasn't already been.
310
+ @devices.factory()
311
+ def zoom_controller() -> ZoomControllerWithBeamCentres:
312
+ """Get the i04 zoom controller, instantiate it if it hasn't already been.
407
313
  If this is called when already instantiated in i04, it will return the existing object.
408
314
  """
409
- return Beamsize(
410
- transfocator=transfocator(),
411
- aperture_scatterguard=aperture_scatterguard(),
412
- )
315
+ return ZoomControllerWithBeamCentres(f"{PREFIX.beamline_prefix}-EA-OAV-01:FZOOM:")
dodal/beamlines/i05.py CHANGED
@@ -1,49 +1,19 @@
1
- from dodal.beamline_specific_utils.i05_shared import pgm as i05_pgm
2
- from dodal.common.beamlines.beamline_utils import (
3
- device_factory,
4
- )
1
+ from dodal.beamlines.i05_shared import devices as i05_shared_devices
5
2
  from dodal.common.beamlines.beamline_utils import set_beamline as set_utils_beamline
6
- from dodal.devices.insertion_device import (
7
- Apple2,
8
- UndulatorGap,
9
- UndulatorLockedPhaseAxes,
10
- )
11
- from dodal.devices.pgm import PlaneGratingMonochromator
12
- from dodal.devices.synchrotron import Synchrotron
3
+ from dodal.device_manager import DeviceManager
4
+ from dodal.devices.temperture_controller import Lakeshore336
13
5
  from dodal.log import set_beamline as set_log_beamline
14
6
  from dodal.utils import BeamlinePrefix, get_beamline_name
15
7
 
8
+ devices = DeviceManager()
9
+ devices.include(i05_shared_devices)
10
+
16
11
  BL = get_beamline_name("i05")
17
12
  PREFIX = BeamlinePrefix(BL)
18
13
  set_log_beamline(BL)
19
14
  set_utils_beamline(BL)
20
15
 
21
16
 
22
- @device_factory()
23
- def synchrotron() -> Synchrotron:
24
- return Synchrotron()
25
-
26
-
27
- @device_factory()
28
- def pgm() -> PlaneGratingMonochromator:
29
- return i05_pgm()
30
-
31
-
32
- @device_factory()
33
- def id_gap() -> UndulatorGap:
34
- return UndulatorGap(prefix=f"{PREFIX.insertion_prefix}-MO-SERVC-01:")
35
-
36
-
37
- @device_factory()
38
- def id_phase() -> UndulatorLockedPhaseAxes:
39
- return UndulatorLockedPhaseAxes(
40
- prefix=f"{PREFIX.insertion_prefix}-MO-SERVC-01:",
41
- top_outer="PL",
42
- btm_inner="PU",
43
- )
44
-
45
-
46
- @device_factory()
47
- def id() -> Apple2:
48
- """i05 insertion device."""
49
- return Apple2(id_gap=id_gap(), id_phase=id_phase())
17
+ @devices.factory()
18
+ def sample_temperature_controller() -> Lakeshore336:
19
+ return Lakeshore336(prefix=f"{PREFIX.beamline_prefix}-EA-TCTRL-02:")
dodal/beamlines/i05_1.py CHANGED
@@ -1,8 +1,6 @@
1
- from dodal.beamline_specific_utils.i05_shared import pgm as i05_pgm
2
- from dodal.common.beamlines.beamline_utils import device_factory
1
+ from dodal.beamlines.i05_shared import devices as i05_shared_devices
3
2
  from dodal.common.beamlines.beamline_utils import set_beamline as set_utils_beamline
4
- from dodal.devices.pgm import PlaneGratingMonochromator
5
- from dodal.devices.synchrotron import Synchrotron
3
+ from dodal.device_manager import DeviceManager
6
4
  from dodal.log import set_beamline as set_log_beamline
7
5
  from dodal.utils import BeamlinePrefix, get_beamline_name
8
6
 
@@ -11,12 +9,5 @@ PREFIX = BeamlinePrefix(BL, suffix="J")
11
9
  set_log_beamline(BL)
12
10
  set_utils_beamline(BL)
13
11
 
14
-
15
- @device_factory()
16
- def pgm() -> PlaneGratingMonochromator:
17
- return i05_pgm()
18
-
19
-
20
- @device_factory()
21
- def synchrotron() -> Synchrotron:
22
- return Synchrotron()
12
+ devices = DeviceManager()
13
+ devices.include(i05_shared_devices)
@@ -0,0 +1,51 @@
1
+ from dodal.device_manager import DeviceManager
2
+ from dodal.devices.beamlines.i05.enums import Grating
3
+ from dodal.devices.insertion_device import (
4
+ Apple2,
5
+ UndulatorGap,
6
+ UndulatorLockedPhaseAxes,
7
+ )
8
+ from dodal.devices.pgm import PlaneGratingMonochromator
9
+ from dodal.devices.synchrotron import Synchrotron
10
+ from dodal.utils import BeamlinePrefix, get_beamline_name
11
+
12
+ BL = get_beamline_name("i05-shared")
13
+ PREFIX = BeamlinePrefix("i05-shared", "I")
14
+
15
+ devices = DeviceManager()
16
+
17
+
18
+ @devices.factory()
19
+ def synchrotron() -> Synchrotron:
20
+ return Synchrotron()
21
+
22
+
23
+ @devices.factory()
24
+ def pgm() -> PlaneGratingMonochromator:
25
+ return PlaneGratingMonochromator(
26
+ prefix=f"{PREFIX.beamline_prefix}-OP-PGM-01:",
27
+ grating=Grating,
28
+ )
29
+
30
+
31
+ @devices.factory()
32
+ def id_gap() -> UndulatorGap:
33
+ return UndulatorGap(prefix=f"{PREFIX.insertion_prefix}-MO-SERVC-01:")
34
+
35
+
36
+ @devices.factory()
37
+ def id_phase() -> UndulatorLockedPhaseAxes:
38
+ return UndulatorLockedPhaseAxes(
39
+ prefix=f"{PREFIX.insertion_prefix}-MO-SERVC-01:",
40
+ top_outer="PL",
41
+ btm_inner="PU",
42
+ )
43
+
44
+
45
+ @devices.factory()
46
+ def id(
47
+ id_gap: UndulatorGap,
48
+ id_phase: UndulatorLockedPhaseAxes,
49
+ ) -> Apple2[UndulatorLockedPhaseAxes]:
50
+ """i05 insertion device."""
51
+ return Apple2[UndulatorLockedPhaseAxes](id_gap=id_gap, id_phase=id_phase)
@@ -0,0 +1,26 @@
1
+ from dodal.beamlines.i06_shared import devices as i06_shared_devices
2
+ from dodal.common.beamlines.beamline_utils import set_beamline as set_utils_beamline
3
+ from dodal.device_manager import DeviceManager
4
+ from dodal.devices.temperture_controller import (
5
+ Lakeshore336,
6
+ )
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("i06_1")
11
+ PREFIX = BeamlinePrefix(BL, suffix="J")
12
+ set_log_beamline(BL)
13
+ set_utils_beamline(BL)
14
+
15
+ devices = DeviceManager()
16
+ devices.include(i06_shared_devices)
17
+
18
+
19
+ @devices.factory()
20
+ def diff_cooling_temperature_controller() -> Lakeshore336:
21
+ return Lakeshore336(prefix=f"{PREFIX.beamline_prefix}-EA-TCTRL-02:")
22
+
23
+
24
+ @devices.factory()
25
+ def diff_heating_temperature_controller() -> Lakeshore336:
26
+ return Lakeshore336(prefix=f"{PREFIX.beamline_prefix}-EA-TCTRL-03:")