From cf03d250a7ffa0d029d0f606a51becc69e214f2c Mon Sep 17 00:00:00 2001 From: "Joachim Wuttke (h)" <j.wuttke@fz-juelich.de> Date: Wed, 5 Jul 2023 17:46:36 +0200 Subject: [PATCH] rename coverter -> frame etc --- Base/Util/FileSystemUtil.cpp | 4 ++-- Device/Histo/SimulationResult.cpp | 16 +++++++------- Device/Histo/SimulationResult.h | 4 ++-- GUI/Model/Beam/GrazingScanItem.cpp | 4 ++-- GUI/Model/Beam/GrazingScanItem.h | 2 +- GUI/Model/Beam/SourceItems.cpp | 4 ++-- GUI/Model/Beam/SourceItems.h | 2 +- GUI/Model/Data/DataItemUtil.cpp | 26 +++++++++++------------ GUI/Model/Data/DataItemUtil.h | 6 +++--- GUI/Model/Device/InstrumentItems.cpp | 16 +++++++------- GUI/Model/Device/InstrumentItems.h | 10 ++++----- GUI/Model/Device/InstrumentNotifier.cpp | 4 ++-- GUI/Model/Job/JobItem.cpp | 14 ++++++------ Sim/Fitting/SimDataPair.cpp | 12 +++++------ Tests/Unit/GUI/TestAutosaveController.cpp | 7 +++--- Tests/Unit/GUI/TestLinkInstrument.cpp | 6 +++--- Tests/Unit/GUI/TestProjectDocument.cpp | 7 +++--- 17 files changed, 71 insertions(+), 73 deletions(-) diff --git a/Base/Util/FileSystemUtil.cpp b/Base/Util/FileSystemUtil.cpp index 307595780ac..0941f856d62 100644 --- a/Base/Util/FileSystemUtil.cpp +++ b/Base/Util/FileSystemUtil.cpp @@ -106,8 +106,8 @@ std::string Base::Path::stem_ext(const std::string& path) std::wstring Base::Path::convert_utf8_to_utf16(const std::string& str) { - std::wstring_convert<std::codecvt_utf8_utf16<wchar_t>> converter; - return converter.from_bytes(str); + std::wstring_convert<std::codecvt_utf8_utf16<wchar_t>> frame; + return frame.from_bytes(str); } bool Base::Path::IsFileExists(const std::string& path) diff --git a/Device/Histo/SimulationResult.cpp b/Device/Histo/SimulationResult.cpp index 93c1d027792..99d01e45dc2 100644 --- a/Device/Histo/SimulationResult.cpp +++ b/Device/Histo/SimulationResult.cpp @@ -27,7 +27,7 @@ SimulationResult::SimulationResult(const Datafield& data, const Frame* coords) } SimulationResult::SimulationResult(const SimulationResult& other) - : Datafield(other.converter().clone(), other.flatVector(), other.errorSigmas()) + : Datafield(other.frame().clone(), other.flatVector(), other.errorSigmas()) , m_title(other.m_title) { } @@ -40,20 +40,20 @@ SimulationResult& SimulationResult::operator=(SimulationResult&& other) noexcept Datafield SimulationResult::extracted_field() const { - return Datafield(converter().clonedAxes(), flatVector()); + return Datafield(frame().clonedAxes(), flatVector()); } std::pair<double, double> SimulationResult::axisMinMax(size_t i) const { - return {converter().axis(i).min(), converter().axis(i).max()}; + return {frame().axis(i).min(), frame().axis(i).max()}; } std::string SimulationResult::name_of_axis(size_t i) const { - return converter().axis(i).axisName(); + return frame().axis(i).axisName(); } -const Frame& SimulationResult::converter() const +const Frame& SimulationResult::frame() const { const auto* coordsys = dynamic_cast<const Frame*>(m_frame.get()); ASSERT(coordsys); @@ -63,7 +63,7 @@ const Frame& SimulationResult::converter() const #ifdef BORNAGAIN_PYTHON PyObject* SimulationResult::array() const { - Datafield data(converter().clonedAxes(), flatVector()); + Datafield data(frame().clonedAxes(), flatVector()); return data.npArray(); } #endif @@ -75,8 +75,8 @@ std::vector<double> SimulationResult::convertedBinCenters() const std::vector<double> SimulationResult::convertedBinCenters(size_t i_axis) const { - ASSERT(i_axis < converter().rank()); - return converter().axis(i_axis).binCenters(); + ASSERT(i_axis < frame().rank()); + return frame().axis(i_axis).binCenters(); } void SimulationResult::setTitle(const std::string& title) diff --git a/Device/Histo/SimulationResult.h b/Device/Histo/SimulationResult.h index d2170680c2f..d72a650e12b 100644 --- a/Device/Histo/SimulationResult.h +++ b/Device/Histo/SimulationResult.h @@ -55,8 +55,8 @@ public: #ifndef SWIG - //! Returns underlying unit converter - const Frame& converter() const; + //! Returns underlying unit frame + const Frame& frame() const; private: std::string m_title; diff --git a/GUI/Model/Beam/GrazingScanItem.cpp b/GUI/Model/Beam/GrazingScanItem.cpp index dbf23fb12db..d69801b4a3d 100644 --- a/GUI/Model/Beam/GrazingScanItem.cpp +++ b/GUI/Model/Beam/GrazingScanItem.cpp @@ -188,7 +188,7 @@ void GrazingScanItem::initUniformAxis(const Scale& axis) m_uniformAlphaAxis->setBinCount(static_cast<int>(axis.size())); } -void GrazingScanItem::initListScan(const Scale& axis, QString units, const Frame& converter) +void GrazingScanItem::initListScan(const Scale& axis, QString units, const Frame& frame) { if (!m_pointwiseAlphaAxis) { m_pointwiseAlphaAxis.reset(new PointwiseAxisItem()); @@ -196,5 +196,5 @@ void GrazingScanItem::initListScan(const Scale& axis, QString units, const Frame } m_pointwiseAlphaAxis->setAxisAndUnit(axis, units); - m_pointwiseAlphaAxis->updateAxIndicators(converter); + m_pointwiseAlphaAxis->updateAxIndicators(frame); } diff --git a/GUI/Model/Beam/GrazingScanItem.h b/GUI/Model/Beam/GrazingScanItem.h index 65a5660251e..54944c83e13 100644 --- a/GUI/Model/Beam/GrazingScanItem.h +++ b/GUI/Model/Beam/GrazingScanItem.h @@ -59,7 +59,7 @@ public: void selectListScan(); void initUniformAxis(const Scale& axis); - void initListScan(const Scale& axis, QString units, const Frame& converter); + void initListScan(const Scale& axis, QString units, const Frame& frame); private: std::unique_ptr<BasicAxisItem> m_uniformAlphaAxis; diff --git a/GUI/Model/Beam/SourceItems.cpp b/GUI/Model/Beam/SourceItems.cpp index 23ff890f8dd..4d4e6e834d2 100644 --- a/GUI/Model/Beam/SourceItems.cpp +++ b/GUI/Model/Beam/SourceItems.cpp @@ -365,13 +365,13 @@ BasicAxisItem* ScanItem::inclinationAxisItem() const return grazingScanItem()->alphaAxisItem(); } -void ScanItem::updateToData(const Scale& axis, QString units, const Frame& converter) +void ScanItem::updateToData(const Scale& axis, QString units, const Frame& frame) { if (units == "nbins") { grazingScanItem()->initUniformAxis(axis); grazingScanItem()->selectUniformAxis(); } else { - grazingScanItem()->initListScan(axis, units, converter); + grazingScanItem()->initListScan(axis, units, frame); grazingScanItem()->selectListScan(); } } diff --git a/GUI/Model/Beam/SourceItems.h b/GUI/Model/Beam/SourceItems.h index 672ea955f36..7ea94158968 100644 --- a/GUI/Model/Beam/SourceItems.h +++ b/GUI/Model/Beam/SourceItems.h @@ -107,7 +107,7 @@ public: GrazingScanItem* grazingScanItem() const; BasicAxisItem* inclinationAxisItem() const; - void updateToData(const Scale& axis, QString units, const Frame& converter); + void updateToData(const Scale& axis, QString units, const Frame& frame); std::unique_ptr<Beam> createBeam() const; diff --git a/GUI/Model/Data/DataItemUtil.cpp b/GUI/Model/Data/DataItemUtil.cpp index ce1ce5e7434..32e708f34be 100644 --- a/GUI/Model/Data/DataItemUtil.cpp +++ b/GUI/Model/Data/DataItemUtil.cpp @@ -20,43 +20,43 @@ #include "Device/Histo/SimulationResult.h" #include "GUI/Model/Data/DataItem.h" -void GUI::Model::DataItemUtil::updateAxesTitle(DataItem* intensityItem, const Frame& converter) +void GUI::Model::DataItemUtil::updateAxesTitle(DataItem* intensityItem, const Frame& frame) { - intensityItem->setXaxisTitle(QString::fromStdString(converter.axis(0).axisName())); - if (converter.rank() > 1) - intensityItem->setYaxisTitle(QString::fromStdString(converter.axis(1).axisName())); + intensityItem->setXaxisTitle(QString::fromStdString(frame.axis(0).axisName())); + if (frame.rank() > 1) + intensityItem->setYaxisTitle(QString::fromStdString(frame.axis(1).axisName())); } //! Updates axes of Datafield in IntensityData item to correspond with axes units selection. //! InstrumentItem is used to get domain's detector map for given units. -void GUI::Model::DataItemUtil::updateDataAxes(DataItem* dataItem, const Frame& converter) +void GUI::Model::DataItemUtil::updateDataAxes(DataItem* dataItem, const Frame& frame) { ASSERT(dataItem); const Datafield* oldData = dataItem->c_field(); if (!oldData) return; - auto newData = std::make_unique<Datafield>(converter.clonedAxes(), oldData->flatVector(), + auto newData = std::make_unique<Datafield>(frame.clonedAxes(), oldData->flatVector(), oldData->errorSigmas()); dataItem->setDatafield(newData.release()); dataItem->setAxesRangeToData(); - updateAxesTitle(dataItem, converter); + updateAxesTitle(dataItem, frame); } -void GUI::Model::DataItemUtil::createDefaultDetectorMap(DataItem* dataItem, const Frame& converter) +void GUI::Model::DataItemUtil::createDefaultDetectorMap(DataItem* dataItem, const Frame& frame) { - auto output_data = std::make_unique<Datafield>(converter.clonedAxes()); + auto output_data = std::make_unique<Datafield>(frame.clonedAxes()); dataItem->setDatafield(output_data.release()); - updateAxesTitle(dataItem, converter); + updateAxesTitle(dataItem, frame); } void GUI::Model::DataItemUtil::setResults(DataItem* dataItem, const SimulationResult& result) { if (dataItem->c_field() == nullptr) { - const auto& converter = result.converter(); - updateAxesTitle(dataItem, converter); + const auto& frame = result.frame(); + updateAxesTitle(dataItem, frame); } - dataItem->setDatafield(new Datafield(result.converter().clonedAxes(), result.flatVector())); + dataItem->setDatafield(new Datafield(result.frame().clonedAxes(), result.flatVector())); } diff --git a/GUI/Model/Data/DataItemUtil.h b/GUI/Model/Data/DataItemUtil.h index 45f018b360e..dd857014ac5 100644 --- a/GUI/Model/Data/DataItemUtil.h +++ b/GUI/Model/Data/DataItemUtil.h @@ -28,13 +28,13 @@ class SimulationResult; namespace GUI::Model::DataItemUtil { //! Updates axes' titles -void updateAxesTitle(DataItem* intensityItem, const Frame& converter); +void updateAxesTitle(DataItem* intensityItem, const Frame& frame); //! Updates axes of Datafield in IntensityData item -void updateDataAxes(DataItem* dataItem, const Frame& converter); +void updateDataAxes(DataItem* dataItem, const Frame& frame); //! Creates zero-value intensity map with given coordinate system -void createDefaultDetectorMap(DataItem* dataItem, const Frame& converter); +void createDefaultDetectorMap(DataItem* dataItem, const Frame& frame); //! Sets simulation results into the DataItem void setResults(DataItem* dataItem, const SimulationResult& result); diff --git a/GUI/Model/Device/InstrumentItems.cpp b/GUI/Model/Device/InstrumentItems.cpp index 0d31a7bb300..b02207acee9 100644 --- a/GUI/Model/Device/InstrumentItems.cpp +++ b/GUI/Model/Device/InstrumentItems.cpp @@ -372,8 +372,8 @@ void SpecularInstrumentItem::updateToRealData(const RealItem* item) throw std::runtime_error("Specular instrument type is incompatible with passed data shape"); const auto& data = item->nativeDatafield()->axis(0); - std::unique_ptr<const Frame> converter = createCoordSystem(); - scanItem()->updateToData(data, item->nativeDataUnits(), *converter); + std::unique_ptr<const Frame> frame = makeFrame(); + scanItem()->updateToData(data, item->nativeDataUnits(), *frame); } bool SpecularInstrumentItem::alignedWith(const RealItem* item) const @@ -406,7 +406,7 @@ bool SpecularInstrumentItem::alignedWith(const RealItem* item) const return *instrumentAxis == native_axis; } -std::unique_ptr<const Frame> SpecularInstrumentItem::createCoordSystem() const +std::unique_ptr<const Frame> SpecularInstrumentItem::makeFrame() const { auto* axis_item = scanItem()->inclinationAxisItem(); @@ -429,8 +429,8 @@ ISimulation* SpecularInstrumentItem::createSimulation(const MultiLayer& sample) { BasicAxisItem* const axis_item = scanItem()->inclinationAxisItem(); - const auto converter = createCoordSystem(); - const Scale& ax = converter->axis(0); + const auto frame = makeFrame(); + const Scale& ax = frame->axis(0); std::unique_ptr<Scale> axis = axis_item->itemToAxis(Units::deg, ax); std::unique_ptr<IBeamScan> scan = createScan(*axis); @@ -511,7 +511,7 @@ void DepthprobeInstrumentItem::updateToRealData(const RealItem*) ASSERT(false); } -std::unique_ptr<const Frame> DepthprobeInstrumentItem::createCoordSystem() const +std::unique_ptr<const Frame> DepthprobeInstrumentItem::makeFrame() const { // TODO the approach to changing units should be changed // https://jugit.fz-juelich.de/mlz/bornagain/-/issues/478 @@ -611,7 +611,7 @@ void OffspecInstrumentItem::updateToRealData(const RealItem* dataItem) detectorItem()->setYSize(data_shape[1]); } -std::unique_ptr<const Frame> OffspecInstrumentItem::createCoordSystem() const +std::unique_ptr<const Frame> OffspecInstrumentItem::makeFrame() const { BasicAxisItem* const axis_item = scanItem()->inclinationAxisItem(); std::unique_ptr<Scale> axis = axis_item->itemToRegularAxis(Units::deg); @@ -714,7 +714,7 @@ void GISASInstrumentItem::updateToRealData(const RealItem* item) detectorItem()->setYSize(data_shape[1]); } -std::unique_ptr<const Frame> GISASInstrumentItem::createCoordSystem() const +std::unique_ptr<const Frame> GISASInstrumentItem::makeFrame() const { std::unique_ptr<const Frame> result; result.reset(normalDetector()->scatteringCoords()); diff --git a/GUI/Model/Device/InstrumentItems.h b/GUI/Model/Device/InstrumentItems.h index 0848fdc95b1..81e2a5a4038 100644 --- a/GUI/Model/Device/InstrumentItems.h +++ b/GUI/Model/Device/InstrumentItems.h @@ -57,7 +57,7 @@ public: virtual bool alignedWith(const RealItem* item) const; - virtual std::unique_ptr<const Frame> createCoordSystem() const = 0; + virtual std::unique_ptr<const Frame> makeFrame() const = 0; virtual ISimulation* createSimulation(const MultiLayer& sample) const = 0; @@ -157,7 +157,7 @@ public: std::vector<int> shape() const override; void updateToRealData(const RealItem* item) override; bool alignedWith(const RealItem* item) const override; - std::unique_ptr<const Frame> createCoordSystem() const override; + std::unique_ptr<const Frame> makeFrame() const override; ISimulation* createSimulation(const MultiLayer& sample) const override; void writeTo(QXmlStreamWriter* w) const override; @@ -172,7 +172,7 @@ public: QString instrumentType() const override { return "Depth probe"; } std::vector<int> shape() const override; void updateToRealData(const RealItem* item) override; - std::unique_ptr<const Frame> createCoordSystem() const override; + std::unique_ptr<const Frame> makeFrame() const override; ISimulation* createSimulation(const MultiLayer& sample) const override; void writeTo(QXmlStreamWriter* w) const override; void readFrom(QXmlStreamReader* r) override; @@ -191,7 +191,7 @@ public: QString instrumentType() const override { return "Off specular"; } std::vector<int> shape() const override; void updateToRealData(const RealItem* item) override; - std::unique_ptr<const Frame> createCoordSystem() const override; + std::unique_ptr<const Frame> makeFrame() const override; ISimulation* createSimulation(const MultiLayer& sample) const override; void writeTo(QXmlStreamWriter* w) const override; void readFrom(QXmlStreamReader* r) override; @@ -210,7 +210,7 @@ public: QString instrumentType() const override { return "GISAS"; } std::vector<int> shape() const override; void updateToRealData(const RealItem* item) override; - std::unique_ptr<const Frame> createCoordSystem() const override; + std::unique_ptr<const Frame> makeFrame() const override; ISimulation* createSimulation(const MultiLayer& sample) const override; void writeTo(QXmlStreamWriter* w) const override; void readFrom(QXmlStreamReader* r) override; diff --git a/GUI/Model/Device/InstrumentNotifier.cpp b/GUI/Model/Device/InstrumentNotifier.cpp index 2111eaa3498..deb64d79e0f 100644 --- a/GUI/Model/Device/InstrumentNotifier.cpp +++ b/GUI/Model/Device/InstrumentNotifier.cpp @@ -40,8 +40,8 @@ void InstrumentNotifier::notifyWavelengthDistributionChanged() // Update values in pointwise axis. This is necessary after a change of the mean wavelength. if (auto* iiI = dynamic_cast<SpecularInstrumentItem*>(m_instrumentItem)) { if (auto* pw = dynamic_cast<PointwiseAxisItem*>(iiI->scanItem()->inclinationAxisItem())) { - std::unique_ptr<const Frame> converter = m_instrumentItem->createCoordSystem(); - pw->updateAxIndicators(*converter); + std::unique_ptr<const Frame> frame = m_instrumentItem->makeFrame(); + pw->updateAxIndicators(*frame); } } diff --git a/GUI/Model/Job/JobItem.cpp b/GUI/Model/Job/JobItem.cpp index 9af5fc0da96..e6efb5d200a 100644 --- a/GUI/Model/Job/JobItem.cpp +++ b/GUI/Model/Job/JobItem.cpp @@ -315,9 +315,9 @@ DataItem* JobItem::createDiffDataItem() // TODO // update axes labels - const auto converter = instrumentItem()->createCoordSystem(); - ASSERT(converter); - GUI::Model::DataItemUtil::updateAxesTitle(diffDataItem(), *converter); + const auto frame = instrumentItem()->makeFrame(); + ASSERT(frame); + GUI::Model::DataItemUtil::updateAxesTitle(diffDataItem(), *frame); if (isSpecularJob()) dynamic_cast<SpecularDataItem*>(diffDataItem())->setDiffPlotStyle(); @@ -363,7 +363,7 @@ void JobItem::adjustReaDataToJobInstrument() if (instrumentItem()->is<GISASInstrumentItem>()) { // Temporary conversion of real units to degrees before copying masks to instrument. // It is not clear why we need to do this ... and whether it still works - const auto converter = instrumentItem()->createCoordSystem(); + const auto frame = instrumentItem()->makeFrame(); importMasksFromRealItem(); // Copy masks and ROI from RealItem on board of instrument. cropRealData(); // Crop RealItem to the region of interest. @@ -388,11 +388,11 @@ void JobItem::cropRealData() std::unique_ptr<Datafield> origData(intensityItem->c_field()->clone()); - const auto converter = iiI->createCoordSystem(); - ASSERT(converter); + const auto frame = iiI->makeFrame(); + ASSERT(frame); // (re)create zero-valued Datafield. Axes are derived from the current units - GUI::Model::DataItemUtil::createDefaultDetectorMap(intensityItem, *converter); + GUI::Model::DataItemUtil::createDefaultDetectorMap(intensityItem, *frame); iiI->normalDetector()->iterateOverNonMaskedPoints([&](IDetector::const_iterator it) { Datafield* cropped_data = intensityItem->p_field(); diff --git a/Sim/Fitting/SimDataPair.cpp b/Sim/Fitting/SimDataPair.cpp index b83b33f3785..304018b82bd 100644 --- a/Sim/Fitting/SimDataPair.cpp +++ b/Sim/Fitting/SimDataPair.cpp @@ -122,18 +122,18 @@ void SimDataPair::execSimulation(const mumufit::Parameters& params) m_user_weights = std::make_unique<SimulationResult>(convertData(*sim2d, *m_raw_user_weights)); } else { - const Frame& converter = m_sim_data->converter(); - m_exp_data = std::make_unique<SimulationResult>(*m_raw_data, converter.clone()); - m_user_weights = std::make_unique<SimulationResult>(*m_raw_user_weights, converter.clone()); + const Frame& frame = m_sim_data->frame(); + m_exp_data = std::make_unique<SimulationResult>(*m_raw_data, frame.clone()); + m_user_weights = std::make_unique<SimulationResult>(*m_raw_user_weights, frame.clone()); } if (sim2d && containsUncertainties()) m_uncertainties = std::make_unique<SimulationResult>(convertData(*sim2d, *m_raw_uncertainties)); else { - const Frame& converter = m_sim_data->converter(); - auto dummy_array = std::make_unique<Datafield>(converter.clonedAxes()); - m_uncertainties = std::make_unique<SimulationResult>(*dummy_array, converter.clone()); + const Frame& frame = m_sim_data->frame(); + auto dummy_array = std::make_unique<Datafield>(frame.clonedAxes()); + m_uncertainties = std::make_unique<SimulationResult>(*dummy_array, frame.clone()); } } diff --git a/Tests/Unit/GUI/TestAutosaveController.cpp b/Tests/Unit/GUI/TestAutosaveController.cpp index d0ee7e968cb..3c9056de368 100644 --- a/Tests/Unit/GUI/TestAutosaveController.cpp +++ b/Tests/Unit/GUI/TestAutosaveController.cpp @@ -118,10 +118,9 @@ TEST_F(TestAutosaveController, autosaveEnabled) RealItem* realData = UTest::GUI::createRealData("TestData", *document->realModel()); DataItem* intensityItem = realData->dataItem(); intensityItem->setSaveInBackground(false); - const auto converter = - document->instrumentModel()->instrument2DItems().front()->createCoordSystem(); - ASSERT_TRUE(converter); - GUI::Model::DataItemUtil::createDefaultDetectorMap(intensityItem, *converter); + const auto frame = document->instrumentModel()->instrument2DItems().front()->makeFrame(); + ASSERT_TRUE(frame); + GUI::Model::DataItemUtil::createDefaultDetectorMap(intensityItem, *frame); document->clearModified(); EXPECT_FALSE(document->isModified()); diff --git a/Tests/Unit/GUI/TestLinkInstrument.cpp b/Tests/Unit/GUI/TestLinkInstrument.cpp index 778738b1687..0e157da8491 100644 --- a/Tests/Unit/GUI/TestLinkInstrument.cpp +++ b/Tests/Unit/GUI/TestLinkInstrument.cpp @@ -38,9 +38,9 @@ TEST(TestLinkInstrument, canLinkToInstrument) // populating real data model, setting intensity data RealItem* realData = UTest::GUI::createRealData("RealData", *document.realModel()); - const auto converter = instrument->createCoordSystem(); - ASSERT_TRUE(converter); - GUI::Model::DataItemUtil::createDefaultDetectorMap(realData->dataItem(), *converter); + const auto frame = instrument->makeFrame(); + ASSERT_TRUE(frame); + GUI::Model::DataItemUtil::createDefaultDetectorMap(realData->dataItem(), *frame); ASSERT_TRUE( document.linkInstrumentManager()->canLinkDataToInstrument(realData, identifier, nullptr)); diff --git a/Tests/Unit/GUI/TestProjectDocument.cpp b/Tests/Unit/GUI/TestProjectDocument.cpp index d6eb9832f20..394bbbf9a2e 100644 --- a/Tests/Unit/GUI/TestProjectDocument.cpp +++ b/Tests/Unit/GUI/TestProjectDocument.cpp @@ -78,10 +78,9 @@ TEST_F(TestProjectDocument, projectDocumentWithData) RealItem* realData = UTest::GUI::createRealData("TestData", *document.realModel()); ASSERT(realData); DataItem* intensityItem = realData->dataItem(); - const auto converter = - document.instrumentModel()->instrument2DItems().front()->createCoordSystem(); - ASSERT_TRUE(converter); - GUI::Model::DataItemUtil::createDefaultDetectorMap(intensityItem, *converter); + const auto frame = document.instrumentModel()->instrument2DItems().front()->makeFrame(); + ASSERT_TRUE(frame); + GUI::Model::DataItemUtil::createDefaultDetectorMap(intensityItem, *frame); intensityItem->setSaveInBackground(false); document.setProjectDir(projectDir); -- GitLab