15 #ifndef BORNAGAIN_CORE_INTENSITY_IUNITCONVERTER_H
16 #define BORNAGAIN_CORE_INTENSITY_IUNITCONVERTER_H
38 {Axes::Units::NBINS,
"Axes::Units::UNDEFINED"}, {Axes::Units::NBINS,
"Axes::Units::NBINS"},
39 {Axes::Units::RADIANS,
"Axes::Units::RADIANS"}, {Axes::Units::DEGREES,
"Axes::Units::DEGREES"},
40 {Axes::Units::MM,
"Axes::Units::MM"}, {Axes::Units::QSPACE,
"Axes::Units::QSPACE"},
41 {Axes::Units::QXQY,
"Axes::Units::QXQY"}, {Axes::Units::RQ4,
"Axes::Units::RQ4"}};
44 {Axes::Units::NBINS,
"undefined"}, {Axes::Units::NBINS,
"bin"}, {Axes::Units::RADIANS,
"rad"},
45 {Axes::Units::DEGREES,
"deg"}, {Axes::Units::MM,
"mm"}, {Axes::Units::QSPACE,
"1/nm"},
46 {Axes::Units::QXQY,
"1/nm"}, {Axes::Units::RQ4,
"nm^-4?"}};
62 virtual size_t axisSize(
size_t i_axis)
const = 0;
81 [[noreturn]]
void throwUnitsError(std::string method, std::vector<Axes::Units> available)
const;
85 virtual std::vector<std::map<Axes::Units, std::string>>
createNameMaps()
const = 0;
Defines and implements the standard mix-in ICloneable.
const std::map< Axes::Units, const char * > axisUnitName
const std::map< Axes::Units, const char * > axisUnitLabel
Wrapper for detector axes units, required for a better representation of detector axes units in pytho...
Interface for one-dimensional axes.
Interface for polymorphic classes that should not be copied, except by explicit cloning.
Interface to provide axis translations to different units for simulation output.
Axes::Units substituteDefaultUnits(Axes::Units units) const
virtual size_t dimension() const =0
virtual ~IUnitConverter()
virtual size_t axisSize(size_t i_axis) const =0
void checkIndex(size_t i_axis) const
virtual Axes::Units defaultUnits() const =0
virtual std::vector< Axes::Units > availableUnits() const =0
virtual std::unique_ptr< IAxis > createConvertedAxis(size_t i_axis, Axes::Units units) const =0
virtual std::unique_ptr< OutputData< double > > createConvertedData(const OutputData< double > &data, Axes::Units units) const
Creates OutputData array in converter units.
virtual double calculateMin(size_t i_axis, Axes::Units units_type) const =0
virtual double calculateMax(size_t i_axis, Axes::Units units_type) const =0
virtual std::vector< std::map< Axes::Units, std::string > > createNameMaps() const =0
void throwUnitsError(std::string method, std::vector< Axes::Units > available) const
std::string axisName(size_t i_axis, Axes::Units units_type=Axes::Units::DEFAULT) const
virtual IUnitConverter * clone() const =0
Template class to store data of any type in multi-dimensional space.
Constants and functions for physical unit conversions.