LSSTApplications  10.0+286,10.0+36,10.0+46,10.0-2-g4f67435,10.1+152,10.1+37,11.0,11.0+1,11.0-1-g47edd16,11.0-1-g60db491,11.0-1-g7418c06,11.0-2-g04d2804,11.0-2-g68503cd,11.0-2-g818369d,11.0-2-gb8b8ce7
LSSTDataManagementBasePackage
Classes | Public Types | Public Member Functions | Static Public Member Functions | Protected Member Functions | Private Member Functions | Static Private Member Functions | Private Attributes | Friends | List of all members
lsst::afw::detection::PeakTable Class Reference

Table class for Peaks in Footprints. More...

#include <Peak.h>

Inheritance diagram for lsst::afw::detection::PeakTable:
lsst::afw::table::BaseTable lsst::daf::base::Citizen

Classes

struct  MinimalSchema
 

Public Types

typedef PeakRecord Record
 
typedef
afw::table::ColumnViewT
< PeakRecord
ColumnView
 
typedef afw::table::CatalogT
< Record
Catalog
 
typedef afw::table::CatalogT
< Record const > 
ConstCatalog
 
- Public Types inherited from lsst::afw::table::BaseTable
typedef BaseRecord Record
 The associated record class. More...
 
typedef BaseColumnView ColumnView
 The associated ColumnView class. More...
 
typedef CatalogT< RecordCatalog
 Template of CatalogT used to hold records of the associated type. More...
 
typedef CatalogT< Record const > ConstCatalog
 Template of CatalogT used to hold const records of the associated type. More...
 
- Public Types inherited from lsst::daf::base::Citizen
enum  { magicSentinel = 0xdeadbeef }
 
typedef unsigned long memId
 Type of the block's ID. More...
 
typedef memId(* memNewCallback )(const memId cid)
 A function used to register a callback. More...
 
typedef memId(* memCallback )(const Citizen *ptr)
 

Public Member Functions

boost::shared_ptr
< afw::table::IdFactory
getIdFactory ()
 Return the object that generates IDs for the table (may be null). More...
 
boost::shared_ptr
< afw::table::IdFactory const > 
getIdFactory () const
 Return the object that generates IDs for the table (may be null). More...
 
void setIdFactory (boost::shared_ptr< afw::table::IdFactory > f)
 Switch to a new IdFactory – object that generates IDs for the table (may be null). More...
 
boost::shared_ptr< PeakTableclone () const
 
boost::shared_ptr< PeakRecordmakeRecord ()
 
boost::shared_ptr< PeakRecordcopyRecord (afw::table::BaseRecord const &other)
 
boost::shared_ptr< PeakRecordcopyRecord (afw::table::BaseRecord const &other, afw::table::SchemaMapper const &mapper)
 
- Public Member Functions inherited from lsst::afw::table::BaseTable
boost::shared_ptr
< daf::base::PropertyList
getMetadata () const
 Return the flexible metadata associated with the table. May be null. More...
 
void setMetadata (boost::shared_ptr< daf::base::PropertyList > const &metadata)
 Set the flexible metadata associated with the table. May be null. More...
 
boost::shared_ptr
< daf::base::PropertyList
popMetadata ()
 Return the metadata and set the internal metadata to a null pointer. More...
 
boost::shared_ptr< BaseTableclone () const
 Return a polymorphic deep copy of the table. More...
 
boost::shared_ptr< BaseRecordmakeRecord ()
 Default-construct an associated record. More...
 
boost::shared_ptr< BaseRecordcopyRecord (BaseRecord const &input)
 Deep-copy a record, requiring that it have the same schema as this table. More...
 
boost::shared_ptr< BaseRecordcopyRecord (BaseRecord const &input, SchemaMapper const &mapper)
 Deep-copy a record, using a mapper to relate two schemas. More...
 
Schema getSchema () const
 Return the table's schema. More...
 
void preallocate (std::size_t nRecords)
 Allocate contiguous space for new records in advance. More...
 
