15 #ifndef BORNAGAIN_CORE_INTENSITY_UNITCONVERTER1D_H
16 #define BORNAGAIN_CORE_INTENSITY_UNITCONVERTER1D_H
43 double calculateMin(
size_t i_axis, Axes::Units units_type)
const override;
46 double calculateMax(
size_t i_axis, Axes::Units units_type)
const override;
49 std::unique_ptr<IAxis>
createConvertedAxis(
size_t i_axis, Axes::Units units)
const override;
53 Axes::Units units)
const override;
57 virtual std::function<double(
double)>
getTraslatorTo(Axes::Units units_type)
const = 0;
59 virtual const IAxis* coordinateAxis()
const = 0;
68 Axes::Units axis_units = Axes::Units::RADIANS);
75 size_t axisSize(
size_t i_axis)
const override;
87 std::vector<std::map<Axes::Units, std::string>>
createNameMaps()
const override;
90 std::function<double(
double)>
getTraslatorFrom(Axes::Units units_type)
const;
93 std::function<double(
double)>
getTraslatorTo(Axes::Units units_type)
const override;
95 const IAxis* coordinateAxis()
const override {
return m_axis.get(); }
111 size_t axisSize(
size_t i_axis)
const override;
123 std::vector<std::map<Axes::Units, std::string>>
createNameMaps()
const override;
126 std::function<double(
double)>
getTraslatorTo(Axes::Units units_type)
const override;
128 const IAxis* coordinateAxis()
const override {
return m_axis.get(); }
Defines interface IUnitConverter and possible axis units.
Scan type with inclination angles as coordinate values and a unique wavelength.
Beam defined by wavelength, direction and intensity.
Interface for one-dimensional axes.
Pure virtual base class for all types of specular scans.
Interface to provide axis translations to different units for simulation output.
Scan type with z-components of scattering vector as coordinate values.
Conversion of axis units for the case of 1D simulation result.
static std::unique_ptr< UnitConverter1D > createUnitConverter(const ISpecularScan &handler)
Factory function to create unit converter for particular type of specular data.
size_t dimension() const override
Returns dimensionality of converted canvas.
std::unique_ptr< OutputData< double > > createConvertedData(const OutputData< double > &data, Axes::Units units) const override
Creates OutputData array in converter units.
std::unique_ptr< IAxis > createConvertedAxis(size_t i_axis, Axes::Units units) const override
Creates axis in converted units.
double calculateMax(size_t i_axis, Axes::Units units_type) const override
Calculates maximum on-axis value in given units.
double calculateMin(size_t i_axis, Axes::Units units_type) const override
Calculates minimum on-axis value in given units.
virtual std::function< double(double)> getTraslatorTo(Axes::Units units_type) const =0
Returns translating functional (rads --> output units)
Conversion of axis units for the case of conventional (angle-based) reflectometry.
UnitConverterConvSpec(const Beam &beam, const IAxis &axis, Axes::Units axis_units=Axes::Units::RADIANS)
Constructs the object for unit conversion.
size_t axisSize(size_t i_axis) const override
Returns the size of underlying axis.
double m_wavelength
basic wavelength in nm (for translation to q-space).
std::vector< std::map< Axes::Units, std::string > > createNameMaps() const override
Creates name map for axis in various units.
std::function< double(double)> getTraslatorTo(Axes::Units units_type) const override
Returns translating functional (rads --> desired units)
std::function< double(double)> getTraslatorFrom(Axes::Units units_type) const
Returns translating functional (input units --> rads)
Axes::Units defaultUnits() const override
Returns default units to convert to.
std::unique_ptr< IAxis > m_axis
basic inclination angles (in rads).
std::vector< Axes::Units > availableUnits() const override
Returns the list of all available units.
Conversion of axis units for the case of q-defined reflectometry.
std::function< double(double)> getTraslatorTo(Axes::Units units_type) const override
Returns translating functional (inv. nm --> desired units)
std::unique_ptr< IAxis > m_axis
qz values (in inv. nm).
std::vector< std::map< Axes::Units, std::string > > createNameMaps() const override
Creates name map for axis in various units.
Axes::Units defaultUnits() const override
Returns default units to convert to.
size_t axisSize(size_t i_axis) const override
Returns the size of underlying axis.
std::vector< Axes::Units > availableUnits() const override
Returns the list of all available units.