SourceXtractorPlusPlus
0.16
Please provide a description of the project.
SEFramework
src
lib
Aperture
EllipticalAperture.cpp
Go to the documentation of this file.
1
17
/*
18
* EllipticalAperture.cpp
19
*
20
* Created on: Oct 08, 2018
21
* Author: Alejandro Alvarez
22
*/
23
24
#include "
SEFramework/Aperture/EllipticalAperture.h
"
25
#include <iostream>
26
namespace
SourceXtractor
{
27
28
29
EllipticalAperture::EllipticalAperture
(
SeFloat
cxx,
SeFloat
cyy,
SeFloat
cxy,
30
SeFloat
rad_max)
31
: m_cxx{cxx}, m_cyy{cyy}, m_cxy{cxy}, m_rad_max{rad_max} {
32
}
33
34
SeFloat
EllipticalAperture::getArea
(
SeFloat
center_x,
SeFloat
center_y,
SeFloat
pixel_x,
SeFloat
pixel_y)
const
{
35
if
(
getRadiusSquared
(center_x, center_y, pixel_x, pixel_y) <
m_rad_max
*
m_rad_max
) {
36
37
return
1.0;
38
}
39
return
0.;
40
}
41
42
SeFloat
EllipticalAperture::drawArea
(
SeFloat
center_x,
SeFloat
center_y,
SeFloat
pixel_x,
SeFloat
pixel_y)
const
{
43
SeFloat
thickness = 1.0;
44
SeFloat
min_rad_squared =
m_rad_max
> thickness ? (
m_rad_max
- thickness) * (
m_rad_max
- thickness) : 0;
45
46
//SeFloat min_rad_squared = .877777*(m_rad_max*m_rad_max);
47
//SeFloat min_rad_squared = .877777*(m_rad_max*m_rad_max);
48
//SeFloat min_rad_squared = .133333*(m_rad_max*m_rad_max) > 6.0 ? .877777*(m_rad_max*m_rad_max) : (m_rad_max*m_rad_max)-6.0;
49
50
//SeFloat max_rad_squared = (m_rad_max + thickness) * (m_rad_max + thickness);
51
52
//if (min_supersampled_radius_squared < distance_squared && distance_squared <= max_supersampled_radius_squared) {
53
//if ((m_rad_max-1.)*(m_rad_max-1.)< distance_squared && distance_squared < m_rad_max * m_rad_max) {
54
//if ((m_rad_max*m_rad_max-thickness)< distance_squared && distance_squared < (m_rad_max * m_rad_max)) {
55
//if (fabs(distance_squared - (m_rad_max * m_rad_max)) < thickness) {
56
57
auto
distance_squared =
getRadiusSquared
(center_x, center_y, pixel_x, pixel_y);
58
if
(min_rad_squared < distance_squared && distance_squared < (
m_rad_max
*
m_rad_max
)) {
59
//if (min_rad_squared < distance_squared && distance_squared < max_rad_squared) {
60
return
1.0;
61
}
62
return
0.;
63
}
64
65
SeFloat
EllipticalAperture::getRadiusSquared
(
SeFloat
center_x,
SeFloat
center_y,
SeFloat
pixel_x,
66
SeFloat
pixel_y)
const
{
67
auto
dist_x =
SeFloat
(pixel_x) - center_x;
68
auto
dist_y =
SeFloat
(pixel_y) - center_y;
69
70
return
m_cxx
* dist_x * dist_x +
m_cyy
* dist_y * dist_y +
m_cxy
* dist_x * dist_y;
71
}
72
73
PixelCoordinate
EllipticalAperture::getMinPixel
(
SeFloat
centroid_x,
SeFloat
centroid_y)
const
{
74
SeFloat
dx
,
dy
;
75
76
// compute the maximum extend in x/y
77
dx
=
m_rad_max
*
std::sqrt
(1.0 / (
m_cxx
-
m_cxy
*
m_cxy
/ (4.0 *
m_cyy
)));
78
dy
=
m_rad_max
*
std::sqrt
(1.0 / (
m_cyy
-
m_cxy
*
m_cxy
/ (4.0 *
m_cxx
)));
79
80
// return the absolute values
81
return
PixelCoordinate
(centroid_x -
dx
, centroid_y -
dy
);
82
}
83
84
PixelCoordinate
EllipticalAperture::getMaxPixel
(
SeFloat
centroid_x,
SeFloat
centroid_y)
const
{
85
SeFloat
dx
,
dy
;
86
87
// compute the maximum extend in x/y
88
dx
=
m_rad_max
*
std::sqrt
(1.0 / (
m_cxx
-
m_cxy
*
m_cxy
/ (4.0 *
m_cyy
)));
89
dy
=
m_rad_max
*
std::sqrt
(1.0 / (
m_cyy
-
m_cxy
*
m_cxy
/ (4.0 *
m_cxx
)));
90
91
// return the absolute values
92
return
PixelCoordinate
(centroid_x +
dx
+ 1, centroid_y +
dy
+ 1);
93
}
94
95
}
// end SourceXtractor
EllipticalAperture.h
dx
std::shared_ptr< EngineParameter > dx
Definition:
MoffatModelFittingTask.cpp:93
dy
std::shared_ptr< EngineParameter > dy
Definition:
MoffatModelFittingTask.cpp:93
SourceXtractor::EllipticalAperture::m_cyy
SeFloat m_cyy
Definition:
EllipticalAperture.h:49
SourceXtractor::EllipticalAperture::drawArea
SeFloat drawArea(SeFloat center_x, SeFloat center_y, SeFloat pixel_x, SeFloat pixel_y) const override
Definition:
EllipticalAperture.cpp:42
SourceXtractor::EllipticalAperture::getMinPixel
PixelCoordinate getMinPixel(SeFloat centroid_x, SeFloat centroid_y) const override
Definition:
EllipticalAperture.cpp:73
SourceXtractor::EllipticalAperture::getRadiusSquared
SeFloat getRadiusSquared(SeFloat center_x, SeFloat center_y, SeFloat pixel_x, SeFloat pixel_y) const override
Definition:
EllipticalAperture.cpp:65
SourceXtractor::EllipticalAperture::getMaxPixel
PixelCoordinate getMaxPixel(SeFloat centroid_x, SeFloat centroid_y) const override
Definition:
EllipticalAperture.cpp:84
SourceXtractor::EllipticalAperture::m_rad_max
SeFloat m_rad_max
Definition:
EllipticalAperture.h:51
SourceXtractor::EllipticalAperture::m_cxx
SeFloat m_cxx
Definition:
EllipticalAperture.h:48
SourceXtractor::EllipticalAperture::getArea
SeFloat getArea(SeFloat center_x, SeFloat center_y, SeFloat pixel_x, SeFloat pixel_y) const override
Definition:
EllipticalAperture.cpp:34
SourceXtractor::EllipticalAperture::EllipticalAperture
EllipticalAperture(SeFloat cxx, SeFloat cyy, SeFloat cxy, SeFloat rad_max)
Definition:
EllipticalAperture.cpp:29
SourceXtractor::EllipticalAperture::m_cxy
SeFloat m_cxy
Definition:
EllipticalAperture.h:50
SourceXtractor
Definition:
Aperture.h:30
SourceXtractor::SeFloat
SeFloat32 SeFloat
Definition:
Types.h:32
std::sqrt
T sqrt(T... args)
SourceXtractor::PixelCoordinate
A pixel coordinate made of two integers m_x and m_y.
Definition:
PixelCoordinate.h:37
Generated by
1.9.1