std::size_t getBufferSize () const
 Return the number of additional records space has been already been allocated for. More...
 
virtual ~BaseTable ()
 
- Public Member Functions inherited from lsst::daf::base::Citizen
 Citizen (const std::type_info &)
 
 Citizen (Citizen const &)
 
 ~Citizen ()
 
Citizenoperator= (Citizen const &)
 
std::string repr () const
 Return a string representation of a Citizen. More...
 
void markPersistent (void)
 Mark a Citizen as persistent and not destroyed until process end. More...
 
memId getId () const
 Return the Citizen's ID. More...
 

Static Public Member Functions

static boost::shared_ptr
< PeakTable
make (afw::table::Schema const &schema, bool forceNew=false)
 Obtain a table that can be used to create records with given schema. More...
 
static afw::table::Schema makeMinimalSchema ()
 Return a minimal schema for Peak tables and records. More...
 
static bool checkSchema (afw::table::Schema const &other)
 Return true if the given schema is a valid PeakTable schema. More...
 
static afw::table::Key
< afw::table::RecordId
getIdKey ()
 
static afw::table::Key< int > getIxKey ()
 
static afw::table::Key< int > getIyKey ()
 
static afw::table::Key< float > getFxKey ()
 
static afw::table::Key< float > getFyKey ()
 
static afw::table::Key< float > getPeakValueKey ()
 
- Static Public Member Functions inherited from lsst::afw::table::BaseTable
static boost::shared_ptr
< BaseTable
make (Schema const &schema)
 Construct a new table. More...
 
- Static Public Member Functions inherited from lsst::daf::base::Citizen
static bool hasBeenCorrupted ()
 Check all allocated blocks for corruption. More...
 
static memId getNextMemId ()
 Return the memId of the next object to be allocated. More...
 
static int init ()
 Called once when the memory system is being initialised. More...
 
static int census (int, memId startingMemId=0)
 How many active Citizens are there? More...
 
static void census (std::ostream &stream, memId startingMemId=0)
 Print a list of all active Citizens to stream, sorted by ID. More...
 
static const std::vector
< const Citizen * > * 
census ()
 Return a (newly allocated) std::vector of active Citizens sorted by ID. More...
 
static memId setNewCallbackId (memId id)
 Call the NewCallback when block is allocated. More...
 
static memId setDeleteCallbackId (memId id)
 Call the current DeleteCallback when block is deleted. More...
 
static memNewCallback setNewCallback (memNewCallback func)
 Set the NewCallback function. More...
 
static memCallback setDeleteCallback (memCallback func)
 Set the DeleteCallback function. More...
 
static memCallback setCorruptionCallback (memCallback func)
 Set the CorruptionCallback function. More...
 

Protected Member Functions

 PeakTable (afw::table::Schema const &schema, boost::shared_ptr< afw::table::IdFactory > const &idFactory)
 
 PeakTable (PeakTable const &other)
 
- Protected Member Functions inherited from lsst::afw::table::BaseTable
template<typename Derived >
boost::shared_ptr< Derived > getSelf ()
 Convenience function for static-casting shared_from_this for use by derived classes. More...
 
template<typename Derived >
boost::shared_ptr< Derived const > getSelf () const
 Convenience function for static-casting shared_from_this for use by derived classes. More...
 
virtual void handleAliasChange (std::string const &alias)
 
virtual boost::shared_ptr
< BaseTable
_clone () const =0
 Clone implementation with noncovariant return types. More...
 
virtual boost::shared_ptr
< BaseRecord
_makeRecord ()=0
 Default-construct an associated record (protected implementation). More...
 
 BaseTable (Schema const &schema)
 Construct from a schema. More...
 
 BaseTable (BaseTable const &other)
 Copy construct. More...
 

Private Member Functions

virtual boost::shared_ptr
< afw::table::io::FitsWriter
makeFitsWriter (fits::Fits *fitsfile, int flags) const
 

Static Private Member Functions

static MinimalSchemagetMinimalSchema ()
 

Private Attributes

boost::shared_ptr
< afw::table::IdFactory
_idFactory
 

