From f0a64aec01e537f6b4665013fc54daa63a33c748 Mon Sep 17 00:00:00 2001 From: "Joachim Wuttke (h)" <j.wuttke@fz-juelich.de> Date: Fri, 23 Apr 2021 10:34:10 +0200 Subject: [PATCH] createOutputData is now member of IUnitConverter --- Core/Fitting/SimDataPair.cpp | 4 ++-- Device/Unit/IUnitConverter.cpp | 22 +++++++++++----------- Device/Unit/IUnitConverter.h | 11 +++-------- GUI/coregui/Models/DataViewUtils.cpp | 2 +- GUI/coregui/Models/JobItemUtils.cpp | 4 ++-- auto/Wrap/doxygenDevice.i | 12 +++++------- 6 files changed, 24 insertions(+), 31 deletions(-) diff --git a/Core/Fitting/SimDataPair.cpp b/Core/Fitting/SimDataPair.cpp index 03db8dc1c8e..ff336ec5b38 100644 --- a/Core/Fitting/SimDataPair.cpp +++ b/Core/Fitting/SimDataPair.cpp @@ -74,7 +74,7 @@ SimulationResult convertData(const ISimulation& simulation, const OutputData<dou bool put_masked_areas_to_zero) { auto converter = createConverter(simulation); - auto roi_data = UnitConverterUtils::createOutputData(*converter, converter->defaultUnits()); + auto roi_data = converter->createOutputData(converter->defaultUnits()); if (roi_data->hasSameDimensions(data)) { // data is already cropped to ROI @@ -165,7 +165,7 @@ void SimDataPair::execSimulation(const mumufit::Parameters& params) } else { const IUnitConverter& converter = m_sim_data.converter(); std::unique_ptr<OutputData<double>> dummy_array = - UnitConverterUtils::createOutputData(converter, converter.defaultUnits()); + converter.createOutputData(converter.defaultUnits()); m_uncertainties = SimulationResult(*dummy_array, converter); } diff --git a/Device/Unit/IUnitConverter.cpp b/Device/Unit/IUnitConverter.cpp index 7c3fd4b86e2..c025796e892 100644 --- a/Device/Unit/IUnitConverter.cpp +++ b/Device/Unit/IUnitConverter.cpp @@ -19,6 +19,17 @@ IUnitConverter::~IUnitConverter() = default; + + +std::unique_ptr<OutputData<double>> IUnitConverter::createOutputData(Axes::Units units) const +{ + std::unique_ptr<OutputData<double>> result = std::make_unique<OutputData<double>>(); + for (size_t i = 0; i < dimension(); ++i) + result->addAxis(*createConvertedAxis(i, units)); + result->setAllTo(0.0); + return result; +} + std::string IUnitConverter::axisName(size_t i_axis, const Axes::Units& units_type) const { const auto& name_maps = createNameMaps(); @@ -58,14 +69,3 @@ Axes::Units IUnitConverter::substituteDefaultUnits(Axes::Units units) const { return units == Axes::Units::DEFAULT ? defaultUnits() : units; } - - -std::unique_ptr<OutputData<double>> -UnitConverterUtils::createOutputData(const IUnitConverter& converter, Axes::Units units) -{ - std::unique_ptr<OutputData<double>> result = std::make_unique<OutputData<double>>(); - for (size_t i = 0; i < converter.dimension(); ++i) - result->addAxis(*converter.createConvertedAxis(i, units)); - result->setAllTo(0.0); - return result; -} diff --git a/Device/Unit/IUnitConverter.h b/Device/Unit/IUnitConverter.h index 01e89417b43..72a633f31de 100644 --- a/Device/Unit/IUnitConverter.h +++ b/Device/Unit/IUnitConverter.h @@ -46,6 +46,9 @@ public: virtual IUnitConverter* clone() const = 0; + //! Returns zero-valued output data array in specified units + std::unique_ptr<OutputData<double>> createOutputData(Axes::Units units) const; + virtual size_t dimension() const = 0; virtual double calculateMin(size_t i_axis, Axes::Units units_type) const = 0; @@ -75,14 +78,6 @@ private: virtual std::vector<std::map<Axes::Units, std::string>> createNameMaps() const = 0; }; - -namespace UnitConverterUtils { - -//! Returns zero-valued output data array in specified units -std::unique_ptr<OutputData<double>> createOutputData(const IUnitConverter& converter, - Axes::Units units); -} - #endif // USER_API #endif // BORNAGAIN_DEVICE_UNIT_IUNITCONVERTER_H diff --git a/GUI/coregui/Models/DataViewUtils.cpp b/GUI/coregui/Models/DataViewUtils.cpp index 4b1dafa5f63..6ba163040da 100644 --- a/GUI/coregui/Models/DataViewUtils.cpp +++ b/GUI/coregui/Models/DataViewUtils.cpp @@ -62,7 +62,7 @@ std::unique_ptr<OutputData<double>> DataViewUtils::getTranslatedData(Data1DViewI auto converter = getConverter(view_item); auto current_units = selectedUnits(view_item); - result = UnitConverterUtils::createOutputData(*converter, current_units); + result = converter->createOutputData(current_units); result->setRawDataVector(data_item->getOutputData()->getRawDataVector()); return result; diff --git a/GUI/coregui/Models/JobItemUtils.cpp b/GUI/coregui/Models/JobItemUtils.cpp index c21720fed8f..c70544c1f87 100644 --- a/GUI/coregui/Models/JobItemUtils.cpp +++ b/GUI/coregui/Models/JobItemUtils.cpp @@ -60,7 +60,7 @@ void JobItemUtils::updateDataAxes(DataItem* intensityItem, const InstrumentItem* Axes::Units requested_units = axesUnitsFromName(intensityItem->selectedAxesUnits()); const auto converter = DomainObjectBuilder::createUnitConverter(instrumentItem); - auto newData = UnitConverterUtils::createOutputData(*converter.get(), requested_units); + auto newData = converter->createOutputData(requested_units); newData->setRawDataVector(intensityItem->getOutputData()->getRawDataVector()); intensityItem->setOutputData(newData.release()); @@ -107,7 +107,7 @@ void JobItemUtils::createDefaultDetectorMap(DataItem* intensityItem, const InstrumentItem* instrumentItem) { const auto converter = DomainObjectBuilder::createUnitConverter(instrumentItem); - auto output_data = UnitConverterUtils::createOutputData(*converter, converter->defaultUnits()); + auto output_data = converter->createOutputData(converter->defaultUnits()); intensityItem->setOutputData(output_data.release()); setIntensityItemAxesUnits(intensityItem, *converter); updateAxesTitle(intensityItem, *converter, converter->defaultUnits()); diff --git a/auto/Wrap/doxygenDevice.i b/auto/Wrap/doxygenDevice.i index d77a1b060dc..e6e275b5b8d 100644 --- a/auto/Wrap/doxygenDevice.i +++ b/auto/Wrap/doxygenDevice.i @@ -1469,6 +1469,11 @@ C++ includes: IUnitConverter.h %feature("docstring") IUnitConverter::clone "virtual IUnitConverter* IUnitConverter::clone() const =0 "; +%feature("docstring") IUnitConverter::createOutputData "std::unique_ptr< OutputData< double > > IUnitConverter::createOutputData(Axes::Units units) const + +Returns zero-valued output data array in specified units. +"; + %feature("docstring") IUnitConverter::dimension "virtual size_t IUnitConverter::dimension() const =0 "; @@ -2945,13 +2950,6 @@ Returns true if SimulatioResult agrees with data from reference file. "; -// File: namespaceUnitConverterUtils.xml -%feature("docstring") UnitConverterUtils::createOutputData "std::unique_ptr< OutputData< double > > UnitConverterUtils::createOutputData(const IUnitConverter &converter, Axes::Units units) - -Returns zero-valued output data array in specified units. -"; - - // File: Beam_8cpp.xml -- GitLab