From 0329bab8da5629b64de2870762052db03acea4f6 Mon Sep 17 00:00:00 2001
From: Mikhail Svechnikov <m.svechnikov@fz-juelich.de>
Date: Tue, 16 Aug 2022 13:58:21 +0200
Subject: [PATCH] Datafield: fix constructors

---
 Device/Data/Datafield.cpp          | 15 ++++++++++-----
 Device/Data/Datafield.h            |  6 ++++--
 GUI/View/Loaders/QREDataLoader.cpp |  2 +-
 3 files changed, 15 insertions(+), 8 deletions(-)

diff --git a/Device/Data/Datafield.cpp b/Device/Data/Datafield.cpp
index e69a3fc42bc..40570824ac9 100644
--- a/Device/Data/Datafield.cpp
+++ b/Device/Data/Datafield.cpp
@@ -40,16 +40,21 @@ Datafield::Datafield(Frame* frame, const std::vector<double>& values, const std:
     , m_errSigmas(errSigmas)
 {
     ASSERT(m_values.size() == m_frame->size());
-    ASSERT(m_values.size() == m_errSigmas.size());
+    ASSERT(m_errSigmas.size()==0 || m_errSigmas.size() == m_values.size());
 }
 
-Datafield::Datafield(const std::vector<IAxis*>& axes, const std::vector<double>& vector)
-    : Datafield(new Frame(axes), vector)
+Datafield::Datafield(const std::vector<IAxis*>& axes)
+    : Datafield(new Frame(axes))
 {
 }
 
-Datafield::Datafield(const std::vector<IAxis*>& axes)
-    : Datafield(new Frame(axes))
+Datafield::Datafield(const std::vector<IAxis*>& axes, const std::vector<double>& values)
+    : Datafield(new Frame(axes), values)
+{
+}
+
+Datafield::Datafield(const std::vector<IAxis*>& axes, const std::vector<double>& values, const std::vector<double> &errSigmas)
+    : Datafield(new Frame(axes), values, errSigmas)
 {
 }
 
diff --git a/Device/Data/Datafield.h b/Device/Data/Datafield.h
index 3b6be4d7586..e89f7098438 100644
--- a/Device/Data/Datafield.h
+++ b/Device/Data/Datafield.h
@@ -38,8 +38,10 @@ public:
 
     //! Constructor that takes ownership of supplied axes.
     Datafield(const std::vector<IAxis*>& axes);
-    //! Constructor that takes ownership of supplied axes.
-    Datafield(const std::vector<IAxis*>& axes, const std::vector<double>& vector);
+    //! Constructor that takes ownership of supplied axes and initializes values.
+    Datafield(const std::vector<IAxis*>& axes, const std::vector<double>& values);
+    //! Constructor that takes ownership of supplied axes and initializes values and errorbars
+    Datafield(const std::vector<IAxis*>& axes, const std::vector<double>& values, const std::vector<double>& errSigmas);
 
     Datafield(const Datafield&) = delete;
     Datafield(Datafield&&) = default;
diff --git a/GUI/View/Loaders/QREDataLoader.cpp b/GUI/View/Loaders/QREDataLoader.cpp
index df796b827aa..974eecb0164 100644
--- a/GUI/View/Loaders/QREDataLoader.cpp
+++ b/GUI/View/Loaders/QREDataLoader.cpp
@@ -551,7 +551,7 @@ void QREDataLoader::datafieldFromParsingResult(RealItem* item) const
         for (auto lineNr : lineNumbers)
             eVec.push_back(m_importResult.eValues[lineNr]);
 
-    auto* oData = new Datafield({new PointwiseAxis("qVector", qVec)}, rVec);
+    auto* oData = new Datafield({new PointwiseAxis("qVector", qVec)}, rVec, eVec); // eVec can be empty
 
     // -- Replacement of item->setImportData(std::move(data));
     item->initNativeData();
-- 
GitLab