SourceXtractorPlusPlus  0.10
Please provide a description of the project.
ScaledModelComponent.cpp
Go to the documentation of this file.
1 
23 #include <algorithm> // for std::min
25 
26 namespace ModelFitting {
27 
30  : m_component {std::move(component)},
31  m_x_scale{x_scale}, m_y_scale{y_scale} {
32 }
33 
35  : m_component {std::move(other.m_component)},
36  m_x_scale{other.m_x_scale}, m_y_scale{other.m_y_scale} {
37 }
38 
40 
41 double ScaledModelComponent::getValue(double x, double y) {
42  return m_component->getValue(x / m_x_scale->getValue(), y / m_y_scale->getValue());
43 }
44 
45 void ScaledModelComponent::updateRasterizationInfo(double scale, double r_max) {
46  double new_scale = scale / std::min(m_x_scale->getValue(), m_y_scale->getValue());
47  double new_r_max = r_max / std::min(m_x_scale->getValue(), m_y_scale->getValue());
48  m_component->updateRasterizationInfo(new_scale, new_r_max);
49 }
50 
52  double area_correction = m_x_scale->getValue() * m_y_scale->getValue();
53  std::vector<ModelSample> result = m_component->getSharpSampling();
54  for (auto& sample : result) {
55  std::get<0>(sample) *= m_x_scale->getValue();
56  std::get<1>(sample) *= m_y_scale->getValue();
57  std::get<2>(sample) *= area_correction;
58  }
59  return result;
60 }
61 
63  return m_component->insideSharpRegion(x / m_x_scale->getValue(), y / m_y_scale->getValue());
64 }
65 
66 } // end of namespace ModelFitting
ModelFitting::ScaledModelComponent::ScaledModelComponent
ScaledModelComponent(std::unique_ptr< ModelComponent > component, std::shared_ptr< BasicParameter > x_scale, std::shared_ptr< BasicParameter > y_scale)
Definition: ScaledModelComponent.cpp:28
ModelFitting::ScaledModelComponent::getSharpSampling
std::vector< ModelSample > getSharpSampling() override
Definition: ScaledModelComponent.cpp:51
std::shared_ptr< BasicParameter >
ModelFitting::ScaledModelComponent
Definition: ScaledModelComponent.h:41
std::move
T move(T... args)
ModelFitting::ScaledModelComponent::m_component
std::unique_ptr< ModelComponent > m_component
Definition: ScaledModelComponent.h:71
std::vector
STL class.
ModelFitting::ScaledModelComponent::m_x_scale
std::shared_ptr< BasicParameter > m_x_scale
Definition: ScaledModelComponent.h:73
ScaledModelComponent.h
ModelFitting::ScaledModelComponent::insideSharpRegion
bool insideSharpRegion(double x, double y) override
Definition: ScaledModelComponent.cpp:62
std::min
T min(T... args)
ModelFitting::ScaledModelComponent::updateRasterizationInfo
void updateRasterizationInfo(double scale, double r_max) override
Definition: ScaledModelComponent.cpp:45
x
std::shared_ptr< DependentParameter< std::shared_ptr< EngineParameter > > > x
Definition: MoffatModelFittingTask.cpp:93
ModelFitting::ScaledModelComponent::~ScaledModelComponent
virtual ~ScaledModelComponent()
ModelFitting::ScaledModelComponent::getValue
double getValue(double x, double y) override
Definition: ScaledModelComponent.cpp:41
y
std::shared_ptr< DependentParameter< std::shared_ptr< EngineParameter > > > y
Definition: MoffatModelFittingTask.cpp:93
std::unique_ptr
STL class.
ModelFitting
Definition: AsinhChiSquareComparator.h:30
ModelFitting::ScaledModelComponent::m_y_scale
std::shared_ptr< BasicParameter > m_y_scale
Definition: ScaledModelComponent.h:74