Class SpatialCell

Class Documentation

class SpatialCell

Class to ensure constraints for spatial modeling

A given image is divided up into cells, with each cell represented by an instance of this class. Each cell itself contains a list of instances of classes derived from SpatialCellCandidate. One class member from each cell will be chosen to fit to a spatial model. In case of a poor fit, the next class instance in the list will be fit for. If all instances in a list are rejected from the spatial model, the best one will be used.

See

The SpatialCellSet example in the module documentation.

Public Types

typedef std::vector<std::shared_ptr<SpatialCellCandidate>> CandidateList
typedef SpatialCellCandidateIterator iterator

Public Functions

SpatialCell(std::string const &label, lsst::geom::Box2I const &bbox = lsst::geom::Box2I(), CandidateList const &candidateList = CandidateList())

Constructor

Parameters
  • label: string representing “name” of cell

  • bbox: Bounding box of cell in overall image

  • candidateList: list of candidates to represent this cell

SpatialCell(SpatialCell const&)
SpatialCell(SpatialCell&&)
SpatialCell &operator=(SpatialCell const&)
SpatialCell &operator=(SpatialCell&&)
virtual ~SpatialCell()

Destructor

bool empty() const

Determine if cell has no usable candidates

size_t size() const

Return number of usable candidates in Cell

void sortCandidates()

Rearrange the candidates to reflect their current ratings

SpatialCellCandidateIterator begin()

Return an iterator to the beginning of the Candidates

SpatialCellCandidateIterator begin(bool ignoreBad)

Parameters
  • ignoreBad: If true, ignore BAD candidates

SpatialCellCandidateIterator end()

Return an iterator to (one after) the end of the Candidates

SpatialCellCandidateIterator end(bool ignoreBad)

Parameters
  • ignoreBad: If true, ignore BAD candidates

void insertCandidate(std::shared_ptr<SpatialCellCandidate> candidate)

Add a candidate to the list, preserving ranking

void removeCandidate(std::shared_ptr<SpatialCellCandidate> candidate)

Remove a candidate from the list

This is not a particularly efficient operation, since we’re using a std::vector, but should not hurt too much if the number of candidates in a cell is small.

void setIgnoreBad(bool ignoreBad)

Set whether we should omit BAD candidates from candidate list when traversing.

bool getIgnoreBad() const

Get whether we are omitting BAD candidates from candidate list when traversing.

std::shared_ptr<SpatialCellCandidate> getCandidateById(int id, bool noThrow = false)

Return the SpatialCellCandidate with the specified id

Parameters
  • id: The desired ID

  • noThrow: Return NULL in case of error

Exceptions
  • lsst::pex::exceptions::NotFoundError: if no candidate matches the id

std::string const &getLabel() const

Get SpatialCell’s label

lsst::geom::Box2I const &getBBox() const

Get SpatialCell’s BBox

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

Note

This is obviously similar to the Design Patterns (Go4) Visitor pattern, but we’ve simplified the double dispatch (i.e. we don’t call a virtual method on SpatialCellCandidate that in turn calls processCandidate(*this), but can be re-defined)

Parameters
  • visitor: Pass this object to every Candidate

  • nMaxPerCell: Visit no more than this many Candidates (<= 0: all)

  • ignoreExceptions: Ignore any exceptions thrown by the processing

  • reset: Reset visitor before passing it around

void visitCandidates(CandidateVisitor *visitor, int const nMaxPerCell = -1, bool const ignoreExceptions = false, bool const reset = true) const

Call the visitor’s processCandidate method for each Candidate in the SpatialCell (const version)

This is the const version of SpatialCellSet::visitCandidates

Parameters
  • visitor: Pass this object to every Candidate

  • nMaxPerCell: Visit no more than this many Candidates (-ve: all)

  • ignoreExceptions: Ignore any exceptions thrown by the processing

  • reset: Reset visitor before passing it around

void visitAllCandidates(CandidateVisitor *visitor, bool const ignoreExceptions = false, bool const reset = true)

Call the visitor’s processCandidate method for every Candidate in the SpatialCell

See

visitCandidates

Parameters
  • visitor: Pass this object to every Candidate

  • ignoreExceptions: Ignore any exceptions thrown by

  • reset: Reset visitor before passing it around

void visitAllCandidates(CandidateVisitor *visitor, bool const ignoreExceptions = false, bool const reset = true) const

Call the visitor’s processCandidate method for each Candidate in the SpatialCell (const version)

This is the const version of SpatialCellSet::visitAllCandidates

Parameters
  • visitor: Pass this object to every Candidate

  • ignoreExceptions: Ignore any exceptions thrown by the processing

  • reset: Reset visitor before passing it around