LSST Applications  21.0.0-172-gfb10e10a+18fedfabac,22.0.0+297cba6710,22.0.0+80564b0ff1,22.0.0+8d77f4f51a,22.0.0+a28f4c53b1,22.0.0+dcf3732eb2,22.0.1-1-g7d6de66+2a20fdde0d,22.0.1-1-g8e32f31+297cba6710,22.0.1-1-geca5380+7fa3b7d9b6,22.0.1-12-g44dc1dc+2a20fdde0d,22.0.1-15-g6a90155+515f58c32b,22.0.1-16-g9282f48+790f5f2caa,22.0.1-2-g92698f7+dcf3732eb2,22.0.1-2-ga9b0f51+7fa3b7d9b6,22.0.1-2-gd1925c9+bf4f0e694f,22.0.1-24-g1ad7a390+a9625a72a8,22.0.1-25-g5bf6245+3ad8ecd50b,22.0.1-25-gb120d7b+8b5510f75f,22.0.1-27-g97737f7+2a20fdde0d,22.0.1-32-gf62ce7b1+aa4237961e,22.0.1-4-g0b3f228+2a20fdde0d,22.0.1-4-g243d05b+871c1b8305,22.0.1-4-g3a563be+32dcf1063f,22.0.1-4-g44f2e3d+9e4ab0f4fa,22.0.1-42-gca6935d93+ba5e5ca3eb,22.0.1-5-g15c806e+85460ae5f3,22.0.1-5-g58711c4+611d128589,22.0.1-5-g75bb458+99c117b92f,22.0.1-6-g1c63a23+7fa3b7d9b6,22.0.1-6-g50866e6+84ff5a128b,22.0.1-6-g8d3140d+720564cf76,22.0.1-6-gd805d02+cc5644f571,22.0.1-8-ge5750ce+85460ae5f3,master-g6e05de7fdc+babf819c66,master-g99da0e417a+8d77f4f51a,w.2021.48
LSST Data Management Base Package
FitsSchemaInputMapper.h
Go to the documentation of this file.
1 // -*- lsst-c++ -*-
2 #ifndef AFW_TABLE_IO_FitsSchemaInputMapper_h_INCLUDED
3 #define AFW_TABLE_IO_FitsSchemaInputMapper_h_INCLUDED
4 
5 #include "lsst/afw/fits.h"
10 
11 namespace lsst {
12 namespace afw {
13 namespace table {
14 namespace io {
15 
21 public:
22  FitsColumnReader() noexcept = default;
23 
24  // Neither copyable nor moveable.
27  FitsColumnReader &operator=(FitsColumnReader const &) = delete;
28  FitsColumnReader &operator=(FitsColumnReader &&) = delete;
29 
42  virtual void prepRead(std::size_t firstRow, std::size_t nRows, fits::Fits & fits) {}
43 
53  virtual void readCell(BaseRecord &record, std::size_t row, fits::Fits &fits,
54  std::shared_ptr<InputArchive> const &archive) const = 0;
55 
56  virtual ~FitsColumnReader() noexcept = default;
57 };
58 
63  int column; // column number (0-indexed); -1 for Flag fields
64  int bit; // flag bit number (0-indexed); -1 for non-Flag fields
65  std::string ttype; // name of the field (from TTYPE keys)
66  std::string tform; // FITS column format code (from TFORM keys)
67  std::string tccls; // which field class to use (from our own TCCLS keys)
68  std::string tunit; // field units (from TUNIT keys)
69  std::string doc; // field docs (from comments on TTYPE keys)
70 
71  explicit FitsSchemaItem(int column_, int bit_) : column(column_), bit(bit_) {}
72 };
73 
92 public:
94 
108 
110  FitsSchemaInputMapper(daf::base::PropertyList &metadata, bool stripMetadata);
111 
117 
121  void setArchive(std::shared_ptr<InputArchive> archive);
122 
128  bool readArchive(afw::fits::Fits &fits);
129 
131  bool hasArchive() const;
132 
139  Item const *find(std::string const &ttype) const;
140 
147  Item const *find(int column) const;
148 
153  void erase(Item const *item);
154 
159  void erase(std::string const &ttype);
160 
165  void erase(int column);
166 
170  void customize(std::unique_ptr<FitsColumnReader> reader);
171 
177  Schema finalize();
178 
182  void readRecord(BaseRecord &record, afw::fits::Fits &fits, std::size_t row);
183 
184 private:
185  class Impl;
186  std::shared_ptr<Impl> _impl;
187 };
188 } // namespace io
189 } // namespace table
190 } // namespace afw
191 } // namespace lsst
192 
193 #endif // !AFW_TABLE_IO_FitsSchemaInputMapper_h_INCLUDED
Fits * fits
Definition: FitsWriter.cc:90
A simple struct that combines the two arguments that must be passed to most cfitsio routines and cont...
Definition: fits.h:297
Base class for all records.
Definition: BaseRecord.h:31
Defines the fields and offsets for a table.
Definition: Schema.h:51
Polymorphic reader interface used to read different kinds of objects from one or more FITS binary tab...
virtual ~FitsColumnReader() noexcept=default
virtual void readCell(BaseRecord &record, std::size_t row, fits::Fits &fits, std::shared_ptr< InputArchive > const &archive) const =0
Read values from a single row.
virtual void prepRead(std::size_t firstRow, std::size_t nRows, fits::Fits &fits)
Optionally read ahead and cache values from multiple rows.
A class that describes a mapping from a FITS binary table to an afw::table Schema.
FitsSchemaInputMapper & operator=(FitsSchemaInputMapper const &)
FitsSchemaInputMapper(FitsSchemaInputMapper const &)
static std::size_t PREPPED_ROWS_FACTOR
When processing each column, divide this number by the record size (in bytes) and ask CFITSIO to read...
FitsSchemaInputMapper & operator=(FitsSchemaInputMapper &&)
FitsSchemaInputMapper(FitsSchemaInputMapper &&)
Class for storing ordered metadata with comments.
Definition: PropertyList.h:68
void erase(int column)
A base class for image defects.
STL namespace.
int row
Definition: CR.cc:145
A structure that describes a field as a collection of related strings read from the FITS header.