fel_per is a float (10.0): tmove=10.0 gave wait_pulses=twait//tmove=1.0,
used to repeat the CTA lists ('can't multiply sequence by non-int').
tmove is now written as int when fel_per is whole, and wait_pulses is
cast to int.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- mode 7 uses tmove/twait in ms like mode 5 (shapepath divides by fel_per,
its 'shots' doc is wrong): tmove is fel_per for both (was 1 for mode 7)
- wait field in ms, steps of fel_per, typed values snapped to a multiple
- the panel writes the fixed tmove into the parameter text, add obj and
update param set it too (fix_motion_param), so it shows in the object
information; the collection still enforces it
- warning when the text has another tmove or a twait that is not a
multiple of it; a saved text gets the fixed tmove at startup
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>
- all print calls outside the __main__ test blocks are now log calls:
info for run information (CTA configuration summary on one line, run
number, CTA start pid), warning/error for aborts and failures, debug for
dumps (object/transform info, autofocus measurements, logger tree)
- psi_device: remove the import-time logging.basicConfig(level=DEBUG) and
print('past logging'); the standalone test configures logging itself
- startup import timings are logged at info level
- ctadaq added to the -l log level list
Prints from PBTools/PBSwissMX, slic and the JFJ client are unchanged.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Before, an abort stopped motion and shutter only: the CTA sequence (detector,
x-ray shutter, laser triggers), the BS/PV retrieval and JFJ kept running to
the planned end of the run.
- CTAAcquisition.abort(stop_pid): stops the CTA sequence; the retrieval loop
ends early and retrieves the following blocks cut at the abort pulse id
(the retrieval lags the pulses by about one block) until a block is empty
- Jungfrau.stop_triggers(): reads the current pulse id and aborts the CTA
acquisition (or stops a plain SFAcquisition task)
- Jungfrau.cancel(): JFJ cancel_post, then wait (max 60s each) for the data
retrieval to finish and JFJ to be idle
- worker: request_abort closes the shutter first (Shutter.close caput
sequence), then stops the CTA immediately; cleanup stops the CTA again,
recovers the motion, then cancels JFJ and waits
- Shutter reads sync_flag from the preferences at each open/close instead
of once at startup
Tested at the beamline (run 72): BS/PV data and JF images end at the abort
pulse id, motion recovered, JFJ idle afterwards.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>