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.