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

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:
2026-07-01 11:45:08 +02:00
co-authored by Claude Opus 4.8
parent 35607057d9
commit b7613c559c
20 changed files with 619 additions and 4 deletions
@@ -39,6 +39,7 @@ Name | Type | Description | Notes
**poni_rot3_rad** | **float** | PONI angle rot3 (see PyFAI documentation for details) in radians | [optional] [default to 0.0]
**unit_cell** | [**UnitCell**](UnitCell.md) | | [optional]
**spot_finding** | **bool** | Enable spot finding and save spots | [optional] [default to True]
**smargon** | [**DatasetSettingsSmargon**](DatasetSettingsSmargon.md) | | [optional]
**max_spot_count** | **int** | Maximum number of spots that are saved/used for indexing; spots with highest intensity are selected | [optional] [default to 250]
**detect_ice_rings** | **bool** | Flag spots as ice rings and reduce their effect on indexing | [optional]
**async_start** | **bool** | When set to true, &#x60;/start&#x60; will not wait for detector and Jungfraujoch to be ready for the measurement. | [optional] [default to False]
@@ -0,0 +1,33 @@
# DatasetSettingsSmargon
Geometry of Smargon goniometer at SLS 2.0 / MX beamlines. Assuming that Smargon is used as static positioner and not moving during the scan, allowing to reconstruct geometry.
## Properties
Name | Type | Description | Notes
------------ | ------------- | ------------- | -------------
**phi_deg** | **float** | Phi angle in degrees |
**chi_deg** | **float** | Chi angle in degrees |
**phi_axis** | **List[float]** | Phi rotation axis (defaults to the omega axis) | [optional]
**chi_axis** | **List[float]** | Chi rotation axis | [optional]
## Example
```python
from jfjoch_client.models.dataset_settings_smargon import DatasetSettingsSmargon
# TODO update the JSON string below
json = "{}"
# create an instance of DatasetSettingsSmargon from a JSON string
dataset_settings_smargon_instance = DatasetSettingsSmargon.from_json(json)
# print the JSON string representation of the object
print(DatasetSettingsSmargon.to_json())
# convert the object into a dict
dataset_settings_smargon_dict = dataset_settings_smargon_instance.to_dict()
# create an instance of DatasetSettingsSmargon from a dict
dataset_settings_smargon_from_dict = DatasetSettingsSmargon.from_dict(dataset_settings_smargon_dict)
```
[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)