Friends

class afw::table::io::FitsWriter
 

Additional Inherited Members

- Static Public Attributes inherited from lsst::afw::table::BaseTable
static int nRecordsPerBlock
 Number of records in each memory block. More...
 

Detailed Description

Table class for Peaks in Footprints.

Definition at line 84 of file Peak.h.

Member Typedef Documentation

Definition at line 89 of file Peak.h.

Definition at line 88 of file Peak.h.

Definition at line 90 of file Peak.h.

Definition at line 87 of file Peak.h.

Constructor & Destructor Documentation

lsst::afw::detection::PeakTable::PeakTable ( afw::table::Schema const &  schema,
boost::shared_ptr< afw::table::IdFactory > const &  idFactory 
)
protected

Definition at line 195 of file Peak.cc.

195  :
196  afw::table::BaseTable(schema), _idFactory(idFactory) {}
afw::table::Schema schema
Definition: GaussianPsf.cc:41
boost::shared_ptr< afw::table::IdFactory > _idFactory
Definition: Peak.h:199
lsst::afw::detection::PeakTable::PeakTable ( PeakTable const &  other)
protected

Definition at line 198 of file Peak.cc.

198  :
199  afw::table::BaseTable(other),
200  _idFactory(other._idFactory ? other._idFactory->clone() : other._idFactory) {}
boost::shared_ptr< afw::table::IdFactory > _idFactory
Definition: Peak.h:199

Member Function Documentation

static bool lsst::afw::detection::PeakTable::checkSchema ( afw::table::Schema const &  other)
inlinestatic

Return true if the given schema is a valid PeakTable schema.

This will always be true if the given schema was originally constructed using makeMinimalSchema(), and will rarely be true otherwise.

Definition at line 124 of file Peak.h.

124  {
125  return other.contains(getMinimalSchema().schema);
126  }
afw::table::Schema schema
Definition: GaussianPsf.cc:41
static MinimalSchema & getMinimalSchema()
Definition: Peak.cc:212
boost::shared_ptr< PeakTable > lsst::afw::detection::PeakTable::clone ( ) const
inline

Definition at line 152 of file Peak.h.

152 { return boost::static_pointer_cast<PeakTable>(_clone()); }
PeakTable(afw::table::Schema const &schema, boost::shared_ptr< afw::table::IdFactory > const &idFactory)
Definition: Peak.cc:195
virtual boost::shared_ptr< BaseTable > _clone() const =0
Clone implementation with noncovariant return types.
boost::shared_ptr< PeakRecord > lsst::afw::detection::PeakTable::copyRecord ( afw::table::BaseRecord const &  other)
inline

Definition at line 158 of file Peak.h.

158  {
159  return boost::static_pointer_cast<PeakRecord>(afw::table::BaseTable::copyRecord(other));
160  }
boost::shared_ptr< BaseRecord > copyRecord(BaseRecord const &input)
Deep-copy a record, requiring that it have the same schema as this table.
boost::shared_ptr< PeakRecord > lsst::afw::detection::PeakTable::copyRecord ( afw::table::BaseRecord const &  other,
afw::table::SchemaMapper const &  mapper 
)
inline

Definition at line 163 of file Peak.h.

166  {
167  return boost::static_pointer_cast<PeakRecord>(afw::table::BaseTable::copyRecord(other, mapper));
168  }
boost::shared_ptr< BaseRecord > copyRecord(BaseRecord const &input)
Deep-copy a record, requiring that it have the same schema as this table.
static afw::table::Key<float> lsst::afw::detection::PeakTable::getFxKey ( )
inlinestatic

Get keys for standard fields shared by all peaks.

These keys are used to implement getters and setters on PeakRecord.

Definition at line 146 of file Peak.h.

146 { return getMinimalSchema().fx; }
static MinimalSchema & getMinimalSchema()
Definition: Peak.cc:212
static afw::table::Key<float> lsst::afw::detection::PeakTable::getFyKey ( )
inlinestatic

