reader: a goniometer whose inner circle is inclined says so in its axis table
A fixed-chi stage carries phi at a standing angle to the base circle, and states that angle in the CBF _axis table and nowhere else - its "# Chi" line reads 0.0000, because no chi circle is driven. ParseAxisTable kept only rotation axes hanging off nothing, so the inclination was discarded and RotationAxis() fell back to that zero: a phi scan was run about the base axis, tens of degrees from the one the crystal actually turned about. Measured on a magic-angle head 54.74 degrees off omega: the axis goes from 1 0 0 to 0.577382 -0.707087 -0.408237, against dxtbx's 0.5774 -0.7071 -0.4083, and the first pass from a P-centred triclinic 27.2 58.1 126.2 that indexes nothing to P-orthorhombic 5.16 14.05 14.81, which is the cell DIALS and XDS both reach on these frames. The mirrored inclination returns to nothing, so it is that angle and not any perturbation of the axis. Every other header in the corpus states one rotation axis, which is every Eulerian head, and is untouched. The two that share this table were written three days later by a template that puts the same angle on the "# Chi" line, agreeing to 0.03 degrees - they read identically either way. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_011GxZqDiFP3KqriBhNdcR56
This commit is contained in:
@@ -194,6 +194,8 @@ void ParseAxisTable(const std::string &text, Header &h) {
|
||||
h.spindle_axis = v;
|
||||
else if (equipment == "detector")
|
||||
h.detector_axis = v;
|
||||
} else if ((type == "rotation") && (equipment == "goniometer")) {
|
||||
h.inner_spindle_axis = v; // carried by the base axis: a fixed-chi or kappa inclination
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user