BornAgain  1.18.0
Simulate and fit neutron and x-ray scattering at grazing incidence
anonymous_namespace{OutputDataWriteStrategy.cpp} Namespace Reference

Functions

double IgnoreDenormalized (double value)
 
void Write2DRepresentation (const OutputData< double > &data, std::ostream &output_stream)
 
void WriteOutputDataDoubles (const OutputData< double > &data, std::ostream &output_stream, size_t n_columns)
 
void Write1DRepresentation (const OutputData< double > &data, std::ostream &output_stream)
 

Variables

const int precision {12}
 

Function Documentation

◆ IgnoreDenormalized()

double anonymous_namespace{OutputDataWriteStrategy.cpp}::IgnoreDenormalized ( double  value)

Definition at line 25 of file OutputDataWriteStrategy.cpp.

26 {
27  if (std::fpclassify(value) == FP_SUBNORMAL)
28  return 0.0;
29  return value;
30 }

Referenced by Write1DRepresentation(), Write2DRepresentation(), and WriteOutputDataDoubles().

◆ Write2DRepresentation()

void anonymous_namespace{OutputDataWriteStrategy.cpp}::Write2DRepresentation ( const OutputData< double > &  data,
std::ostream &  output_stream 
)

Definition at line 32 of file OutputDataWriteStrategy.cpp.

33 {
34  const size_t nrows = data.getAxis(1).size();
35  const size_t ncols = data.getAxis(0).size();
36 
37  output_stream << "# [nrows=" << nrows << ", ncols=" << ncols << "]" << std::endl;
38 
39  std::vector<std::vector<double>> dataArray = ArrayUtils::createVector2D(data);
40  output_stream.imbue(std::locale::classic());
41  output_stream << std::scientific << std::setprecision(precision);
42 
43  for (size_t i = 0; i < nrows; i++) {
44  for (size_t j = 0; j < ncols; j++) {
45  double z_value = dataArray[i][j];
46  output_stream << IgnoreDenormalized(z_value) << " ";
47  }
48  output_stream << std::endl;
49  }
50 }
virtual size_t size() const =0
retrieve the number of bins
const IAxis & getAxis(size_t serial_number) const
returns axis with given serial number
Definition: OutputData.h:314
decltype(auto) createVector2D(const T &data)
Creates 2D vector from OutputData.
std::string scientific(const T value, int n=10)
Returns scientific string representing given value of any numeric type.
Definition: StringUtils.h:54

References ArrayUtils::createVector2D(), OutputData< T >::getAxis(), IgnoreDenormalized(), precision, StringUtils::scientific(), and IAxis::size().

Referenced by OutputDataWriteNumpyTXTStrategy::writeOutputData().

Here is the call graph for this function:

◆ WriteOutputDataDoubles()

void anonymous_namespace{OutputDataWriteStrategy.cpp}::WriteOutputDataDoubles ( const OutputData< double > &  data,
std::ostream &  output_stream,
size_t  n_columns 
)

Definition at line 52 of file OutputDataWriteStrategy.cpp.

54 {
55 
57  output_stream.imbue(std::locale::classic());
58  output_stream << std::scientific << std::setprecision(precision);
59  size_t ncol(0);
60  while (it != data.end()) {
61  ncol++;
62  double z_value = *it++;
63  output_stream << IgnoreDenormalized(z_value) << " ";
64  if (ncol == n_columns) {
65  output_stream << std::endl;
66  ncol = 0;
67  }
68  }
69 }
Template class to store data of any type in multi-dimensional space.
Definition: OutputData.h:33
iterator end()
Returns read/write iterator that points to the one past last element.
Definition: OutputData.h:96
iterator begin()
Returns read/write iterator that points to the first element.
Definition: OutputData.h:344

References OutputData< T >::begin(), OutputData< T >::end(), IgnoreDenormalized(), precision, and StringUtils::scientific().

Referenced by OutputDataWriteINTStrategy::writeOutputData().

Here is the call graph for this function:

◆ Write1DRepresentation()

void anonymous_namespace{OutputDataWriteStrategy.cpp}::Write1DRepresentation ( const OutputData< double > &  data,
std::ostream &  output_stream 
)

Definition at line 71 of file OutputDataWriteStrategy.cpp.

72 {
73  output_stream << "# coordinates intensities" << std::endl;
74  output_stream.imbue(std::locale::classic());
75  output_stream << std::scientific << std::setprecision(precision);
76 
77  const std::vector<double> axis_values = data.getAxis(0).getBinCenters();
78 
79  // printing coordinate and associated intensity
80  for (size_t i = 0, nrows = axis_values.size(); i < nrows; ++i)
81  output_stream << axis_values[i] << " " << IgnoreDenormalized(data[i]) << std::endl;
82 }
virtual std::vector< double > getBinCenters() const
Definition: IAxis.cpp:23

References OutputData< T >::getAxis(), IAxis::getBinCenters(), IgnoreDenormalized(), precision, and StringUtils::scientific().

Referenced by OutputDataWriteNumpyTXTStrategy::writeOutputData().

Here is the call graph for this function:

Variable Documentation

◆ precision

const int anonymous_namespace{OutputDataWriteStrategy.cpp}::precision {12}