LSSTApplications
10.0+286,10.0+36,10.0+46,10.0-2-g4f67435,10.1+152,10.1+37,11.0,11.0+1,11.0-1-g47edd16,11.0-1-g60db491,11.0-1-g7418c06,11.0-2-g04d2804,11.0-2-g68503cd,11.0-2-g818369d,11.0-2-gb8b8ce7
LSSTDataManagementBasePackage
Main Page
Related Pages
Modules
Namespaces
Classes
Files
Examples
File List
File Members
home
lsstsw
stack
Linux64
meas_base
11.0+1
include
lsst
meas
base
SincCoeffs.h
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
#ifndef LSST_MEAS_BASE_SincCoeffs_h_INCLUDED
25
#define LSST_MEAS_BASE_SincCoeffs_h_INCLUDED
26
27
#include <map>
28
29
#include "
lsst/afw/image/Image.h
"
30
#include "
lsst/afw/geom/ellipses/Axes.h
"
31
32
namespace
lsst {
namespace
meas {
namespace
base {
33
42
template
<
typename
PixelT>
43
class
SincCoeffs
{
44
public
:
45
46
typedef
afw::image::Image<PixelT>
CoeffT
;
47
53
static
void
cache
(
float
rInner,
float
rOuter);
54
60
static
PTR
(
CoeffT
const
)
61
get
(afw::geom::ellipses::Axes const & outerEllipse,
float
const innerRadiusFactor=0.0);
62
64
static
PTR
(
CoeffT
)
65
calculate
(afw::geom::ellipses::Axes const& outerEllipse,
double
const innerFactor=0.0);
66
67
private:
68
69
// A comparison function that doesn't require equality closer than machine epsilon
70
template <typename T>
71
struct
FuzzyCompare
{
72
bool
operator()
(T
x
, T
y
)
const
{
73
if
(isEqual(x, y)) {
74
return
false
;
75
}
76
return
(x - y < 0) ?
true
:
false
;
77
}
78
bool
isEqual
(T
x
, T
y
)
const
{
79
return ::fabs(x - y) < std::numeric_limits<T>::epsilon();
80
}
81
};
82
83
typedef
std::map<float, PTR(CoeffT), FuzzyCompare<float> >
CoeffMap
;
84
typedef
std::map<float, CoeffMap, FuzzyCompare<float> >
CoeffMapMap
;
85
SincCoeffs
() :
_cache
() {};
86
SincCoeffs
(
SincCoeffs
const
&);
// unimplemented: singleton
87
void
operator=
(
SincCoeffs
const
&);
// unimplemented: singleton
88
89
static
SincCoeffs
&
getInstance
();
90
91
/*
92
* Search the cache for coefficients for an aperture
93
*
94
* If the coefficients are not cached, a null shared_ptr will be returned.
95
*/
96
PTR
(
CoeffT
const
)
97
_lookup
(afw::geom::ellipses::Axes const & outerEllipse,
double
const innerRadiusFactor=0.0) const;
98
99
CoeffMapMap
_cache
;
//< Cache of coefficients
100
};
101
102
}}}
// namespace lsst::meas::base
103
104
#endif // !LSST_MEAS_BASE_SincCoeffs_h_INCLUDED
y
int y
Definition:
GaussianCentroid.cc:36
lsst::meas::base::SincCoeffs::get
static boost::shared_ptr< CoeffT const > get(afw::geom::ellipses::Axes const &outerEllipse, float const innerRadiusFactor=0.0)
Definition:
SincCoeffs.cc:532
Axes.h
Definitions and inlines for Axes.
lsst::meas::base::SincCoeffs::_cache
CoeffMapMap _cache
Definition:
SincCoeffs.h:99
PTR
#define PTR(...)
Definition:
base.h:41
lsst::meas::base::SincCoeffs::CoeffMapMap
std::map< float, CoeffMap, FuzzyCompare< float > > CoeffMapMap
Definition:
SincCoeffs.h:84
lsst::meas::base::SincCoeffs
Definition:
SincCoeffs.h:43
lsst::meas::base::SincCoeffs::FuzzyCompare
Definition:
SincCoeffs.h:71
lsst::meas::base::SincCoeffs::FuzzyCompare::isEqual
bool isEqual(T x, T y) const
Definition:
SincCoeffs.h:78
lsst::meas::base::SincCoeffs::getInstance
static SincCoeffs & getInstance()
Definition:
SincCoeffs.cc:508
lsst::meas::base::SincCoeffs::_lookup
boost::shared_ptr< CoeffT const > _lookup(afw::geom::ellipses::Axes const &outerEllipse, double const innerRadiusFactor=0.0) const
Definition:
SincCoeffs.cc:540
Image.h
Support for 2-D images.
x
double x
Definition:
ChebyshevBoundedField.cc:305
lsst::meas::base::SincCoeffs::cache
static void cache(float rInner, float rOuter)
Definition:
SincCoeffs.cc:515
lsst::meas::base::SincCoeffs::CoeffMap
std::map< float, boost::shared_ptr< CoeffT >, FuzzyCompare< float > > CoeffMap
Definition:
SincCoeffs.h:83
lsst::meas::base::SincCoeffs::SincCoeffs
SincCoeffs()
Definition:
SincCoeffs.h:85
lsst::meas::base::SincCoeffs::calculate
static boost::shared_ptr< CoeffT > calculate(afw::geom::ellipses::Axes const &outerEllipse, double const innerFactor=0.0)
Calculate the coefficients for an aperture.
Definition:
SincCoeffs.cc:563
lsst::afw::image::Image
A class to represent a 2-dimensional array of pixels.
Definition:
Image.h:415
lsst::meas::base::SincCoeffs::operator=
void operator=(SincCoeffs const &)
lsst::meas::base::SincCoeffs::FuzzyCompare::operator()
bool operator()(T x, T y) const
Definition:
SincCoeffs.h:72
lsst::meas::base::SincCoeffs::CoeffT
afw::image::Image< PixelT > CoeffT
Definition:
SincCoeffs.h:46
Generated on Thu Sep 24 2015 02:29:21 for LSSTApplications by
1.8.5