// SPDX-FileCopyrightText: 2025 Filip Leonarski, Paul Scherrer Institute // SPDX-License-Identifier: GPL-3.0-only #include #include "JFJochViewerSidePanelChart.h" JFJochViewerSidePanelChart::JFJochViewerSidePanelChart(QWidget *parent) : QWidget(parent) { auto layout = new QVBoxLayout(this); layout->setContentsMargins(0, 0, 0, 0); azint_plot = new JFJochSimpleChartView(this); layout->addWidget(azint_plot); setLayout(layout); connect(azint_plot, &JFJochSimpleChartView::writeStatusBar, [&](QString string, int timeout_ms) { emit writeStatusBar(string, timeout_ms); }); } QList> JFJochViewerSidePanelChart::PlotTypes() { return { {"Azimuthal integration (1D)", 0}, {"Wilson plot", 1}, {"I/sigma", 2}, {"Spots (count)", 5}, {"Spots (intensity)", 6}, {"X-ray fluorescence spectrum", 4}, }; } void JFJochViewerSidePanelChart::setPlotType(int code) { plot_type_ = code; redrawPlot(); } void JFJochViewerSidePanelChart::redrawPlot() { if (!image) return; std::vector x, y; switch (plot_type_) { case 0: x = image->GetAzInt1D_BinToQ(); y = image->GetAzInt1D(); azint_plot->UpdateData(x, y, "Q [Å^-1]", "", false); break; case 1: x = image->ImageData().integration_B_one_over_d_square; y = image->ImageData().integration_B_logI; azint_plot->UpdateData(x, y, "d [Å]", "ln(<I>)", true); break; case 2: x = image->ImageData().integration_Isigma_one_over_d_square; y = image->ImageData().integration_Isigma; azint_plot->UpdateData(x, y, "d [Å]", "I/sigma", true); break; case 4: x = image->Dataset().experiment.GetFluorescenceSpectrum().GetEnergy_eV(); y = image->Dataset().experiment.GetFluorescenceSpectrum().GetData(); for (auto &iter: x) iter /= 1000.0; // Convert eV to keV azint_plot->UpdateData(x, y, "E [keV]", "", false); break; case 5: x = image->ImageData().spot_plot_one_over_d_square; y = image->ImageData().spot_plot_count; azint_plot->UpdateData(x, y, "d [Å]", "Count", true); break; case 6: x = image->ImageData().spot_plot_one_over_d_square; y = image->ImageData().spot_plot_intensity; azint_plot->UpdateData(x, y, "d [Å]", "Count", true); break; } } void JFJochViewerSidePanelChart::loadImage(std::shared_ptr in_image) { image = in_image; redrawPlot(); }