SourceXtractorPlusPlus  0.16
Please provide a description of the project.
MoffatCriteria.cpp
Go to the documentation of this file.
1 
17 /*
18  * MoffatCriteria.cpp
19  *
20  * Created on: 2019 M01 25
21  * Author: mschefer
22  */
23 
27 
30 
31 namespace SourceXtractor {
32 
33 using namespace ModelFitting;
34 
35 bool MoffatCriteria::doesImpact(const SourceInterface& impactor, const SourceInterface& impactee) const {
36  auto& extended_model = impactor.getProperty<MoffatModelEvaluator>();
37  if (extended_model.getIterations() == 0) {
38  return false;
39  }
40 
41  auto& centroid = impactee.getProperty<PixelCentroid>();
42  auto& other_centroid = impactor.getProperty<PixelCentroid>();
43 
44  auto dx = centroid.getCentroidX() - other_centroid.getCentroidX();
45  auto dy = centroid.getCentroidY() - other_centroid.getCentroidY();
46  if (dx*dx + dy*dy > m_max_distance * m_max_distance ) {
47  return false;
48  }
49 
50  auto max_value = impactee.getProperty<PeakValue>().getMaxValue();
51 
52  double model_value = extended_model.getValue(centroid.getCentroidX(), centroid.getCentroidY());
53 
54  return (model_value / max_value) > m_threshold;
55 }
56 
57 bool MoffatCriteria::shouldGroup(const SourceInterface& first, const SourceInterface& second) const {
58  return doesImpact(first, second) || doesImpact(second, first);
59 }
60 
62  return {
63  PropertyId::create<PixelCentroid>(),
64  PropertyId::create<PeakValue>(),
65  PropertyId::create<MoffatModelEvaluator>(),
66  };
67 }
68 
69 } // SourceXtractor namespace
70 
71 
std::shared_ptr< EngineParameter > dx
std::shared_ptr< EngineParameter > dy
bool shouldGroup(const SourceInterface &, const SourceInterface &) const override
Determines if the two sources should be grouped together.
bool doesImpact(const SourceInterface &impactor, const SourceInterface &impactee) const
std::set< PropertyId > requiredProperties() const override
Return a set of used properties so they can be pre-fetched.
The centroid of all the pixels in the source, weighted by their DetectionImage pixel values.
Definition: PixelCentroid.h:37
SeFloat getCentroidX() const
X coordinate of centroid.
Definition: PixelCentroid.h:48
SeFloat getCentroidY() const
Y coordinate of centroid.
Definition: PixelCentroid.h:53
The SourceInterface is an abstract "source" that has properties attached to it.
const PropertyType & getProperty(unsigned int index=0) const
Convenience template method to call getProperty() with a more user-friendly syntax.
constexpr double second