Skip to content

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) and inca controllers for a2 / a3 / a4; how many crystals are populated is IXS-1. The first cut carries the array as a per-Asset setting on the one SpectrometerArm Asset; promoting each crystal to a child Asset via parent_id is the nested-component-identity convention, itself at a rule-of-three gate (the IXS 10-ID diced-crystal XTAL-1 question 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_*.py registers 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.