Get keys for standard fields shared by all peaks.

These keys are used to implement getters and setters on PeakRecord.

Definition at line 147 of file Peak.h.

147 { return getMinimalSchema().fy; }
static MinimalSchema & getMinimalSchema()
Definition: Peak.cc:212
boost::shared_ptr< afw::table::IdFactory > lsst::afw::detection::PeakTable::getIdFactory ( )
inline

Return the object that generates IDs for the table (may be null).

Definition at line 129 of file Peak.h.

129 { return _idFactory; }
boost::shared_ptr< afw::table::IdFactory > _idFactory
Definition: Peak.h:199
boost::shared_ptr< afw::table::IdFactory const> lsst::afw::detection::PeakTable::getIdFactory ( ) const
inline

Return the object that generates IDs for the table (may be null).

Definition at line 132 of file Peak.h.

132 { return _idFactory; }
boost::shared_ptr< afw::table::IdFactory > _idFactory
Definition: Peak.h:199
static afw::table::Key<afw::table::RecordId> lsst::afw::detection::PeakTable::getIdKey ( )
inlinestatic

Get keys for standard fields shared by all peaks.

These keys are used to implement getters and setters on PeakRecord.

Definition at line 143 of file Peak.h.

143 { return getMinimalSchema().id; }
afw::table::Key< afw::table::RecordId > id
Definition: Peak.h:181
static MinimalSchema & getMinimalSchema()
Definition: Peak.cc:212
static afw::table::Key<int> lsst::afw::detection::PeakTable::getIxKey ( )
inlinestatic

Get keys for standard fields shared by all peaks.

These keys are used to implement getters and setters on PeakRecord.

Definition at line 144 of file Peak.h.

144 { return getMinimalSchema().ix; }
static MinimalSchema & getMinimalSchema()
Definition: Peak.cc:212
static afw::table::Key<int> lsst::afw::detection::PeakTable::getIyKey ( )
inlinestatic

Get keys for standard fields shared by all peaks.

These keys are used to implement getters and setters on PeakRecord.

Definition at line 145 of file Peak.h.

145 { return getMinimalSchema().iy; }
static MinimalSchema & getMinimalSchema()
Definition: Peak.cc:212
PeakTable::MinimalSchema & lsst::afw::detection::PeakTable::getMinimalSchema ( )
staticprivate

Definition at line 212 of file Peak.cc.

212  {
213  static MinimalSchema it;
214  return it;
215 }
static afw::table::Key<float> lsst::afw::detection::PeakTable::getPeakValueKey ( )
inlinestatic

Get keys for standard fields shared by all peaks.

These keys are used to implement getters and setters on PeakRecord.

Definition at line 148 of file Peak.h.

148 { return getMinimalSchema().peakValue; }
afw::table::Key< float > peakValue
Definition: Peak.h:186
static MinimalSchema & getMinimalSchema()
Definition: Peak.cc:212
boost::shared_ptr< PeakTable > lsst::afw::detection::PeakTable::make ( afw::table::Schema const &  schema,
bool  forceNew = false 
)
static

Obtain a table that can be used to create records with given schema.

Parameters
[in]schemaSchema that defines the fields, offsets, and record size for the table.
[in]forceNewIf true, guarantee that the returned PeakTable will be a new one, rather than attempting to reuse an existing PeakTable with the same Schema.

If a PeakTable already exists that uses this Schema, that PeakTable will be returned instead of creating a new one. This is different from how most Record/Table classes work, but it is an important memory optimization for Peaks, for which we expect to have very few distinct Schemas as well as many catalogs (one per Footprint) with a small number of Peaks; we don't want to have a different PeakTable for each one of those catalogs if they all share the same Schema. This behavior can be disabled by setting forceNewTable=true or by cloning an existing table (in both of these cases, the new table will not be reused in the future, either)

Definition at line 154 of file Peak.cc.

