SourceXtractorPlusPlus
0.21
SourceXtractor++, the next generation SExtractor
Loading...
Searching...
No Matches
SEImplementation
src
lib
Plugin
SourcePsf
SourcePsfTask.cpp
Go to the documentation of this file.
1
18
#include <numeric>
19
#include "
SEImplementation/Plugin/SourcePsf/SourcePsfProperty.h
"
20
#include "
SEImplementation/Plugin/MeasurementFramePixelCentroid/MeasurementFramePixelCentroid.h
"
21
#include "
SEImplementation/CheckImages/CheckImages.h
"
22
#include "
SEImplementation/Image/WriteableImageInterfaceTraits.h
"
23
#include "
SEImplementation/Plugin/SourcePsf/SourcePsfTask.h
"
24
25
namespace
SourceXtractor
{
26
27
static
double
getCoordX
(
SourceXtractor::SourceInterface
&
source
,
unsigned
instance
) {
28
auto
&
pixel_centroid
=
source
.getProperty<
MeasurementFramePixelCentroid
>(
instance
);
29
return
pixel_centroid
.getCentroidX();
30
}
31
32
static
double
getCoordY
(
SourceXtractor::SourceInterface
&
source
,
unsigned
instance
) {
33
auto
&
pixel_centroid
=
source
.getProperty<
MeasurementFramePixelCentroid
>(
instance
);
34
return
pixel_centroid
.getCentroidY();
35
}
36
37
std::map<std::string, SourcePsfTask::ValueGetter>
SourcePsfTask::component_value_getters
{
38
{
"X_IMAGE"
,
getCoordX
},
39
{
"Y_IMAGE"
,
getCoordY
},
40
{
"XWIN_IMAGE"
,
getCoordX
},
41
{
"YWIN_IMAGE"
,
getCoordY
},
42
{
"XPEAK_IMAGE"
,
getCoordX
},
43
{
"YPEAK_IMAGE"
,
getCoordY
},
44
{
"XMODEL_IMAGE"
,
getCoordX
},
45
{
"YMODEL_IMAGE"
,
getCoordY
}
46
};
47
48
SourcePsfTask::SourcePsfTask
(
unsigned
instance
,
const
std::shared_ptr<Psf>
&
vpsf
)
49
: m_instance(
instance
), m_vpsf(
vpsf
) {
50
}
51
52
void
SourcePsfTask::computeProperties
(
SourceXtractor::SourceInterface
&
source
)
const
{
53
if
(
m_vpsf
!=
nullptr
) {
54
std::vector<double>
component_values
;
55
56
for
(
auto
component
:
m_vpsf
->getComponents()) {
57
component_values
.push_back(
component_value_getters
[
component
](
source
,
m_instance
));
58
}
59
60
auto
psf
=
m_vpsf
->getPsf(
component_values
);
61
// The result may not be normalized!
62
auto
psf_sum
=
std::accumulate
(
psf
->getData().begin(),
psf
->getData().end(), 0.);
63
auto
psf_normalized
=
VectorImage<SeFloat>::create
(*
MultiplyImage<SeFloat>::create
(
psf
, 1. /
psf_sum
));
64
source
.setIndexedProperty<
SourcePsfProperty
>(
m_instance
,
m_vpsf
->getPixelSampling(),
psf_normalized
);
65
66
// Check image
67
auto
check_image
=
CheckImages::getInstance
().getPsfImage(
m_instance
);
68
if
(
check_image
) {
69
auto
x
=
component_value_getters
[
"X_IMAGE"
](
source
,
m_instance
);
70
auto
y
=
component_value_getters
[
"Y_IMAGE"
](
source
,
m_instance
);
71
72
ModelFitting::ImageTraits<ModelFitting::WriteableInterfaceTypePtr>::addImageToImage
(
73
check_image
,
psf_normalized
,
m_vpsf
->getPixelSampling(),
x
,
y
);
74
}
75
}
else
{
76
source
.setIndexedProperty<
SourcePsfProperty
>(
m_instance
, 1.0,
nullptr
);
77
}
78
}
79
80
}
CheckImages.h
MeasurementFramePixelCentroid.h
x
std::shared_ptr< DependentParameter< std::shared_ptr< EngineParameter > > > x
Definition
MoffatModelFittingTask.cpp:94
y
std::shared_ptr< DependentParameter< std::shared_ptr< EngineParameter > > > y
Definition
MoffatModelFittingTask.cpp:94
SourcePsfProperty.h
SourcePsfTask.h
WriteableImageInterfaceTraits.h
std::accumulate
T accumulate(T... args)
SourceXtractor::CheckImages::getInstance
static CheckImages & getInstance()
Definition
CheckImages.h:158
SourceXtractor::MeasurementFramePixelCentroid
Definition
MeasurementFramePixelCentroid.h:31
SourceXtractor::SourceInterface
The SourceInterface is an abstract "source" that has properties attached to it.
Definition
SourceInterface.h:46
SourceXtractor::SourcePsfProperty
Definition
SourcePsfProperty.h:26
SourceXtractor::SourcePsfTask::m_instance
unsigned m_instance
Definition
SourcePsfTask.h:38
SourceXtractor::SourcePsfTask::component_value_getters
static std::map< std::string, ValueGetter > component_value_getters
Definition
SourcePsfTask.h:35
SourceXtractor::SourcePsfTask::computeProperties
void computeProperties(SourceInterface &source) const override
Computes one or more properties for the Source.
Definition
SourcePsfTask.cpp:52
SourceXtractor::SourcePsfTask::m_vpsf
std::shared_ptr< Psf > m_vpsf
Definition
SourcePsfTask.h:39
SourceXtractor::SourcePsfTask::SourcePsfTask
SourcePsfTask(unsigned instance, const std::shared_ptr< Psf > &vpsf)
Definition
SourcePsfTask.cpp:48
SourceXtractor::VectorImage::create
static std::shared_ptr< VectorImage< T > > create(Args &&... args)
Definition
VectorImage.h:100
std::function
SourceXtractor
Definition
Aperture.h:30
SourceXtractor::getCoordX
static double getCoordX(SourceXtractor::SourceGroupInterface &group, unsigned instance)
Definition
PsfTask.cpp:33
SourceXtractor::getCoordY
static double getCoordY(SourceXtractor::SourceGroupInterface &group, unsigned instance)
Definition
PsfTask.cpp:39
ModelFitting::ImageTraits::addImageToImage
static void addImageToImage(ImageType &image1, const ImageType &image2, double scale, double x, double y)
Generated by
1.10.0