-
Notifications
You must be signed in to change notification settings - Fork 6
Description
MX offers two main forms of "line" scan - Helical and Wedged.
Helical is straight forward, omega is continuously rotated while the sample stages move between positions.
E.g. scan axis values are:
x = [0, 0.2, 0.4, 0.6, 0.8, 1.0]
y = [0, 0.2, 0.4, 0.6, 0.8, 1.0]
omega = [0, 20, 40, 60, 80, 100]
xy_g = LineGenerator(['y', 'x'], 'mm', [0, 0], [1, 1], 6)
omega_g = LineGenerator('omega', 'deg', 0, 100 5)
g = ZipGenerator([xy_g, omega_g])
cg = CompoundGenerator([g], [], [])
Wedged is more tricky.
Omega performs part of its rotation and different x, y positions. That is, the full rotation is broken up into stages, performed at different points.
omega = [0, 10, 20, 30, 40, 50, 60, 70, 80]
x = [0, 0, 0, 1, 1, 1, 2, 2, 2]
y = [0, 0, 0, 1, 1, 1, 2, 2, 2]
The first wedge happens at "(0, 0)", the next part at "(1, 1)".
We don't have a good way of describing such scans. We could specify the full x, y arrays as an ArrayGenerator and zip them with omega, but that is inelegant, and far from concise.
MX also has the concept of Inverse Beam data collections:
omega = [0, 1, 2, 3, 4, 180, 181, 182, 183, 184, 5, 6, 7, 8, 9, 185, 186, 187, 188, 189, ...]
Here omega performs a full rotation, but again broken up into wedges that are "flipped" between a rotation started at 0 and a rotation started at 180.