Skip to content

Source

The incident beam, produced, conditioned, and defined before the sample. A walk along the source-stage devices; the sample and detection stages are documented as their own composed-fixture pages, the controllers that drive these devices are on the Controls page, and the supplies they draw on are in Operations. Each device pairs its human name with the EPICS handle, its key specs, and whether it is field replaceable. new marks a device not yet modeled in CORA; confirm marks a value taken from the docs that staff have not yet verified.

Generated from the descriptor

This page is generated from the descriptor at deployments/2-bm/beamline.yaml. Edit the descriptor, not this page. For the CORA Asset model, settings, vendor catalog, drawings, and wiring, see Inventory.

Property Value
Facility aps
Sector Sector 2
Tier Unit
Drawing (ICMS, A342-RT1000, 02)
Source bending-magnet (confirm: post-APS-U multi-dipole fan, ~5.4 mrad)
Z span 24020 to 56764 mm (confirm)

Enclosures

Enclosure Role Facility Permit signal
2-BM-A optics-hutch aps S02BM-PSS:StaA:SecureM
2-BM-B experiment-hutch aps S02BM-PSS:StaB:SecureM

Front end

Where the beam enters and first gets gated.

Enclosure: 2-BM-A.

Note

The source devices are modelled as a flat set of Device Assets on the 2-BM Unit, not a Fixture: no Conditioner Role earns its place here (a mirror, a slit, and a filter share no common primitive verb), so unlike the Sample and Detector stages there is no Assembly to present a Role. See the Catalog on Roles and Affordances.

Name Family PV Key specs Replaceable Status
source Beam bending magnet, recorded as a Supply, not an Asset new
Mask Mask passive
water cooled
z mm: 24020
vendor designation: M3-24
rss tag: 02-BM-A-F-01
aperture mm: 44.4, 4.5
material: OFHC copper
drawing: ICMS 4102020101-240000 rev (-)
Fixed front-end exit mask (M3-24), the permanent beam-defining aperture ~24 m from the source that the white-beam alignment routine centres on (item_012). Aperture 44.4 x 4.5 mm H x V, OFHC copper, water-cooled (ALIGN-2). Registering it as a child Asset rides with the passive-beam-path Window slice.
new
FrontEndWindow Window passive
be thickness total: 0.63 mm
Three OFHC-housed Be windows on the 02-BM beam path, registered as per-window child Assets. Source APS_2191941 (post-APS-U) rows 5/8/9.
yes
FrontEndShutter Shutter S02BM-PSS:FES front-end safety shutter, gated by the personnel safety system; opened at session start and kept open throughout for optics thermal stability, not toggled per scan (BEAM-1) new confirm
vacuum_isolation Vacuum BIV: 2bm:BIV
gate_valves: GV1, GV2, GV3
valve open or closed state read as Supply status new confirm

FrontEndWindow constituents

Name Family PV Key specs Replaceable Status
Window_W4_20 Window passive
material: beryllium, 0.25 mm
z mm: 28718
aperture mm: 120, 15
drawing: ICMS 4105090804-200000
Window_W4_60 Window passive
material: beryllium, 0.13 mm
z mm: 30804
aperture mm: 25, 120
drawing: ICMS 4105090804-600000
Window_DS Window passive
material: beryllium, 0.25 mm
z mm: 32417
aperture mm: 8.8, 145
drawing: ICMS 4102020106-400000

Conditioning optics

Shape the beam and pick its energy.

Enclosure: 2-BM-A.

