lsst.afw
g3a5ebb7d8a+28b83bf6a5
Toggle main menu visibility
Loading...
Searching...
No Matches
include
lsst
afw
table
io
FitsReader.h
Go to the documentation of this file.
1
// -*- lsst-c++ -*-
2
#ifndef AFW_TABLE_IO_FitsReader_h_INCLUDED
3
#define AFW_TABLE_IO_FitsReader_h_INCLUDED
4
5
#include <type_traits>
6
7
#include "
lsst/afw/fits.h
"
8
#include "
lsst/afw/table/Schema.h
"
9
#include "
lsst/afw/table/io/InputArchive.h
"
10
#include "
lsst/afw/table/io/FitsSchemaInputMapper.h
"
11
#include "
lsst/afw/table/BaseRecord.h
"
12
#include "
lsst/afw/table/BaseTable.h
"
13
14
namespace
lsst
{
15
namespace
afw
{
16
namespace
table
{
17
namespace
io
{
18
34
class
FitsReader
{
35
public
:
43
explicit
FitsReader
(
std::string
const
& persistedClassName);
44
45
FitsReader
(
FitsReader
const
&) =
default
;
46
FitsReader
(
FitsReader
&&) =
default
;
47
FitsReader
&
operator=
(
FitsReader
const
&) =
default
;
48
FitsReader
&
operator=
(
FitsReader
&&) =
default
;
49
70
template
<
typename
ContainerT>
71
static
ContainerT
apply
(
afw::fits::Fits
&
fits
,
int
ioFlags,
72
std::shared_ptr<InputArchive>
archive =
std::shared_ptr<InputArchive>
()) {
73
std::shared_ptr<daf::base::PropertyList>
metadata =
std::make_shared<daf::base::PropertyList>
();
74
fits
.readMetadata(*metadata,
true
);
75
FitsReader
const
* reader = _lookupFitsReader(*metadata);
76
FitsSchemaInputMapper
mapper(*metadata,
true
);
77
reader->_setupArchive(
fits
, mapper, archive, ioFlags);
78
std::shared_ptr<BaseTable>
table
= reader->
makeTable
(mapper, metadata, ioFlags,
true
);
79
ContainerT container(
std::dynamic_pointer_cast<typename ContainerT::Table>
(
table
));
80
if
(!container.getTable()) {
81
throw
LSST_EXCEPT
(
pex::exceptions::RuntimeError
,
"Invalid table class for catalog."
);
82
}
83
std::size_t
nRows =
fits
.countRows();
84
container.reserve(nRows);
85
for
(
std::size_t
row = 0; row < nRows; ++row) {
86
mapper.
readRecord
(
87
// We need to be able to support reading Catalog<T const>, since it shares the same
88
// template
89
// as Catalog<T> (which invokes this method in readFits).
90
const_cast<
typename
std::remove_const<typename ContainerT::Record>::type
&
>
(
91
*container.addNew()),
92
fits
, row);
93
}
94
return
container;
95
}
96
103
template
<
typename
ContainerT,
typename
SourceT>
104
static
ContainerT
apply
(SourceT& source,
int
hdu,
int
ioFlags,
105
std::shared_ptr<InputArchive>
archive =
std::shared_ptr<InputArchive>
()) {
106
afw::fits::Fits
fits
(source,
"r"
,
afw::fits::Fits::AUTO_CLOSE
|
afw::fits::Fits::AUTO_CHECK
);
107
fits
.setHdu(hdu);
108
return
apply<ContainerT>
(
fits
, ioFlags, archive);
109
}
110
130
virtual
std::shared_ptr<BaseTable>
makeTable
(
FitsSchemaInputMapper
& mapper,
131
std::shared_ptr<daf::base::PropertyList>
metadata,
132
int
ioFlags,
bool
stripMetadata)
const
;
133
138
virtual
bool
usesArchive
(
int
ioFlags)
const
{
return
false
; }
139
140
virtual
~FitsReader
() =
default
;
141
142
private
:
143
static
FitsReader
const
* _lookupFitsReader(
daf::base::PropertyList
const
& metadata);
144
145
void
_setupArchive(
afw::fits::Fits
&
fits
,
FitsSchemaInputMapper
& mapper,
146
std::shared_ptr<InputArchive>
archive,
int
ioFlags)
const
;
147
};
148
}
// namespace io
149
}
// namespace table
150
}
// namespace afw
151
}
// namespace lsst
152
153
#endif
// !AFW_TABLE_IO_FitsReader_h_INCLUDED
BaseRecord.h
BaseTable.h
LSST_EXCEPT
#define LSST_EXCEPT(type,...)
FitsSchemaInputMapper.h
InputArchive.h
Schema.h
std::string
lsst::afw::fits::Fits
A simple struct that combines the two arguments that must be passed to most cfitsio routines and cont...
Definition
fits.h:242
lsst::afw::fits::Fits::AUTO_CHECK
@ AUTO_CHECK
Definition
fits.h:253
lsst::afw::fits::Fits::AUTO_CLOSE
@ AUTO_CLOSE
Definition
fits.h:252
lsst::afw::table::io::FitsReader::FitsReader
FitsReader(FitsReader &&)=default
lsst::afw::table::io::FitsReader::makeTable
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
lsst::afw::table::io::FitsReader::~FitsReader
virtual ~FitsReader()=default
lsst::afw::table::io::FitsReader::usesArchive
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
lsst::afw::table::io::FitsReader::apply
static ContainerT apply(afw::fits::Fits &fits, int ioFlags, std::shared_ptr< InputArchive > archive=std::shared_ptr< InputArchive >())
Create a new Catalog by reading a FITS binary table.
Definition
FitsReader.h:71
lsst::afw::table::io::FitsReader::FitsReader
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
lsst::afw::table::io::FitsReader::operator=
FitsReader & operator=(FitsReader const &)=default
lsst::afw::table::io::FitsReader::FitsReader
FitsReader(FitsReader const &)=default
lsst::afw::table::io::FitsReader::apply
static ContainerT apply(SourceT &source, int hdu, int ioFlags, std::shared_ptr< InputArchive > archive=std::shared_ptr< InputArchive >())
Create a new Catalog by reading a FITS file.
Definition
FitsReader.h:104
lsst::afw::table::io::FitsReader::operator=
FitsReader & operator=(FitsReader &&)=default
lsst::afw::table::io::FitsSchemaInputMapper
A class that describes a mapping from a FITS binary table to an afw::table Schema.
Definition
FitsSchemaInputMapper.h:91
lsst::afw::table::io::FitsSchemaInputMapper::readRecord
void readRecord(BaseRecord &record, afw::fits::Fits &fits, std::size_t row)
Fill a record from a FITS binary table row.
Definition
FitsSchemaInputMapper.cc:869
lsst::daf::base::PropertyList
lsst::pex::exceptions::RuntimeError
fits.h
std::make_shared
T make_shared(T... args)
lsst::afw::fits
Definition
fits.h:32
lsst::afw::table::io
Definition
tablePersistence.dox:3
lsst::afw::table
Definition
table.dox:3
lsst::afw
Definition
imageAlgorithm.dox:1
lsst
std::dynamic_pointer_cast
T dynamic_pointer_cast(T... args)
std::remove_const
std::shared_ptr
std::size_t
Generated on
for lsst.afw by
1.17.0