diff --git a/Device/Data/Datafield.cpp b/Device/Data/Datafield.cpp index 126e2c7c3b1ef35c29ebcb12ae152cd53a082f51..46b50179ca0ff40600d50fff52b523323e04324d 100644 --- a/Device/Data/Datafield.cpp +++ b/Device/Data/Datafield.cpp @@ -40,9 +40,19 @@ Datafield::Datafield(const Frame* frame, std::vector<double> values, std::vector { } +Datafield::Datafield(const Frame* frame) + : Datafield("", frame) +{ +} + Datafield::Datafield(std::vector<const Scale*> axes, std::vector<double> values, std::vector<double> errSigmas) - : Datafield("", new Frame(std::move(axes)), values, errSigmas) + : Datafield(new Frame(axes), values, errSigmas) +{ +} + +Datafield::Datafield(std::vector<const Scale*> axes) + : Datafield(new Frame(axes)) { } diff --git a/Device/Data/Datafield.h b/Device/Data/Datafield.h index 49b3cf98cc9a1df123104222dd70ea89de2c502f..d33f0d129808902f826551205c695020f7ca3924 100644 --- a/Device/Data/Datafield.h +++ b/Device/Data/Datafield.h @@ -35,13 +35,18 @@ public: Datafield(std::string title, const Frame* frame); //! Constructor that takes ownership of supplied frame and initializes values and errorbars - Datafield(const Frame* frame, std::vector<double> values = {}, - std::vector<double> errSigmas = {}); + Datafield(const Frame* frame, std::vector<double> values, std::vector<double> errSigmas = {}); + + //! Constructor that takes ownership of supplied frame + Datafield(const Frame* frame); //! Constructor that takes ownership of supplied axes and initializes values and errorbars - Datafield(std::vector<const Scale*> axes, std::vector<double> values = {}, + Datafield(std::vector<const Scale*> axes, std::vector<double> values, std::vector<double> errSigmas = {}); + //! Constructor that takes ownership of supplied axes + Datafield(std::vector<const Scale*> axes); + Datafield(const Datafield&); Datafield(Datafield&&) noexcept; virtual ~Datafield(); diff --git a/Sim/Simulation/ScatteringSimulation.cpp b/Sim/Simulation/ScatteringSimulation.cpp index 76466c87a08afbc6f1e741e503b74a38f45d280f..b5a98df0994b89eb4ed18148bf3d00ca9d7d4316 100644 --- a/Sim/Simulation/ScatteringSimulation.cpp +++ b/Sim/Simulation/ScatteringSimulation.cpp @@ -123,11 +123,11 @@ size_t ScatteringSimulation::nElements() const Datafield ScatteringSimulation::packResult() { - Datafield detectorMap(m_detector->createDetectorMap()); + Datafield result(m_detector->createDetectorMap()); size_t elementIndex = 0; m_detector->iterateOverNonMaskedPoints( - [&](const auto it) { detectorMap[it.roiIndex()] = m_cache[elementIndex++]; }); - m_detector->applyDetectorResolution(&detectorMap); + [&](const auto it) { result[it.roiIndex()] = m_cache[elementIndex++]; }); + m_detector->applyDetectorResolution(&result); - return {detectorMap}; + return result; } diff --git a/auto/Wrap/libBornAgainDevice.py b/auto/Wrap/libBornAgainDevice.py index f377f83041b1f85b7dffd20f43ec79adb2653d6b..3703418cccb74f77111307d55cc521729ecdeaae 100644 --- a/auto/Wrap/libBornAgainDevice.py +++ b/auto/Wrap/libBornAgainDevice.py @@ -2066,8 +2066,10 @@ class Datafield(object): r""" __init__(Datafield self, std::string title, Frame frame, vdouble1d_t values, vdouble1d_t errSigmas={}) -> Datafield __init__(Datafield self, std::string title, Frame frame) -> Datafield - __init__(Datafield self, Frame frame, vdouble1d_t values={}, vdouble1d_t errSigmas={}) -> Datafield - __init__(Datafield self, std::vector< Scale const *,std::allocator< Scale const * > > axes, vdouble1d_t values={}, vdouble1d_t errSigmas={}) -> Datafield + __init__(Datafield self, Frame frame, vdouble1d_t values, vdouble1d_t errSigmas={}) -> Datafield + __init__(Datafield self, Frame frame) -> Datafield + __init__(Datafield self, std::vector< Scale const *,std::allocator< Scale const * > > axes, vdouble1d_t values, vdouble1d_t errSigmas={}) -> Datafield + __init__(Datafield self, std::vector< Scale const *,std::allocator< Scale const * > > axes) -> Datafield __init__(Datafield self, Datafield arg2) -> Datafield __init__(Datafield self, Datafield arg2) -> Datafield """ diff --git a/auto/Wrap/libBornAgainDevice_wrap.cpp b/auto/Wrap/libBornAgainDevice_wrap.cpp index c41b0f18c179aab0e48b168d95b3486b0d4613cc..9f3c7e9a8d28e1b343c2d65a0c96c8cf0a5c7314 100644 --- a/auto/Wrap/libBornAgainDevice_wrap.cpp +++ b/auto/Wrap/libBornAgainDevice_wrap.cpp @@ -40924,8 +40924,10 @@ static PyMethodDef SwigMethods[] = { { "new_Datafield", _wrap_new_Datafield, METH_VARARGS, "\n" "Datafield(std::string title, Frame frame, vdouble1d_t values, vdouble1d_t errSigmas={})\n" "Datafield(std::string title, Frame frame)\n" - "Datafield(Frame frame, vdouble1d_t values={}, vdouble1d_t errSigmas={})\n" - "Datafield(std::vector< Scale const *,std::allocator< Scale const * > > axes, vdouble1d_t values={}, vdouble1d_t errSigmas={})\n" + "Datafield(Frame frame, vdouble1d_t values, vdouble1d_t errSigmas={})\n" + "Datafield(Frame frame)\n" + "Datafield(std::vector< Scale const *,std::allocator< Scale const * > > axes, vdouble1d_t values, vdouble1d_t errSigmas={})\n" + "Datafield(std::vector< Scale const *,std::allocator< Scale const * > > axes)\n" "Datafield(Datafield arg1)\n" "new_Datafield(Datafield arg1) -> Datafield\n" ""},