SourceXtractorPlusPlus  0.10
Please provide a description of the project.
SigmoidConverter.cpp
Go to the documentation of this file.
1 
23 #include <cmath>
24 #include <iostream>
25 
27 
28 namespace ModelFitting {
29 
30 using namespace std;
31 
33 
34 double SigmoidConverter::worldToEngine(const double world_value) const {
35  if (world_value < m_min_value || world_value > m_max_value) {
36  throw Elements::Exception()
37  << "WorldToEngine SigmoidConverter: world values outside of possible range";
38  }
39 
40  double num = world_value - m_min_value;
41  double den = m_max_value - world_value;
42  return (num > 1e-50 ? (den > 1e-50 ? log(num/den) : 50.0) : -50.0);
43 }
44 
45 double SigmoidConverter::engineToWorld(const double engine_value) const {
46  auto clamped_value = std::max(-50.0, std::min(50.0, engine_value));
47  return m_min_value + (m_max_value - m_min_value) / (1 + exp(-clamped_value));
48 }
49 
50 double SigmoidConverter::getEngineToWorldDerivative(const double value) const {
51  return (value - m_min_value) * (m_max_value - value) / (m_max_value - m_min_value);
52 }
53 
54 
55 }// namespace ModelFitting
ModelFitting::SigmoidConverter::~SigmoidConverter
virtual ~SigmoidConverter()
Destructor.
ModelFitting::SigmoidConverter::getEngineToWorldDerivative
double getEngineToWorldDerivative(const double value) const override
Definition: SigmoidConverter.cpp:50
std::log
T log(T... args)
ModelFitting::SigmoidConverter::worldToEngine
double worldToEngine(const double world_value) const override
World to engine coordinate converter.
Definition: SigmoidConverter.cpp:34
Elements::Exception
SigmoidConverter.h
e
constexpr double e
std::min
T min(T... args)
std::exp
T exp(T... args)
std
STL namespace.
std::max
T max(T... args)
ModelFitting
Definition: AsinhChiSquareComparator.h:30
ModelFitting::SigmoidConverter::engineToWorld
double engineToWorld(const double engine_value) const override
Engine to world coordinate converter.
Definition: SigmoidConverter.cpp:45