Skip to content
Snippets Groups Projects
Commit d3d13d84 authored by Van Herck, Walter's avatar Van Herck, Walter
Browse files

Provide export to Histogram2D from SimulationResult and rely on...

Provide export to Histogram2D from SimulationResult and rely on SimulationResult to export to OutputData type in GISASSimulation
parent 9253618b
No related branches found
No related tags found
No related merge requests found
...@@ -13,6 +13,7 @@ ...@@ -13,6 +13,7 @@
// ************************************************************************** // // ************************************************************************** //
#include "SimulationResult.h" #include "SimulationResult.h"
#include "Histogram2D.h"
#include "FixedBinAxis.h" #include "FixedBinAxis.h"
#include "OutputData.h" #include "OutputData.h"
...@@ -59,6 +60,15 @@ OutputData<double>* SimulationResult::data(AxesUnits units_type) const ...@@ -59,6 +60,15 @@ OutputData<double>* SimulationResult::data(AxesUnits units_type) const
return result.release(); return result.release();
} }
Histogram2D* SimulationResult::histogram2d(AxesUnits units_type) const
{
if (mP_data->getRank() != 2 || mP_unit_converter->dimension() != 2)
throw std::runtime_error("Error in SimulationResult::histogram2d: "
"dimension of data is not 2");
std::unique_ptr<OutputData<double>> P_data(data(units_type));
return new Histogram2D(*P_data);
}
PyObject* SimulationResult::array() const PyObject* SimulationResult::array() const
{ {
return mP_data->getArray(); return mP_data->getArray();
......
...@@ -26,6 +26,7 @@ typedef _object PyObject; ...@@ -26,6 +26,7 @@ typedef _object PyObject;
#endif #endif
#endif #endif
class Histogram2D;
class IAxis; class IAxis;
template<class T> class OutputData; template<class T> class OutputData;
class IUnitConverter; class IUnitConverter;
...@@ -45,6 +46,7 @@ public: ...@@ -45,6 +46,7 @@ public:
SimulationResult& operator=(SimulationResult&& other); SimulationResult& operator=(SimulationResult&& other);
OutputData<double>* data(AxesUnits units_type = AxesUnits::DEFAULT) const; OutputData<double>* data(AxesUnits units_type = AxesUnits::DEFAULT) const;
Histogram2D* histogram2d(AxesUnits units_type = AxesUnits::DEFAULT) const;
//! returns data as Python numpy array //! returns data as Python numpy array
#ifdef BORNAGAIN_PYTHON #ifdef BORNAGAIN_PYTHON
......
...@@ -57,7 +57,8 @@ size_t GISASSimulation::numberOfSimulationElements() const ...@@ -57,7 +57,8 @@ size_t GISASSimulation::numberOfSimulationElements() const
SimulationResult GISASSimulation::result() const SimulationResult GISASSimulation::result() const
{ {
auto data = std::unique_ptr<OutputData<double>>(getDetectorIntensity()); auto data = std::unique_ptr<OutputData<double>>(
m_instrument.createDetectorIntensity(m_sim_elements));
auto p_det = getInstrument().getDetector(); auto p_det = getInstrument().getDetector();
if (p_det) { if (p_det) {
auto p_spher_det = dynamic_cast<const SphericalDetector*>(p_det); auto p_spher_det = dynamic_cast<const SphericalDetector*>(p_det);
...@@ -77,9 +78,7 @@ SimulationResult GISASSimulation::result() const ...@@ -77,9 +78,7 @@ SimulationResult GISASSimulation::result() const
OutputData<double>* GISASSimulation::getDetectorIntensity(AxesUnits units_type) const OutputData<double>* GISASSimulation::getDetectorIntensity(AxesUnits units_type) const
{ {
std::unique_ptr<OutputData<double>> result( return result().data(units_type);
m_instrument.createDetectorIntensity(m_sim_elements, units_type));
return result.release();
} }
void GISASSimulation::setBeamParameters(double wavelength, double alpha_i, double phi_i) void GISASSimulation::setBeamParameters(double wavelength, double alpha_i, double phi_i)
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment