LSST Applications g063fba187b+cac8b7c890,g0f08755f38+6aee506743,g1653933729+a8ce1bb630,g168dd56ebc+a8ce1bb630,g1a2382251a+b4475c5878,g1dcb35cd9c+8f9bc1652e,g20f6ffc8e0+6aee506743,g217e2c1bcf+73dee94bd0,g28da252d5a+1f19c529b9,g2bbee38e9b+3f2625acfc,g2bc492864f+3f2625acfc,g3156d2b45e+6e55a43351,g32e5bea42b+1bb94961c2,g347aa1857d+3f2625acfc,g35bb328faa+a8ce1bb630,g3a166c0a6a+3f2625acfc,g3e281a1b8c+c5dd892a6c,g3e8969e208+a8ce1bb630,g414038480c+5927e1bc1e,g41af890bb2+8a9e676b2a,g7af13505b9+809c143d88,g80478fca09+6ef8b1810f,g82479be7b0+f568feb641,g858d7b2824+6aee506743,g89c8672015+f4add4ffd5,g9125e01d80+a8ce1bb630,ga5288a1d22+2903d499ea,gb58c049af0+d64f4d3760,gc28159a63d+3f2625acfc,gcab2d0539d+b12535109e,gcf0d15dbbd+46a3f46ba9,gda6a2b7d83+46a3f46ba9,gdaeeff99f8+1711a396fd,ge79ae78c31+3f2625acfc,gef2f8181fd+0a71e47438,gf0baf85859+c1f95f4921,gfa517265be+6aee506743,gfa999e8aa5+17cd334064,w.2024.51
LSST Data Management Base Package
|
This is an auxillary class for matching objects from starlists. More...
#include <FastFinder.h>
Classes | |
class | Iterator |
Iterator meant to traverse objects within some limiting distance. More... | |
Public Types | |
using | stars_element = decltype(stars)::value_type |
using | pstar = decltype(stars)::const_iterator |
Public Member Functions | |
FastFinder (const BaseStarList &list, unsigned nXSlice=100) | |
Constructor. | |
std::shared_ptr< const BaseStar > | findClosest (const Point &where, double maxDist, bool(*SkipIt)(const BaseStar &)=nullptr) const |
Find the closest with some rejection capability. | |
std::shared_ptr< const BaseStar > | secondClosest (const Point &where, double maxDist, std::shared_ptr< const BaseStar > &closest, bool(*SkipIt)(const BaseStar &)=nullptr) const |
void | print (std::ostream &out) const |
mostly for debugging | |
Iterator | beginScan (const Point &where, double maxDist) const |
void | findRangeInSlice (int iSlice, double yStart, double yEnd, pstar &start, pstar &end) const |
pstar | locateYStart (pstar begin, pstar end, double yVal) const |
pstar | locateYEnd (pstar begin, pstar end, double yVal) const |
Public Attributes | |
const BaseStarList | baselist |
unsigned | count |
std::vector< std::shared_ptr< const BaseStar > > | stars |
unsigned | nslice |
std::vector< unsigned > | index |
double | xmin |
double | xmax |
double | xstep |
This is an auxillary class for matching objects from starlists.
It allows to locate rapidly the closest objects from a given position. The very simple strategy is to sort objects according to 1 coordinate x, and to build an index that allows to select the objects with the x coordinate inside an interval. Then every slice in x is sorted according to y, which enables a fast scan inside a x slice. listMatchCollect takes about 10ms (PC 450 MHz, optimized "-O4") for a match between lists of about 2000 objects each, which is fast enough for our needs. The same "locator" is used in listMatchupShift, to avoid scanning the whole input lists. Timing on listMatchCollect and listMatchupShift indicates a gain in speed by more than one order of magnitude after implementation of this FastFinder. Fast locator in starlists.
Definition at line 54 of file FastFinder.h.
using lsst::jointcal::FastFinder::pstar = decltype(stars)::const_iterator |
Definition at line 70 of file FastFinder.h.
using lsst::jointcal::FastFinder::stars_element = decltype(stars)::value_type |
Definition at line 69 of file FastFinder.h.
lsst::jointcal::FastFinder::FastFinder | ( | const BaseStarList & | list, |
unsigned | nXSlice = 100 ) |
Constructor.
Definition at line 38 of file FastFinder.cc.
FastFinder::Iterator lsst::jointcal::FastFinder::beginScan | ( | const Point & | where, |
double | maxDist ) const |
Definition at line 174 of file FastFinder.cc.
std::shared_ptr< const BaseStar > lsst::jointcal::FastFinder::findClosest | ( | const Point & | where, |
double | maxDist, | ||
bool(*)(const BaseStar &) | SkipIt = nullptr ) const |
Find the closest with some rejection capability.
Definition at line 83 of file FastFinder.cc.
void lsst::jointcal::FastFinder::findRangeInSlice | ( | int | iSlice, |
double | yStart, | ||
double | yEnd, | ||
pstar & | start, | ||
pstar & | end ) const |
Definition at line 168 of file FastFinder.cc.
FastFinder::pstar lsst::jointcal::FastFinder::locateYEnd | ( | pstar | begin, |
pstar | end, | ||
double | yVal ) const |
Definition at line 152 of file FastFinder.cc.
FastFinder::pstar lsst::jointcal::FastFinder::locateYStart | ( | pstar | begin, |
pstar | end, | ||
double | yVal ) const |
Definition at line 134 of file FastFinder.cc.
void lsst::jointcal::FastFinder::print | ( | std::ostream & | out | ) | const |
mostly for debugging
Definition at line 77 of file FastFinder.cc.
std::shared_ptr< const BaseStar > lsst::jointcal::FastFinder::secondClosest | ( | const Point & | where, |
double | maxDist, | ||
std::shared_ptr< const BaseStar > & | closest, | ||
bool(*)(const BaseStar &) | SkipIt = nullptr ) const |
Definition at line 101 of file FastFinder.cc.
const BaseStarList lsst::jointcal::FastFinder::baselist |
Definition at line 56 of file FastFinder.h.
unsigned lsst::jointcal::FastFinder::count |
Definition at line 58 of file FastFinder.h.
std::vector<unsigned> lsst::jointcal::FastFinder::index |
Definition at line 66 of file FastFinder.h.
unsigned lsst::jointcal::FastFinder::nslice |
Definition at line 65 of file FastFinder.h.
std::vector<std::shared_ptr<const BaseStar> > lsst::jointcal::FastFinder::stars |
Definition at line 64 of file FastFinder.h.
double lsst::jointcal::FastFinder::xmax |
Definition at line 67 of file FastFinder.h.
double lsst::jointcal::FastFinder::xmin |
Definition at line 67 of file FastFinder.h.
double lsst::jointcal::FastFinder::xstep |
Definition at line 67 of file FastFinder.h.