44                                                       std::shared_ptr<SpatialCellCandidate>, bool> {
 
   46         return a->getCandidateRating() > 
b->getCandidateRating();
 
   51 int SpatialCellCandidate::_CandidateId = 0;
 
   68 int SpatialCellImageCandidate::_width = 0;
 
   70 int SpatialCellImageCandidate::_height = 0;
 
   74         : _label(label), _bbox(
bbox), _candidateList(candidateList), _ignoreBad(true) {
 
   75     LOGL_DEBUG(
"lsst.afw.math.SpatialCell", 
"Cell %s : created with %d candidates", this->_label.
c_str(),
 
   76                this->_candidateList.size());
 
   83     CandidateList::iterator pos =
 
   85     _candidateList.
insert(pos, candidate);
 
   89     CandidateList::iterator pos = 
std::find(_candidateList.
begin(), _candidateList.
end(), candidate);
 
   90     if (pos == _candidateList.
end()) {
 
   93                 (
boost::format(
"Unable to find candidate with ID == %d") % candidate->getId()).str());
 
   95     _candidateList.
erase(pos);
 
  103     for (
auto && mthi : *mthis) {
 
  104         if (!(_ignoreBad && (mthi)->isBad())) {  
 
  117     return mthis->
end() - mthis->
begin();
 
  122         if ((*ptr)->getId() == 
id) {
 
  131                           (
boost::format(
"Unable to find object with ID == %d") % 
id).str());
 
  137                                   bool const ignoreExceptions, 
bool const reset) {
 
  145         if (nMaxPerCell > 0 && i == nMaxPerCell) {  
 
  152             if (ignoreExceptions) {
 
  163                                   bool const ignoreExceptions, 
bool const reset)
 const {
 
  172     for (SpatialCell::const_iterator candidate = (*cell)->begin(), candidateEnd = (*cell)->end();
 
  173          candidate != candidateEnd; ++candidate, ++i) {
 
  174         if (i == nMaxPerCell) {  
 
  181             if (ignoreExceptions) {
 
  204             if (ignoreExceptions) {
 
  215                                      bool const reset)
 const {
 
  224     for (SpatialCell::const_iterator candidate = (*cell)->begin(
false), candidateEnd = (*cell)->end(
false);
 
  225          candidate != candidateEnd; ++candidate, ++i) {
 
  229             if (ignoreExceptions) {
 
  241                                                            CandidateList::iterator 
end, 
bool ignoreBad)
 
  242         : _iterator(iterator), _end(
end), _ignoreBad(ignoreBad) {
 
  243     for (; _iterator != _end; ++_iterator) {
 
  244         (*_iterator)->instantiate();
 
  246         if (!(_ignoreBad && (*_iterator)->isBad())) {  
 
  253                                                            CandidateList::iterator 
end, 
bool ignoreBad, 
bool)
 
  254         : _iterator(
end), _end(
end), _ignoreBad(ignoreBad) {
 
  262     if (_iterator != _end) {
 
  266     for (; _iterator != _end; ++_iterator) {
 
  267         (*_iterator)->instantiate();
 
  269         if (!(_ignoreBad && (*_iterator)->isBad())) {  
 
  278         if (!(_ignoreBad && (*ptr)->isBad())) {  
 
  287     if (_iterator == _end) {
 
  295     if (_iterator == _end) {
 
  303         : _region(region), _cellList(
CellList()) {
 
  308     if (xSize <= 0 || ySize <= 0) {
 
  311                 (
boost::format(
"Please specify cells that contain pixels, not %dx%d") % xSize % ySize).str());
 
  315     if (nx * xSize != region.
getWidth()) {
 
  327     for (
int y = 0; 
y < ny; ++
y) {
 
  329         int const y1 = (
y == ny - 1) ? region.
getMaxY() : y0 + ySize - 1;
 
  331         for (
int x = 0; 
x < nx; ++
x) {
 
  333             int const x1 = (
x == nx - 1) ? region.
getMaxX() : x0 + xSize - 1;
 
  337             _cellList.
push_back(std::make_shared<SpatialCell>(label, 
bbox));
 
  350         return cell->getBBox().contains(
 
  361     CellList::iterator pos = 
std::find_if(_cellList.
begin(), _cellList.
end(), CellContains(candidate));
 
  363     if (pos == _cellList.
end()) {
 
  365                           (
boost::format(
"Unable to insert a candidate at (%.2f, %.2f)") %
 
  366                            candidate->getXCenter() % candidate->getYCenter())
 
  370     (*pos)->insertCandidate(candidate);
 
  374     for (
auto const &cell : _cellList) {
 
  375         cell->sortCandidates();
 
  380                                      bool const ignoreExceptions) {
 
  383     for (
auto const &cell : _cellList) {
 
  384         cell->visitCandidates(visitor, nMaxPerCell, ignoreExceptions, 
false);
 
  389                                      bool const ignoreExceptions)
 const {
 
  392     for (
auto const &cell : _cellList) {
 
  401     for (
auto const &cell : _cellList) {
 
  402         cell->visitAllCandidates(visitor, ignoreExceptions, 
false);
 
  409     for (
auto const &cell : _cellList) {
 
  416     for (
auto const &cell : _cellList) {
 
  428                           (
boost::format(
"Unable to find object with ID == %d") % 
id).str());
 
  433     for (
auto const &cell : _cellList) {
 
  434         cell->setIgnoreBad(ignoreBad);
 
#define LSST_EXCEPT_ADD(e, m)
Add the current location and a message to an existing exception before rethrowing it.
 
#define LSST_EXCEPT(type,...)
Create an exception with a given type.
 
LSST DM logging module built on log4cxx.
 
#define LOGL_DEBUG(logger, message...)
Log a debug-level message using a varargs/printf style interface.
 
virtual void processCandidate(SpatialCellCandidate *)
 
void setStatus(Status status)
Set the candidate's status.
 
An iterator that only returns usable members of the SpatialCell.
 
SpatialCellCandidateIterator(CandidateList::iterator iterator, CandidateList::iterator end, bool ignoreBad)
ctor; designed to be used to pass begin to SpatialCellCandidateIterator
 
void operator++()
Advance the iterator, maybe skipping over candidates labelled BAD.
 
std::shared_ptr< SpatialCellCandidate const  > operator*() const
Dereference the iterator to return the Candidate (if there is one)
 
size_t operator-(SpatialCellCandidateIterator const &rhs) const
Return the number of candidate between this and rhs.
 
Class to ensure constraints for spatial modeling.
 
SpatialCellCandidateIterator end()
Return an iterator to (one after) the end of the Candidates.
 
size_t size() const
Return number of usable candidates in Cell.
 
void sortCandidates()
Rearrange the candidates to reflect their current ratings.
 
void removeCandidate(std::shared_ptr< SpatialCellCandidate > candidate)
Remove a candidate from the list.
 
void visitCandidates(CandidateVisitor *visitor, int const nMaxPerCell=-1, bool const ignoreExceptions=false, bool const reset=true)
Call the visitor's processCandidate method for each Candidate in the SpatialCell.
 
SpatialCellCandidateIterator begin()
Return an iterator to the beginning of the Candidates.
 
bool empty() const
Determine if cell has no usable candidates.
 
std::shared_ptr< SpatialCellCandidate > getCandidateById(int id, bool noThrow=false)
Return the SpatialCellCandidate with the specified id.
 
SpatialCell(std::string const &label, lsst::geom::Box2I const &bbox=lsst::geom::Box2I(), CandidateList const &candidateList=CandidateList())
Constructor.
 
void visitAllCandidates(CandidateVisitor *visitor, bool const ignoreExceptions=false, bool const reset=true)
Call the visitor's processCandidate method for every Candidate in the SpatialCell.
 
void insertCandidate(std::shared_ptr< SpatialCellCandidate > candidate)
Add a candidate to the list, preserving ranking.
 
void sortCandidates()
Rearrange the Candidates in all SpatialCells to reflect their current ratings.
 
void visitAllCandidates(CandidateVisitor *visitor, bool const ignoreExceptions=false)
Call the visitor's processCandidate method for every Candidate in the SpatialCellSet.
 
void setIgnoreBad(bool ignoreBad)
Set whether we should omit BAD candidates from candidate list when traversing.
 
void insertCandidate(std::shared_ptr< SpatialCellCandidate > candidate)
Insert a candidate into the correct cell.
 
std::shared_ptr< SpatialCellCandidate > getCandidateById(int id, bool noThrow=false)
Return the SpatialCellCandidate with the specified id.
 
void visitCandidates(CandidateVisitor *visitor, int const nMaxPerCell=-1, bool const ignoreExceptions=false)
Call the visitor's processCandidate method for each Candidate in the SpatialCellSet.
 
SpatialCellSet(lsst::geom::Box2I const ®ion, int xSize, int ySize=0)
Constructor.
 
An integer coordinate rectangle.
 
int getMinY() const noexcept
 
int getHeight() const noexcept
 
int getMinX() const noexcept
 
int getWidth() const noexcept
 
int getMaxX() const noexcept
 
int getMaxY() const noexcept
 
Provides consistent interface for LSST exceptions.
 
Reports invalid arguments.
 
Reports attempts to exceed implementation-defined length limits for some classes.
 
Reports attempts to access elements using an invalid key.
 
Reports attempts to access elements outside a valid range of indices.
 
Backwards-compatibility support for depersisting the old Calib (FluxMag0/FluxMag0Err) objects.
 
int positionToIndex(double pos)
Convert image position to nearest integer index.
 
def format(config, name=None, writeSourceLine=True, prefix="", verbose=False)
 
A base class for image defects.