20 : m_data(data.clone()), m_unit_converter(unit_converter.clone())
28 throw std::runtime_error(
"Error in SimulationResult(const SimulationResult& other): "
35 : m_data(
std::move(other.m_data)), m_unit_converter(
std::move(other.m_unit_converter))
42 throw std::runtime_error(
"Error in SimulationResult(const SimulationResult& other): "
52 m_data.reset(other.m_data.release());
60 throw std::runtime_error(
61 "Error in SimulationResult::data:Attempt to access non-initialized data");
68 throw std::runtime_error(
"Error in SimulationResult::histogram2d: "
69 "dimension of data is not 2. Please use axis(), array() and "
70 "data() functions for 1D data.");
71 auto P_data =
data(units);
79 std::vector<AxisInfo> result;
81 for (
size_t i = 0; i < dim; ++i) {
85 result.push_back(info);
117 for (
size_t i = 0; i <
size(); ++i)
118 if ((*
m_data)[i] > result)
123 #ifdef BORNAGAIN_PYTHON
127 throw std::runtime_error(
128 "Error in SimulationResult::array: attempt to access non-initialized data");
135 return axis(0, units);
141 throw std::runtime_error(
142 "Error in SimulationResult::axis: no axis corresponds to passed index.");
144 return axis->binCenters();
150 throw std::runtime_error(
"Error in SimulationResults::checkDimensions(): "
151 "dimensions of data and unit converter don't match");
#define ASSERT(condition)
Defines class Histogram2D.
Defines class SimulationResult.
Two dimensional histogram.
Interface to provide axis translations to different units for simulation output.
Wrapper around OutputData<double> that also provides unit conversions.
SimulationResult & operator=(const SimulationResult &other)
std::vector< double > axis(Axes::Units units=Axes::Units::DEFAULT) const
std::unique_ptr< IUnitConverter > m_unit_converter
void checkDimensions() const
const IUnitConverter & converter() const
Returns underlying unit converter.
double & operator[](size_t i)
Data element access.
std::vector< AxisInfo > axisInfo(Axes::Units units=Axes::Units::DEFAULT) const
Provide AxisInfo for each axis and the given units.
std::unique_ptr< OutputData< double > > m_data
SimulationResult()=default
Histogram2D * histogram2d(Axes::Units units=Axes::Units::DEFAULT) const
PyObject * array(Axes::Units units=Axes::Units::DEFAULT) const
returns intensity data as Python numpy array
std::unique_ptr< OutputData< double > > data(Axes::Units units=Axes::Units::DEFAULT) const
Information about an axis in specific units.