From e38b63d5c44813e017f0b6e44379cc656d27629b Mon Sep 17 00:00:00 2001 From: adriazalvarez Date: Wed, 21 Aug 2024 09:55:27 +0100 Subject: [PATCH 1/7] Add virtual update function list member to FitDataPresenter --- .../Inelastic/QENSFitting/FitDataPresenter.h | 2 ++ 1 file changed, 2 insertions(+) diff --git a/qt/scientific_interfaces/Inelastic/QENSFitting/FitDataPresenter.h b/qt/scientific_interfaces/Inelastic/QENSFitting/FitDataPresenter.h index 62bb92e938cc..704870257461 100644 --- a/qt/scientific_interfaces/Inelastic/QENSFitting/FitDataPresenter.h +++ b/qt/scientific_interfaces/Inelastic/QENSFitting/FitDataPresenter.h @@ -56,6 +56,8 @@ class MANTIDQT_INELASTIC_DLL FitDataPresenter : public IFitDataPresenter, public std::vector createDisplayNames() const; void validate(IUserInputValidator *validator); + virtual void updateFitFunctionList() const {}; + virtual void addWorkspace(const std::string &workspaceName, const std::string ¶mType, const int &spectrum_index) { UNUSED_ARG(workspaceName); UNUSED_ARG(paramType); From e848f38c402e247be57d81ae6e26b69bac905773 Mon Sep 17 00:00:00 2001 From: adriazalvarez Date: Wed, 21 Aug 2024 09:57:13 +0100 Subject: [PATCH 2/7] Implement overriden updateFunctionList function in derived FunctionQDataPresenter class, and refactor chooseFunctionQFunctions members to properly update when removing data from table --- .../QENSFitting/FunctionQDataPresenter.cpp | 27 ++++++++++++------- .../QENSFitting/FunctionQDataPresenter.h | 3 ++- 2 files changed, 20 insertions(+), 10 deletions(-) diff --git a/qt/scientific_interfaces/Inelastic/QENSFitting/FunctionQDataPresenter.cpp b/qt/scientific_interfaces/Inelastic/QENSFitting/FunctionQDataPresenter.cpp index da19b0188a72..cb3f38acf116 100644 --- a/qt/scientific_interfaces/Inelastic/QENSFitting/FunctionQDataPresenter.cpp +++ b/qt/scientific_interfaces/Inelastic/QENSFitting/FunctionQDataPresenter.cpp @@ -71,6 +71,10 @@ bool FunctionQDataPresenter::addWorkspaceFromDialog(MantidWidgets::IAddWorkspace return false; } +void FunctionQDataPresenter::updateFitFunctionList() const { + m_tab->handleFunctionListChanged(chooseFunctionQFunctions(std::nullopt)); +} + void FunctionQDataPresenter::addWorkspace(const std::string &workspaceName, const std::string ¶mType, const int &spectrum_index) { const auto workspace = m_adsInstance.retrieveWS(workspaceName); @@ -87,18 +91,23 @@ void FunctionQDataPresenter::addWorkspace(const std::string &workspaceName, cons m_model->addWorkspace(workspace->getName(), singleSpectra); } -std::map FunctionQDataPresenter::chooseFunctionQFunctions(bool paramWidth) const { - if (m_view->isTableEmpty()) // when first data is added to table, it can only be either WIDTH or EISF - return paramWidth ? FunctionQ::WIDTH_FITS : FunctionQ::EISF_FITS; - - bool widthFuncs = paramWidth || m_view->dataColumnContainsText("HWHM"); - bool eisfFuncs = !paramWidth || m_view->dataColumnContainsText("EISF") || m_view->dataColumnContainsText("A0"); +std::map +FunctionQDataPresenter::chooseFunctionQFunctions(std::optional paramWidth) const { + if (m_view->isTableEmpty()) + return (paramWidth == std::nullopt) ? FunctionQ::ALL_FITS + : *paramWidth ? FunctionQ::WIDTH_FITS + : FunctionQ::EISF_FITS; + auto widthFuncs = m_view->dataColumnContainsText("HWHM"); + auto eisfFuncs = m_view->dataColumnContainsText("EISF") || m_view->dataColumnContainsText("A0"); + if (paramWidth != std::nullopt) { + widthFuncs = widthFuncs || *paramWidth; + eisfFuncs = eisfFuncs || !*paramWidth; + } if (widthFuncs && eisfFuncs) return FunctionQ::ALL_FITS; - else if (widthFuncs) + if (widthFuncs) return FunctionQ::WIDTH_FITS; - else - return FunctionQ::EISF_FITS; + return FunctionQ::EISF_FITS; } void FunctionQDataPresenter::setActiveParameterType(const std::string &type) { m_activeParameterType = type; } diff --git a/qt/scientific_interfaces/Inelastic/QENSFitting/FunctionQDataPresenter.h b/qt/scientific_interfaces/Inelastic/QENSFitting/FunctionQDataPresenter.h index f127838d6a56..bcedf1de56ca 100644 --- a/qt/scientific_interfaces/Inelastic/QENSFitting/FunctionQDataPresenter.h +++ b/qt/scientific_interfaces/Inelastic/QENSFitting/FunctionQDataPresenter.h @@ -35,6 +35,7 @@ class MANTIDQT_INELASTIC_DLL FunctionQDataPresenter : public FitDataPresenter, p void handleAddClicked() override; void handleWorkspaceChanged(FunctionQAddWorkspaceDialog *dialog, const std::string &workspace) override; void handleParameterTypeChanged(FunctionQAddWorkspaceDialog *dialog, const std::string &type) override; + void updateFitFunctionList() const override; protected: void addTableEntry(FitDomainIndex row) override; @@ -44,7 +45,7 @@ class MANTIDQT_INELASTIC_DLL FunctionQDataPresenter : public FitDataPresenter, p void updateActiveWorkspaceID(WorkspaceID index); void updateParameterOptions(FunctionQAddWorkspaceDialog *dialog, const FunctionQParameters ¶meters); void updateParameterTypes(FunctionQAddWorkspaceDialog *dialog, FunctionQParameters const ¶meters); - std::map chooseFunctionQFunctions(bool paramWidth) const; + std::map chooseFunctionQFunctions(std::optional paramWidth) const; void setActiveWorkspaceIDToCurrentWorkspace(MantidWidgets::IAddWorkspaceDialog const *dialog); std::string m_activeParameterType; From 3257d065473d7de3df6cb8f7fec933dd80b6b9af Mon Sep 17 00:00:00 2001 From: adriazalvarez Date: Wed, 21 Aug 2024 09:57:32 +0100 Subject: [PATCH 3/7] Update function list when data is removed: --- qt/scientific_interfaces/Inelastic/QENSFitting/FitTab.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/qt/scientific_interfaces/Inelastic/QENSFitting/FitTab.cpp b/qt/scientific_interfaces/Inelastic/QENSFitting/FitTab.cpp index 35b4222880e6..cfd164aed625 100644 --- a/qt/scientific_interfaces/Inelastic/QENSFitting/FitTab.cpp +++ b/qt/scientific_interfaces/Inelastic/QENSFitting/FitTab.cpp @@ -111,6 +111,7 @@ void FitTab::handleDataRemoved() { updateDataReferences(); m_plotPresenter->updateDataSelection(m_dataPresenter->createDisplayNames()); updateParameterEstimationData(); + m_dataPresenter->updateFitFunctionList(); } void FitTab::handlePlotSpectrumChanged() { From 6e4d05812c992ddc4312eed4cac83d2289906af1 Mon Sep 17 00:00:00 2001 From: adriazalvarez Date: Wed, 28 Aug 2024 11:33:21 +0100 Subject: [PATCH 4/7] Add release notes --- docs/source/release/v6.11.0/Inelastic/Bugfixes/37671.rst | 1 + 1 file changed, 1 insertion(+) create mode 100644 docs/source/release/v6.11.0/Inelastic/Bugfixes/37671.rst diff --git a/docs/source/release/v6.11.0/Inelastic/Bugfixes/37671.rst b/docs/source/release/v6.11.0/Inelastic/Bugfixes/37671.rst new file mode 100644 index 000000000000..9e9fb4ea12b4 --- /dev/null +++ b/docs/source/release/v6.11.0/Inelastic/Bugfixes/37671.rst @@ -0,0 +1 @@ +- Available fit functions in the `Function (Q)` tab of the :ref:`QENS Fitting ` interface are updated according to the type of data (`EISF`, `A0` or `Width`) loaded on the table. From 985e2d47ba789364a8623a9a3d014189f693c89e Mon Sep 17 00:00:00 2001 From: Applin Date: Thu, 12 Sep 2024 10:10:43 +0100 Subject: [PATCH 5/7] Only check parameter column for the name of a parameter --- .../QENSFitting/FitDataPresenter.cpp | 6 ++-- .../Inelastic/QENSFitting/FitDataView.cpp | 29 ++++++++++++------- .../Inelastic/QENSFitting/FitDataView.h | 4 +-- .../QENSFitting/FunctionQDataPresenter.cpp | 5 ++-- .../Inelastic/QENSFitting/IFitDataView.h | 4 +-- .../Inelastic/test/QENSFitting/MockObjects.h | 4 +-- 6 files changed, 30 insertions(+), 22 deletions(-) diff --git a/qt/scientific_interfaces/Inelastic/QENSFitting/FitDataPresenter.cpp b/qt/scientific_interfaces/Inelastic/QENSFitting/FitDataPresenter.cpp index 228b09dcb228..2e8fda4d7cb6 100644 --- a/qt/scientific_interfaces/Inelastic/QENSFitting/FitDataPresenter.cpp +++ b/qt/scientific_interfaces/Inelastic/QENSFitting/FitDataPresenter.cpp @@ -148,11 +148,11 @@ void FitDataPresenter::addTableEntry(FitDomainIndex row) { } void FitDataPresenter::handleCellChanged(int row, int column) { - if (m_view->getColumnIndexFromName("StartX") == column) { + if (m_view->columnIndex("StartX") == column) { setTableStartXAndEmit(m_view->getText(row, column).toDouble(), row, column); - } else if (m_view->getColumnIndexFromName("EndX") == column) { + } else if (m_view->columnIndex("EndX") == column) { setTableEndXAndEmit(m_view->getText(row, column).toDouble(), row, column); - } else if (m_view->getColumnIndexFromName("Mask X Range") == column) { + } else if (m_view->columnIndex("Mask X Range") == column) { setModelExcludeAndEmit(m_view->getText(row, column).toStdString(), row); } } diff --git a/qt/scientific_interfaces/Inelastic/QENSFitting/FitDataView.cpp b/qt/scientific_interfaces/Inelastic/QENSFitting/FitDataView.cpp index 03df930fd19d..b1c8717507d5 100644 --- a/qt/scientific_interfaces/Inelastic/QENSFitting/FitDataView.cpp +++ b/qt/scientific_interfaces/Inelastic/QENSFitting/FitDataView.cpp @@ -59,11 +59,11 @@ void FitDataView::setHorizontalHeaders(const QStringList &headers) { auto header = m_uiForm->tbFitData->horizontalHeader(); header->setSectionResizeMode(0, QHeaderView::Stretch); - m_uiForm->tbFitData->setItemDelegateForColumn(getColumnIndexFromName("StartX"), + m_uiForm->tbFitData->setItemDelegateForColumn(columnIndex("StartX"), new NumericInputDelegate(m_uiForm->tbFitData, NUMERICAL_PRECISION)); - m_uiForm->tbFitData->setItemDelegateForColumn(getColumnIndexFromName("EndX"), + m_uiForm->tbFitData->setItemDelegateForColumn(columnIndex("EndX"), new NumericInputDelegate(m_uiForm->tbFitData, NUMERICAL_PRECISION)); - m_uiForm->tbFitData->setItemDelegateForColumn(getColumnIndexFromName("Mask X Range"), + m_uiForm->tbFitData->setItemDelegateForColumn(columnIndex("Mask X Range"), new RegexInputDelegate(m_uiForm->tbFitData, MASK_LIST)); m_uiForm->tbFitData->verticalHeader()->setVisible(false); @@ -89,16 +89,16 @@ void FitDataView::addTableEntry(size_t row, FitDataRow const &newRow) { cell = std::make_unique(QString::number(newRow.workspaceIndex)); cell->setFlags(flags); - setCell(std::move(cell), row, getColumnIndexFromName("WS Index")); + setCell(std::move(cell), row, columnIndex("WS Index")); cell = std::make_unique(makeQStringNumber(newRow.startX, NUMERICAL_PRECISION)); - setCell(std::move(cell), row, getColumnIndexFromName("StartX")); + setCell(std::move(cell), row, columnIndex("StartX")); cell = std::make_unique(makeQStringNumber(newRow.endX, NUMERICAL_PRECISION)); - setCell(std::move(cell), row, getColumnIndexFromName("EndX")); + setCell(std::move(cell), row, columnIndex("EndX")); cell = std::make_unique(QString::fromStdString(newRow.exclude)); - setCell(std::move(cell), row, getColumnIndexFromName("Mask X Range")); + setCell(std::move(cell), row, columnIndex("Mask X Range")); } void FitDataView::updateNumCellEntry(double numEntry, size_t row, size_t column) { @@ -109,8 +109,8 @@ void FitDataView::updateNumCellEntry(double numEntry, size_t row, size_t column) bool FitDataView::isTableEmpty() const { return m_uiForm->tbFitData->rowCount() == 0; } -int FitDataView::getColumnIndexFromName(std::string const &ColName) { - return m_HeaderLabels.indexOf(QString::fromStdString(ColName)); +int FitDataView::columnIndex(std::string const &name) const { + return m_HeaderLabels.indexOf(QString::fromStdString(name)); } void FitDataView::clearTable() { m_uiForm->tbFitData->setRowCount(0); } @@ -119,8 +119,15 @@ void FitDataView::setCell(std::unique_ptr cell, size_t row, si m_uiForm->tbFitData->setItem(static_cast(row), static_cast(column), cell.release()); } -bool FitDataView::dataColumnContainsText(std::string const &columnText) const { - return !m_uiForm->tbFitData->findItems(QString::fromStdString(columnText), Qt::MatchContains).isEmpty(); +bool FitDataView::columnContains(std::string const &columnHeader, std::string const &text) const { + auto const column = columnIndex(columnHeader); + for (auto row = 0u; row < m_uiForm->tbFitData->rowCount(); ++row) { + auto const itemText = m_uiForm->tbFitData->item(row, column)->text(); + if (itemText.contains(QString::fromStdString(text))) { + return true; + } + } + return false; } QString FitDataView::getText(int row, int column) const { diff --git a/qt/scientific_interfaces/Inelastic/QENSFitting/FitDataView.h b/qt/scientific_interfaces/Inelastic/QENSFitting/FitDataView.h index c6076ffc0db8..995973adff22 100644 --- a/qt/scientific_interfaces/Inelastic/QENSFitting/FitDataView.h +++ b/qt/scientific_interfaces/Inelastic/QENSFitting/FitDataView.h @@ -39,11 +39,11 @@ class MANTIDQT_INELASTIC_DLL FitDataView : public QTabWidget, public IFitDataVie void validate(IUserInputValidator *validator) override; virtual void addTableEntry(size_t row, FitDataRow const &newRow) override; virtual void updateNumCellEntry(double numEntry, size_t row, size_t column) override; - int getColumnIndexFromName(std::string const &ColName) override; + int columnIndex(std::string const &name) const override; void clearTable() override; QString getText(int row, int column) const override; QModelIndexList getSelectedIndexes() const override; - bool dataColumnContainsText(std::string const &columnText) const override; + bool columnContains(std::string const &columnHeader, std::string const &text) const override; void displayWarning(const std::string &warning) override; diff --git a/qt/scientific_interfaces/Inelastic/QENSFitting/FunctionQDataPresenter.cpp b/qt/scientific_interfaces/Inelastic/QENSFitting/FunctionQDataPresenter.cpp index cb3f38acf116..773f09c01344 100644 --- a/qt/scientific_interfaces/Inelastic/QENSFitting/FunctionQDataPresenter.cpp +++ b/qt/scientific_interfaces/Inelastic/QENSFitting/FunctionQDataPresenter.cpp @@ -97,8 +97,9 @@ FunctionQDataPresenter::chooseFunctionQFunctions(std::optional paramWidth) return (paramWidth == std::nullopt) ? FunctionQ::ALL_FITS : *paramWidth ? FunctionQ::WIDTH_FITS : FunctionQ::EISF_FITS; - auto widthFuncs = m_view->dataColumnContainsText("HWHM"); - auto eisfFuncs = m_view->dataColumnContainsText("EISF") || m_view->dataColumnContainsText("A0"); + auto const columnHeader = "Parameter"; + auto widthFuncs = m_view->columnContains(columnHeader, "HWHM"); + auto eisfFuncs = m_view->columnContains(columnHeader, "EISF") || m_view->columnContains(columnHeader, "A0"); if (paramWidth != std::nullopt) { widthFuncs = widthFuncs || *paramWidth; eisfFuncs = eisfFuncs || !*paramWidth; diff --git a/qt/scientific_interfaces/Inelastic/QENSFitting/IFitDataView.h b/qt/scientific_interfaces/Inelastic/QENSFitting/IFitDataView.h index a1558fbc8341..aa92d1afa850 100644 --- a/qt/scientific_interfaces/Inelastic/QENSFitting/IFitDataView.h +++ b/qt/scientific_interfaces/Inelastic/QENSFitting/IFitDataView.h @@ -39,11 +39,11 @@ class MANTIDQT_INELASTIC_DLL IFitDataView { virtual void validate(IUserInputValidator *validator) = 0; virtual void addTableEntry(size_t row, FitDataRow const &newRow) = 0; virtual void updateNumCellEntry(double numEntry, size_t row, size_t column) = 0; - virtual int getColumnIndexFromName(std::string const &ColName) = 0; + virtual int columnIndex(std::string const &name) const = 0; virtual void clearTable() = 0; virtual QString getText(int row, int column) const = 0; virtual QModelIndexList getSelectedIndexes() const = 0; - virtual bool dataColumnContainsText(std::string const &columnText) const = 0; + virtual bool columnContains(std::string const &columnHeader, std::string const &text) const = 0; virtual void displayWarning(std::string const &warning) = 0; }; diff --git a/qt/scientific_interfaces/Inelastic/test/QENSFitting/MockObjects.h b/qt/scientific_interfaces/Inelastic/test/QENSFitting/MockObjects.h index 1b8e158d653b..de910c047ab8 100644 --- a/qt/scientific_interfaces/Inelastic/test/QENSFitting/MockObjects.h +++ b/qt/scientific_interfaces/Inelastic/test/QENSFitting/MockObjects.h @@ -292,11 +292,11 @@ class MockFitDataView : public IFitDataView { MOCK_METHOD1(validate, void(MantidQt::CustomInterfaces::IUserInputValidator *validator)); MOCK_METHOD2(addTableEntry, void(size_t row, FitDataRow const &newRow)); MOCK_METHOD3(updateNumCellEntry, void(double numEntry, size_t row, size_t column)); - MOCK_METHOD1(getColumnIndexFromName, int(std::string const &ColName)); + MOCK_CONST_METHOD1(columnIndex, int(std::string const &name)); MOCK_METHOD0(clearTable, void()); MOCK_CONST_METHOD2(getText, QString(int row, int column)); MOCK_CONST_METHOD0(getSelectedIndexes, QModelIndexList()); - MOCK_CONST_METHOD1(dataColumnContainsText, bool(const std::string &columnText)); + MOCK_CONST_METHOD2(columnContains, bool(const std::string &columnHeader, const std::string &text)); MOCK_METHOD1(setSampleWSSuffices, void(const QStringList &suffices)); MOCK_METHOD1(setSampleFBSuffices, void(const QStringList &suffices)); From f7d684a0002d526a10eee5e686874890cd170401 Mon Sep 17 00:00:00 2001 From: Applin Date: Thu, 12 Sep 2024 10:43:07 +0100 Subject: [PATCH 6/7] Allow selecting a previously loaded width which has been converted to HWHM --- Framework/Kernel/inc/MantidKernel/Strings.h | 3 +++ Framework/Kernel/src/Strings.cpp | 9 +++++++++ Framework/Kernel/test/StringsTest.h | 7 +++++++ .../Inelastic/QENSFitting/FunctionQDataPresenter.cpp | 6 ++++-- .../Inelastic/QENSFitting/FunctionQParameters.cpp | 2 +- 5 files changed, 24 insertions(+), 3 deletions(-) diff --git a/Framework/Kernel/inc/MantidKernel/Strings.h b/Framework/Kernel/inc/MantidKernel/Strings.h index e6b45340e0d4..90f7d8c58597 100644 --- a/Framework/Kernel/inc/MantidKernel/Strings.h +++ b/Framework/Kernel/inc/MantidKernel/Strings.h @@ -250,6 +250,9 @@ MANTID_KERNEL_DLL std::string toLower(const std::string &input); /// Converts string to all uppercase MANTID_KERNEL_DLL std::string toUpper(const std::string &input); +/// Checks if string ends with a suffix +MANTID_KERNEL_DLL bool endsWith(std::string const &str, std::string const &suffix); + /// determine if a character group exists in a string MANTID_KERNEL_DLL int confirmStr(const std::string &S, const std::string &fullPhrase); /// Get a word from a string diff --git a/Framework/Kernel/src/Strings.cpp b/Framework/Kernel/src/Strings.cpp index 98996a1987a0..4fb6e94f8e2f 100644 --- a/Framework/Kernel/src/Strings.cpp +++ b/Framework/Kernel/src/Strings.cpp @@ -127,6 +127,15 @@ MANTID_KERNEL_DLL std::string toUpper(const std::string &input) { return output; } +/** Checks if string ends with a suffix + */ +MANTID_KERNEL_DLL bool endsWith(std::string const &str, std::string const &suffix) { + if (str.size() >= suffix.size()) { + return str.compare(str.size() - suffix.size(), suffix.size(), suffix) == 0; + } + return false; +} + //------------------------------------------------------------------------------------------------ /** * Function to convert a number into hex diff --git a/Framework/Kernel/test/StringsTest.h b/Framework/Kernel/test/StringsTest.h index d58097f8bb12..f9aa2dc5e884 100644 --- a/Framework/Kernel/test/StringsTest.h +++ b/Framework/Kernel/test/StringsTest.h @@ -599,6 +599,13 @@ class StringsTest : public CxxTest::TestSuite { TS_ASSERT_EQUALS(text.length(), length); } } + + void test_endsWith_when_the_suffix_is_smaller_than_the_str() { + TS_ASSERT(endsWith("ATestString", "String")); + TS_ASSERT(!endsWith("AStringTest", "String")); + } + + void test_endsWith_when_the_suffix_is_too_large() { TS_ASSERT(!endsWith("SmallText", "AVeryLongSuffix")); } }; class StringsTestPerformance : public CxxTest::TestSuite { diff --git a/qt/scientific_interfaces/Inelastic/QENSFitting/FunctionQDataPresenter.cpp b/qt/scientific_interfaces/Inelastic/QENSFitting/FunctionQDataPresenter.cpp index 773f09c01344..6b2fa0a4e04c 100644 --- a/qt/scientific_interfaces/Inelastic/QENSFitting/FunctionQDataPresenter.cpp +++ b/qt/scientific_interfaces/Inelastic/QENSFitting/FunctionQDataPresenter.cpp @@ -11,6 +11,7 @@ #include "ParameterEstimation.h" #include "MantidAPI/TextAxis.h" +#include "MantidKernel/Strings.h" namespace { using namespace MantidQt::CustomInterfaces::Inelastic; @@ -33,9 +34,10 @@ void replaceAxisLabel(TextAxis *axis, std::size_t const index, std::string const axis->setLabel(index, label); } -void convertWidthToHWHM(MatrixWorkspace_sptr workspace, const std::vector &widthSpectra) { +void convertWidthToHWHM(MatrixWorkspace_sptr workspace, std::vector const &widthSpectra) { for (auto const &spectrumIndex : widthSpectra) { - if (auto axis = dynamic_cast(workspace->getAxis(1))) { + auto axis = dynamic_cast(workspace->getAxis(1)); + if (axis && !Mantid::Kernel::Strings::endsWith(axis->label(spectrumIndex), "HWHM")) { replaceAxisLabel(axis, spectrumIndex, "Width", "HWHM"); replaceAxisLabel(axis, spectrumIndex, "FWHM", "HWHM"); workspace->mutableY(spectrumIndex) *= 0.5; diff --git a/qt/scientific_interfaces/Inelastic/QENSFitting/FunctionQParameters.cpp b/qt/scientific_interfaces/Inelastic/QENSFitting/FunctionQParameters.cpp index 4735266296cf..53aae783ef2f 100644 --- a/qt/scientific_interfaces/Inelastic/QENSFitting/FunctionQParameters.cpp +++ b/qt/scientific_interfaces/Inelastic/QENSFitting/FunctionQParameters.cpp @@ -51,7 +51,7 @@ namespace MantidQt::CustomInterfaces::Inelastic { FunctionQParameters::FunctionQParameters() : m_widths(), m_eisfs() {} FunctionQParameters::FunctionQParameters(const MatrixWorkspace_sptr &workspace) - : m_widths(findAxisLabels(workspace, {".Width", ".FWHM"})), m_eisfs(findAxisLabels(workspace, {".EISF"})), + : m_widths(findAxisLabels(workspace, {".Width", ".FWHM", ".HWHM"})), m_eisfs(findAxisLabels(workspace, {".EISF"})), m_a0s(findAxisLabels(workspace, {".A0"})) {} std::vector FunctionQParameters::names(std::string const ¶meterType) const { From 94dbd250cbc948c8c6894f62321a03ce287503c7 Mon Sep 17 00:00:00 2001 From: Applin Date: Thu, 12 Sep 2024 13:20:39 +0100 Subject: [PATCH 7/7] Fix sign comparison warning --- qt/scientific_interfaces/Inelastic/QENSFitting/FitDataView.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/qt/scientific_interfaces/Inelastic/QENSFitting/FitDataView.cpp b/qt/scientific_interfaces/Inelastic/QENSFitting/FitDataView.cpp index b1c8717507d5..d6bd038dcd1a 100644 --- a/qt/scientific_interfaces/Inelastic/QENSFitting/FitDataView.cpp +++ b/qt/scientific_interfaces/Inelastic/QENSFitting/FitDataView.cpp @@ -121,7 +121,7 @@ void FitDataView::setCell(std::unique_ptr cell, size_t row, si bool FitDataView::columnContains(std::string const &columnHeader, std::string const &text) const { auto const column = columnIndex(columnHeader); - for (auto row = 0u; row < m_uiForm->tbFitData->rowCount(); ++row) { + for (auto row = 0; row < m_uiForm->tbFitData->rowCount(); ++row) { auto const itemText = m_uiForm->tbFitData->item(row, column)->text(); if (itemText.contains(QString::fromStdString(text))) { return true;