Only the displayed label: the settings key event_trigger and the JFJ
header key trigger_event are unchanged.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- chip type (same selection as the Fix Target type), motion mode 4..7,
wait in pulses (mode 5/7) and section size (mode 6/7): these edit their
keys in the Fix Target parameter text box and follow it when typed;
text box and chip type are kept in the settings
- tmove is fixed to one FEL pulse (fel_per ms for mode 5, 1 shot for
mode 7): not editable, set at the collection for every object
- the collection refuses objects with a mode other than 4..7
- laser delay PV readback and the calculated laser to X-ray delay
- estimated run time of the chip from the CTA sequence lengths
(motion_run_pulses), including the checks that would abort it
- orange warning for twait not a multiple of tmove or an invalid ssz
- ModuleFixTarget: parse_param/format_param for the parameter text
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- header_appendix: chip_type, motion_mode, motion_param, fel_per_ms,
delay_pulses, laser_delay_ns and total_delay_ns, taken from the job
that actually runs (Jungfrau.config), not from the GUI
- laser delay read from SLAAR03-LTIM-PDLY:DELAYNS_SLOW (ns, negative:
laser before the X-rays); total = laser - delay_pulses * fel_per;
trigger_delay now holds the total delay
- motion_delay_pulses(): trigger to X-ray pulses per mode, same rules as
the CTA sequences (mode 6/7 nominal)
- remove the unused manual laser_delay from the run parameters
- fix laser_pulse_energy, which was written with the trigger delay
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- data storage: pgroup, protein and prefix are editable (letters, digits
and _ only); last run and last path stay read only
- experimental parameters (was empty): incident energy, event trigger,
triggered, unit cell a b c alpha beta gamma and space group
- every change is saved immediately (no Enter needed: the Collect button
takes no focus, so editingFinished would not fire before a collection)
- the preferences window is a single instance; main page and preferences
update each other, so the preferences no longer write back stale group
values; pgroup/energy/event trigger changes force a new jungfrau object
- the fields are locked during collections and motor sequences (left tabs)
- lower case labels
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The 'if not in keys' guards of the channel list defaults were commented
out, so both lists were reset to the built-in defaults at every start
(and logged as 'not defined'). The defaults are now only used when no
list is saved yet.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The channel lists were one very long line in the preferences tree. They
are now buttons ("edit beam-sync channels (N)...") opening a dialog with
one channel per line; OK saves the list (empty lines and duplicates
removed, space separated pastes work) and forces a new jungfrau object.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The out position was one x and one y delta added to the upstream and
downstream in positions, and "use current position as out" computed the
deltas from the upstream motors only, so a downstream out position could
not be stored.
- preferences: out X/Y upstream and downstream (absolute) replace the out
deltas; "use current position as out" stores all five axes
- existing settings: the absolute out positions are created once from
in + delta
- the deltas are still written (upstream out - in) for older SwissMX
versions sharing the settings file
- move_post_tube uses the absolute out positions (falls back to in+delta)
The collimator already stores absolute out positions.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
pyqtgraph's 'decimals' is the number of significant figures: beam_x/beam_y
(decimals 2) showed 1613.25 as 1.6e+03, and energy/unit cell (decimals 3)
showed 12.398 as 12.4 and 109.47 as 109. Editing such a field stored the
rounded value. Use 6 significant figures (2-3 decimal places).
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- pv_monitor_add skips simulated motor widgets one by one instead of
asserting sim&0x10 (mixed modes such as --sim 0x0ef crashed at startup)
- preferences: roi/binning numbers written as decimals (8.0) are parsed as
one number and rounded; a roi without 4 or binning without 2 values is
not saved (8.0 used to become 8,0 and corrupt the camera roi)
- camera.set_param refuses a roi/binning with the wrong number of values
- Collect warns when there is nothing to scan or the task is not fix target
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>