BornAgain  1.19.79
Open-source research software to simulate and fit neutron and x-ray reflectometry and grazing-incidence small-angle scattering
SimulationResult Class Reference

Description

Wrapper around Datafield that also provides unit conversions.

Definition at line 29 of file SimulationResult.h.

Collaboration diagram for SimulationResult:
[legend]

Public Member Functions

 SimulationResult ()=default
 
 SimulationResult (const Datafield &data, const ICoordSystem &coords)
 
 SimulationResult (const Datafield &data, const ICoordSystem *&&coords)
 
 SimulationResult (const SimulationResult &other)
 
 SimulationResult (SimulationResult &&other)
 
 ~SimulationResult ()
 
PyObjectarray (Coords units=Coords::UNDEFINED) const
 Returns intensity data as Python numpy array. More...
 
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::vector< double > convertedBinCenters (Coords units=Coords::UNDEFINED) const
 
std::vector< double > convertedBinCenters (size_t i_axis, Coords units=Coords::UNDEFINED) const
 Returns axis coordinates as a numpy array. With no parameters given Returns coordinates of x-axis in default units. More...
 
const ICoordSystemconverter () const
 Returns underlying unit converter. More...
 
Datafielddatafield (Coords units=Coords::UNDEFINED) const
 
bool empty () const
 
std::vector< double > flatVector (Coords units=Coords::UNDEFINED) const
 
SimulationResultoperator= (const SimulationResult &other)
 
SimulationResultoperator= (SimulationResult &&other)
 
double & operator[] (size_t i)
 
const double & operator[] (size_t i) const
 
size_t rank () const
 Data element access. More...
 
SimulationResult relativeToMaximum () const
 Returns modified SimulationResult: all intensities dvided by maximum intensity. More...
 
void setTitle (const std::string &title)
 
size_t size () const
 
std::string title ()
 

Private Member Functions

void checkRank () const
 

Private Attributes

std::unique_ptr< const ICoordSystemm_coordsys
 
std::unique_ptr< Datafieldm_data
 
std::string m_title
 

Constructor & Destructor Documentation

◆ SimulationResult() [1/5]

SimulationResult::SimulationResult ( )
default

◆ SimulationResult() [2/5]

SimulationResult::SimulationResult ( const Datafield data,
const ICoordSystem coords 
)

Definition at line 22 of file SimulationResult.cpp.

23  : m_data(data.clone())
24  , m_coordsys(coords.clone())
25 {
26  checkRank();
27 }
Datafield * clone() const
Definition: Datafield.cpp:48
ICoordSystem * clone() const override=0
void checkRank() const
std::unique_ptr< const ICoordSystem > m_coordsys
std::unique_ptr< Datafield > m_data

References checkRank().

Here is the call graph for this function:

◆ SimulationResult() [3/5]

SimulationResult::SimulationResult ( const Datafield data,
const ICoordSystem *&&  coords 
)

Definition at line 29 of file SimulationResult.cpp.

30  : m_data(data.clone())
31  , m_coordsys(coords)
32 {
33  checkRank();
34 }

References checkRank().

Here is the call graph for this function:

◆ ~SimulationResult()

SimulationResult::~SimulationResult ( )
default

◆ SimulationResult() [4/5]

SimulationResult::SimulationResult ( const SimulationResult other)

Definition at line 38 of file SimulationResult.cpp.

39 {
40  m_data.reset(other.m_data->clone());
41  m_coordsys.reset(other.m_coordsys->clone());
42 }

References m_coordsys, and m_data.

◆ SimulationResult() [5/5]

SimulationResult::SimulationResult ( SimulationResult &&  other)

Definition at line 44 of file SimulationResult.cpp.

45  : m_data(std::move(other.m_data))
46  , m_coordsys(std::move(other.m_coordsys))
47 {
48 }

Member Function Documentation

◆ array()

PyObject * SimulationResult::array ( Coords  units = Coords::UNDEFINED) const

Returns intensity data as Python numpy array.

Definition at line 119 of file SimulationResult.cpp.

120 {
121  std::unique_ptr<Datafield> data(m_coordsys->createConvertedData(*m_data, units));
122  return data->npArray();
123 }

References m_coordsys, and m_data.

◆ axisMinMax()

std::pair< double, double > SimulationResult::axisMinMax ( size_t  i,
Coords  units = Coords::UNDEFINED 
) const

Definition at line 87 of file SimulationResult.cpp.

88 {
89  return {m_coordsys->calculateMin(i, units), m_coordsys->calculateMax(i, units)};
90 }

References m_coordsys.

◆ axisName()

std::string SimulationResult::axisName ( size_t  i,
Coords  units = Coords::UNDEFINED 
) const

Definition at line 92 of file SimulationResult.cpp.

93 {
94  return m_coordsys->axisName(i, units);
95 }

References m_coordsys.

◆ checkRank()

void SimulationResult::checkRank ( ) const
private

Definition at line 140 of file SimulationResult.cpp.

