lsst.meas.base
ga44f29b7aa+7c34ee3998
Toggle main menu visibility
Loading...
Searching...
No Matches
src
CircularApertureFlux.cc
Go to the documentation of this file.
1
// -*- lsst-c++ -*-
2
/*
3
* LSST Data Management System
4
* Copyright 2008-2014 LSST Corporation.
5
*
6
* This product includes software developed by the
7
* LSST Project (http://www.lsst.org/).
8
*
9
* This program is free software: you can redistribute it and/or modify
10
* it under the terms of the GNU General Public License as published by
11
* the Free Software Foundation, either version 3 of the License, or
12
* (at your option) any later version.
13
*
14
* This program is distributed in the hope that it will be useful,
15
* but WITHOUT ANY WARRANTY; without even the implied warranty of
16
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17
* GNU General Public License for more details.
18
*
19
* You should have received a copy of the LSST License Statement and
20
* the GNU General Public License along with this program. If not,
21
* see <http://www.lsstcorp.org/LegalNotices/>.
22
*/
23
24
#include "
lsst/afw/table/Source.h
"
25
#include "
lsst/meas/base/ApertureFlux.h
"
26
#include "
lsst/meas/base/CircularApertureFlux.h
"
27
#include "
lsst/meas/base/SincCoeffs.h
"
28
29
namespace
lsst
{
30
namespace
meas
{
31
namespace
base
{
32
33
CircularApertureFluxAlgorithm::CircularApertureFluxAlgorithm
(
Control
const
& ctrl,
std::string
const
& name,
34
afw::table::Schema
& schema,
35
daf::base::PropertySet
& metadata)
36
:
ApertureFluxAlgorithm
(ctrl, name, schema, metadata) {
37
for
(
std::size_t
i = 0; i < ctrl.
radii
.
size
(); ++i) {
38
if
(ctrl.
radii
[i] > ctrl.
maxSincRadius
)
break
;
39
SincCoeffs<float>::cache
(0.0, ctrl.
radii
[i]);
40
}
41
}
42
43
void
CircularApertureFluxAlgorithm::measure
(
afw::table::SourceRecord
& measRecord,
44
afw::image::Exposure<float>
const
& exposure)
const
{
45
afw::geom::ellipses::Ellipse
ellipse(
afw::geom::ellipses::Axes
(1.0, 1.0, 0.0));
46
std::shared_ptr<afw::geom::ellipses::Axes>
47
axes =
std::static_pointer_cast<afw::geom::ellipses::Axes>
(ellipse.
getCorePtr
());
48
for
(
std::size_t
i = 0; i <
_ctrl
.radii.size(); ++i) {
49
// Each call to _centroidExtractor within this loop goes through exactly the same error-checking
50
// logic and returns the same result, but it's not expensive logic, so we just call it repeatedly
51
// instead of coming up with a new interface that would allow us to move it outside the loop.
52
ellipse.
setCenter
(
_centroidExtractor
(measRecord,
getFlagHandler
(i)));
53
axes->setA(
_ctrl
.radii[i]);
54
axes->setB(
_ctrl
.radii[i]);
55
ApertureFluxAlgorithm::Result
result =
computeFlux
(exposure.
getMaskedImage
(), ellipse,
_ctrl
);
56
copyResultToRecord
(result, measRecord, i);
57
}
58
}
59
60
}
// namespace base
61
}
// namespace meas
62
}
// namespace lsst
ApertureFlux.h
CircularApertureFlux.h
SincCoeffs.h
Source.h
std::string
lsst::afw::geom::ellipses::Axes
lsst::afw::geom::ellipses::Ellipse
lsst::afw::geom::ellipses::Ellipse::setCenter
void setCenter(lsst::geom::Point2D const ¢er)
lsst::afw::geom::ellipses::Ellipse::getCorePtr
std::shared_ptr< BaseCore const > getCorePtr() const
lsst::afw::image::Exposure
lsst::afw::image::Exposure::getMaskedImage
MaskedImageT getMaskedImage()
lsst::afw::table::Schema
lsst::afw::table::SourceRecord
lsst::daf::base::PropertySet
lsst::meas::base::ApertureFluxAlgorithm::_centroidExtractor
SafeCentroidExtractor _centroidExtractor
Definition
ApertureFlux.h:199
lsst::meas::base::ApertureFluxAlgorithm::ApertureFluxAlgorithm
ApertureFluxAlgorithm(Control const &ctrl, std::string const &name, afw::table::Schema &schema, daf::base::PropertySet &metadata)
Construct the algorithm and add its fields to the given Schema.
Definition
ApertureFlux.cc:71
lsst::meas::base::ApertureFluxAlgorithm::copyResultToRecord
void copyResultToRecord(Result const &result, afw::table::SourceRecord &record, int index) const
Definition
ApertureFlux.cc:96
lsst::meas::base::ApertureFluxAlgorithm::Control
ApertureFluxControl Control
Definition
ApertureFlux.h:89
lsst::meas::base::ApertureFluxAlgorithm::_ctrl
Control const _ctrl
Definition
ApertureFlux.h:198
lsst::meas::base::ApertureFluxAlgorithm::computeFlux
static Result computeFlux(afw::image::Image< T > const &image, afw::geom::ellipses::Ellipse const &ellipse, Control const &ctrl=Control())
Compute the instFlux (and optionally, uncertanties) within an aperture using the algorithm determined...
Definition
ApertureFlux.cc:223
lsst::meas::base::ApertureFluxAlgorithm::Result
ApertureFluxResult Result
Result object returned by static methods.
Definition
ApertureFlux.h:92
lsst::meas::base::ApertureFluxAlgorithm::getFlagHandler
FlagHandler const & getFlagHandler(int index) const
Definition
ApertureFlux.h:196
lsst::meas::base::ApertureFluxControl::maxSincRadius
double maxSincRadius
"Maximum radius (in pixels) for which the sinc algorithm should be used instead of the " "faster naiv...
Definition
ApertureFlux.h:58
lsst::meas::base::ApertureFluxControl::radii
std::vector< double > radii
"Radius (in pixels) of apertures." ;
Definition
ApertureFlux.h:53
lsst::meas::base::CircularApertureFluxAlgorithm::measure
virtual void measure(afw::table::SourceRecord &record, afw::image::Exposure< float > const &exposure) const
Measure the configured apertures on the given image.
Definition
CircularApertureFlux.cc:43
lsst::meas::base::CircularApertureFluxAlgorithm::CircularApertureFluxAlgorithm
CircularApertureFluxAlgorithm(Control const &ctrl, std::string const &name, afw::table::Schema &schema, daf::base::PropertySet &metadata)
Definition
CircularApertureFlux.cc:33
lsst::meas::base::SincCoeffs::cache
static void cache(float rInner, float rOuter)
Cache the coefficients for a particular aperture.
Definition
SincCoeffs.cc:499
lsst::meas::base
Definition
Algorithm.h:37
lsst::meas
Definition
Algorithm.h:36
lsst
std::static_pointer_cast
T static_pointer_cast(T... args)
std::shared_ptr
std::vector::size
T size(T... args)
std::size_t
Generated on
for lsst.meas.base by
1.17.0