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.