lsst.afw
g3a5ebb7d8a+28b83bf6a5
Toggle main menu visibility
Loading...
Searching...
No Matches
src
geom
ellipses
ReducedShear.cc
Go to the documentation of this file.
1
// -*- lsst-c++ -*-
2
3
/*
4
* LSST Data Management System
5
* Copyright 2008, 2009, 2010 LSST Corporation.
6
*
7
* This product includes software developed by the
8
* LSST Project (http://www.lsst.org/).
9
*
10
* This program is free software: you can redistribute it and/or modify
11
* it under the terms of the GNU General Public License as published by
12
* the Free Software Foundation, either version 3 of the License, or
13
* (at your option) any later version.
14
*
15
* This program is distributed in the hope that it will be useful,
16
* but WITHOUT ANY WARRANTY; without even the implied warranty of
17
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
18
* GNU General Public License for more details.
19
*
20
* You should have received a copy of the LSST License Statement and
21
* the GNU General Public License along with this program. If not,
22
* see <http://www.lsstcorp.org/LegalNotices/>.
23
*/
24
#include "
lsst/afw/geom/ellipses/ReducedShear.h
"
25
#include "
lsst/afw/geom/ellipses/ConformalShear.h
"
26
#include "
lsst/afw/geom/ellipses/Distortion.h
"
27
28
namespace
lsst
{
29
namespace
afw
{
30
namespace
geom
{
31
namespace
ellipses
{
32
33
double
ReducedShear::getAxisRatio
()
const
{
34
double
e =
getE
();
35
return
(1.0 - e) / (1.0 + e);
36
}
37
38
ReducedShear
&
ReducedShear::operator=
(
Distortion
const
& other) {
39
double
delta = other.
getE
();
40
if
(delta < 1E-8) {
41
_complex
= other.
getComplex
() * (0.5 + 0.125 * delta * delta);
42
}
else
{
43
double
g = (1.0 -
std::sqrt
(1.0 - delta * delta)) / delta;
44
_complex
= other.
getComplex
() * g / delta;
45
}
46
return
*
this
;
47
}
48
49
ReducedShear
&
ReducedShear::operator=
(
ConformalShear
const
& other) {
50
double
eta = other.
getE
();
51
if
(eta < 1E-8) {
52
_complex
= other.
getComplex
() * (0.5 - eta * eta / 12.0);
53
}
else
{
54
double
g =
std::tanh
(0.5 * eta);
55
_complex
= other.
getComplex
() * g / eta;
56
}
57
return
*
this
;
58
}
59
60
detail::EllipticityBase::Jacobian
ReducedShear::dAssign
(
Distortion
const
& other) {
61
Jacobian
result = Jacobian::Zero();
62
double
delta = other.
getE
();
63
double
s =
std::sqrt
(1.0 - delta * delta);
64
double
alpha, beta;
65
if
(delta < 1E-8) {
66
alpha = 0.5 + 0.125 * delta * delta;
67
beta = 0.25;
68
}
else
{
69
alpha = (1.0 - s) / (delta * delta);
70
beta = (2.0 * alpha - 1.0) / (delta * delta * s);
71
}
72
_complex
= other.
getComplex
() * alpha;
73
result(0, 0) = alpha + other.
getE1
() * other.
getE1
() * beta;
74
result(1, 1) = alpha + other.
getE2
() * other.
getE2
() * beta;
75
result(1, 0) = result(0, 1) = other.
getE1
() * other.
getE2
() * beta;
76
return
result;
77
}
78
79
detail::EllipticityBase::Jacobian
ReducedShear::dAssign
(
ConformalShear
const
& other) {
80
Jacobian
result = Jacobian::Zero();
81
double
eta = other.
getE
();
82
double
alpha, beta;
83
if
(eta < 1E-8) {
84
alpha = 0.5 - eta * eta / 24.0;
85
beta = -1.0 / 12;
86
}
else
{
87
double
g =
std::tanh
(0.5 * eta);
88
alpha = g / eta;
89
beta = (0.5 * (1.0 - g * g) - alpha) / (eta * eta);
90
}
91
_complex
= other.
getComplex
() * alpha;
92
result(0, 0) = alpha + other.
getE1
() * other.
getE1
() * beta;
93
result(1, 1) = alpha + other.
getE2
() * other.
getE2
() * beta;
94
result(1, 0) = result(0, 1) = other.
getE1
() * other.
getE2
() * beta;
95
return
result;
96
}
97
}
// namespace ellipses
98
}
// namespace geom
99
}
// namespace afw
100
}
// namespace lsst
ConformalShear.h
Distortion.h
ReducedShear.h
lsst::afw::geom::ellipses::ConformalShear
A logarithmic complex ellipticity with magnitude .
Definition
ConformalShear.h:45
lsst::afw::geom::ellipses::Distortion
A complex ellipticity with magnitude .
Definition
Distortion.h:44
lsst::afw::geom::ellipses::ReducedShear::operator=
ReducedShear & operator=(ReducedShear const &other)
Definition
ReducedShear.h:60
lsst::afw::geom::ellipses::ReducedShear::dAssign
Jacobian dAssign(ReducedShear const &other)
Definition
ReducedShear.h:71
lsst::afw::geom::ellipses::ReducedShear::getAxisRatio
double getAxisRatio() const
Definition
ReducedShear.cc:33
lsst::afw::geom::ellipses::ReducedShear::ReducedShear
ReducedShear(std::complex< double > const &complex)
Definition
ReducedShear.h:47
lsst::afw::geom::ellipses::detail::EllipticityBase::getE2
double getE2() const
Definition
EllipticityBase.h:66
lsst::afw::geom::ellipses::detail::EllipticityBase::Jacobian
Eigen::Matrix2d Jacobian
Definition
EllipticityBase.h:47
lsst::afw::geom::ellipses::detail::EllipticityBase::getE1
double getE1() const
Definition
EllipticityBase.h:57
lsst::afw::geom::ellipses::detail::EllipticityBase::_complex
std::complex< double > _complex
Definition
EllipticityBase.h:91
lsst::afw::geom::ellipses::detail::EllipticityBase::getE
double getE() const
Definition
EllipticityBase.h:75
lsst::afw::geom::ellipses::detail::EllipticityBase::getComplex
std::complex< double > & getComplex()
Definition
EllipticityBase.h:51
lsst::afw::geom::ellipses
Definition
ellipses.h:50
lsst::afw::geom
Definition
frameSetUtils.h:40
lsst::afw
Definition
imageAlgorithm.dox:1
lsst
std::sqrt
T sqrt(T... args)
std::tanh
T tanh(T... args)
Generated on
for lsst.afw by
1.17.0