46 if (i == _internal.end()) {
48 (boost::format(
"Aperture correction with name '%s' not found") %
name).
str());
55 if (i == _internal.end()) {
62 if (
name.size() > MAX_NAME_LENGTH) {
65 (boost::format(
"Aperture correction name '%s' exceeds size limit of %d characters") %
name %
74struct PersistenceHelper {
76 table::Key<std::string>
name;
79 static PersistenceHelper
const& get() {
80 static PersistenceHelper
const instance;
87 name(
schema.addField<
std::string>(
"name",
"name of the aperture correction",
88 ApCorrMap::MAX_NAME_LENGTH)),
89 field(
schema.addField<int>(
"field",
"archive ID of the BoundedField object")) {}
92class ApCorrMapFactory :
public table::io::PersistableFactory {
95 CatalogVector
const& catalogs)
const override {
96 PersistenceHelper
const&
keys = PersistenceHelper::get();
102 result->set(i->get(
keys.name), archive.get<math::BoundedField>(i->get(
keys.field)));
110std::string getApCorrMapPersistenceName() {
return "ApCorrMap"; }
112ApCorrMapFactory registration(getApCorrMapPersistenceName());
116bool ApCorrMap::isPersistable() const noexcept {
117 for (
auto const &i : *
this) {
118 if (!i.second->isPersistable())
return false;
123std::string ApCorrMap::getPersistenceName()
const {
return getApCorrMapPersistenceName(); }
125std::string ApCorrMap::getPythonModule()
const {
return "lsst.afw.image"; }
127void ApCorrMap::write(OutputArchiveHandle& handle)
const {
128 PersistenceHelper
const&
keys = PersistenceHelper::get();
130 for (
auto const &i : *
this) {
132 record->set(
keys.name, i.first);
133 record->set(
keys.field, handle.put(i.second));
135 handle.saveCatalog(catalog);
140 for (
auto const &i : *
this) {
141 replacement[i.first] = (*i.second) *
scale;
143 _internal = replacement;
148 return std::make_unique<ApCorrMap>(*
this);
table::Key< std::string > name
#define LSST_EXCEPT(type,...)
#define LSST_ARCHIVE_ASSERT(EXPR)
An assertion macro used to validate the structure of an InputArchive.
A thin wrapper around std::map to allow aperture corrections to be attached to Exposures.
Internal::const_iterator Iterator
Iterator type returned by begin() and end().
CatalogIterator< typename Internal::const_iterator > const_iterator
static std::shared_ptr< T > dynamicCast(std::shared_ptr< Persistable > const &ptr)
Dynamically cast a shared_ptr.
daf::base::PropertySet * set
def scale(algorithm, min, max=None, frame=None)
CatalogT< BaseRecord > BaseCatalog
std::shared_ptr< table::io::Persistable > read(table::io::InputArchive const &archive, table::io::CatalogVector const &catalogs) const override