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 %
74 struct 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")) {}
92 class 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)));
110 std::string getApCorrMapPersistenceName() {
return "ApCorrMap"; }
112 ApCorrMapFactory registration(getApCorrMapPersistenceName());
116 bool ApCorrMap::isPersistable() const noexcept {
118 if (!i->second->isPersistable())
return false;
123 std::string ApCorrMap::getPersistenceName()
const {
return getApCorrMapPersistenceName(); }
125 std::string ApCorrMap::getPythonModule()
const {
return "lsst.afw.image"; }
127 void ApCorrMap::write(OutputArchiveHandle& handle)
const {
128 PersistenceHelper
const&
keys = PersistenceHelper::get();
130 for (Iterator i = begin(); i !=
end(); ++i) {
132 record->
set(
keys.name, i->first);
133 record->
set(
keys.field, handle.put(i->second));
135 handle.saveCatalog(catalog);
141 replacement[i->first] = (*i->second) *
scale;
143 _internal = replacement;
148 return std::make_unique<ApCorrMap>(*
this);