74f36710e4
Build Packages / build:rpm (ubuntu2404_nocuda) (push) Successful in 11m43s
Build Packages / build:rpm (ubuntu2204_nocuda) (push) Successful in 12m24s
Build Packages / build:rpm (rocky8_nocuda) (push) Successful in 12m33s
Build Packages / build:rpm (rocky8_sls9) (push) Successful in 12m34s
Build Packages / build:rpm (rocky9_nocuda) (push) Successful in 12m58s
Build Packages / build:rpm (rocky9_sls9) (push) Successful in 11m38s
Build Packages / build:rpm (ubuntu2404) (push) Successful in 12m33s
Build Packages / build:rpm (ubuntu2204) (push) Successful in 13m22s
Build Packages / build:rpm (rocky8) (push) Successful in 13m41s
Build Packages / Generate python client (push) Successful in 14s
Build Packages / build:rpm (rocky9) (push) Successful in 14m14s
Build Packages / Create release (push) Skipped
Build Packages / DIALS test (push) Successful in 13m55s
Build Packages / Build documentation (push) Successful in 45s
Build Packages / XDS test (durin plugin) (push) Successful in 6m54s
Build Packages / XDS test (neggia plugin) (push) Successful in 5m50s
Build Packages / XDS test (JFJoch plugin) (push) Successful in 6m31s
Build Packages / Unit tests (push) Failing after 1h0m10s
One "Processing settings" window with tabs: Spot finding & indexing | Azimuthal | Bragg integration | Scaling, replacing the two separate settings windows. The spot/index and azimuthal tabs reuse the existing windows' widgets unchanged (their content is lifted into tabs via takeCentralWidget), so all their logic/signals keep working; Bragg integration and scaling are new editable panels (previously not adjustable in the GUI). JFJochImageReadingWorker gains UpdateBraggIntegrationSettings / UpdateScalingSettings; both persist as worker state and are re-imported into curr_experiment on file load / dataset update (like the indexing/azint settings), so they apply to interactive analysis (Bragg) and flow into processing jobs via GetReprocessingInputs (Bragg + scaling). Scaling only affects the job post-pass, so it is just stored, not reanalyzed. Verified: jfjoch_viewer builds and runs (offscreen) with the converged window. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
52 lines
1.9 KiB
C++
52 lines
1.9 KiB
C++
// SPDX-FileCopyrightText: 2026 Filip Leonarski, Paul Scherrer Institute <filip.leonarski@psi.ch>
|
|
// SPDX-License-Identifier: GPL-3.0-only
|
|
|
|
#include "JFJochBraggIntegrationPanel.h"
|
|
|
|
#include <QFormLayout>
|
|
#include <QGroupBox>
|
|
#include <QVBoxLayout>
|
|
|
|
JFJochBraggIntegrationPanel::JFJochBraggIntegrationPanel(const BraggIntegrationSettings &settings, QWidget *parent)
|
|
: QWidget(parent) {
|
|
auto *layout = new QVBoxLayout(this);
|
|
auto *group = new QGroupBox("Bragg integration", this);
|
|
auto *form = new QFormLayout(group);
|
|
|
|
m_r1 = new SliderPlusBox(1.0, 20.0, 0.5, 1, this);
|
|
m_r1->setValue(settings.GetR1());
|
|
form->addRow("Signal box radius r1 [px]", m_r1);
|
|
|
|
m_r2 = new SliderPlusBox(1.0, 25.0, 0.5, 1, this);
|
|
m_r2->setValue(settings.GetR2());
|
|
form->addRow("Background inner radius r2 [px]", m_r2);
|
|
|
|
m_r3 = new SliderPlusBox(1.0, 30.0, 0.5, 1, this);
|
|
m_r3->setValue(settings.GetR3());
|
|
form->addRow("Background outer radius r3 [px]", m_r3);
|
|
|
|
m_profileMultiplier = new SliderPlusBox(1.0, 15.0, 0.5, 1, this);
|
|
m_profileMultiplier->setValue(settings.GetProfileMultiplier());
|
|
form->addRow("Profile multiplier (PixelRefine)", m_profileMultiplier);
|
|
|
|
m_dMin = new SliderPlusBox(0.3, 5.0, 0.1, 1, this);
|
|
m_dMin->setValue(settings.GetDMinLimit_A());
|
|
form->addRow("High-resolution limit [Å]", m_dMin);
|
|
|
|
layout->addWidget(group);
|
|
layout->addStretch();
|
|
|
|
for (auto *slider: {m_r1, m_r2, m_r3, m_profileMultiplier, m_dMin})
|
|
connect(slider, &SliderPlusBox::valueChanged, this, [this](double) { emitChanged(); });
|
|
}
|
|
|
|
void JFJochBraggIntegrationPanel::emitChanged() {
|
|
BraggIntegrationSettings s;
|
|
s.R1(static_cast<float>(m_r1->value()))
|
|
.R2(static_cast<float>(m_r2->value()))
|
|
.R3(static_cast<float>(m_r3->value()))
|
|
.ProfileMultiplier(static_cast<float>(m_profileMultiplier->value()))
|
|
.DMinLimit_A(static_cast<float>(m_dMin->value()));
|
|
emit settingsChanged(s);
|
|
}
|