LSSTApplications  18.0.0+106,18.0.0+50,19.0.0,19.0.0+1,19.0.0+10,19.0.0+11,19.0.0+13,19.0.0+17,19.0.0+2,19.0.0-1-g20d9b18+6,19.0.0-1-g425ff20,19.0.0-1-g5549ca4,19.0.0-1-g580fafe+6,19.0.0-1-g6fe20d0+1,19.0.0-1-g7011481+9,19.0.0-1-g8c57eb9+6,19.0.0-1-gb5175dc+11,19.0.0-1-gdc0e4a7+9,19.0.0-1-ge272bc4+6,19.0.0-1-ge3aa853,19.0.0-10-g448f008b,19.0.0-12-g6990b2c,19.0.0-2-g0d9f9cd+11,19.0.0-2-g3d9e4fb2+11,19.0.0-2-g5037de4,19.0.0-2-gb96a1c4+3,19.0.0-2-gd955cfd+15,19.0.0-3-g2d13df8,19.0.0-3-g6f3c7dc,19.0.0-4-g725f80e+11,19.0.0-4-ga671dab3b+1,19.0.0-4-gad373c5+3,19.0.0-5-ga2acb9c+2,19.0.0-5-gfe96e6c+2,w.2020.01
LSSTDataManagementBasePackage
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.
25  FitsColumnReader(FitsColumnReader const &) = delete;
27  FitsColumnReader &operator=(FitsColumnReader const &) = 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
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...
Defines the fields and offsets for a table.
Definition: Schema.h:50
void erase(int column)
Class for storing ordered metadata with comments.
Definition: PropertyList.h:68
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
A structure that describes a field as a collection of related strings read from the FITS header...
Fits * fits
Definition: FitsWriter.cc:90
STL class.
A base class for image defects.
FitsColumnReader & operator=(FitsColumnReader const &)=delete
STL class.
Base class for all records.
Definition: BaseRecord.h:31
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.
Polymorphic reader interface used to read different kinds of objects from one or more FITS binary tab...
virtual ~FitsColumnReader() noexcept=default
int row
Definition: CR.cc:145
virtual void prepRead(std::size_t firstRow, std::size_t nRows, fits::Fits &fits)
Optionally read ahead and cache values from multiple rows.