LSST Applications g0b6bd0c080+a72a5dd7e6,g1182afd7b4+2a019aa3bb,g17e5ecfddb+2b8207f7de,g1d67935e3f+06cf436103,g38293774b4+ac198e9f13,g396055baef+6a2097e274,g3b44f30a73+6611e0205b,g480783c3b1+98f8679e14,g48ccf36440+89c08d0516,g4b93dc025c+98f8679e14,g5c4744a4d9+a302e8c7f0,g613e996a0d+e1c447f2e0,g6c8d09e9e7+25247a063c,g7271f0639c+98f8679e14,g7a9cd813b8+124095ede6,g9d27549199+a302e8c7f0,ga1cf026fa3+ac198e9f13,ga32aa97882+7403ac30ac,ga786bb30fb+7a139211af,gaa63f70f4e+9994eb9896,gabf319e997+ade567573c,gba47b54d5d+94dc90c3ea,gbec6a3398f+06cf436103,gc6308e37c7+07dd123edb,gc655b1545f+ade567573c,gcc9029db3c+ab229f5caf,gd01420fc67+06cf436103,gd877ba84e5+06cf436103,gdb4cecd868+6f279b5b48,ge2d134c3d5+cc4dbb2e3f,ge448b5faa6+86d1ceac1d,gecc7e12556+98f8679e14,gf3ee170dca+25247a063c,gf4ac96e456+ade567573c,gf9f5ea5b4d+ac198e9f13,gff490e6085+8c2580be5c,w.2022.27
LSST Data Management Base Package
FitsReader.cc
Go to the documentation of this file.
1// -*- lsst-c++ -*-
2
4
5namespace lsst {
6namespace afw {
7namespace table {
8namespace io {
9
10namespace {
11
13
14Registry& getRegistry() {
15 static Registry it;
16 return it;
17}
18
19static FitsReader const baseFitsReader("BASE");
20static FitsReader const ampInfoFitsReader("AMPINFO");
21
22} // namespace
23
26 int ioFlags, bool stripMetadata) const {
28 result->setMetadata(metadata);
29 return result;
30}
31
32FitsReader::FitsReader(std::string const& name) { getRegistry()[name] = this; }
33
34FitsReader const* FitsReader::_lookupFitsReader(daf::base::PropertyList const& metadata) {
35 std::string name = metadata.get(std::string("AFW_TYPE"), std::string("BASE"));
36 Registry::iterator i = getRegistry().find(name);
37 if (i == getRegistry().end()) {
38 throw LSST_EXCEPT(
40 (boost::format("FitsReader with name '%s' does not exist; check AFW_TYPE keyword.") % name)
41 .str());
42 }
43 return i->second;
44}
45
46void FitsReader::_setupArchive(afw::fits::Fits& fits, FitsSchemaInputMapper& mapper,
47 std::shared_ptr<InputArchive> archive, int ioFlags) const {
48 if (usesArchive(ioFlags)) {
49 if (archive) {
50 mapper.setArchive(archive);
51 } else {
52 mapper.readArchive(fits);
53 }
54 }
55}
56} // namespace io
57} // namespace table
58} // namespace afw
59} // namespace lsst
py::object result
Definition: _schema.cc:429
table::Key< std::string > name
Definition: Amplifier.cc:116
int end
#define LSST_EXCEPT(type,...)
Create an exception with a given type.
Definition: Exception.h:48
Fits * fits
Definition: FitsWriter.cc:90
SchemaMapper * mapper
Definition: SchemaMapper.cc:71
A simple struct that combines the two arguments that must be passed to most cfitsio routines and cont...
Definition: fits.h:297
static std::shared_ptr< BaseTable > make(Schema const &schema)
Construct a new table.
Definition: BaseTable.cc:120
A utility class for reading FITS binary tables.
Definition: FitsReader.h:34
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:24
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
FitsReader(std::string const &persistedClassName)
Construct a FitsReader, registering it to be used for all persisted tables with the given tag.
Definition: FitsReader.cc:32
A class that describes a mapping from a FITS binary table to an afw::table Schema.
Class for storing ordered metadata with comments.
Definition: PropertyList.h:68
T get(std::string const &name) const
Get the last value for a property name (possibly hierarchical).
Definition: PropertyList.cc:62
Reports attempts to access elements using an invalid key.
Definition: Runtime.h:151
def format(config, name=None, writeSourceLine=True, prefix="", verbose=False)
Definition: history.py:174
A base class for image defects.