LSST Applications  21.0.0-172-gfb10e10a+18fedfabac,22.0.0+297cba6710,22.0.0+80564b0ff1,22.0.0+8d77f4f51a,22.0.0+a28f4c53b1,22.0.0+dcf3732eb2,22.0.1-1-g7d6de66+2a20fdde0d,22.0.1-1-g8e32f31+297cba6710,22.0.1-1-geca5380+7fa3b7d9b6,22.0.1-12-g44dc1dc+2a20fdde0d,22.0.1-15-g6a90155+515f58c32b,22.0.1-16-g9282f48+790f5f2caa,22.0.1-2-g92698f7+dcf3732eb2,22.0.1-2-ga9b0f51+7fa3b7d9b6,22.0.1-2-gd1925c9+bf4f0e694f,22.0.1-24-g1ad7a390+a9625a72a8,22.0.1-25-g5bf6245+3ad8ecd50b,22.0.1-25-gb120d7b+8b5510f75f,22.0.1-27-g97737f7+2a20fdde0d,22.0.1-32-gf62ce7b1+aa4237961e,22.0.1-4-g0b3f228+2a20fdde0d,22.0.1-4-g243d05b+871c1b8305,22.0.1-4-g3a563be+32dcf1063f,22.0.1-4-g44f2e3d+9e4ab0f4fa,22.0.1-42-gca6935d93+ba5e5ca3eb,22.0.1-5-g15c806e+85460ae5f3,22.0.1-5-g58711c4+611d128589,22.0.1-5-g75bb458+99c117b92f,22.0.1-6-g1c63a23+7fa3b7d9b6,22.0.1-6-g50866e6+84ff5a128b,22.0.1-6-g8d3140d+720564cf76,22.0.1-6-gd805d02+cc5644f571,22.0.1-8-ge5750ce+85460ae5f3,master-g6e05de7fdc+babf819c66,master-g99da0e417a+8d77f4f51a,w.2021.48
LSST Data Management Base Package
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) {}
table::Key< std::string > name
Definition: Amplifier.cc:116

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: