lsst.meas.base
ga44f29b7aa+21155385c5
Toggle main menu visibility
Loading...
Searching...
No Matches
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
{
33
namespace
meas
{
34
namespace
base
{
35
44
template
<
typename
PixelT>
45
class
SincCoeffs {
46
public
:
47
typedef
afw::image::Image<PixelT>
CoeffT
;
48
54
static
void
cache
(
float
rInner,
float
rOuter);
55
61
static
std::shared_ptr<CoeffT const>
62
get
(
afw::geom::ellipses::Axes
const
& outerEllipse,
float
const
innerRadiusFactor = 0.0);
63
65
static
std::shared_ptr<CoeffT>
66
calculate
(
afw::geom::ellipses::Axes
const
& outerEllipse,
double
const
innerFactor = 0.0);
67
68
private
:
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
{ return ::fabs(x - y) <
std::numeric_limits<T>::epsilon
(); }
79
};
80
81
typedef
std::map<float, std::shared_ptr<CoeffT>
, FuzzyCompare<float> > CoeffMap;
82
typedef
std::map<float, CoeffMap, FuzzyCompare<float>
> CoeffMapMap;
83
SincCoeffs() : _cache(){};
84
SincCoeffs(SincCoeffs
const
&);
// unimplemented: singleton
85
void
operator=(SincCoeffs
const
&);
// unimplemented: singleton
86
87
static
SincCoeffs& getInstance();
88
89
/*
90
* Search the cache for coefficients for an aperture
91
*
92
* If the coefficients are not cached, a null shared_ptr will be returned.
93
*/
94
std::shared_ptr<CoeffT const>
95
_lookup(afw::geom::ellipses::Axes
const
& outerEllipse,
double
const
innerRadiusFactor = 0.0)
const
;
96
97
CoeffMapMap _cache;
//< Cache of coefficients
98
};
99
100
}
// namespace base
101
}
// namespace meas
102
}
// namespace lsst
103
104
#endif
// !LSST_MEAS_BASE_SincCoeffs_h_INCLUDED
Axes.h
lsst::afw::geom::ellipses::Axes
lsst::afw::image::Image
lsst::meas::base::SincCoeffs::calculate
static std::shared_ptr< CoeffT > calculate(afw::geom::ellipses::Axes const &outerEllipse, double const innerFactor=0.0)
Calculate the coefficients for an aperture.
Definition
SincCoeffs.cc:543
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::SincCoeffs::get
static std::shared_ptr< CoeffT const > get(afw::geom::ellipses::Axes const &outerEllipse, float const innerRadiusFactor=0.0)
Get the coefficients for an aperture.
Definition
SincCoeffs.cc:514
lsst::meas::base::SincCoeffs::CoeffT
afw::image::Image< PixelT > CoeffT
Definition
SincCoeffs.h:47
std::numeric_limits::epsilon
T epsilon(T... args)
Image.h
std::map
lsst::meas::base
Definition
Algorithm.h:37
lsst::meas
Definition
Algorithm.h:36
lsst
std::shared_ptr
Generated on
for lsst.meas.base by
1.17.0