Name Family PV Key specs Replaceable Status
ConditioningSlit Slit x_in: 2bma:m14
x_out: 2bma:m13
y_top: 2bma:m15
y_bot: 2bma:m16
via FrontEndDrive
virtual pv: {'h_size': '2bma:Slit1Hsize', 'h_center': '2bma:Slit1Hcenter', 'v_size': '2bma:Slit1Vsize', 'v_center': '2bma:Slit1Vcenter'}
z mm: 25225
position tolerance: dx=dy=250 um, dz=5 mm
white beam
water cooled
APS L3-20 four-blade slit (X+ outboard 2bma:m13, X- inboard 2bma:m14, Y+ up 2bma:m15, Y- down 2bma:m16); the Size/Centre calc records drive both blades of a pair together (calc records hosted on ioc2bmb1 despite the 2bma: prefix). Reference drawing L3200000-03. Names, structure, z, and tolerances confirmed BEAM-5 (#141).
Filter Filter upstream_paddle: 2bma:m17
downstream_paddle: 2bma:m18
via FrontEndDrive
foils upstream: 1 mm C, 150 um Al, 600 um Al, 1 mm Al, None
foils downstream: 600 um Al, 150 um Al, 300 um C, 50 um C, None
Two paddles, each modelled as a Filter_FoilSelector_* PseudoAxis facet with its own index_position_table calibration (test_2bm_filter_foil_setup.py). The upstream paddle (2bma:m17) is the operational filter selector today; the downstream (2bma:m18) failed 2026-06-19 (parked 107.19 mm, motor cannot actuate), modelled condition Faulted with its bindings retained (lifecycle stays Active). m18 is not expected to be repaired soon, so m17 is the sole operational selector. Unit mm (caget 2bma:m18.EGU); materials/positions per docs2bm + 2filter_setup.adl (FOIL-1/FOIL-2).
DiagnosticFlag Screen 2bma:m44 via FrontEndDrive
z mm: 32500
Motorized phosphor beam-viewing flag (the staff "diagnostic flag", item_006 / item_020): a vertical insert on 2bma:m44, on its own floor-referenced stand in 2-BM-A at z=32500 (FLAG-1, staff-confirmed). Raised into the beam in Mono at an energy-dependent height (the staff energy_move_flag table) and parked out (Y=0) in Pink; the Y is modelled as the energy-tracked DiagnosticFlag_Y PseudoAxis (test_2bm_energy_curves_setup.py). User offset: user = dial - 5 mm.
Mirror Mirror downstream_y: 2bma:m2
upstream_y: 2bma:m5
stripe_select: 2bma:m3
via FrontEndDrive
material: Si
length: 0.993 m
water cooled
stripes: {'label': 'a', 'coating': '5 nm Pt single-layer', 'serves': 'Mono (m3 1.0) + Pink 30 keV (m3 3.039)', 'note': 'broadband; Pt critical-angle cutoff ~21 keV'}, {'label': 'b', 'coating': 'W/Si x50', 'd_spacing_nm': 6.57, 'serves': 'Pink 40 keV (m3 13.0)'}, {'label': 'c', 'coating': 'W/Si x50', 'd_spacing_nm': 4.76, 'serves': 'Pink 50 keV (m3 39.0)'}, {'label': 'd', 'coating': 'W/Si x50', 'd_spacing_nm': 3.93, 'serves': 'Pink 60 keV (m3 49.0)', 'note': 'needs coordinated mirror-table X extension to 29 mm (m1mox/m1m2x = 2bma:m1/m4), deferred per 2bm-docs#171'}
per docs2bm + MIRROR-1/MODE-3 the stripe selector (2bma:m3) is energy- and mode-dependent, NOT a free discrete pick. It is held at stripe a (m3 about 1.0) in Mono, and swept per Pink energy (30 -> 3.039, 40 -> 13.0, 50 -> 39.0, 60 -> 49.0 mm). CORA models this as the Mirror_StripeReachX PseudoAxis facet (a constant Mono curve plus a swept Pink sibling energy_position_curve, test_2bm_energy_curves_setup.py); the named-stripe-to-position map is the stripes list above. The coordinated mirror-table X move (m1mox/m1m2x = 2bma:m1/m4) that stripe d at 60 keV needs stays deferred (MirrorTable virtual_pose axes, 2bm-docs#171); the mirror angle itself is constant 2.615 mrad across all modes and energies.
yes confirm
MirrorTable Table 2bma:table1 support motors: M0X, M0Y, M1Y, M2X, M2Y, Z (along beam)
geometry: SRI support table (table_full IOC); virtual record 2bma:table1
in operational use (STAGE-7); carries the Y3-30 mirror. X axes (M0X=2bma:m1, M2X=2bma:m4) driven by the energy-change IOC for stripe selection. The M1Y support-motor slot is a known IOC substitution error (mapped to the in-vacuum stripe-selector 2bma:m3, not a table Y); bind only the table-X surface until 2bm-docs#171 is fixed. AX=pitch, AY=yaw, AZ=roll (STAGE-9).
confirm
Monochromator Monochromator bragg_arm_upstream: 2bma:m30
bragg_arm_downstream: 2bma:m31
m2_offset_y: 2bma:m32
crystal2_z: 2bma:m8
via FrontEndDrive
material: Si multilayer
crystal z mm: 29335, 29934
dmm insertion: {'motors': ['2bma:m26', '2bma:m27', '2bma:m29'], 'inserted_mm': 0.0, 'retracted_mm': -10.0, 'active': 'inserted'}
stripes: {'period_angstrom': 24.0, 'layer_pairs': 200}, {'period_angstrom': 13.8, 'layer_pairs': 150}
active stripe: 24.0
Energy is set by the energy-change IOC as a discrete coordinated move: saved per-energy positions for the whole DMM are stored (store_0) and driven together to a configured set of energies (Mono 13.374, 13.574, 18.0, 20.0, 25.0, 25.584 keV). The per-energy DMM axes are the Bragg arms (bragg_arm_upstream/downstream) and the M2 vertical offset compensator (m2_offset_y); crystal2_z (M2 Z) is a setup translation the IOC does NOT drive. The m25-m29 tank/alignment motors ARE in the coordinated move but are re-asserted at fixed values, not varied per energy (staff-confirmed ENERGY-5: m25/m28 are constant alignment X in both modes, m26/m27/m29 are two-state in-beam vs retracted by mode), so CORA carries energy curves for the Bragg arms and m2_offset_y alone. CORA models each per-axis relationship as a continuous curve interpolating the saved points. Two beam modes (MODE-1): in Mono the DMM is inserted (the per-energy axes above); in Pink the DMM Y motors drive out (about -10, beam passes straight through) and the Bragg arms park, with the mirror coating stripe setting the high-energy cutoff. Pink configured energies: 30, 40, 50, 60 keV. The insert/bypass mechanism is confirmed (MODE-2, #261): the three DMM Y motors m26/m27/m29 drive to 0 (in, Mono) or -10 mm (out, Pink) together within the one coordinated energy-change move, with no special sequencing and no software interlock. CORA records this two-state position as the dmm_insertion setting above; the coordinated mode-switch move that drives it stays deferred with the Pink positions and stripe map (MODE-3, MIRROR-1). Source: docs2bm item_020.
confirm
AlignmentCamera Camera 2bma:m21 via FrontEndDrive
Semi-permanent A-station beam-view camera (FLIR Oryx 5MP, IOC 2bmbOryx5MP on host lyra) on a vertical stage 2bma:m21. Permanently installed but rarely engaged (annual / multi-year, for major realignment): the beam reaches it only when an operator manually breaks vacuum and removes an upstream pipe section. A distinct unit from the B-station microscope Camera; exact part likely ORX-10G-51S5M, pending operator confirmation (ALIGN-1). The rare-engagement is a note, not a new lifecycle state.
new confirm

Beam defining and safety

Admit the beam to the experiment hutch and reshape it.

Enclosure: 2-BM-B.

Note

The P6-50 stack sits physically AFTER the optics above (z 33343), but it is grouped here by function (safety), not by strict z-order. That exception is deliberate and called out rather than silently reordered. The P6-50 stack, including the SBS shutter, is assigned to 2-BM-B: it is the safety stack that gates the experiment hutch, so its devices are located_in 2-BM-B.

Name Family PV Key specs Replaceable Status
SafetyStack SafetyStack z mm: 33343 new confirm
SampleSlit Slit y_top: 2bma:m9
y_bot: 2bma:m10
x: 2bma:m11, 2bma:m12
via FrontEndDrive
virtual pv: {'h_size': '2bma:Slit2Hsize', 'h_center': '2bma:Slit2Hcenter', 'v_size': '2bma:Slit2Vsize', 'v_center': '2bma:Slit2Vcenter'}
z mm: 50500
position tolerance: dx=dy=250 um, dz=5 mm
APS L3-20 four-blade slit at the sample-hutch entrance; reuses the A-side class. The vertical pair also tracks the per-energy beam position (see the SampleSlit_Vertical* PseudoAxes). Names, structure, z, and tolerances confirmed BEAM-5 (#141). CAVEAT: on the 2slit.adl screen the horizontal "Inb"/"outboard" labels are FLIPPED vs the physical direction (the detector image is mirrored left/right), so bind 2bma:m11/m12 to the X+/X- blades by PHYSICAL convention (positive X outboard), NOT the on-screen label. Reference drawing L3200000-03.
BeamPositionMonitor Diagnostic mono-mode only, held out of beam in pink mode new confirm
Aperture Aperture via ApertureFineDrive
z mm: 51300
Coded-aperture mask stepped through positions in the beam for compressive-sensing / dithered-sampling tomography, fine-positioned in X/Y by ApertureFineDrive (two NV200D units via a nanoSXY 120 CAP flexure). Registered identity-only: the spatial code pattern and any beam-effect (encoded transmission) are deferred with the path reserved, per the passive-beam-path tier discipline. Distinct from Slit (a variable four-blade opening) and Mask (a fixed passive aperture): this is a fixed-pattern mask actively positioned.
new

SafetyStack constituents

Name Family PV Key specs Replaceable Status
StationShutter Shutter S02BM-PSS:SBS material: W 21 mm
aperture mm: 60.0, 44.5
drawing: ICMS 41050401-410003 rev (-)
This SBS is the operator-side "fast shutter" at 2-BM-B (no separate fast actuator exists today). TomoScan cycles it closed for dark and white (flat) fields and open for projections, many times per scan; open before a run starts (operator-opened at session start). No separate FastShutter Asset is modelled (BEAM-1).
yes confirm
BeamStop BeamStop passive
water cooled
new
Collimator Collimator passive new
Baffle Baffle passive new