LSST Applications g04e9c324dd+8c5ae1fdc5,g134cb467dc+b203dec576,g18429d2f64+358861cd2c,g199a45376c+0ba108daf9,g1fd858c14a+dd066899e3,g262e1987ae+ebfced1d55,g29ae962dfc+72fd90588e,g2cef7863aa+aef1011c0b,g35bb328faa+8c5ae1fdc5,g3fd5ace14f+b668f15bc5,g4595892280+3897dae354,g47891489e3+abcf9c3559,g4d44eb3520+fb4ddce128,g53246c7159+8c5ae1fdc5,g67b6fd64d1+abcf9c3559,g67fd3c3899+1f72b5a9f7,g74acd417e5+cb6b47f07b,g786e29fd12+668abc6043,g87389fa792+8856018cbb,g89139ef638+abcf9c3559,g8d7436a09f+bcf525d20c,g8ea07a8fe4+9f5ccc88ac,g90f42f885a+6054cc57f1,g97be763408+06f794da49,g9dd6db0277+1f72b5a9f7,ga681d05dcb+7e36ad54cd,gabf8522325+735880ea63,gac2eed3f23+abcf9c3559,gb89ab40317+abcf9c3559,gbf99507273+8c5ae1fdc5,gd8ff7fe66e+1f72b5a9f7,gdab6d2f7ff+cb6b47f07b,gdc713202bf+1f72b5a9f7,gdfd2d52018+8225f2b331,ge365c994fd+375fc21c71,ge410e46f29+abcf9c3559,geaed405ab2+562b3308c0,gf9a733ac38+8c5ae1fdc5,w.2025.35
LSST Data Management Base Package
Loading...
Searching...
No Matches
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
12using Registry = std::map<std::string, const FitsReader *>;
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
#define LSST_EXCEPT(type,...)
Create an exception with a given type.
Definition Exception.h:48
A simple struct that combines the two arguments that must be passed to most cfitsio routines and cont...
Definition fits.h:308
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.
Schema finalize()
Map any remaining items into regular Schema items, and return the final Schema.
Class for storing ordered metadata with comments.
T get(std::string const &name) const
Get the last value for a property name (possibly hierarchical).
Reports attempts to access elements using an invalid key.
Definition Runtime.h:151