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

Namespace enclosing a number of utilities/helpers for unit converters. More...

Functions

std::unique_ptr< IUnitConvertercreateConverter (const ISimulation &simulation)
 
std::unique_ptr< IUnitConvertercreateConverterForGISAS (const Instrument &instrument)
 Helper factory function to use in GISASSimulation. More...
 
std::unique_ptr< OutputData< double > > createOutputData (const IUnitConverter &converter, Axes::Units units)
 Returns zero-valued output data array in specified units. More...
 

Detailed Description

Namespace enclosing a number of utilities/helpers for unit converters.

Function Documentation

◆ createConverter()

std::unique_ptr< IUnitConverter > UnitConverterUtils::createConverter ( const ISimulation simulation)

Definition at line 48 of file UnitConverterUtils.cpp.

49 {
50  if (auto gisas = dynamic_cast<const GISASSimulation*>(&simulation)) {
51  return createConverterForGISAS(gisas->instrument());
52 
53  } else if (auto spec = dynamic_cast<const SpecularSimulation*>(&simulation)) {
54  return UnitConverter1D::createUnitConverter(*spec->dataHandler());
55 
56  } else if (auto probe = dynamic_cast<const DepthProbeSimulation*>(&simulation)) {
57  return probe->createUnitConverter();
58 
59  } else if (auto off_spec = dynamic_cast<const OffSpecularSimulation*>(&simulation)) {
60  return off_spec->createUnitConverter();
61 
62  } else {
63  throw std::runtime_error("UnitConverterUtils::createConverter -> "
64  "Not implemented simulation.");
65  }
66 }
Main class to run a Grazing-Incidence Small-Angle Scattering simulation.
Main class to run an off-specular simulation.
Main class to run a specular simulation.
static std::unique_ptr< UnitConverter1D > createUnitConverter(const ISpecularScan &handler)
Factory function to create unit converter for particular type of specular data.
std::unique_ptr< IUnitConverter > createConverterForGISAS(const Instrument &instrument)
Helper factory function to use in GISASSimulation.

References createConverterForGISAS(), and UnitConverter1D::createUnitConverter().

Referenced by ISimulation::convertData(), and TEST_F().

Here is the call graph for this function:

◆ createConverterForGISAS()

std::unique_ptr< IUnitConverter > UnitConverterUtils::createConverterForGISAS ( const Instrument instrument)

Helper factory function to use in GISASSimulation.

Depending on the type of detector, returns either RectangularConverter or SphericalConverter.

Definition at line 36 of file UnitConverterUtils.cpp.

37 {
38  const IDetector* const detector = instrument.getDetector();
39 
40  if (const auto* const det = dynamic_cast<const SphericalDetector*>(detector))
41  return std::make_unique<SphericalConverter>(*det, instrument.beam());
42  else if (const auto* const det = dynamic_cast<const RectangularDetector*>(detector))
43  return std::make_unique<RectangularConverter>(*det, instrument.beam());
44 
45  throw std::runtime_error("Error in createConverterForGISAS: wrong or absent detector type");
46 }
Abstract detector interface.
Definition: IDetector.h:36
IDetector * getDetector()
Definition: Instrument.cpp:96
Beam & beam()
Definition: Instrument.h:43
A flat rectangular detector with axes and resolution function.
A detector with coordinate axes along angles phi and alpha.

References Instrument::beam(), and Instrument::getDetector().

Referenced by createConverter(), DomainObjectBuilder::createUnitConverter(), and GISASSimulation::result().

Here is the call graph for this function:

◆ createOutputData()

std::unique_ptr< OutputData< double > > UnitConverterUtils::createOutputData ( const IUnitConverter converter,
Axes::Units  units 
)

Returns zero-valued output data array in specified units.

Definition at line 26 of file UnitConverterUtils.cpp.

27 {
28  std::unique_ptr<OutputData<double>> result = std::make_unique<OutputData<double>>();
29  for (size_t i = 0; i < converter.dimension(); ++i)
30  result->addAxis(*converter.createConvertedAxis(i, units));
31  result->setAllTo(0.0);
32  return result;
33 }
virtual size_t dimension() const =0
virtual std::unique_ptr< IAxis > createConvertedAxis(size_t i_axis, Axes::Units units) const =0

References IUnitConverter::createConvertedAxis(), and IUnitConverter::dimension().

Referenced by ISimulation::convertData(), JobItemUtils::createDefaultDetectorMap(), DataViewUtils::getTranslatedData(), SimDataPair::initResultArrays(), and JobItemUtils::updateDataAxes().

Here is the call graph for this function: