ENERGY-6: DMM substrate carries two multilayer stripes (13.8 Å and 24 Å, 4 mm apart); the 24 Å stripe is currently active (inferred from Bragg-arm angles); stripe is NOT selected per energy — selection is a one-time setup choice; m25/m28 are NOT per-energy stripe selectors (settled by ENERGY-5)
ENERGY-6: Two answers in one — confirming the stripe geometry, identifying which is operationally active, and ruling out per-energy switching.
Substrate specs (confirms cora's existing assumption)
Cora's "two stripes, 13.8 Å and 24 Å, 4 mm apart" is right. Full canonical specs from the 2-BM DMM ops page (item_021.rst lines 70-91):
| Substrate property |
Value |
| Coating |
W-B₄C multilayer on Si substrate, 5 nm Cr adhesion |
| Multilayer periods |
13.8 Å and 24 Å ± <1% |
| Stripe dimensions |
140 × 44 mm² each |
| Distance between stripes |
4 mm |
| Number of layer pairs |
200 (one stripe) / 150 (the other) |
| Roughness |
2-3 Å rms |
| Γ |
0.5 |
Which stripe is currently active: 24 Å (inferred from Bragg-arm data)
Applying Bragg's law λ = 2 d sin θ to the saved Bragg-arm angles (dmm_us_arm = 2bma:m30) for all six calibrated Mono energies (from ENERGY-1 / cora#249):
| Energy [keV] |
arm angle [deg] |
λ [Å] |
Inferred d-spacing [Å] |
| 13.374 |
1.1310 |
0.9270 |
23.48 |
| 13.574 |
1.0810 |
0.9134 |
24.21 |
| 18.000 |
0.8220 |
0.6888 |
24.01 |
| 20.000 |
0.7260 |
0.6199 |
24.46 |
| 25.000 |
0.5773 |
0.4959 |
24.61 |
| 25.584 |
0.5610 |
0.4846 |
24.75 |
All six values cluster around 24 Å (range 23.5 - 24.75 Å, ~5% scatter consistent with normal Bragg-arm calibration tolerance). No values are anywhere near 13.8 Å. The 24 Å stripe is unambiguously the active one for the current Mono calibration. The 13.8 Å stripe has never been calibrated into energy2bm.json and is therefore not currently in operational use.
(Caveat: arm-angle units in energy2bm.json are assumed to be degrees. The calculation above only makes sense in degrees; if the units were radians or microradians the implied d would be wildly off-scale — so the consistent d ≈ 24 Å result is itself confirmation that the units are degrees.)
Stripe selection is NOT per energy
From ENERGY-5 / cora#254: both m25 (dmm_usx) and m28 (dmm_dsx) carry the SAME value across all 6 Mono + 4 Pink calibrated energies (m25 = 111.0 everywhere, m28 = 104.0 everywhere). So whatever the stripe-selection mechanism is, it is not being driven by the energy-change IOC — the IOC re-asserts the same alignment positions a
t every move.
This means stripe selection is a one-time setup choice that the operator made at installation / commissioning, not a per-energy decision. To switch from the 24 Å stripe to the 13.8 Å stripe would require:
- A 4 mm lateral substrate move. The candidate motor is
m25 or m28 — the substrate-geometry 4 mm offset matches what one of those motors would need to move to land the alternate stripe in the beam. But it's unconfirmed whether either of those motors actually drives lateral substrate position vs. some other tank-centering or alignment-related role. **Operator confirmation needed.
**
- A separate calibration pass for the new stripe — every Bragg-arm angle and
M2 Y value in energy2bm.json is currently set for d = 24 Å; for d = 13.8 Å the angles would be ~1.74× larger at the same energy (sin θ ∝ 1/d). A new Mono mode set of calibration energies would need to be added via energy add for the new stripe.
Neither of these is part of any current procedure or energy-change move.
CORA-side application
For cora's existing assumption ("two stripes exist; no DMM stripe / d-spacing selector modelled; m25 / m28 lateral X carried only as unframed alignment motors"), the recommended update:
- Acknowledge the two stripes exist (model the DMM as carrying two
MultilayerStripe substructures with the d-spacings, layer counts, and stripe-dimension fields above).
- Mark the 24 Å stripe as
active with the 13.8 Å stripe available_but_uncalibrated or similar.
- Do NOT add a per-energy stripe-selector curve for the DMM. Unlike the M1 mirror stripe (which IS swept per Pink energy via
m1_horizontal — see MODE-3 / [coming up]), the DMM stripe is a one-time setup. Cora can leave m25 / m28 as alignment motors with a single per-mode value each (per the ENERGY-5 modelling).
- Optionally, expose a
switch_dmm_stripe operation as a future cora Method once the operator confirms (a) which motor actually does the lateral substrate move and (b) the recalibration procedure for the new stripe. That Method would invalidate the existing Mono curves until the new stripe is calibrated.
This is the monochromator analogue of MIRROR-1 only in the sense that there are two stripes — but operationally the DMM-stripe choice is static, while the mirror coating selection is energy-driven (in Pink mode).
Downstream alignment
The DMM block in item_020.rst (latest commit pending) now carries a note that the substrate has two stripes, that the 24 Å is active (inferred from Bragg geometry), and that switching to 13.8 Å is operationally not part of any current move and would need both a lateral motor id
entification and a separate calibration pass.
The full substrate specs continue to live in item_021.rst (the operational DMM page); the manual entry cross-references rather than duplicating.
Cross-references
- ENERGY-1 / cora#249 — Bragg-arm angles per Mono energy (the source data for the d-spacing inference above).
- ENERGY-3 / cora#252 — saved-table mechanism (which stripe is active is encoded implicitly in
energy2bm.json store_0 values).
- ENERGY-5 / cora#254 —
m25 / m28 constancy across all energies (settles the per-energy-selector hypothesis).
- [MIRROR-1 / cora#TBD] — M1 mirror coating-stripe selection (in Pink mode this IS swept per energy via
m1_horizontal; the DMM does NOT have an analogous per-energy mechanism).
- [MODE-3 / cora#TBD] — Pink-mode per-energy mirror stripe + table-X values.
Net
ENERGY-6 answer: two-stripe DMM substrate (13.8 Å and 24 Å, 4 mm apart) is confirmed. The 24 Å stripe is currently active (inferred from Bragg-arm-angle data — all six Mono d values cluster around 24 Å). Stripe selection is NOT per energy: the choice is a one-time setup, not part of any energy-change move. m25 / m28 are alignment motors (per ENERGY-5), not stripe sele
ctors — though one of them is the candidate for a hypothetical future "switch DMM stripe" operation (4 mm lateral move + full recalibration). Cora can model the DMM as carrying two stripes with one active, without adding a per-energy stripe-selector curve.
ENERGY-6: DMM substrate carries two multilayer stripes (13.8 Å and 24 Å, 4 mm apart); the 24 Å stripe is currently active (inferred from Bragg-arm angles); stripe is NOT selected per energy — selection is a one-time setup choice;
m25/m28are NOT per-energy stripe selectors (settled by ENERGY-5)ENERGY-6: Two answers in one — confirming the stripe geometry, identifying which is operationally active, and ruling out per-energy switching.
Substrate specs (confirms cora's existing assumption)
Cora's "two stripes, 13.8 Å and 24 Å, 4 mm apart" is right. Full canonical specs from the 2-BM DMM ops page (
item_021.rstlines 70-91):Which stripe is currently active: 24 Å (inferred from Bragg-arm data)
Applying Bragg's law
λ = 2 d sin θto the saved Bragg-arm angles (dmm_us_arm=2bma:m30) for all six calibrated Mono energies (from ENERGY-1 / cora#249):All six values cluster around 24 Å (range 23.5 - 24.75 Å, ~5% scatter consistent with normal Bragg-arm calibration tolerance). No values are anywhere near 13.8 Å. The 24 Å stripe is unambiguously the active one for the current Mono calibration. The 13.8 Å stripe has never been calibrated into
energy2bm.jsonand is therefore not currently in operational use.(Caveat: arm-angle units in
energy2bm.jsonare assumed to be degrees. The calculation above only makes sense in degrees; if the units were radians or microradians the implied d would be wildly off-scale — so the consistent d ≈ 24 Å result is itself confirmation that the units are degrees.)Stripe selection is NOT per energy
From ENERGY-5 / cora#254: both
m25(dmm_usx) andm28(dmm_dsx) carry the SAME value across all 6 Mono + 4 Pink calibrated energies (m25= 111.0 everywhere,m28= 104.0 everywhere). So whatever the stripe-selection mechanism is, it is not being driven by the energy-change IOC — the IOC re-asserts the same alignment positions at every move.
This means stripe selection is a one-time setup choice that the operator made at installation / commissioning, not a per-energy decision. To switch from the 24 Å stripe to the 13.8 Å stripe would require:
m25orm28— the substrate-geometry 4 mm offset matches what one of those motors would need to move to land the alternate stripe in the beam. But it's unconfirmed whether either of those motors actually drives lateral substrate position vs. some other tank-centering or alignment-related role. **Operator confirmation needed.**
M2 Yvalue inenergy2bm.jsonis currently set for d = 24 Å; for d = 13.8 Å the angles would be ~1.74× larger at the same energy (sin θ ∝ 1/d). A newMonomode set of calibration energies would need to be added viaenergy addfor the new stripe.Neither of these is part of any current procedure or energy-change move.
CORA-side application
For cora's existing assumption ("two stripes exist; no DMM stripe / d-spacing selector modelled;
m25/m28lateral X carried only as unframed alignment motors"), the recommended update:MultilayerStripesubstructures with the d-spacings, layer counts, and stripe-dimension fields above).activewith the 13.8 Å stripeavailable_but_uncalibratedor similar.m1_horizontal— see MODE-3 / [coming up]), the DMM stripe is a one-time setup. Cora can leavem25/m28as alignment motors with a single per-mode value each (per the ENERGY-5 modelling).switch_dmm_stripeoperation as a future coraMethodonce the operator confirms (a) which motor actually does the lateral substrate move and (b) the recalibration procedure for the new stripe. That Method would invalidate the existing Mono curves until the new stripe is calibrated.This is the monochromator analogue of MIRROR-1 only in the sense that there are two stripes — but operationally the DMM-stripe choice is static, while the mirror coating selection is energy-driven (in Pink mode).
Downstream alignment
The DMM block in item_020.rst (latest commit pending) now carries a note that the substrate has two stripes, that the 24 Å is active (inferred from Bragg geometry), and that switching to 13.8 Å is operationally not part of any current move and would need both a lateral motor id
entification and a separate calibration pass.
The full substrate specs continue to live in item_021.rst (the operational DMM page); the manual entry cross-references rather than duplicating.
Cross-references
energy2bm.jsonstore_0values).m25/m28constancy across all energies (settles the per-energy-selector hypothesis).m1_horizontal; the DMM does NOT have an analogous per-energy mechanism).Net
ENERGY-6 answer: two-stripe DMM substrate (13.8 Å and 24 Å, 4 mm apart) is confirmed. The 24 Å stripe is currently active (inferred from Bragg-arm-angle data — all six Mono d values cluster around 24 Å). Stripe selection is NOT per energy: the choice is a one-time setup, not part of any energy-change move.
m25/m28are alignment motors (per ENERGY-5), not stripe selectors — though one of them is the candidate for a hypothetical future "switch DMM stripe" operation (4 mm lateral move + full recalibration). Cora can model the DMM as carrying two stripes with one active, without adding a per-energy stripe-selector curve.