NXmx: the unit cell's e.s.d.s are saved as /entry/sample/unit_cell_esd

Rugnux measured the cell's e.s.d.s (CellEsd) but they only reached the mmCIF's _cell.*_esd, the .ins's
ZERR and the report. They now travel in the END message (EndMessage::unit_cell_esd, CBOR key
unit_cell_esd, same layout as unit_cell), are written beside the cell in NXsample as unit_cell_esd
(float[6]: a b c alpha beta gamma, A and degrees) and are read back into
JFJochReaderDataset::unit_cell_esd. rugnux's _process.h5 and, through AddToEndMessage, the broker's
live master file get them. Rotation only; absent on stills and where nothing was measured.
Optional CBOR field, no version bump.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_015CeEGgpKdfkCTJb3YNMJcu
(cherry picked from commit 6902b5637aa92c27565f22bcf3fe11b5d2536038)
This commit is contained in:
leonarski_f committed 2026-10-26 15:50:40 +01:00
1 parent d50b3d7034
commit 2461d67e14
12 files changed
+98

No files matched your search

@@ -969,6 +969,7 @@ void CBORStream2Serializer::SerializeSequenceEnd(const EndMessage& message) {
CBOR_ENC(mapEncoder, "niggli_class", message.niggli_class);
CBOR_ENC(mapEncoder, "pixel_sum", message.pixel_sum);
CBOR_ENC(mapEncoder, "unit_cell", message.unit_cell);
CBOR_ENC(mapEncoder, "unit_cell_esd", message.unit_cell_esd);
// Both spellings of the determined group. The name carries the setting and is what a reader
// should take; the number is beside it for a reader written before the name existed.
CBOR_ENC(mapEncoder, "space_group_name", message.space_group_name);