diff --git a/Device/Histo/SimulationResult.cpp b/Device/Histo/SimulationResult.cpp index ff51893f389e0809ab4e98dcad88ce6ad673184c..2ee7cfa70cbdc88e4f12bc08af36c548b7cd1284 100644 --- a/Device/Histo/SimulationResult.cpp +++ b/Device/Histo/SimulationResult.cpp @@ -17,11 +17,9 @@ #include "Base/Axis/Scale.h" #include "Base/Util/Assert.h" -SimulationResult::SimulationResult(const Datafield& data, const Frame* coords) - : Datafield(coords, data.flatVector(), data.errorSigmas()) +SimulationResult::SimulationResult(const Datafield& data) + : Datafield(data) { - ASSERT(coords); - ASSERT(data.rank() == coords->rank()); } SimulationResult::SimulationResult(const SimulationResult& other) diff --git a/Device/Histo/SimulationResult.h b/Device/Histo/SimulationResult.h index 7099760b4b9e7f2fe78e0c2e68eb54df854ec609..782a2d21a0b0aa22df6a50e71d1bc43b386792a9 100644 --- a/Device/Histo/SimulationResult.h +++ b/Device/Histo/SimulationResult.h @@ -24,7 +24,7 @@ class Frame; class SimulationResult : public Datafield { public: - SimulationResult(const Datafield& data, const Frame* coords); + SimulationResult(const Datafield& data); SimulationResult(const SimulationResult& other); SimulationResult(SimulationResult&& other) noexcept; diff --git a/Sim/Fitting/SimDataPair.cpp b/Sim/Fitting/SimDataPair.cpp index a7f941b6f01e4f9c87c9507c102591efd6897bcd..781f82a10f8b81f7c00f554f179583b850d37d76 100644 --- a/Sim/Fitting/SimDataPair.cpp +++ b/Sim/Fitting/SimDataPair.cpp @@ -69,7 +69,7 @@ SimulationResult convertData(const ScatteringSimulation& simulation, const Dataf throw std::runtime_error( "FitObject::init_dataset: Detector and experimental data have different shape"); - return SimulationResult(*roi_data, coordSystem); + return SimulationResult(*roi_data); } } // namespace @@ -122,9 +122,8 @@ void SimDataPair::execSimulation(const mumufit::Parameters& params) m_user_weights = std::make_unique<SimulationResult>(convertData(*sim2d, *m_raw_user_weights)); } else { - 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()); + m_exp_data = std::make_unique<SimulationResult>(*m_raw_data); + m_user_weights = std::make_unique<SimulationResult>(*m_raw_user_weights); } if (sim2d && containsUncertainties()) @@ -133,7 +132,7 @@ void SimDataPair::execSimulation(const mumufit::Parameters& params) else { 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()); + m_uncertainties = std::make_unique<SimulationResult>(*dummy_array); } } @@ -205,9 +204,7 @@ SimulationResult SimDataPair::relativeDifference() const for (size_t i = 0; i < N; ++i) data[i] = Numeric::relativeDifference((*m_sim_data)[i], (*m_exp_data)[i]); - const Frame* f = m_sim_data->frame().clone(); - Datafield df(f, data); - return {df, f}; + return {Datafield(m_sim_data->frame().clone(), data)}; } SimulationResult SimDataPair::absoluteDifference() const @@ -222,9 +219,7 @@ SimulationResult SimDataPair::absoluteDifference() const for (size_t i = 0; i < N; ++i) data[i] = std::abs((*m_sim_data)[i] - (*m_exp_data)[i]); - const Frame* f = m_sim_data->frame().clone(); - Datafield df(f, data); - return {df, f}; + return {Datafield(m_sim_data->frame().clone(), data)}; } void SimDataPair::validate() const diff --git a/Sim/Simulation/DepthprobeSimulation.cpp b/Sim/Simulation/DepthprobeSimulation.cpp index c392812e34696a9ed36262c2d6a34f1e31ee9943..3cc8bcc5479cf22ec2df09565143427ff35c1471 100644 --- a/Sim/Simulation/DepthprobeSimulation.cpp +++ b/Sim/Simulation/DepthprobeSimulation.cpp @@ -178,5 +178,5 @@ SimulationResult DepthprobeSimulation::packResult() std::vector<const Scale*> axes{m_scan->coordinateAxis()->clone(), m_z_axis->clone()}; auto data = std::make_unique<Datafield>(std::move(axes), m_cache); - return {*data, simCoordSystem()}; + return {*data}; } diff --git a/Sim/Simulation/OffspecSimulation.cpp b/Sim/Simulation/OffspecSimulation.cpp index db5e5e2830edd93e6197ca6f3a23958ee923df11..781d25c2e5f93baaa12d855e0858c47721110b34 100644 --- a/Sim/Simulation/OffspecSimulation.cpp +++ b/Sim/Simulation/OffspecSimulation.cpp @@ -149,5 +149,5 @@ SimulationResult OffspecSimulation::packResult() intensity_map[j * ny + i % ny] += detector_image[i]; } - return {intensity_map, simCoordSystem()}; + return {intensity_map}; } diff --git a/Sim/Simulation/ScatteringSimulation.cpp b/Sim/Simulation/ScatteringSimulation.cpp index 200ea1fd1b5177fe8f804e26a1bdc048ec72a816..28c5d931c32c78cabceecb702edec2aa7d575dd1 100644 --- a/Sim/Simulation/ScatteringSimulation.cpp +++ b/Sim/Simulation/ScatteringSimulation.cpp @@ -129,5 +129,5 @@ SimulationResult ScatteringSimulation::packResult() [&](const auto it) { detectorMap[it.roiIndex()] = m_cache[elementIndex++]; }); m_detector->applyDetectorResolution(&detectorMap); - return {detectorMap, simCoordSystem()}; + return {detectorMap}; } diff --git a/Sim/Simulation/SpecularSimulation.cpp b/Sim/Simulation/SpecularSimulation.cpp index 253803885efe8aec30718d3323cb05538971a19d..dbab73e1ad520fc70f0f18336758f0d06cd4476d 100644 --- a/Sim/Simulation/SpecularSimulation.cpp +++ b/Sim/Simulation/SpecularSimulation.cpp @@ -106,5 +106,5 @@ SimulationResult SpecularSimulation::packResult() } Datafield data({m_scan->coordinateAxis()->clone()}, vec); - return {data, simCoordSystem()}; + return {data}; } diff --git a/auto/Wrap/libBornAgainDevice.py b/auto/Wrap/libBornAgainDevice.py index 23cbf40f1fc41502f2ad8ef7d69611144ef5028b..faefe2cbfd7f42a928a4d293266f51ab839321a9 100644 --- a/auto/Wrap/libBornAgainDevice.py +++ b/auto/Wrap/libBornAgainDevice.py @@ -3042,7 +3042,7 @@ class SimulationResult(Datafield): def __init__(self, *args): r""" - __init__(SimulationResult self, Datafield data, Frame coords) -> SimulationResult + __init__(SimulationResult self, Datafield data) -> SimulationResult __init__(SimulationResult self, SimulationResult other) -> SimulationResult __init__(SimulationResult self, SimulationResult other) -> SimulationResult """ diff --git a/auto/Wrap/libBornAgainDevice_wrap.cpp b/auto/Wrap/libBornAgainDevice_wrap.cpp index 361809357ce673582da91723fe56f958bd3863b4..6ec966e32b282fac9795a281cab2d15553fda37b 100644 --- a/auto/Wrap/libBornAgainDevice_wrap.cpp +++ b/auto/Wrap/libBornAgainDevice_wrap.cpp @@ -36933,14 +36933,11 @@ fail: SWIGINTERN PyObject *_wrap_new_SimulationResult__SWIG_0(PyObject *self, Py_ssize_t nobjs, PyObject **swig_obj) { PyObject *resultobj = 0; Datafield *arg1 = 0 ; - Frame *arg2 = (Frame *) 0 ; void *argp1 = 0 ; int res1 = 0 ; - void *argp2 = 0 ; - int res2 = 0 ; SimulationResult *result = 0 ; - if ((nobjs < 2) || (nobjs > 2)) SWIG_fail; + if ((nobjs < 1) || (nobjs > 1)) SWIG_fail; res1 = SWIG_ConvertPtr(swig_obj[0], &argp1, SWIGTYPE_p_Datafield, 0 | 0); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "new_SimulationResult" "', argument " "1"" of type '" "Datafield const &""'"); @@ -36949,12 +36946,7 @@ SWIGINTERN PyObject *_wrap_new_SimulationResult__SWIG_0(PyObject *self, Py_ssize SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "new_SimulationResult" "', argument " "1"" of type '" "Datafield const &""'"); } arg1 = reinterpret_cast< Datafield * >(argp1); - res2 = SWIG_ConvertPtr(swig_obj[1], &argp2,SWIGTYPE_p_Frame, 0 | 0 ); - if (!SWIG_IsOK(res2)) { - SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "new_SimulationResult" "', argument " "2"" of type '" "Frame const *""'"); - } - arg2 = reinterpret_cast< Frame * >(argp2); - result = (SimulationResult *)new SimulationResult((Datafield const &)*arg1,(Frame const *)arg2); + result = (SimulationResult *)new SimulationResult((Datafield const &)*arg1); resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_SimulationResult, SWIG_POINTER_NEW | 0 ); return resultobj; fail: @@ -37018,11 +37010,11 @@ fail: SWIGINTERN PyObject *_wrap_new_SimulationResult(PyObject *self, PyObject *args) { Py_ssize_t argc; - PyObject *argv[3] = { + PyObject *argv[2] = { 0 }; - if (!(argc = SWIG_Python_UnpackTuple(args, "new_SimulationResult", 0, 2, argv))) SWIG_fail; + if (!(argc = SWIG_Python_UnpackTuple(args, "new_SimulationResult", 0, 1, argv))) SWIG_fail; --argc; if (argc == 1) { int _v = 0; @@ -37041,24 +37033,19 @@ SWIGINTERN PyObject *_wrap_new_SimulationResult(PyObject *self, PyObject *args) return _wrap_new_SimulationResult__SWIG_2(self, argc, argv); } } - if (argc == 2) { + if (argc == 1) { int _v = 0; int res = SWIG_ConvertPtr(argv[0], 0, SWIGTYPE_p_Datafield, SWIG_POINTER_NO_NULL | 0); _v = SWIG_CheckState(res); if (_v) { - void *vptr = 0; - int res = SWIG_ConvertPtr(argv[1], &vptr, SWIGTYPE_p_Frame, 0); - _v = SWIG_CheckState(res); - if (_v) { - return _wrap_new_SimulationResult__SWIG_0(self, argc, argv); - } + return _wrap_new_SimulationResult__SWIG_0(self, argc, argv); } } fail: SWIG_Python_RaiseOrModifyTypeError("Wrong number or type of arguments for overloaded function 'new_SimulationResult'.\n" " Possible C/C++ prototypes are:\n" - " SimulationResult::SimulationResult(Datafield const &,Frame const *)\n" + " SimulationResult::SimulationResult(Datafield const &)\n" " SimulationResult::SimulationResult(SimulationResult const &)\n" " SimulationResult::SimulationResult(SimulationResult &&)\n"); return 0; @@ -38353,7 +38340,7 @@ static PyMethodDef SwigMethods[] = { { "writeDatafield", _wrap_writeDatafield, METH_VARARGS, "writeDatafield(Datafield data, std::string const & file_name)"}, { "dataMatchesFile", _wrap_dataMatchesFile, METH_VARARGS, "dataMatchesFile(Datafield data, std::string const & refFileName, double tol) -> bool"}, { "new_SimulationResult", _wrap_new_SimulationResult, METH_VARARGS, "\n" - "SimulationResult(Datafield data, Frame coords)\n" + "SimulationResult(Datafield data)\n" "SimulationResult(SimulationResult other)\n" "new_SimulationResult(SimulationResult other) -> SimulationResult\n" ""},