smargon: write chi/phi goniometer position into NXmx transformations
Build Packages / build:rpm (ubuntu2404_nocuda) (push) Successful in 14m15s
Build Packages / build:rpm (rocky8_nocuda) (push) Successful in 15m13s
Build Packages / build:rpm (ubuntu2204_nocuda) (push) Successful in 15m9s
Build Packages / build:rpm (rocky8_sls9) (push) Successful in 15m11s
Build Packages / build:rpm (rocky8) (push) Successful in 15m14s
Build Packages / build:rpm (rocky9_nocuda) (push) Successful in 15m30s
Build Packages / build:rpm (rocky9_sls9) (push) Successful in 15m52s
Build Packages / build:windows:nocuda (push) Successful in 15m54s
Build Packages / build:windows:cuda (push) Successful in 17m32s
Build Packages / XDS test (neggia plugin) (push) Successful in 7m30s
Build Packages / Generate python client (push) Successful in 30s
Build Packages / XDS test (JFJoch plugin) (push) Successful in 8m31s
Build Packages / Create release (push) Skipped
Build Packages / XDS test (durin plugin) (push) Successful in 8m47s
Build Packages / Build documentation (push) Successful in 58s
Build Packages / build:rpm (ubuntu2404) (push) Successful in 11m37s
Build Packages / build:rpm (rocky9) (push) Successful in 12m37s
Build Packages / build:rpm (ubuntu2204) (push) Successful in 12m44s
Build Packages / DIALS test (push) Successful in 12m55s
Build Packages / Unit tests (push) Successful in 1h0m54s
Build Packages / build:rpm (ubuntu2404_nocuda) (push) Successful in 14m15s
Build Packages / build:rpm (rocky8_nocuda) (push) Successful in 15m13s
Build Packages / build:rpm (ubuntu2204_nocuda) (push) Successful in 15m9s
Build Packages / build:rpm (rocky8_sls9) (push) Successful in 15m11s
Build Packages / build:rpm (rocky8) (push) Successful in 15m14s
Build Packages / build:rpm (rocky9_nocuda) (push) Successful in 15m30s
Build Packages / build:rpm (rocky9_sls9) (push) Successful in 15m52s
Build Packages / build:windows:nocuda (push) Successful in 15m54s
Build Packages / build:windows:cuda (push) Successful in 17m32s
Build Packages / XDS test (neggia plugin) (push) Successful in 7m30s
Build Packages / Generate python client (push) Successful in 30s
Build Packages / XDS test (JFJoch plugin) (push) Successful in 8m31s
Build Packages / Create release (push) Skipped
Build Packages / XDS test (durin plugin) (push) Successful in 8m47s
Build Packages / Build documentation (push) Successful in 58s
Build Packages / build:rpm (ubuntu2404) (push) Successful in 11m37s
Build Packages / build:rpm (rocky9) (push) Successful in 12m37s
Build Packages / build:rpm (ubuntu2204) (push) Successful in 12m44s
Build Packages / DIALS test (push) Successful in 12m55s
Build Packages / Unit tests (push) Successful in 1h0m54s
Add an optional Smargon static positioner (chi/phi angles + rotation axes)
that is reconstructed into the NXmx sample transformation chain. Chi/phi are
appended at the innermost end of the chain (closest to the sample) for both
the goniometer and grid-scan branches, with axes defaulting to chi {0,0,1}
and phi = omega default {1,0,0}.
- SmargonPosition gains chi_axis/phi_axis (common/JFJochMessages.h)
- OpenAPI: optional phi_axis/chi_axis arrays; clients regenerated
- OpenAPIConvert wires Dataset_settings.smargon -> DatasetSettings
- CBOR serializer/deserializer round-trip the axes
- tests: CBORSerialize_Start_Smargon
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -1161,7 +1161,28 @@ namespace {
|
||||
else
|
||||
message.geom_refinement_algorithm = GeomRefinementAlgorithmEnum::None;
|
||||
}
|
||||
if (j.contains("smargon")
|
||||
&& j["smargon"].is_object()
|
||||
&& j["smargon"].contains("chi_deg")
|
||||
&& j["smargon"].contains("phi_deg")
|
||||
&& j["smargon"]["chi_deg"].is_number()
|
||||
&& j["smargon"]["phi_deg"].is_number()) {
|
||||
|
||||
SmargonPosition smargon;
|
||||
smargon.phi_deg = j["smargon"]["phi_deg"].get<float>();
|
||||
smargon.chi_deg = j["smargon"]["chi_deg"].get<float>();
|
||||
if (j["smargon"].contains("chi_axis") && j["smargon"]["chi_axis"].is_array()
|
||||
&& j["smargon"]["chi_axis"].size() == 3)
|
||||
smargon.chi_axis = {j["smargon"]["chi_axis"][0].get<float>(),
|
||||
j["smargon"]["chi_axis"][1].get<float>(),
|
||||
j["smargon"]["chi_axis"][2].get<float>()};
|
||||
if (j["smargon"].contains("phi_axis") && j["smargon"]["phi_axis"].is_array()
|
||||
&& j["smargon"]["phi_axis"].size() == 3)
|
||||
smargon.phi_axis = {j["smargon"]["phi_axis"][0].get<float>(),
|
||||
j["smargon"]["phi_axis"][1].get<float>(),
|
||||
j["smargon"]["phi_axis"][2].get<float>()};
|
||||
message.smargon_position = smargon;
|
||||
}
|
||||
if (j.contains("ring_current_mA"))
|
||||
message.ring_current_mA = j["ring_current_mA"];
|
||||
if (j.contains("sample_temperature_K"))
|
||||
|
||||
Reference in New Issue
Block a user