157  {
158  typedef std::list< boost::weak_ptr<PeakTable> > CachedTableList;
159  static CachedTableList cache;
160  if (!checkSchema(schema)) {
161  throw LSST_EXCEPT(
162  lsst::pex::exceptions::InvalidParameterError,
163  "Schema for Peak must contain at least the keys defined by makeMinimalSchema()."
164  );
165  }
166  if (forceNewTable) {
167  return boost::make_shared<PeakTableImpl>(schema, afw::table::IdFactory::makeSimple());
168  }
169  CachedTableList::iterator iter = cache.begin();
170  while (iter != cache.end()) {
171  PTR(PeakTable) p = iter->lock();
172  if (!p) {
173  iter = cache.erase(iter);
174  } else {
175  if (p->getSchema().compare(schema, afw::table::Schema::IDENTICAL)
177  // Move the one we found to the front of the list, so it's easier to find
178  // the same thing repeatedly
179  if (iter != cache.begin()) {
180  cache.splice(cache.begin(), cache, iter);
181  }
182  return p;
183  }
184  ++iter;
185  }
186  }
187  // No match: we create a new table and put it in the cache
188  PTR(PeakTable) newTable = boost::make_shared<PeakTableImpl>(
189  schema, afw::table::IdFactory::makeSimple()
190  );
191  cache.push_front(newTable);
192  return newTable;
193 }
int iter
PeakTable(afw::table::Schema const &schema, boost::shared_ptr< afw::table::IdFactory > const &idFactory)
Definition: Peak.cc:195
afw::table::Schema schema
Definition: GaussianPsf.cc:41
#define PTR(...)
Definition: base.h:41
static boost::shared_ptr< IdFactory > makeSimple()
Return a simple IdFactory that simply counts from 1.
std::map< Citizen const *, CitizenInfo > table
Definition: Citizen.h:93
if(width!=gim.getWidth()||height!=gim.getHeight()||x0!=gim.getX0()||y0!=gim.getY0())
Definition: saturated.cc:47
#define LSST_EXCEPT(type,...)
Definition: Exception.h:46
static bool checkSchema(afw::table::Schema const &other)
Return true if the given schema is a valid PeakTable schema.
Definition: Peak.h:124
Everything is the same.
Definition: Schema.h:67
boost::shared_ptr< afw::table::io::FitsWriter > lsst::afw::detection::PeakTable::makeFitsWriter ( fits::Fits fitsfile,
int  flags 
) const
privatevirtual

Reimplemented from lsst::afw::table::BaseTable.

Definition at line 218 of file Peak.cc.

218  {
219  return boost::make_shared<PeakFitsWriter>(fitsfile, flags);
220 }
static afw::table::Schema lsst::afw::detection::PeakTable::makeMinimalSchema ( )
inlinestatic

Return a minimal schema for Peak tables and records.

The returned schema can and generally should be modified further, but many operations on PeakRecords will assume that at least the fields provided by this routine are present.

Definition at line 116 of file Peak.h.

116 { return getMinimalSchema().schema; }
static MinimalSchema & getMinimalSchema()
Definition: Peak.cc:212
boost::shared_ptr< PeakRecord > lsst::afw::detection::PeakTable::makeRecord ( )
inline

Definition at line 155 of file Peak.h.

155 { return boost::static_pointer_cast<PeakRecord>(_makeRecord()); }
virtual boost::shared_ptr< BaseRecord > _makeRecord()=0
Default-construct an associated record (protected implementation).
void lsst::afw::detection::PeakTable::setIdFactory ( boost::shared_ptr< afw::table::IdFactory f)
inline

Switch to a new IdFactory – object that generates IDs for the table (may be null).

Definition at line 135 of file Peak.h.

135 { _idFactory = f; }
boost::shared_ptr< afw::table::IdFactory > _idFactory
Definition: Peak.h:199

Friends And Related Function Documentation

friend class afw::table::io::FitsWriter
friend

Definition at line 194 of file Peak.h.

Member Data Documentation

boost::shared_ptr< afw::table::IdFactory > lsst::afw::detection::PeakTable::_idFactory
private

Definition at line 199 of file Peak.h.


The documentation for this class was generated from the following files: