Beamline components
Reference inventory of the physical hardware that makes up 2-BM, walked from the source to the detector. Each component is listed once, with the fields needed to drive it (Family / role / intrinsic specs) and the fields needed to reason about how it moves relative to everything else (what it is mounted on, what rides on top of it).
This page is the source of truth for the beamline as an assembly. Per- component operating instructions live in Beamline control (beamline control) and the Operation section.
Note
“Mounted on” captures the kinematic chain, distinct from compositional ownership. A stage mounted on the rotary co-rotates with it; the same stage mounted under the rotary translates the rotation axis in lab coordinates. Alignment, error propagation, and limit-handling all depend on which is which.
Overview
Physical walk, source to detector (z values from the APS reference table, in millimetres from the centre of the storage-ring straight section; the beamline runs from z = 24 020 at the FE exit mask to z = 56 764 at the photon stop):
Storage ring source
-> A-shutter (front-end) (in 2-BM-A; z TBD)
-> L3 Slits + Filters (z 25 225)
-> Y3-30 Mirror (z 27 626)
-> Double Multilayer Mono (DMM) (z 29 335 / 29 934)
-> B-shutter (P6-50 Safety) (z 33 343)
-> Sample stack (in 2-BM-B; optical table + tower)
-> Detector system (MCTOptics + Optique Peter Z + detector table)
Passive components (FE exit mask, K4-21 collimator, Be windows, white-beam stop, baffles, beam transports, photon stop) sit between these elements at the z positions listed in the inventory table below.
Each block below expands into individual components with their intrinsic properties and kinematic relations.
Beam delivery
The formal inventory of front-end and transport components, with positions, apertures, materials, and tolerances, is maintained as the 02-BM Beamline Component Reference Table (APS_1404611):
https://anl.box.com/s/afme9vpllerzzvsuzqiyxn7aukh7292j
That document is the source of truth for positions and shielding; the summary below reproduces it in walking order (source to hutch) and expands the components that are operationally addressed at run time (slits, mirror, monochromator, safety shutter) into per-component blocks for cora.
Note
The reference table was last formally updated for the 2013 Sector 02 Three-Year Safety Review and reflects the pre-APS-U layout. Post- APS-U changes (mirror retrofit, source brightness, any added components) need a separate reconciliation pass before this page is considered final.
Coordinate convention (from the reference table):
X= horizontal, positive outboard [mm]Y= vertical, positive up [mm]Z= along beam from the centre of the straight section [mm]X/Ypositions are relative to the nominal white-beam centrelineMasks and collimators are referenced to the aperture centre
♥ standard bending-magnet centreline (1.35 mrad inboard)
♠ alternate centreline (5.1 mrad up at Y3-30 mirror)
♦ alternate centreline (5.23 mrad up at Y3-30 mirror)
The Z reference point varies per component class (a superscript on
the Z value in the original APS table; reproduced as the ref
column in the inventory below):
1 — upstream face of thermal component (FE exit mask, Be windows, white-beam stop, W collimator, safety shutter, SS baffle)
2 — centre of optic (slits, mirror, DMM crystals)
3 — upstream face of shielding material (K4-21 collimator, beam transports, photon stop)
Beam-conditioning inventory (source to hutch)
The table below lists only the components that condition the beam (shape and energy). Passive hardware — FE exit mask, K4-21 collimator, Be windows, white-beam stop, W collimator, SS baffle, shielded beam transports, photon stop — is not reproduced here; the linked APS reference table at the top of this section is the authoritative full inventory. Item numbers below match the APS table for cross- reference.
# |
Component |
z [mm] |
ref |
Notes |
|---|---|---|---|---|
2 |
L3 Slits with Filters |
25 225 |
2 |
Operational; see block below. Splits into L3 Slits (shape) and L3 Filters (energy absorption); shared assembly. |
4 |
Y3-30 Mirror |
27 626 |
2 |
Silicon · defines the ♠ / ♦ alternate centrelines · operational, see block below |
5 |
Double Multilayer Monochromator |
29 335 / 29 934 |
2 |
Silicon · two crystals (Y offsets 9.0 / 41.0 mm) · operational, see block below |
Common position tolerances across all rows: dx = dy = 250 µm, dz = 5 mm.
All three items are operational (have command surfaces) and are expanded in operational components. The P6-50 safety shutter (item 8c in the APS reference table) is also operational but gates the beam rather than conditioning it; it appears as its own block at the end of the operational-components section.
Operational components
The L3 slits and filters share an ops page; the mirror and DMM each have their own. Pre-APS-U pages are noted as such — those entries are candidates for reconciliation against the post-APS-U layout.
2-BM has two shutters: an A-shutter at the front end (first
gating element on the beamline, in 2-BM-A) and the P6-50 safety
shutter (B_shutter) further downstream. Both are listed below.
A-shutter (front-end)
- Role:
First beam-gating element on the beamline; located in 2-BM-A upstream of the slits
- Family:
Shutter (would be a second instance of the Shutter Family already declared in the cora 2-BM assets inventory as
Shutter_2BM; the inventory currently lists only one Shutter — this entry needs to be added.)- Mounted on:
Front-end stand (floor-referenced)
- Carries:
(beam gating only)
- z position:
TBD (upstream of the L3 Slits; not separately listed in the APS reference table)
- EPICS prefix:
2bma:A_shutter- Open command:
2bma:A_shutter:open.VAL- Close command:
2bma:A_shutter:close.VAL- Notes:
Independent of the P6-50 personnel-safety shutter (
B_shutter, below) further downstream. Both must be open for beam to reach 2-BM-B.
L3 Slits
- Role:
Beam-shape conditioning, upstream of the mirror
- Family:
Slits (new Family; not yet declared in the cora equipment BC. Standard APS L3-20 four-blade slits — two horizontal (X−, X+) and two vertical (Y−, Y+) blade motors, plus per-direction derived
Size/Centercalc axes.)- Mounted on:
Front-end stand (floor-referenced)
- Carries:
(beam conditioning only)
- z position:
25 225 mm (ref 2: centre of optic; shared with Filters)
- Position tolerance:
250 µm (x, y), 5 mm (z)
- Reference drawing:
L3200000-03.pdf
- As-built drawings:
- MEDM screen:
2slit.adl(running onarcturus)- EPICS prefix:
2bma:(horizontal motorsm14for A Slit X− [inboard],m13for A Slit X+ [outboard]; vertical motorsm15for A Slit Y+ [up],m16for A Slit Y− [down])
The slits at 2-BM are standard APS L3-20. Technical as-built drawings are available here.
Note
“Inboard” follows the APS X convention: positive X is outboard
(away from the ring centre), negative X is inboard (toward the
ring centre). The screen below is oriented LOOKING UPSTREAM,
so on-screen left corresponds to inboard.
2slit.adl — horizontal-slits control screen (“LOOKING
UPSTREAM”, Lab coordinate system). The two leftmost columns
drive the individual blade motors: 2bma:m14 for the X− blade
(inboard) and 2bma:m13 for the X+ blade (outboard). The
Size and Center columns are calc-driven composites that
move both blades together to set the aperture width and centre.
2slit.adl — vertical-slits control screen (same orientation
and layout as the horizontal screen). The two leftmost columns
drive the individual blade motors: 2bma:m15 for the Y+ blade
(up) and 2bma:m16 for the Y− blade (down). The Size and
Center columns are calc-driven composites that move both
blades together to set the aperture height and centre.
L3 Filters
- Role:
Energy filtering (selective absorption upstream of the mirror)
- Family:
FilterChanger (new Family; not yet declared in the cora equipment BC. Two independent paddle sets — upstream and downstream — with up to four filter materials per side, plus a None / LowLimit reference per side.)
- Mounted on:
Front-end stand (shared assembly with L3 Slits)
- Carries:
(beam conditioning only)
- z position:
25 225 mm (ref 2: centre of optic; shared with Slits)
- Position tolerance:
250 µm (x, y), 5 mm (z)
- Reference drawing:
L3200000-03.pdf
- IOC:
2filter(running onarcturus)- MEDM screens:
2filter.adl(user),2filter_setup.adl(admin)- EPICS prefix:
2bma:(filter macrofltr1:; motorsm17upstream,m18downstream; lock calcuserCalc10)
Current configuration. The L3 filter changer has two independent
paddle sets, mounted upstream and downstream of the slits assembly.
Each side carries up to four filter materials, plus a None (empty)
position and a LowLimit hardware reference.
2filter.adl is the operator screen used to drive the filters
during a run; 2filter_setup.adl is the admin screen used to
program the paddle labels and the motor-drive positions each label
maps to. Both screens are part of the 2filter IOC.
2filter.adl — operator-facing filter selector. Each button
moves the corresponding motor to the position bound for that
material (see admin screen below). None pulls the paddle
clear; LowLimit returns to the hardware reference.
Materials currently bound (read from the screen above):
Upstream paddles: 1 mm C, 150 µm Al, 600 µm Al, 1 mm Al
Downstream paddles: 600 µm Al, 150 µm Al, 300 µm C, 50 µm C
Warning
Only the downstream paddle set is currently operational. The upstream paddle materials listed above are bound in software but the hardware is not in service; selecting them has no effect on the beam.
2filter_setup.adl — administrative screen for the L3 filter
changer. Used to (a) edit the material description on each paddle
and (b) set the motor-drive position each material maps to, per
side. The four-paddles-per-side limit and the upstream /
downstream split are set here. When a material description is
changed, any open 2filter.adl instance must be closed and
re-opened to pick up the new label.
Motor-drive PVs: upstream 2bma:m17.VAL,
downstream 2bma:m18.VAL.
Position bindings (read from ``2filter_setup.adl``):
Upstream material |
|
Downstream material |
|
|---|---|---|---|
1 mm C |
2.000 |
600 µm Al |
0.000 |
150 µm Al |
25.000 |
150 µm Al |
26.000 |
600 µm Al |
52.000 |
300 µm C |
53.000 |
1 mm Al |
79.000 |
50 µm C |
80.000 |
None |
106.000 |
None |
106.000 |
LowLimit |
0.000 |
LowLimit |
0.000 |
Position units follow the motor record’s .EGU field; the regular
~25-26 spacing across the 0–106 range is consistent with a millimetre
travel.
Y3-30 Mirror
- Role:
Vertical-deflecting mirror; defines the alternate beam centrelines
- Family:
Mirror (already listed as Pending in the cora 2-BM assets inventory. Composes a mirror body with an in-vacuum stripe selector and an external optical-table sub-assembly carrying Y / X / Z stages.)
- Mounted on:
Optical table (
[Dma:table1]via thetable_fullIOC)- Carries:
(beam conditioning only)
- z position:
27 626 mm (ref 2: centre of optic; mirror-1 axis)
- Position tolerance:
250 µm (x, y), 5 mm (z)
- Material:
Silicon
- Mirror length:
0.993 m (used by the angle calc record)
- Reference drawing:
4105091203-300000
- Reference (ops):
https://docs2bm.readthedocs.io/en/latest/source/ops/item_045.html#mirror
- MEDM screens:
2postMirror.adl(Y / pitch control),table_full.adl(optical-table control)- EPICS prefix:
2bma:(motors listed per sub-system below)
The APS reference-table entry reflects pre-APS-U geometry; the
post-APS-U mirror retrofit (see 02-BM-MirrorRetrofit_v0.pdf in
the beamline records) supersedes that entry and is the basis for the
current ops page linked above. Sets the ♠ (5.1 mrad up) and ♦
(5.23 mrad up) alternate centrelines used by downstream components.
Mirror Y (pitch) control. The mirror body sits on two vertical stages — one near the upstream end, one near the downstream end — driven independently to set the mirror Y position and the deflection angle.
2postMirror.adl — mirror Y / angle control screen. The two
outer columns drive the physical Y motors; the two inner columns
are derived (calc records).
M1 DSY (downstream Y) —
2bma:m2M1 USY (upstream Y) —
2bma:m5Y average — derived (mean of the two Y motors)
Angle [mr] — derived (deflection angle in milliradians, computed from the Y difference and the 0.993 m mirror length)
In-vacuum stripe selector. The mirror has four horizontal coating stripes on its optical surface, selected by translating the mirror laterally with an in-vacuum X stage:
a — 5 nm Pt (single-layer)
b — W(1.2 nm) / Si(5.37 nm) × 50 multilayer (d-spacing 8.8 % below spec)
c — W(1.2 nm) / Si(3.56 nm) × 50 multilayer (d-spacing 10.1 % below spec)
d — W(1.2 nm) / Si(2.73 nm) × 50 multilayer (d-spacing 9.4 % below spec)
Selector motor: 2bma:m3. See the ops page above for the per-
stripe expected-flux curve (mirror_multilayer_coating.png).
Warning
2bma:m3 does not have enough travel on its own to reach the
highest-energy stripe. Reaching that stripe requires a coordinated
move of m3 together with the optical-table X stages below.
This coordination is encapsulated by the energy-change IOC; see
Composite IOCs.
Optical table. The mirror sub-assembly sits on a multi-motor
optical table that provides additional X (transverse) and Z
(along-beam) translation and rotations. The table is driven through
the table_full IOC ([Dma:table1]); Translate / Rotate
columns on the screen are calc-driven composites of the underlying
Motors column.
table_full.adl ([Dma:table1]) — optical-table control screen.
Translate / Rotate columns are calc-driven composites; the Motors
column drives the underlying stages (M0X, M0Y, M1Y, M2X, M2Y, …).
Key table motors:
M0X, M2X — table X (two motors driven together; underlying EPICS PVs TBD from the IOC configuration). Used by the energy-change IOC to extend the in-vacuum
m3travel when the highest-energy stripe is requested.M0Y, M1Y, M2Y — table Y stages (redundant with the
2postMirror.adlper-end Y motors above for fine pitch; the per-end motors are the operational surface).Z — along-beam translation; present but not used operationally.
Double Multilayer Monochromator (DMM)
- Role:
Energy selection (monochromatic mode)
- Family:
Monochromator (new Family; not yet declared in the cora equipment BC. Two crystals — upstream (US) and downstream (DS) — each with X / Y / Bragg-arm drives, plus global tank Y / Z. Upstream crystal carries a split Y (OB / IB) for combined Y translation and Z-tilt.)
- Mounted on:
Front-end stand (floor-referenced)
- Carries:
(beam conditioning only)
- z position:
crystal 1 at 29 335 mm, crystal 2 at 29 934 mm (ref 2: centre of optic)
- Y offset:
9.0 mm (crystal 1), 41.0 mm (crystal 2)
- Position tolerance:
250 µm (x, y), 5 mm (z)
- Material:
Silicon
- Inter-crystal spacing:
1 323 mm along beam, 765 mm in/out-board (read from screen)
- Reference (ops):
https://docs2bm.readthedocs.io/en/latest/source/ops/item_021.html#dmm
- MEDM screen:
DMMV.adl(running onarcturus)- EPICS prefix:
2bma:(motors listed below)
Insertable: white-beam operation bypasses the DMM. Energy-change coordination across the DMM motors and the mirror stripe selector is encapsulated by the energy-change IOC; see Composite IOCs.
DMMV.adl — DMM control screen.
Motors:
Description |
Role |
EPICS PV |
|---|---|---|
DMM M2 Z |
Second crystal translation along the beam relative to the first |
|
DMM USX |
Global tank upstream X |
|
DMM USY OB |
Global tank upstream Y outboard side |
|
DMM USY IB |
Global tank upstream Y inboard side |
|
DMM DSX |
Global tank downstream X |
|
DMM DSY |
Second crystal Y relative to the first |
|
DMM US Arm |
Upstream Bragg-arm rotation |
|
DMM DS Arm |
Downstream Bragg-arm rotation |
|
DMM M2 Y |
Second crystal Y (companion to |
|
The tank’s upstream end carries two independent Y motors (USY OB
and USY IB); their average sets the upstream tank Y position and
their difference produces a Z-tilt around the beam axis. The second
crystal is positioned relative to the first via the DSY (Y),
M2 Z (along beam), and M2 Y motors.
P6-50 Safety Shutter (B-shutter)
- Role:
Personnel-safety shutter for 2-BM hutches
- Family:
Shutter (already declared in the cora 2-BM assets inventory as
Shutter_2BM; this entry is the source of its position and shielding data.)- Mounted on:
Front-end stand (floor-referenced)
- Carries:
(beam gating only)
- z position:
33 343 mm (ref 1: upstream face of thermal component)
- Position tolerance:
250 µm (x, y), 5 mm (z)
- Material:
W [21 mm]
- Aperture:
60.0 × 44.5 mm
- RSS tag:
part of 02-BM-A-P-01 assembly
- EPICS prefix:
2bma:B_shutter- Open command:
2bma:B_shutter:open.VAL- Close command:
2bma:B_shutter:close.VAL- Notes:
One element of the four-component P6-50 stack (white-beam stop, tungsten collimator, safety shutter, SS baffle) installed together at z ≈ 330 m. The other three are passive. Both this and the upstream A-shutter must be open for beam to reach 2-BM-B.
Sample stack
Warning
Work in progress / draft. Everything from this section onward (Sample stack, Detector system, Composite IOCs) is a skeleton: prose sketches, ASCII trees of the intended kinematic chain, and a single concrete Composite-IOC entry (the energy-change IOC). It has not been reviewed against the actual hardware and may be incomplete or wrong. Treat as a working draft until reconciled.
The sample tower is a kinematic chain of six elements, from the experimental-hutch floor up to the sample itself. Order matters: stages below the rotary translate or tilt the rotation axis in lab coordinates; stages above the rotary ride with the sample and appear in projection space.
Kinematic chain (bottom to top):
Sample optical table (Y only; floor-referenced)
+-- Hexapod_2BM (6-DOF coarse positioner)
+-- Sample_pitch_lam (laminography pitch, 0-15 deg)
+-- Aerotech_ABRS_rotary (theta axis)
+-- Sample_top_X (co-rotates with theta)
+-- Sample_top_Z (co-rotates with theta)
Note
The cora 2-BM asset inventory currently also lists
Sample_top_Roll and Sample_top_Pitch as 2-BM siblings. Whether
these are present on the current 2-BM sample top, or whether the
only sample-side pitch is the laminography stage, needs to be
confirmed against the actual hardware. Treat the four-element
sample-top set in the cora doc as provisional until this page is
reconciled.
Sample optical table
- Role:
Floor-referenced support for the entire sample tower
- Family:
OpticalTable (new Family; not yet declared in the cora equipment BC)
- Mounted on:
Hutch floor
- Carries:
Hexapod_2BM (and everything above)
- Degrees of freedom:
Y (vertical) only
- Travel:
TBD
- Notes:
Used to set a coarse vertical origin so the hexapod operates near the centre of its Y travel. Standard APS optical-table hardware.
Hexapod_2BM
- Role:
Coarse 6-DOF sample positioner
- Family:
Hexapod
- Mounted on:
Sample optical table
- Carries:
Sample_pitch_lam
- Degrees of freedom:
X, Y, Z, roll, pitch, yaw
- Travel:
TBD per axis
- EPICS prefix:
TBD
- Notes:
Coarse positioning of the entire sample tower. Y is shared with the optical table: convention is to set table Y so the sample sits in the beam with the hexapod at mid-travel, maximising remaining hexapod DOF for fine alignment.
Sample_pitch_lam
- Role:
Laminography pitch axis
- Family:
LinearStage (mechanically a tilt; modelled as a single-axis stage in cora today. Consider a dedicated
TiltStageFamily if more tilt axes appear.)- Mounted on:
Hexapod_2BM
- Carries:
Aerotech_ABRS_rotary
- Travel:
0 deg to 15 deg
- EPICS prefix:
TBD
- Notes:
Inserted between hexapod and rotary specifically for laminography. At 0 deg the rotation axis is vertical (standard tomography); at higher angles the rotation axis is tilted in the beam, enabling flat-sample laminography.
Aerotech_ABRS_rotary
- Role:
Sample rotation axis (theta)
- Family:
RotaryStage
- Mounted on:
Sample_pitch_lam
- Carries:
Sample_top_X, Sample_top_Z
- Travel:
-360 deg to +360 deg
- Max speed:
720 deg/s
- Encoder resolution:
0.0001 deg
- Homing offset:
0 deg
- EPICS prefix:
TBD
- Notes:
The four Sample_top_* stages above this axis co-rotate with theta. In projection geometry their effect is in the rotating frame, not the lab frame.
Sample_top_X
- Role:
Fine sample translation, perpendicular to beam (co-rotates with theta)
- Family:
LinearStage
- Mounted on:
Aerotech_ABRS_rotary
- Carries:
(sample)
- Travel:
-10 mm to +10 mm
- Max speed:
1 mm/s
- Encoder resolution:
0.0005 mm
- EPICS prefix:
TBD
Sample_top_Z
- Role:
Fine sample translation, along beam (co-rotates with theta)
- Family:
LinearStage
- Mounted on:
Aerotech_ABRS_rotary
- Carries:
(sample)
- Travel:
TBD
- Max speed:
TBD
- Encoder resolution:
TBD
- EPICS prefix:
TBD
Detector system
The detector microscope (MCTOptics, ~55 m from source) is mounted on the Optique Peter linear Z stage, which in turn sits on a standard APS optical table providing roll, pitch, X, and Y. The Z stage moves the entire microscope along the beam from ~0 (scintillator nearly touching the sample) out to ~1 m for phase contrast; the optical table is used to keep the detector centre on the beam as Z moves.
Chain to capture (top of beam down to floor):
MCTOptics_objective_{0,1,2} (10x / 5x / 1.1x; lens turret selects)
Oryx_5MP_camera (2448 x 2048, 3.45 um pixel)
Scintillator_LuAG (100 um LuAG)
+-- MCTOptics (Assembly) <- microscope body
+-- Optique_Peter_focus_Z <- linear Z, 0 to ~1 m along beam
+-- Detector optical table <- roll / pitch / X / Y
+-- Hutch floor
Composite IOCs
Some kinematic relations and motion logic are encapsulated inside custom EPICS IOCs and exposed to the rest of the beamline as higher-level PVs. Where this is the case, the underlying stack does not need to be modelled separately in cora: the IOC presents the composite as a single addressable surface.
Each entry below declares:
- Encapsulates:
underlying motors / devices the IOC drives
- Exposes:
higher-level PVs presented to EPICS
- Repository:
link to source
Convention: components whose kinematic role is fully captured by a
composite IOC do not need a Mounted on / Carries chain in the
sections above; they appear only inside the IOC’s Encapsulates
list.
Energy-change IOC
- Encapsulates:
All motors moved together during an energy change. The IOC stores per-energy positions in a configuration file and drives them as a coordinated move. Categories from the current configuration:
Mirror (M1): angle (
m1angl) and average Y (m1avg, derived from2bma:m2and2bma:m5) — both are deflection- geometry parameters held constant in the current configuration (m1angl= 2.615 mrad,m1avg= 0) and would only change if the overall beam-deflection geometry were retuned. The per-energy mirror action is horizontal stripe selection viam1_horizontal(=2bma:m3) and the optical-table X stagesm1moxandm1m2x(from thetable_fullIOC). The stripe sets the high-energy cutoff (low-pass filter via the coating’s reflectivity edge).DMM: all nine motors from the table above except
M2 Z(2bma:m8) — that one is not driven by the IOC. Driven set:dmm_usx,dmm_dsx,dmm_usy_ob,dmm_usy_ib,dmm_dsy,dmm_us_arm,dmm_ds_arm,dmm_m2_y.Downstream / B-hutch:
table3y,flag,b_slit_top,b_slit_bot— these track the downstream beam position. In Mono mode the DMM Bragg geometry shifts the beam exit vertically per energy, so the downstream table, flag, and B-hutch slits move with it to keep the beam in the pipe and centred on the slits. In Pink mode the DMM is bypassed and no per-energy tracking is needed.Filter:
fltr1select(downstream filter paddle index).
- Modes:
Two operating modes are stored:
Mono — multilayer monochromator engaged. DMM Y motors held at 0 (in beam); Bragg arms (
dmm_us_arm/dmm_ds_arm) anddmm_m2_yvary per energy to set the Bragg condition and compensate the beam-exit offset. Mirror stripe held at the lowest position (m1_horizontal= 1.0, table X = 8.0). Downstream (table3y/flag/ B-hutch slits) tracks the beam-exit shift per energy. Currently configured: 13.374, 13.574, 18.0, 20.0, 25.0, 25.584 keV.Pink — DMM bypassed (all DMM Y motors at −10, out of beam); Bragg arms parked at fixed retracted positions. With the DMM out the beam goes straight through, so the downstream motors are held at neutral positions (
table3y= 0,flag= 0, slits wide open). The mirror’s stripe selector handles the high-energy cutoff: low energies use the soft Pt / low-d stripes, higher energies sweepm1_horizontalplus the table X to reach the harder multilayer stripes. Currently configured: 30, 40, 50, 60 keV.
- Exposes:
Higher-level energy-change command surface (PV / RPC TBD; consult
energyApp/in the repository).- Repository:
/Users/decarlo/conda/energy-decarlof(local checkout; standard EPICS app layout —energyApp/,iocBoot/,configure/,src/).
Mirror stripe travel (Pink mode). m1_horizontal (the in-vacuum
2bma:m3) reaches the low-energy stripes alone; for higher energies
the table X is extended together with it:
Energy [keV] |
|
|
|---|---|---|
30 |
3.039 |
8.0 / 8.0 |
40 |
13.0 |
10.0 / 10.0 |
50 |
39.0 |
10.0 / 10.0 |
60 |
49.0 |
29.0 / 29.0 |
Stored configurations. Per-energy positions are persisted with
ISO-8601 timestamps in a store_0 field, so the most recent saved
values for each energy are what the IOC loads on the next move. The
configuration file is the authoritative source for which motors the
IOC drives — adding a new motor to the energy move means adding its
key to that file, not editing the IOC source.
Why this matters for cora. The energy-change IOC is the canonical example of a kinematic / orchestration relation that is not present in the asset tree but is real and load-bearing for operation. A single “set energy to 50 keV” command resolves into ~15 coordinated motor moves spanning the mirror, the DMM, the downstream table, the B-hutch slits, and the filter changer. From cora’s perspective the energy change should be one Method on a composite “BeamEnergy” surface; the underlying motor stack stays hidden inside this IOC.