Build Packages / Create release (push) Successful in 16s
Build Packages / build:rugnux:aarch64 (cross) (push) Successful in 8m27s
Build Packages / build:rugnux-tgz (x86_64) (push) Successful in 9m15s
Build Packages / build:viewer-tgz:cpu (push) Successful in 10m11s
Build Packages / build:viewer-tgz:cuda (push) Successful in 12m6s
Build Packages / build:rpm (rocky8_nocuda) (push) Successful in 15m44s
Build Packages / build:rpm (rocky9_nocuda) (push) Successful in 16m1s
Build Packages / build:windows:nocuda (push) Successful in 17m29s
Build Packages / build:windows:cuda (push) Successful in 19m58s
Build Packages / HDF5 consumer tests (DIALS, XDS) (push) Successful in 24m7s
Build Packages / build:rpm (ubuntu2404_nocuda) (push) Successful in 19m8s
Build Packages / build:rugnux:windows (push) Successful in 10m58s
Build Packages / build:rpm (ubuntu2204_nocuda) (push) Successful in 20m46s
Build Packages / Generate python client (push) Successful in 53s
Build Packages / build:rpm (rocky8_sls9) (push) Successful in 20m13s
Build Packages / Build documentation (push) Successful in 1m36s
Build Packages / build:rpm (rocky9_sls9) (push) Successful in 19m57s
Build Packages / build:rpm (rocky8) (push) Successful in 18m7s
Build Packages / build:rpm (rocky9) (push) Successful in 18m54s
Build Packages / build:rpm (ubuntu2204) (push) Successful in 19m32s
Build Packages / build:rpm (ubuntu2404) (push) Successful in 17m30s
Build Packages / Unit tests (push) Successful in 1h39m2s
* Fixed `jfjoch_broker` cancelling every data collection with a CUDA "out of memory" error after long operation: GPU memory no longer leaks with each collection. * Rugnux scales a rotation sweep until the per-frame scales settle instead of for a fixed three rounds, and says so when they did not - merged intensities, and the space group, resolution cut and frame rejection read off them, change accordingly; `--scaling-iterations` is now the cap on that loop (default 100). * Rugnux places every frame of a marCCD, SMV or miniCBF series at the spindle angle its own header states, so a series with missing frames, or with angles written modulo 360, is no longer read at the wrong geometry or refused. * Every rotation run writes two diagnostic files beside its reflections: `<prefix>_detector.jpg`, the detector projection with the pixel mask and the detected beam-stop shadow drawn on it, and `<prefix>_plot.txt`, one row per image. Reviewed-on: #82 Co-authored-by: Filip Leonarski <filip.leonarski@psi.ch>
28 lines
999 B
C++
28 lines
999 B
C++
// SPDX-FileCopyrightText: 2025 Filip Leonarski, Paul Scherrer Institute <filip.leonarski@psi.ch>
|
|
// SPDX-License-Identifier: GPL-3.0-only
|
|
|
|
#include "ScalingResult.h"
|
|
#include <cmath>
|
|
|
|
ScalingResult::ScalingResult(size_t n)
|
|
: image_scale_g(n, NAN),
|
|
mosaicity_deg(n, NAN),
|
|
rotation_wedge_deg(n, NAN),
|
|
image_cc(n, NAN),
|
|
image_cc_n(n, 0) {}
|
|
|
|
ScalingResult::ScalingResult(const std::vector<IntegrationOutcome> &v)
|
|
: image_scale_g(v.size(), NAN),
|
|
mosaicity_deg(v.size(), NAN),
|
|
rotation_wedge_deg(v.size(), NAN),
|
|
image_cc(v.size(), NAN),
|
|
image_cc_n(v.size(), 0) {
|
|
for (int i = 0; i < v.size(); i++) {
|
|
image_scale_g[i] = v[i].image_scale_g.value_or(NAN);
|
|
mosaicity_deg[i] = v[i].mosaicity_deg.value_or(NAN);
|
|
rotation_wedge_deg[i] = v[i].image_scale_wedge_deg.value_or(NAN);
|
|
image_cc[i] = v[i].image_scale_cc.value_or(NAN);
|
|
image_cc_n[i] = v[i].image_scale_cc_n.value_or(0);
|
|
}
|
|
}
|