141 {
142  ASSERT(m_data);
144  ASSERT(m_data->rank() == m_coordsys->rank());
145 }
#define ASSERT(condition)
Definition: Assert.h:45

References ASSERT, m_coordsys, and m_data.

Referenced by SimulationResult().

◆ convertedBinCenters() [1/2]

std::vector< double > SimulationResult::convertedBinCenters ( Coords  units = Coords::UNDEFINED) const

Definition at line 126 of file SimulationResult.cpp.

127 {
128  return convertedBinCenters(0, units);
129 }
std::vector< double > convertedBinCenters(Coords units=Coords::UNDEFINED) const

◆ convertedBinCenters() [2/2]

std::vector< double > SimulationResult::convertedBinCenters ( size_t  i_axis,
Coords  units = Coords::UNDEFINED 
) const

Returns axis coordinates as a numpy array. With no parameters given Returns coordinates of x-axis in default units.

Definition at line 131 of file SimulationResult.cpp.

132 {
133  if (i_axis >= m_coordsys->rank())
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();
138 }

References m_coordsys.

◆ converter()

const ICoordSystem & SimulationResult::converter ( ) const

Returns underlying unit converter.

Definition at line 97 of file SimulationResult.cpp.

98 {
99  return *m_coordsys;
100 }

References m_coordsys.

Referenced by SimDataPair::execSimulation().

◆ datafield()

Datafield * SimulationResult::datafield ( Coords  units = Coords::UNDEFINED) const

◆ empty()

bool SimulationResult::empty ( ) const
inline

◆ flatVector()

std::vector< double > SimulationResult::flatVector ( Coords  units = Coords::UNDEFINED) const

Definition at line 76 of file SimulationResult.cpp.

77 {
78  std::unique_ptr<Datafield> f(datafield(units));
79  return f->flatVector();
80 }
Datafield * datafield(Coords units=Coords::UNDEFINED) const

References datafield().

Referenced by RQ4Metric::compute().

Here is the call graph for this function:

◆ operator=() [1/2]

SimulationResult & SimulationResult::operator= ( const SimulationResult other)

Definition at line 50 of file SimulationResult.cpp.

51 {
52  if (&other == this)
53  return *this;
54  m_data.reset(other.m_data->clone());
55  m_coordsys.reset(other.m_coordsys->clone());
56  return *this;
57 }

References m_coordsys, and m_data.

◆ operator=() [2/2]

SimulationResult & SimulationResult::operator= ( SimulationResult &&  other)

Definition at line 59 of file SimulationResult.cpp.

60 {
61  m_data = std::move(other.m_data);
62  m_coordsys = std::move(other.m_coordsys);
63  return *this;
64 }

References m_coordsys, and m_data.

◆ operator[]() [1/2]

double & SimulationResult::operator[] ( size_t  i)

Definition at line 102 of file SimulationResult.cpp.

103 {
104  return (*m_data)[i];
105 }

References m_data.

◆ operator[]() [2/2]

const double & SimulationResult::operator[] ( size_t  i) const

Definition at line 107 of file SimulationResult.cpp.

108 {
109  return (*m_data)[i];
110 }

References m_data.

◆ rank()

size_t SimulationResult::rank ( ) const

Data element access.

Definition at line 66 of file SimulationResult.cpp.

67 {
68  return m_data->rank();
69 }

References m_data.

◆ relativeToMaximum()

SimulationResult SimulationResult::relativeToMaximum ( ) const

Returns modified SimulationResult: all intensities dvided by maximum intensity.

Definition at line 112 of file SimulationResult.cpp.

113 {
114  std::unique_ptr<Datafield> data2(m_data->normalizedToMaximum());
115  return {*data2, m_coordsys->clone()};
116 }

References m_coordsys, and m_data.

◆ setTitle()

void SimulationResult::setTitle ( const std::string &  title)
inline

Definition at line 73 of file SimulationResult.h.

73 { m_title = title; }
std::string title()
std::string m_title

References m_title, and title().

Here is the call graph for this function:

◆ size()

size_t SimulationResult::size ( ) const

Definition at line 71 of file SimulationResult.cpp.

72 {
73  return m_data ? m_data->size() : 0;
74 }

References m_data.

Referenced by SimDataPair::absoluteDifference(), empty(), DiffUtil::meanRelativeDifference(), and SimDataPair::relativeDifference().

◆ title()

std::string SimulationResult::title ( )
inline

Definition at line 74 of file SimulationResult.h.

74 { return m_title; }

References m_title.

Referenced by setTitle().

Member Data Documentation

◆ m_coordsys

std::unique_ptr<const ICoordSystem> SimulationResult::m_coordsys
private

◆ m_data

std::unique_ptr<Datafield> SimulationResult::m_data
private

◆ m_title

std::string SimulationResult::m_title
private

Definition at line 82 of file SimulationResult.h.

Referenced by setTitle(), and title().


The documentation for this class was generated from the following files: