25 std::unique_ptr<OutputData<double>>
28 std::unique_ptr<OutputData<double>> result = std::make_unique<OutputData<double>>();
29 for (
size_t i = 0; i < converter.
dimension(); ++i)
31 result->setAllTo(0.0);
35 std::unique_ptr<IUnitConverter>
41 return std::make_unique<SphericalConverter>(*det, instrument.
getBeam());
43 return std::make_unique<RectangularConverter>(*det, instrument.
getBeam());
45 throw std::runtime_error(
"Error in createConverterForGISAS: wrong or absent detector type");
57 return probe->createUnitConverter();
60 return off_spec->createUnitConverter();
63 throw std::runtime_error(
"UnitConverterUtils::createConverter -> "
64 "Not implemented simulation.");
Defines class DepthProbeSimulation.
Defines class GISASSimulation.
Defines class OffSpecSimulation.
Defines class RectangularDetector.
Defines interface UnitConverterSimple and its subclasses.
Defines class SpecularSimulation.
Defines class SphericalDetector.
Defines UnitConverter1D class and derived classes.
Declares utilities for unit converters.
Main class to run a Grazing-Incidence Small-Angle Scattering simulation.
Abstract detector interface.
Interface to provide axis translations to different units for simulation output.
virtual size_t dimension() const =0
virtual std::unique_ptr< IAxis > createConvertedAxis(size_t i_axis, Axes::Units units) const =0
Assembles beam, detector and their relative positions with respect to the sample.
const IDetector * getDetector() const
Main class to run an off-specular simulation.
A flat rectangular detector with axes and resolution function.
Pure virtual base class of OffSpecularSimulation, GISASSimulation and SpecularSimulation.
Main class to run a specular simulation.
A spherical detector with axes and resolution function.
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 > createConverter(const Simulation &simulation)
std::unique_ptr< OutputData< double > > createOutputData(const IUnitConverter &converter, Axes::Units units)
Returns zero-valued output data array in specified units.
std::unique_ptr< IUnitConverter > createConverterForGISAS(const Instrument &instrument)
Helper factory function to use in GISASSimulation.