Model¶
The developer's by-kind index: where each CORA aggregate's ID28 content lives, why it coins no new family and adds a further SpectrometerArm consumer, and the record of what is deliberately deferred. Design-phase scaffold.
For the aggregate shapes see the architecture model and the per-BC modules.
| Aggregate (BC) | Where at ID28 |
|---|---|
| Asset (Equipment) | the stage pages: Source, Sample |
| Computed / virtual axes (Equipment) | Source (the incident-energy PseudoAxis, realized over the F700 temperature controller) |
| Capability, Method (Recipe) | Techniques |
| Enclosure (Enclosure) | the index |
| Zone, Conduit, Policy (Trust); Actor (Access) | Governance |
| Procedure, Recipe, Caution, Supply, Subject, Run, Campaign, Dataset, Decision | deferred (design-phase; see below) |
What makes ID28 new¶
ID28 is CORA's second ESRF beamline (after ID32), and it deepens the fleet's inelastic-scattering coverage with a distinct flavor: momentum-resolved hard X-ray inelastic scattering (IXS). A high-resolution backscattering monochromator sets a meV-resolution incident energy, the sample scatters, and a multi-analyzer crystal spectrometer on a two-theta arm energy-analyzes the scattered beam in backscattering, mapping phonon and collective-excitation dispersions across momentum transfer. The fleet already has soft RIXS (SIX, ID32) and the NSLS-II IXS beamline; ID28 is the ESRF hard X-ray IXS instrument, reusing the pending inelastic_x_ray_scattering Method as the second consumer (TECH-1).
The second value is the Site re-test: ID28 exercises the ESRF Site and the BLISS / Tango / IcePAP control plane a second time, confirming the ID32 house-style modelling generalizes within the facility.
A modelling note worth surfacing: ID28's incident energy is not scanned by a Bragg angle. The high-resolution backscattering monochromator selects energy by the silicon crystal's lattice spacing, which is tuned by temperature (the ASL F700 controller carries a paired monot setpoint / deltae energy axis). CORA still models the incident energy as a PseudoAxis, but it is realized over the F700 temperature controller rather than a goniometer, so the Monochromator Asset and the BeamEnergy PseudoAxis are decoupled in a way an angle-scanned beamline's are not. This is the kind of mechanism the descriptor records (read from the config) so the model is intentional, not a mirror of an angular-mono assumption.
A further SpectrometerArm consumer, held¶
ID28's IXS spectrometer is a TwoThetaMultilayer two-theta arm carrying an array of inclined analyzer crystals (a2_inca / a3_inca / a4_inca, each with chi / th), which binds the SpectrometerArm Family. This is a further consumer of the family that SIX coined and ID32 brought to a rule-of-three (SIX RIXS arm + ID32 RIXS arm + ID32 XES arm). ID28 is a further sighting that reinforced it, and the family has since graduated into the catalog (RIXS-1); ID28's arm binds it like any catalog Family, so this scaffold makes no catalog change of its own.
SpectrometerArm is the right home: it is an arm that positions an energy-dispersing element (here a crystal array, at SIX / ID32 a grating) and carries a detector, presenting the Positioner Role, which is why it never fit the point-Sensor families.
No new families¶
Beyond the graduated SpectrometerArm, ID28 reuses the catalog throughout: the backscattering monochromator binds Monochromator (the meV backscattering reflection is a per-Asset setting); the HFM / VFM benders bind Mirror; the beam-defining slits bind Slit; the two in-vacuum undulators bind InsertionDevice; the incident energy is a PseudoAxis realized over the ASL F700 backscattering-crystal temperature controller (monot / deltae), not over a Bragg angle; the Basler / PCO detectors bind Camera; the sample-temperature environments (the 10 K displex LakeShore 340, the Oxford 700, the nanodac gas blower) bind TemperatureController; the oh2 Elettra beam-position monitor binds the graduated catalog PositionMonitor (presenting the Sensor Role, distinct from FluxMonitor by measuring beam position rather than flux); the front-end shutter binds Shutter; and the machine state binds the loose StorageRing via the BLISS MachInfo.
Deliberately not here yet¶
- The analyzer-crystal array identity (
IXS-1). The multi-analyzer arm carries an array of inclined analyzer crystals, each with its own chi / th and cylinder slit. The config provisions nine analyzer-slit positions (a1h..a9h/a1v..a9v) andincacontrollers fora2/a3/a4; how many crystals are populated isIXS-1. The first cut carries the array as a per-Asset setting on the oneSpectrometerArmAsset; promoting each crystal to a child Asset viaparent_idis the nested-component-identity convention, itself at a rule-of-three gate (the IXS 10-ID diced-crystalXTAL-1question is the sibling), so ID28 flags it rather than asserting it. - The SpectrometerArm graduation (
RIXS-1). Landed; the family graduated into the catalog (SIX + ID32 RIXS/XES + ID28), so ID28's arm binds it directly. Only the per-Asset arm geometry stays pending. - The exact sample-stage and per-analyzer-detector handles (
SAMPLE-1,DET-1). Carried confirm-pending; the spectrometer arm, mono, mirrors, and sample cryostats carry their real BLISS handles. - The IXS Method. Whether momentum-resolved IXS enters CORA's catalog is an owner decision; the Practice renders unlinked, pending, reusing the NSLS-II IXS slug (
TECH-1). - The simulated devices and full asset-tree scenarios. No
test_id28_*.pyregisters the asset tree, and no vendor Models are bound. - Operations and experiment views. A runbook and live experiment view for a beamline CORA does not yet drive would be invention; see the note on the index.