20 : mP_data(data.clone()), mP_unit_converter(unit_converter.clone())
28 throw std::runtime_error(
"Error in SimulationResult(const SimulationResult& other): "
35 : mP_data(std::move(other.mP_data)), mP_unit_converter(std::move(other.mP_unit_converter))
42 throw std::runtime_error(
"Error in SimulationResult(const SimulationResult& other): "
52 mP_data.reset(other.mP_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);
93 throw std::runtime_error(
94 "Error in SimulationResult::converter: unit converter was not initialized");
102 throw std::runtime_error(
"Error in SimulationResult::operator[]: "
103 "no data initialized");
110 throw std::runtime_error(
"Error in SimulationResult::operator[]: "
111 "no data initialized");
119 #ifdef BORNAGAIN_PYTHON
123 throw std::runtime_error(
124 "Error in SimulationResult::array: attempt to access non-initialized data");
131 return axis(0, units);
137 throw std::runtime_error(
138 "Error in SimulationResult::axis: no axis corresponds to passed index.");
140 return axis->getBinCenters();
146 throw std::runtime_error(
"Error in SimulationResults::checkDimensions(): "
147 "dimensions of data and unit converter don't match");
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< OutputData< double > > mP_data
void checkDimensions() const
const IUnitConverter & converter() const
Returns underlying unit converter.
std::unique_ptr< IUnitConverter > mP_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.
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.