LSST Applications g0265f82a02+0e5473021a,g02d81e74bb+f5613e8b4f,g1470d8bcf6+190ad2ba91,g14a832a312+311607e4ab,g2079a07aa2+86d27d4dc4,g2305ad1205+a8e3196225,g295015adf3+b67ee847e5,g2bbee38e9b+0e5473021a,g337abbeb29+0e5473021a,g3ddfee87b4+a761f810f3,g487adcacf7+17c8fdbcbd,g50ff169b8f+96c6868917,g52b1c1532d+585e252eca,g591dd9f2cf+65b5bd823e,g5a732f18d5+53520f316c,g64a986408d+f5613e8b4f,g6c1bc301e9+51106c2951,g858d7b2824+f5613e8b4f,g8a8a8dda67+585e252eca,g99cad8db69+6729933424,g9ddcbc5298+9a081db1e4,ga1e77700b3+15fc3df1f7,ga8c6da7877+ef4e3a5875,gb0e22166c9+60f28cb32d,gb6a65358fc+0e5473021a,gba4ed39666+c2a2e4ac27,gbb8dafda3b+e9bba80f27,gc120e1dc64+eee469a5e5,gc28159a63d+0e5473021a,gcf0d15dbbd+a761f810f3,gdaeeff99f8+f9a426f77a,ge6526c86ff+d4c1d4bfef,ge79ae78c31+0e5473021a,gee10cc3b42+585e252eca,gf1cff7945b+f5613e8b4f,w.2024.16
LSST Data Management Base Package
Loading...
Searching...
No Matches
Public Member Functions | List of all members
lsst::meas::extensions::psfex::detail::PsfexPsfFactory Class Reference
Inheritance diagram for lsst::meas::extensions::psfex::detail::PsfexPsfFactory:

Public Member Functions

virtual std::shared_ptr< table::io::Persistable > read (InputArchive const &archive, CatalogVector const &catalogs) const
 
 PsfexPsfFactory (std::string const &name)
 

Detailed Description

Definition at line 377 of file PsfexPsf.cc.

Constructor & Destructor Documentation

◆ PsfexPsfFactory()

lsst::meas::extensions::psfex::detail::PsfexPsfFactory::PsfexPsfFactory ( std::string const & name)
inlineexplicit

Definition at line 464 of file PsfexPsf.cc.

464: table::io::PersistableFactory(name) {}

Member Function Documentation

◆ read()

virtual std::shared_ptr< table::io::Persistable > lsst::meas::extensions::psfex::detail::PsfexPsfFactory::read ( InputArchive const & archive,
CatalogVector const & catalogs ) const
inlinevirtual

Definition at line 381 of file PsfexPsf.cc.

381 {
382 LSST_ARCHIVE_ASSERT(catalogs.size() == 2u);
383
384 std::shared_ptr<PsfexPsf> result(new PsfexPsf());
385
386 int ndim, ngroup, ncoeff;
387 int size_size, comp_size, context_size;
388 {
389 PsfexPsfSchema1 const & keys = PsfexPsfSchema1();
390 LSST_ARCHIVE_ASSERT(catalogs[0].size() == 1u);
391 LSST_ARCHIVE_ASSERT(catalogs[0].getSchema() == keys.schema);
392 table::BaseRecord const & record = catalogs[0].front();
393
394 // fields in _poly
395 ndim = record.get(keys.ndim);
396 ngroup = record.get(keys.ngroup);
397 ncoeff = record.get(keys.ncoeff);
398 // Other scalars
399 result->_averagePosition = record.get(keys.averagePosition);
400 result->_pixstep = record.get(keys._pixstep);
401 // sizes of vectors
402 size_size = record.get(keys._size_size);
403 comp_size = record.get(keys._comp_size);
404 context_size = record.get(keys._context_size);
405 }
406 // Now we can read the data
407 {
408 PsfexPsfSchema2 const keys(ndim, ngroup, ncoeff,
409 size_size, comp_size, context_size);
410
411 LSST_ARCHIVE_ASSERT(catalogs[1].size() == 1u);
412 LSST_ARCHIVE_ASSERT(catalogs[1].getSchema() == keys.schema);
413 table::BaseRecord const & record = catalogs[1].front();
414
415 // _poly
417 {
418 int const *begin = record.getElement(keys.group);
419 group.assign(begin, begin + ndim);
420
421 for (int i = 0; i != ndim; ++i) {
422 ++group[i]; // poly_init subtracts 1 from each element. Sigh.
423 }
424 }
426 {
427 int const *begin = record.getElement(keys.degree);
428 degree.assign(begin, begin + ngroup);
429 }
430 result->_poly = poly_init(&group[0], group.size(), &degree[0], degree.size());
431 LSST_ARCHIVE_ASSERT(result->_poly->ncoeff == ncoeff);
432
433 {
434 double const *begin = record.getElement(keys.basis);
435 std::copy(begin, begin + ncoeff, result->_poly->basis);
436 }
437 {
438 double const *begin = record.getElement(keys.coeff);
439 std::copy(begin, begin + ncoeff, result->_poly->coeff);
440 }
441 // vectors
442 {
443 int const *begin = record.getElement(keys._size);
444 result->_size.assign(begin, begin + size_size);
445 }
446 {
447 float const *begin = record.getElement(keys._comp);
448 result->_comp.assign(begin, begin + comp_size);
449 }
450 {
451 double const *begin1 = record.getElement(keys._context_first);
452 double const *begin2 = record.getElement(keys._context_second);
453 result->_context.resize(context_size);
454 for (int i = 0; i != context_size; ++i) {
455 result->_context[i].first = begin1[i];
456 result->_context[i].second = begin2[i];
457 }
458 }
459 }
460
461 return result;
462}
py::object result
Definition _schema.cc:429
#define LSST_ARCHIVE_ASSERT(EXPR)
An assertion macro used to validate the structure of an InputArchive.
Definition Persistable.h:48
T begin(T... args)
T copy(T... args)
table::Key< int > ncoeff
Definition PsfexPsf.cc:327
table::Key< int > ndim
Definition PsfexPsf.cc:325
table::Key< int > ngroup
Definition PsfexPsf.cc:326
table::Key< table::Array< int > > degree
Definition PsfexPsf.cc:360
table::Key< table::Array< int > > group
Definition PsfexPsf.cc:359

The documentation for this class was generated from the following file: