23 : m_data(data.clone())
24 , m_coordsys(coords.clone())
30 : m_data(data.clone())
45 : m_data(std::move(other.m_data))
46 , m_coordsys(std::move(other.m_coordsys))
61 m_data = std::move(other.m_data);
78 std::unique_ptr<Datafield> f(
datafield(units));
79 return f->flatVector();
114 std::unique_ptr<Datafield> data2(
m_data->normalizedToMaximum());
118 #ifdef BORNAGAIN_PYTHON
121 std::unique_ptr<Datafield> data(
m_coordsys->createConvertedData(*
m_data, units));
122 return data->npArray();
134 throw std::runtime_error(
135 "Error in SimulationResult::axis: no axis corresponds to passed index.");
136 auto axis =
m_coordsys->createConvertedAxis(i_axis, units);
137 return axis->binCenters();
Defines the macro ASSERT.
#define ASSERT(condition)
Defines and implements templated class Datafield.
Defines class SimulationResult.
Stores radiation power per bin.
Interface to provide axis translations to different units for simulation output.
Wrapper around Datafield that also provides unit conversions.
std::vector< double > flatVector(Coords units=Coords::UNDEFINED) const
SimulationResult & operator=(const SimulationResult &other)
const ICoordSystem & converter() const
Returns underlying unit converter.
SimulationResult relativeToMaximum() const
Returns modified SimulationResult: all intensities dvided by maximum intensity.
std::unique_ptr< const ICoordSystem > m_coordsys
PyObject * array(Coords units=Coords::UNDEFINED) const
Returns intensity data as Python numpy array.
std::pair< double, double > axisMinMax(size_t i, Coords units=Coords::UNDEFINED) const
std::string axisName(size_t i, Coords units=Coords::UNDEFINED) const
std::unique_ptr< Datafield > m_data
double & operator[](size_t i)
size_t rank() const
Data element access.
Datafield * datafield(Coords units=Coords::UNDEFINED) const
SimulationResult()=default
std::vector< double > convertedBinCenters(Coords units=Coords::UNDEFINED) const