LSSTApplications  18.1.0
LSSTDataManagementBasePackage
FitsReader.cc
Go to the documentation of this file.
1 // -*- lsst-c++ -*-
2 
4 
5 namespace lsst {
6 namespace afw {
7 namespace table {
8 namespace io {
9 
10 namespace {
11 
13 
14 Registry& getRegistry() {
15  static Registry it;
16  return it;
17 }
18 
19 static FitsReader const baseFitsReader("BASE");
20 
21 } // namespace
22 
25  int ioFlags, bool stripMetadata) const {
27  result->setMetadata(metadata);
28  return result;
29 }
30 
31 FitsReader::FitsReader(std::string const& name) { getRegistry()[name] = this; }
32 
33 FitsReader const* FitsReader::_lookupFitsReader(daf::base::PropertyList const& metadata) {
34  std::string name = metadata.get(std::string("AFW_TYPE"), std::string("BASE"));
35  Registry::iterator i = getRegistry().find(name);
36  if (i == getRegistry().end()) {
37  throw LSST_EXCEPT(
39  (boost::format("FitsReader with name '%s' does not exist; check AFW_TYPE keyword.") % name)
40  .str());
41  }
42  return i->second;
43 }
44 
45 void FitsReader::_setupArchive(afw::fits::Fits& fits, FitsSchemaInputMapper& mapper,
46  std::shared_ptr<InputArchive> archive, int ioFlags) const {
47  if (usesArchive(ioFlags)) {
48  if (archive) {
49  mapper.setArchive(archive);
50  } else {
51  mapper.readArchive(fits);
52  }
53  }
54 }
55 } // namespace io
56 } // namespace table
57 } // namespace afw
58 } // namespace lsst
A utility class for reading FITS binary tables.
Definition: FitsReader.h:34
Class for storing ordered metadata with comments.
Definition: PropertyList.h:68
FitsReader(std::string const &persistedClassName)
Construct a FitsReader, registering it to be used for all persisted tables with the given tag...
Definition: FitsReader.cc:31
py::object result
Definition: schema.cc:418
A class that describes a mapping from a FITS binary table to an afw::table Schema.
A simple struct that combines the two arguments that must be passed to most cfitsio routines and cont...
Definition: fits.h:297
STL class.
Fits * fits
Definition: FitsWriter.cc:90
STL class.
Reports attempts to access elements using an invalid key.
Definition: Runtime.h:151
A base class for image defects.
def format(config, name=None, writeSourceLine=True, prefix="", verbose=False)
Definition: history.py:168
virtual std::shared_ptr< BaseTable > makeTable(FitsSchemaInputMapper &mapper, std::shared_ptr< daf::base::PropertyList > metadata, int ioFlags, bool stripMetadata) const
Callback to create a Table object from a FITS binary table schema.
Definition: FitsReader.cc:23
#define LSST_EXCEPT(type,...)
Create an exception with a given type.
Definition: Exception.h:48
T get(std::string const &name) const
Get the last value for a property name (possibly hierarchical).
Definition: PropertyList.cc:61
static std::shared_ptr< BaseTable > make(Schema const &schema)
Construct a new table.
Definition: BaseTable.cc:121
Schema finalize()
Map any remaining items into regular Schema items, and return the final Schema.
bool readArchive(afw::fits::Fits &fits)
Set the Archive by reading from the HDU specified by the AR_HDU header entry.
void setArchive(std::shared_ptr< InputArchive > archive)
Set the Archive to an externally-provided one, overriding any that may have been read.
virtual bool usesArchive(int ioFlags) const
Callback that should return true if the FitsReader subclass makes use of an InputArchive to read firs...
Definition: FitsReader.h:138
int end
SchemaMapper * mapper
Definition: SchemaMapper.cc:78