mirror of
https://github.com/slsdetectorgroup/slsDetectorPackage.git
synced 2026-11-09 18:33:53 +01:00
Build on RHEL8 docker image / build (push) Successful in 5m40s
Build on RHEL9 docker image / build (push) Successful in 5m50s
Build and Deploy on local RHEL9 / build (push) Successful in 2m5s
Build and Deploy on local RHEL8 / build (push) Successful in 5m12s
Run Simulator Tests on local RHEL9 / build (push) Successful in 20m41s
Run Simulator Tests on local RHEL8 / build (push) Successful in 24m6s
* created jf online display gui with gating, need to change naming from new_online_ZMQ inside * jf_online_display_gui: single-process Jungfrau online display + event finder Merge the old two-process chain (onlinedisp_zmq + jf_event_finder_*) and the ROI-save writer into one multi-threaded program: Qt5 GUI, ROOT plots, raw ZMQ input, HDF5/JSON output. Renamed from new_online_ZMQ - directory, binary, Makefile target, README/NOTES and the agent notes all carry the new name; the legacy sources are left in place for reference. Pipeline - acq thread (zmq_poll) -> analysis -> worker pool -> ROOT, decoupled by frame and image mailboxes so a slow stage can never stall the receiver; HDF5 writer thread; per-socket ZMQ monitors so an idle-but-alive receiver is not called "stopped". Multi-interface mode stacks N slabs bottom -> top. Gates - storage cell (detSpec3 bits 8-11) and the signal gate in series, so frames from other cells cost no CPU; optional contiguity (N px within a circle) and "ROI only". Cumulative/current counters plus fps and MB/s rates. Pedestal - load/read/save/acquire, Pede/Raw toggle, and live dr * jf_online_display_gui: image plots, palettes, zoom coordination, save-time locking Build - `make` now produces both executables: jf_online_display_gui and jf_online_display_gui_JFSTRX (same sources with -DJFSTRX into their own objects, decoder header declared as a dependency); `make normal` / `make jfstrx` still build one. The strip-xel build zooms four times deeper (kMinViewport = 2 image pixels) and no longer dumps the decoder header on every displayed frame. Display - the image windows are plots: frame, X/Y axes with the tick labels outside, dotted grid, per-pixel outlines from 16 screen px and in-pixel values from 50 px (whole numbers for counts, one decimal otherwise), all clipped to the plot area so a zoom cannot spill over the axes. - the colour bar is replaced by a thin scale panel: solid-bin histogram with the range markers pinned at 1/4 and 3/4 (draggable, applied on release), 18 palettes (viridis/plasma/inferno/magma/cividis/turbo/hot/greys/diverging/ Brewer/Tol) and two lin/log switches (image intensity and histogram bars, log capping values <= 0 at 1e-2). - the gain window has no scale panel at all: four valid values, fixed muted blue/green/yellow/red code, range pinned to 0..3. - "zoom coordination" in the Display panel: any window zooms all of them (default on); off means every window is independent. Saving - the photon-counting threshold follows the gain stage (ADU when it is off, keV when it is on, both remembered), with the unit in --stats and the JSON. - a running save locks the settings that would change the file; the gate threshold and min-pixels stay live but ask first, and the JSON gets gate_settings_modified_during_run plus a note. - counters report frames or maps, the start-up default is no longer added to the previous-destinations list, and the status explains the dropped count. ROI and flow - "Unset ROI" button; the ROI is fed by the Gain for frames and by the virtual photon counting for the maps, always orange, and the arrow into Save always leaves the ROI; the diagram's colours follow the display-vs-save pedestal split while its geometry stays fixed; the signal gate is drawn as a funnel on the line with a control arrow. * jf_online_display_gui: alignment, gate and display fixes from live tests - dual interface: one-frame lookahead pairing, drain to newest, catch-up reads from the lagging socket, manual decimation, [perf]/[align] audit lines - gate: contiguity circle test fixed (+ unit test), hot-pixel mask taken from the photon map and applied to the gate, PH plots and ADC display - display: histogram frozen while dragging and binned over the visible scale, "Current" counters fixed, ROI editor (drag the yellow box), "Edit as new" - build: CMakeLists.txt (both variants, test, feeder), local .gitignore * jf_online_display_gui: photon map cadence counts analysed (gated) frames Rename the spinbox to "write plot every N (gated) images" and drop the false "independent of the ADC image decimation" claim from the tooltip and the publish-site comment: it ticks on frames that survived the gate and the decimation, so rejecting/skipping frames stretches the interval. * jf_online_display_gui: strixel Z scale, plot visibility toggles - the six strixel panels follow the ADC colour range and palette (they have no scale of their own) and show a "Z scale" legend - Display panel: "show gain image" and "show ROOT plots", both off at startup; the ROOT canvases are parked off-screen and restored on demand - silence the per-frame "data struct created" print in the strixel decoder * jf_online_display_gui: "Edit as new" ROI fix, single-interface placement - the ROI dialog's Apply button never closed it (QDialogButtonBox emits accepted() only for AcceptRole, Apply has ApplyRole); the edited rectangle is now also written to the ROI list as a new entry - port specs accept ":top" / ":bottom" (e.g. 30027:top) so a single ZMQ stream lands in the correct half of the module; the stream header carries port, shape and flipRows but no row offset. One log line reports the choice. * jf_online_display_gui: receiver ROI as the union of the interfaces Each interface reports only its own slice, so translate every slice by its row offset and draw the union (a box crossing the boundary used to stop at it). A single stream is drawn exactly as reported. --------- Co-authored-by: Aldo Mozzanica <aldo.mozzanica@psi.ch> Co-authored-by: Erik Fröjdh <erik.frojdh@gmail.com>