BornAgain  1.19.0
Simulate and fit neutron and x-ray scattering at grazing incidence
ArrayUtils Namespace Reference

Array utility functions getShape. More...

Classes

class  CreateDataImpl
 

Functions

template<class T >
CreateDataImpl::ReturnType< T > createData (const T &vec)
 Creates OutputData array from input vector. More...
 
template<class T >
decltype(auto) createVector1D (const T &data)
 Creates 1D vector from OutputData. More...
 
template<class T >
decltype(auto) createVector2D (const T &data)
 Creates 2D vector from OutputData. More...
 
template<class T >
std::pair< size_t, size_t > getShape (const T &data)
 Returns shape nrows, ncols of 2D array. More...
 

Detailed Description

Array utility functions getShape.

Function Documentation

◆ createData()

template<class T >
CreateDataImpl::ReturnType<T> ArrayUtils::createData ( const T &  vec)

Creates OutputData array from input vector.

Definition at line 65 of file ArrayUtils.h.

66 {
67  constexpr const int size = CreateDataImpl::nDim<T>::value;
68  static_assert(
69  size == 1 || size == 2,
70  "Error in ArrayUtils::createData: invalid dimensionality or type of the input argument");
71  static_assert(std::is_same<CreateDataImpl::ReturnType<T>,
72  decltype(CreateDataImpl::createDataImpl(vec))>::value,
73  "Error in ArrayUtils::createData: invalid return type.");
74  return CreateDataImpl::createDataImpl(vec);
75 }

Referenced by FitObjective::addSimulationAndData(), DataUtils::importArrayToOutputData(), and OutputDataReadWriteNumpyTXT::readOutputData().

◆ createVector1D()

template<class T >
decltype(auto) ArrayUtils::createVector1D ( const T &  data)

Creates 1D vector from OutputData.

◆ createVector2D()

template<class T >
decltype(auto) ArrayUtils::createVector2D ( const T &  data)

◆ getShape()

template<class T >
std::pair< size_t, size_t > ArrayUtils::getShape ( const T &  data)

Returns shape nrows, ncols of 2D array.

Definition at line 127 of file ArrayUtils.h.

128 {
129  size_t nrows = data.size();
130  size_t ncols(0);
131  if (nrows)
132  ncols = data[0].size();
133  for (size_t row = 0; row < nrows; row++)
134  if (data[row].size() != ncols)
135  throw std::runtime_error("Util::getShape() -> Error. "
136  "Number of elements is different from row to row.");
137  return std::make_pair(nrows, ncols);
138 }

Referenced by Histogram2D::addContent(), ArrayUtils::CreateDataImpl::createDataImpl(), and Histogram2D::initFromShape().