You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: doc/plans/plans.md
+22-18Lines changed: 22 additions & 18 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1,44 +1,48 @@
1
1
# General Plans
2
2
3
-
`ibex_bluesky_core`provides a number of plans that can be run by the RunEngine directly. These are mostly thin wrappers around the generic [bluesky plans](https://blueskyproject.io/bluesky/main/plans.html)
3
+
The {py:obj}`ibex_bluesky_core.plans` module provides a number of plans that can be run by the RunEngine directly. These are mostly wrappers around the generic {external+bluesky:doc}`blueskyplans <plans>`.
4
4
5
-
All of these plans can be used directly by the RunEngine (`RE()`) or within a wrapper of your own that yields from them (`yield from`)
5
+
All of these plans can be used directly by the RunEngine (`RE()`), or within a wrapper of your own that `yields from` these plans.
6
6
7
7
So you can do this:
8
8
9
9
```python
10
+
from ibex_bluesky_core.plans.reflectometry import refl_scan
The scanning plans documented on this page will return an [`ISISCallbacks`](ibex_bluesky_core.callbacks.ISISCallbacks) instance, which gives results of fits, centre of masses etc. - for example in your own plan if you wanted to print the fit result and the centre of mass:
30
+
The scanning plans documented on this page will return a {py:obj}`~ibex_bluesky_core.callbacks.ISISCallbacks` instance, which can be used to access results of fits, centre of mass, and other callbacks:
These take "devices" so you can pass your own DAE object and a movable/readable but use a standard set of callbacks for plotting, fitting and log file writing. These are designed to allow flexibility such as more in-depth DAE customisation, block configuration ie write tolerances, settle times.
38
43
39
-
[`scan`](ibex_bluesky_core.plans.scan) - this is for a absolute/relative scan.
40
-
41
-
[`adaptive_scan`](ibex_bluesky_core.plans.adaptive_scan) - this is for an adaptive/relative-adaptive scan.
44
+
- {py:obj}`ibex_bluesky_core.plans.scan` - this is an absolute/relative scan.
45
+
- {py:obj}`ibex_bluesky_core.plans.adaptive_scan` - this is for an adaptive/relative-adaptive scan.
42
46
43
47
An example of using one of these could be:
44
48
@@ -56,18 +60,18 @@ def my_plan():
56
60
57
61
```
58
62
59
-
which would be used on the console like so: `RE(my_plan)`
63
+
which would be used on the console as: `RE(my_plan())`
60
64
61
-
## Higher-level wrapper plans
62
-
Alternatively, we provide some very thin wrappers which construct the devices for you - these are:
which wrap the above respectively. These take _names_ of blocks, rather than devices themselves, and construct a DAE and block device for you, using the global moving flag to determine if a motor has finished moving (in the same way as a `waitfor_move()`). This might be useful if you have a fairly standard DAE setup and just want to scan a block pointing at a motor such as a Sample Changer axis, but is not as flexible or performant as the lower-level plans.
72
+
These plans take the _names_ of blocks as arguments, rather than devices, and construct a DAE and block device for you, using the global moving flag to determine if a motor has finished moving (in the same way as a `waitfor_move()`). This might be useful if you have a fairly standard DAE setup and want to scan a block pointing at a motor such as a Sample Changer axis, but is not as flexible or performant as the lower-level plans.
69
73
70
-
for example if you just wanted to scan over a motor, wait for 400 frames, and perform a linear fit, you can just write this in the console:
74
+
For example, to scan over a motor, wait for 400 frames, and perform a linear fit, you can write this in the console:
Copy file name to clipboardExpand all lines: doc/plans/reflectometry/autoalign.md
+2-4Lines changed: 2 additions & 4 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1,10 +1,8 @@
1
1
# Auto-alignment
2
2
3
-
For reflectometers, we provide a few generic plans which can be used to align beamlines.
3
+
For reflectometers, we provide a few generic plans which can be used as helpers for automated beamline alignment.
4
4
5
-
## Full-Auto Alignment Plan
6
-
7
-
The {py:obj}`ibex_bluesky_core.plans.reflectometry.optimise_axis_against_intensity` plan is designed to scan over a movable against beam intensity, and given which fitting parameter is chosen to be optimised and the fitting method, it will aim to find an optimum value. See [`standard fits`](/callbacks/fitting/standard_fits.md) for the fitting parameters for each fitting model you can use. At this stage it will check if the value is 'sensible'- there are some default checks but the user is encouraged to provide their own checks. If found to be sensible, the motor will be moved to this value, otherwise it will optionally run a callback that can be provided, and then ask the user if they want to rescan or conttinue to move the movable.
5
+
The {py:obj}`~ibex_bluesky_core.plans.reflectometry.optimise_axis_against_intensity` plan is designed to scan over a movable against beam intensity, and given which fitting parameter is chosen to be optimised and the fitting method, it will aim to find an optimum value. See [standard fits](/callbacks/fitting/standard_fits.md) for the fitting parameters for each fitting model you can use. At this stage it will check if the value is 'sensible' - there are some default checks, but the user is encouraged to provide their own checks. If found to be sensible, the motor will be moved to this value, otherwise it will optionally run a callback that can be provided, and then ask the user if they want to rescan or continue to move the movable.
8
6
9
7
The idea for how we expect the main auto-alignment plan to be used is that at the top / instrument level, you will move all other movables to some position ready to align, yield from this plan and then re-zero the motor.
10
8
The following is how you would do this for a reflectometry parameter as your movable:
0 commit comments