lsst.jointcal
g29ae962dfc+e74ecd6f80
Toggle main menu visibility
Loading...
Searching...
No Matches
include
lsst
jointcal
FastFinder.h
Go to the documentation of this file.
1
// -*- LSST-C++ -*-
2
/*
3
* This file is part of jointcal.
4
*
5
* Developed for the LSST Data Management System.
6
* This product includes software developed by the LSST Project
7
* (https://www.lsst.org).
8
* See the COPYRIGHT file at the top-level directory of this distribution
9
* for details of code ownership.
10
*
11
* This program is free software: you can redistribute it and/or modify
12
* it under the terms of the GNU General Public License as published by
13
* the Free Software Foundation, either version 3 of the License, or
14
* (at your option) any later version.
15
*
16
* This program is distributed in the hope that it will be useful,
17
* but WITHOUT ANY WARRANTY; without even the implied warranty of
18
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
19
* GNU General Public License for more details.
20
*
21
* You should have received a copy of the GNU General Public License
22
* along with this program. If not, see <https://www.gnu.org/licenses/>.
23
*/
24
25
#ifndef LSST_JOINTCAL_FAST_FINDER_H
26
#define LSST_JOINTCAL_FAST_FINDER_H
27
28
#include <vector>
29
#include "
lsst/jointcal/BaseStar.h
"
30
31
namespace
lsst
{
32
namespace
jointcal
{
33
37
52
54
class
FastFinder
{
55
public
:
56
const
BaseStarList
baselist
;
// shallow copy of the initial list of stars (not used, acts as a
57
// conservatory). The need is arguable.
58
unsigned
count
;
// total number of objects (size of input list stars).
59
/* the sorted pointer array: It does not seem very wise to use smart
60
pointers here because reference counts will uselessly jump around
61
during sorting */
62
// Unfortunately we *must* use shared_ptr here because the return value of findClosest is used to pass
63
// ownership
64
std::vector<std::shared_ptr<const BaseStar>
>
stars
;
65
unsigned
nslice
;
// number of (X) slices
66
std::vector<unsigned>
index
;
// index in "stars" of first object of each slice.
67
double
xmin
,
xmax
,
xstep
;
// x bounds, slice size
68
69
using
stars_element
=
decltype
(
stars
)::value_type;
70
using
pstar
=
decltype
(
stars
)
::const_iterator
;
71
73
FastFinder
(
const
BaseStarList
&
list
,
unsigned
nXSlice = 100);
74
76
std::shared_ptr<const BaseStar>
findClosest
(
const
Point
&where,
double
maxDist,
77
bool
(*SkipIt)(
const
BaseStar
&) =
nullptr
)
const
;
78
80
std::shared_ptr<const BaseStar>
secondClosest
(
const
Point
&where,
double
maxDist,
81
std::shared_ptr<const BaseStar>
&closest,
82
bool
(*SkipIt)(
const
BaseStar
&) =
nullptr
)
const
;
83
85
void
print
(
std::ostream
&out)
const
;
86
89
90
class
Iterator
{
91
public
:
// could be made private, but what for??
92
const
FastFinder
&
finder
;
93
int
currentSlice
,
endSlice
;
94
double
yStart
,
yEnd
;
// Y limits ( for all stripes)
95
/* pointers to the first and beyond last stars in the y range for
96
the current stripe : */
97
pstar
current
,
pend
;
98
pstar
null_value
;
// with pointers being iterators, the null value is not NULL
99
100
void
check
()
const
;
101
102
public
:
103
Iterator
(
const
FastFinder
&f,
const
Point
&where,
double
maxDist);
104
void
operator++
();
105
stars_element
operator*
()
const
;
106
};
107
108
Iterator
beginScan
(
const
Point
&where,
double
maxDist)
const
;
109
110
void
findRangeInSlice
(
int
iSlice,
double
yStart,
double
yEnd,
pstar
&start,
111
pstar
&
end
)
const
;
112
pstar
locateYStart
(
pstar
begin
,
pstar
end
,
double
yVal)
const
;
113
pstar
locateYEnd
(
pstar
begin
,
pstar
end
,
double
yVal)
const
;
114
};
115
}
// namespace jointcal
116
}
// namespace lsst
117
#endif
// LSST_JOINTCAL_FAST_FINDER_H
BaseStar.h
std::ostream
std::begin
T begin(T... args)
lsst::jointcal::BaseStar
The base class for handling stars. Used by all matching routines.
Definition
BaseStar.h:51
lsst::jointcal::FastFinder::Iterator
Iterator meant to traverse objects within some limiting distance.
Definition
FastFinder.h:90
lsst::jointcal::FastFinder::Iterator::pend
pstar pend
Definition
FastFinder.h:97
lsst::jointcal::FastFinder::Iterator::yEnd
double yEnd
Definition
FastFinder.h:94
lsst::jointcal::FastFinder::Iterator::current
pstar current
Definition
FastFinder.h:97
lsst::jointcal::FastFinder::Iterator::operator++
void operator++()
Definition
FastFinder.cc:210
lsst::jointcal::FastFinder::Iterator::Iterator
Iterator(const FastFinder &f, const Point &where, double maxDist)
Definition
FastFinder.cc:180
lsst::jointcal::FastFinder::Iterator::yStart
double yStart
Definition
FastFinder.h:94
lsst::jointcal::FastFinder::Iterator::currentSlice
int currentSlice
Definition
FastFinder.h:93
lsst::jointcal::FastFinder::Iterator::endSlice
int endSlice
Definition
FastFinder.h:93
lsst::jointcal::FastFinder::Iterator::check
void check() const
Definition
FastFinder.cc:225
lsst::jointcal::FastFinder::Iterator::null_value
pstar null_value
Definition
FastFinder.h:98
lsst::jointcal::FastFinder::Iterator::operator*
stars_element operator*() const
Definition
FastFinder.cc:205
lsst::jointcal::FastFinder::Iterator::finder
const FastFinder & finder
Definition
FastFinder.h:92
lsst::jointcal::FastFinder::count
unsigned count
Definition
FastFinder.h:58
lsst::jointcal::FastFinder::pstar
decltype(stars)::const_iterator pstar
Definition
FastFinder.h:70
lsst::jointcal::FastFinder::stars_element
decltype(stars)::value_type stars_element
Definition
FastFinder.h:69
lsst::jointcal::FastFinder::locateYStart
pstar locateYStart(pstar begin, pstar end, double yVal) const
Definition
FastFinder.cc:134
lsst::jointcal::FastFinder::findRangeInSlice
void findRangeInSlice(int iSlice, double yStart, double yEnd, pstar &start, pstar &end) const
Definition
FastFinder.cc:168
lsst::jointcal::FastFinder::print
void print(std::ostream &out) const
mostly for debugging
Definition
FastFinder.cc:77
lsst::jointcal::FastFinder::nslice
unsigned nslice
Definition
FastFinder.h:65
lsst::jointcal::FastFinder::findClosest
std::shared_ptr< const BaseStar > findClosest(const Point &where, double maxDist, bool(*SkipIt)(const BaseStar &)=nullptr) const
Find the closest with some rejection capability.
Definition
FastFinder.cc:83
lsst::jointcal::FastFinder::baselist
const BaseStarList baselist
Definition
FastFinder.h:56
lsst::jointcal::FastFinder::FastFinder
FastFinder(const BaseStarList &list, unsigned nXSlice=100)
Constructor.
Definition
FastFinder.cc:38
lsst::jointcal::FastFinder::xmin
double xmin
Definition
FastFinder.h:67
lsst::jointcal::FastFinder::secondClosest
std::shared_ptr< const BaseStar > secondClosest(const Point &where, double maxDist, std::shared_ptr< const BaseStar > &closest, bool(*SkipIt)(const BaseStar &)=nullptr) const
Definition
FastFinder.cc:101
lsst::jointcal::FastFinder::beginScan
Iterator beginScan(const Point &where, double maxDist) const
Definition
FastFinder.cc:174
lsst::jointcal::FastFinder::index
std::vector< unsigned > index
Definition
FastFinder.h:66
lsst::jointcal::FastFinder::stars
std::vector< std::shared_ptr< const BaseStar > > stars
Definition
FastFinder.h:64
lsst::jointcal::FastFinder::xmax
double xmax
Definition
FastFinder.h:67
lsst::jointcal::FastFinder::xstep
double xstep
Definition
FastFinder.h:67
lsst::jointcal::FastFinder::locateYEnd
pstar locateYEnd(pstar begin, pstar end, double yVal) const
Definition
FastFinder.cc:152
lsst::jointcal::Point
A point in a plane.
Definition
Point.h:37
std::end
T end(T... args)
std::list
std::const_iterator
lsst::jointcal
Definition
Associations.h:50
lsst::jointcal::BaseStarList
StarList< BaseStar > BaseStarList
Definition
BaseStar.h:121
lsst::jointcal::Iterator
FastFinder::Iterator Iterator
Definition
FastFinder.cc:178
lsst
std::shared_ptr
std::vector
Generated on
for lsst.jointcal by
1.17.0