LSSTApplications  10.0+286,10.0+36,10.0+46,10.0-2-g4f67435,10.1+152,10.1+37,11.0,11.0+1,11.0-1-g47edd16,11.0-1-g60db491,11.0-1-g7418c06,11.0-2-g04d2804,11.0-2-g68503cd,11.0-2-g818369d,11.0-2-gb8b8ce7
LSSTDataManagementBasePackage
Public Types | Public Member Functions | Protected Member Functions | Protected Attributes | List of all members
lsst::ip::diffim::StaticKernelSolution< InputT > Class Template Reference

#include <KernelSolution.h>

Inheritance diagram for lsst::ip::diffim::StaticKernelSolution< InputT >:
lsst::ip::diffim::KernelSolution lsst::ip::diffim::MaskedKernelSolution< InputT > lsst::ip::diffim::RegularizedKernelSolution< InputT >

Public Types

typedef boost::shared_ptr
< StaticKernelSolution< InputT > > 
Ptr
 
- Public Types inherited from lsst::ip::diffim::KernelSolution
enum  KernelSolvedBy {
  NONE = 0, CHOLESKY_LDLT = 1, CHOLESKY_LLT = 2, LU = 3,
  EIGENVECTOR = 4
}
 
enum  ConditionNumberType { EIGENVALUE = 0, SVD = 1 }
 
typedef boost::shared_ptr
< KernelSolution
Ptr
 
typedef
lsst::afw::math::Kernel::Pixel 
PixelT
 
typedef
lsst::afw::image::Image
< lsst::afw::math::Kernel::Pixel
ImageT
 

Public Member Functions

 StaticKernelSolution (lsst::afw::math::KernelList const &basisList, bool fitForBackground)
 
virtual ~StaticKernelSolution ()
 
void solve ()
 
virtual void build (lsst::afw::image::Image< InputT > const &templateImage, lsst::afw::image::Image< InputT > const &scienceImage, lsst::afw::image::Image< lsst::afw::image::VariancePixel > const &varianceEstimate)
 
virtual
lsst::afw::math::Kernel::Ptr 
getKernel ()
 
virtual
lsst::afw::image::Image
< lsst::afw::math::Kernel::Pixel >
::Ptr 
makeKernelImage ()
 
virtual double getBackground ()
 
virtual double getKsum ()
 
virtual std::pair
< boost::shared_ptr
< lsst::afw::math::Kernel >
, double > 
getSolutionPair ()
 
- Public Member Functions inherited from lsst::ip::diffim::KernelSolution
 KernelSolution (boost::shared_ptr< Eigen::MatrixXd > mMat, boost::shared_ptr< Eigen::VectorXd > bVec, bool fitForBackground)
 
 KernelSolution (bool fitForBackground)
 
 KernelSolution ()
 
virtual ~KernelSolution ()
 
virtual void solve (Eigen::MatrixXd mMat, Eigen::VectorXd bVec)
 
KernelSolvedBy getSolvedBy ()
 
virtual double getConditionNumber (ConditionNumberType conditionType)
 
virtual double getConditionNumber (Eigen::MatrixXd mMat, ConditionNumberType conditionType)
 
boost::shared_ptr
< Eigen::MatrixXd > 
getM ()
 
boost::shared_ptr
< Eigen::VectorXd > 
getB ()
 
void printM ()
 
void printB ()
 
void printA ()
 
int getId () const
 

Protected Member Functions

void _setKernel ()
 Set kernel after solution. More...
 
void _setKernelUncertainty ()
 Not implemented. More...
 

Protected Attributes

boost::shared_ptr
< Eigen::MatrixXd > 
_cMat
 K_i x R. More...
 
boost::shared_ptr
< Eigen::VectorXd > 
_iVec
 Vectorized I. More...
 
boost::shared_ptr
< Eigen::VectorXd > 
_ivVec
 Inverse variance. More...
 
lsst::afw::math::Kernel::Ptr _kernel
 Derived single-object convolution kernel. More...
 
double _background
 Derived differential background estimate. More...
 
double _kSum
 Derived kernel sum. More...
 
- Protected Attributes inherited from lsst::ip::diffim::KernelSolution
int _id
 Unique ID for object. More...
 
boost::shared_ptr
< Eigen::MatrixXd > 
_mMat
 Derived least squares M matrix. More...
 
boost::shared_ptr
< Eigen::VectorXd > 
_bVec
 Derived least squares B vector. More...
 
boost::shared_ptr
< Eigen::VectorXd > 
_aVec
 Derived least squares solution matrix. More...
 
KernelSolvedBy _solvedBy
 Type of algorithm used to make solution. More...
 
bool _fitForBackground
 Background terms included in fit. More...
 

Additional Inherited Members

- Static Protected Attributes inherited from lsst::ip::diffim::KernelSolution
static int _SolutionId = 0
 Unique identifier for solution. More...
 

Detailed Description

template<typename InputT>
class lsst::ip::diffim::StaticKernelSolution< InputT >

Definition at line 82 of file KernelSolution.h.

Member Typedef Documentation

template<typename InputT >
typedef boost::shared_ptr<StaticKernelSolution<InputT> > lsst::ip::diffim::StaticKernelSolution< InputT >::Ptr

Definition at line 84 of file KernelSolution.h.

Constructor & Destructor Documentation

template<typename InputT >
lsst::ip::diffim::StaticKernelSolution< InputT >::StaticKernelSolution ( lsst::afw::math::KernelList const &  basisList,
bool  fitForBackground 
)

Definition at line 195 of file KernelSolution.cc.

199  :
200  KernelSolution(fitForBackground),
201  _cMat(),
202  _iVec(),
203  _ivVec(),
204  _kernel(),
205  _background(0.0),
206  _kSum(0.0)
207  {
208  std::vector<double> kValues(basisList.size());
209  _kernel = boost::shared_ptr<afwMath::Kernel>(
210  new afwMath::LinearCombinationKernel(basisList, kValues)
211  );
212  };
lsst::afw::math::Kernel::Ptr _kernel
Derived single-object convolution kernel.
double _background
Derived differential background estimate.
boost::shared_ptr< Eigen::VectorXd > _iVec
Vectorized I.
A kernel that is a linear combination of fixed basis kernels.
Definition: Kernel.h:814
double _kSum
Derived kernel sum.
boost::shared_ptr< Eigen::MatrixXd > _cMat
K_i x R.
boost::shared_ptr< Eigen::VectorXd > _ivVec
Inverse variance.
template<typename InputT >
virtual lsst::ip::diffim::StaticKernelSolution< InputT >::~StaticKernelSolution ( )
inlinevirtual

Definition at line 88 of file KernelSolution.h.

88 {};

Member Function Documentation

template<typename InputT >
void lsst::ip::diffim::StaticKernelSolution< InputT >::_setKernel ( )
protected

Set kernel after solution.

Definition at line 433 of file KernelSolution.cc.

433  {
435  throw LSST_EXCEPT(pexExcept::Exception, "Kernel not solved; cannot make solution");
436  }
437 
438  unsigned int const nParameters = _aVec->size();
439  unsigned int const nBackgroundParameters = _fitForBackground ? 1 : 0;
440  unsigned int const nKernelParameters =
441  boost::dynamic_pointer_cast<afwMath::LinearCombinationKernel>(_kernel)->getKernelList().size();
442  if (nParameters != (nKernelParameters + nBackgroundParameters))
443  throw LSST_EXCEPT(pexExcept::Exception, "Mismatched sizes in kernel solution");
444 
445  /* Fill in the kernel results */
446  std::vector<double> kValues(nKernelParameters);
447  for (unsigned int idx = 0; idx < nKernelParameters; idx++) {
448  if (std::isnan((*_aVec)(idx))) {
450  str(boost::format("Unable to determine kernel solution %d (nan)") % idx));
451  }
452  kValues[idx] = (*_aVec)(idx);
453  }
454  _kernel->setKernelParameters(kValues);
455 
457  new ImageT(_kernel->getDimensions())
458  );
459  _kSum = _kernel->computeImage(*image, false);
460 
461  if (_fitForBackground) {
462  if (std::isnan((*_aVec)(nParameters-1))) {
464  str(boost::format("Unable to determine background solution %d (nan)") %
465  (nParameters-1)));
466  }
467  _background = (*_aVec)(nParameters-1);
468  }
469  }
lsst::afw::math::Kernel::Ptr _kernel
Derived single-object convolution kernel.
KernelSolvedBy _solvedBy
Type of algorithm used to make solution.
double _background
Derived differential background estimate.
int isnan(T t)
Definition: ieee.h:110
table::Key< table::Array< Kernel::Pixel > > image
Definition: FixedKernel.cc:117
bool _fitForBackground
Background terms included in fit.
lsst::afw::image::Image< lsst::afw::math::Kernel::Pixel > ImageT
A kernel that is a linear combination of fixed basis kernels.
Definition: Kernel.h:814
boost::shared_ptr< Image< lsst::afw::math::Kernel::Pixel > > Ptr
Definition: Image.h:418
double _kSum
Derived kernel sum.
#define LSST_EXCEPT(type,...)
Definition: Exception.h:46
boost::shared_ptr< Eigen::VectorXd > _aVec
Derived least squares solution matrix.
template<typename InputT >
void lsst::ip::diffim::StaticKernelSolution< InputT >::_setKernelUncertainty ( )
protected

Not implemented.

Definition at line 473 of file KernelSolution.cc.

473  {
474  throw LSST_EXCEPT(pexExcept::Exception, "Uncertainty calculation not supported");
475 
476  /* Estimate of parameter uncertainties comes from the inverse of the
477  * covariance matrix (noise spectrum).
478  * N.R. 15.4.8 to 15.4.15
479  *
480  * Since this is a linear problem no need to use Fisher matrix
481  * N.R. 15.5.8
482  *
483  * Although I might be able to take advantage of the solution above.
484  * Since this now works and is not the rate limiting step, keep as-is for DC3a.
485  *
486  * Use Cholesky decomposition again.
487  * Cholkesy:
488  * Cov = L L^t
489  * Cov^(-1) = (L L^t)^(-1)
490  * = (L^T)^-1 L^(-1)
491  *
492  * Code would be:
493  *
494  * Eigen::MatrixXd cov = (*_mMat).transpose() * (*_mMat);
495  * Eigen::LLT<Eigen::MatrixXd> llt = cov.llt();
496  * Eigen::MatrixXd error2 = llt.matrixL().transpose().inverse()*llt.matrixL().inverse();
497  */
498  }
#define LSST_EXCEPT(type,...)
Definition: Exception.h:46
template<typename InputT >
void lsst::ip::diffim::StaticKernelSolution< InputT >::build ( lsst::afw::image::Image< InputT > const &  templateImage,
lsst::afw::image::Image< InputT > const &  scienceImage,
lsst::afw::image::Image< lsst::afw::image::VariancePixel > const &  varianceEstimate 
)
virtual

Definition at line 261 of file KernelSolution.cc.

265  {
266 
267  afwMath::Statistics varStats = afwMath::makeStatistics(varianceEstimate, afwMath::MIN);
268  if (varStats.getValue(afwMath::MIN) < 0.0) {
270  "Error: variance less than 0.0");
271  }
272  if (varStats.getValue(afwMath::MIN) == 0.0) {
274  "Error: variance equals 0.0, cannot inverse variance weight");
275  }
276 
277  lsst::afw::math::KernelList basisList =
278  boost::dynamic_pointer_cast<afwMath::LinearCombinationKernel>(_kernel)->getKernelList();
279 
280  unsigned int const nKernelParameters = basisList.size();
281  unsigned int const nBackgroundParameters = _fitForBackground ? 1 : 0;
282  unsigned int const nParameters = nKernelParameters + nBackgroundParameters;
283 
284  std::vector<boost::shared_ptr<afwMath::Kernel> >::const_iterator kiter = basisList.begin();
285 
286  /* Ignore buffers around edge of convolved images :
287  *
288  * If the kernel has width 5, it has center pixel 2. The first good pixel
289  * is the (5-2)=3rd pixel, which is array index 2, and ends up being the
290  * index of the central pixel.
291  *
292  * You also have a buffer of unusable pixels on the other side, numbered
293  * width-center-1. The last good usable pixel is N-width+center+1.
294  *
295  * Example : the kernel is width = 5, center = 2
296  *
297  * ---|---|-c-|---|---|
298  *
299  * the image is width = N
300  * convolve this with the kernel, and you get
301  *
302  * |-x-|-x-|-g-|---|---| ... |---|---|-g-|-x-|-x-|
303  *
304  * g = first/last good pixel
305  * x = bad
306  *
307  * the first good pixel is the array index that has the value "center", 2
308  * the last good pixel has array index N-(5-2)+1
309  * eg. if N = 100, you want to use up to index 97
310  * 100-3+1 = 98, and the loops use i < 98, meaning the last
311  * index you address is 97.
312  */
313 
314  /* NOTE - we are accessing particular elements of Eigen arrays using
315  these coordinates, therefore they need to be in LOCAL coordinates.
316  This was written before ndarray unification.
317  */
318  afwGeom::Box2I goodBBox = (*kiter)->shrinkBBox(templateImage.getBBox(afwImage::LOCAL));
319  unsigned int const startCol = goodBBox.getMinX();
320  unsigned int const startRow = goodBBox.getMinY();
321  // endCol/Row is one past the index of the last good col/row
322  unsigned int endCol = goodBBox.getMaxX() + 1;
323  unsigned int endRow = goodBBox.getMaxY() + 1;
324 
325  boost::timer t;
326  t.restart();
327 
328  /* Eigen representation of input images; only the pixels that are unconvolved in cimage below */
329  Eigen::MatrixXd eigenTemplate = imageToEigenMatrix(templateImage).block(startRow,
330  startCol,
331  endRow-startRow,
332  endCol-startCol);
333  Eigen::MatrixXd eigenScience = imageToEigenMatrix(scienceImage).block(startRow,
334  startCol,
335  endRow-startRow,
336  endCol-startCol);
337  Eigen::MatrixXd eigeniVariance = imageToEigenMatrix(varianceEstimate).block(
338  startRow, startCol, endRow-startRow, endCol-startCol
339  ).array().inverse().matrix();
340 
341  /* Resize into 1-D for later usage */
342  eigenTemplate.resize(eigenTemplate.rows()*eigenTemplate.cols(), 1);
343  eigenScience.resize(eigenScience.rows()*eigenScience.cols(), 1);
344  eigeniVariance.resize(eigeniVariance.rows()*eigeniVariance.cols(), 1);
345 
346  /* Holds image convolved with basis function */
347  afwImage::Image<PixelT> cimage(templateImage.getDimensions());
348 
349  /* Holds eigen representation of image convolved with all basis functions */
350  std::vector<boost::shared_ptr<Eigen::MatrixXd> > convolvedEigenList(nKernelParameters);
351 
352  /* Iterators over convolved image list and basis list */
353  typename std::vector<boost::shared_ptr<Eigen::MatrixXd> >::iterator eiter =
354  convolvedEigenList.begin();
355  /* Create C_i in the formalism of Alard & Lupton */
356  for (kiter = basisList.begin(); kiter != basisList.end(); ++kiter, ++eiter) {
357  afwMath::convolve(cimage, templateImage, **kiter, false); /* cimage stores convolved image */
358 
359  boost::shared_ptr<Eigen::MatrixXd> cMat (
360  new Eigen::MatrixXd(imageToEigenMatrix(cimage).block(startRow,
361  startCol,
362  endRow-startRow,
363  endCol-startCol))
364  );
365  cMat->resize(cMat->rows()*cMat->cols(), 1);
366  *eiter = cMat;
367 
368  }
369 
370  double time = t.elapsed();
371  pexLog::TTrace<5>("lsst.ip.diffim.StaticKernelSolution.build",
372  "Total compute time to do basis convolutions : %.2f s", time);
373  t.restart();
374 
375  /*
376  Load matrix with all values from convolvedEigenList : all images
377  (eigeniVariance, convolvedEigenList) must be the same size
378  */
379  Eigen::MatrixXd cMat(eigenTemplate.col(0).size(), nParameters);
380  typename std::vector<boost::shared_ptr<Eigen::MatrixXd> >::iterator eiterj =
381  convolvedEigenList.begin();
382  typename std::vector<boost::shared_ptr<Eigen::MatrixXd> >::iterator eiterE =
383  convolvedEigenList.end();
384  for (unsigned int kidxj = 0; eiterj != eiterE; eiterj++, kidxj++) {
385  cMat.col(kidxj) = (*eiterj)->col(0);
386  }
387  /* Treat the last "image" as all 1's to do the background calculation. */
388  if (_fitForBackground)
389  cMat.col(nParameters-1).fill(1.);
390 
391  _cMat.reset(new Eigen::MatrixXd(cMat));
392  _ivVec.reset(new Eigen::VectorXd(eigeniVariance.col(0)));
393  _iVec.reset(new Eigen::VectorXd(eigenScience.col(0)));
394 
395  /* Make these outside of solve() so I can check condition number */
396  _mMat.reset(new Eigen::MatrixXd((*_cMat).transpose() * ((*_ivVec).asDiagonal() * (*_cMat))));
397  _bVec.reset(new Eigen::VectorXd((*_cMat).transpose() * ((*_ivVec).asDiagonal() * (*_iVec))));
398  }
int getMaxY() const
Definition: Box.h:129
estimate sample minimum
Definition: Statistics.h:76
lsst::afw::math::Kernel::Ptr _kernel
Derived single-object convolution kernel.
geom::Box2I getBBox(ImageOrigin origin=PARENT) const
Definition: Image.h:377
An integer coordinate rectangle.
Definition: Box.h:53
double getValue(Property const prop=NOTHING) const
Return the value of the desired property (if specified in the constructor)
Definition: Statistics.cc:1009
bool _fitForBackground
Background terms included in fit.
geom::Extent2I getDimensions() const
Return the image&#39;s size; useful for passing to constructors.
Definition: Image.h:298
int getMinY() const
Definition: Box.h:125
boost::shared_ptr< Eigen::VectorXd > _iVec
Vectorized I.
A kernel that is a linear combination of fixed basis kernels.
Definition: Kernel.h:814
int getMinX() const
Definition: Box.h:124
boost::shared_ptr< Eigen::VectorXd > _bVec
Derived least squares B vector.
#define LSST_EXCEPT(type,...)
Definition: Exception.h:46
void convolve(OutImageT &convolvedImage, InImageT const &inImage, KernelT const &kernel, ConvolutionControl const &convolutionControl=ConvolutionControl())
Convolve an Image or MaskedImage with a Kernel, setting pixels of an existing output image...
boost::shared_ptr< Eigen::MatrixXd > _mMat
Derived least squares M matrix.
Statistics makeStatistics(afwImage::Mask< afwImage::MaskPixel > const &msk, int const flags, StatisticsControl const &sctrl)
Specialization to handle Masks.
Definition: Statistics.cc:1082
boost::shared_ptr< Eigen::MatrixXd > _cMat
K_i x R.
int getMaxX() const
Definition: Box.h:128
boost::shared_ptr< Eigen::VectorXd > _ivVec
Inverse variance.
A class to represent a 2-dimensional array of pixels.
Definition: Image.h:415
Eigen::MatrixXd imageToEigenMatrix(lsst::afw::image::Image< PixelT > const &img)
Turns Image into a 2-D Eigen Matrix.
std::vector< boost::shared_ptr< Kernel > > KernelList
Definition: Kernel.h:542
template<typename InputT >
double lsst::ip::diffim::StaticKernelSolution< InputT >::getBackground ( )
virtual

Definition at line 235 of file KernelSolution.cc.

235  {
237  throw LSST_EXCEPT(pexExcept::Exception, "Kernel not solved; cannot return background");
238  }
239  return _background;
240  }
KernelSolvedBy _solvedBy
Type of algorithm used to make solution.
double _background
Derived differential background estimate.
#define LSST_EXCEPT(type,...)
Definition: Exception.h:46
template<typename InputT >
lsst::afw::math::Kernel::Ptr lsst::ip::diffim::StaticKernelSolution< InputT >::getKernel ( )
virtual

Definition at line 215 of file KernelSolution.cc.

215  {
217  throw LSST_EXCEPT(pexExcept::Exception, "Kernel not solved; cannot return solution");
218  }
219  return _kernel;
220  }
lsst::afw::math::Kernel::Ptr _kernel
Derived single-object convolution kernel.
KernelSolvedBy _solvedBy
Type of algorithm used to make solution.
#define LSST_EXCEPT(type,...)
Definition: Exception.h:46
template<typename InputT >
double lsst::ip::diffim::StaticKernelSolution< InputT >::getKsum ( )
virtual

Definition at line 243 of file KernelSolution.cc.

243  {
245  throw LSST_EXCEPT(pexExcept::Exception, "Kernel not solved; cannot return ksum");
246  }
247  return _kSum;
248  }
KernelSolvedBy _solvedBy
Type of algorithm used to make solution.
double _kSum
Derived kernel sum.
#define LSST_EXCEPT(type,...)
Definition: Exception.h:46
template<typename InputT >
std::pair< boost::shared_ptr< lsst::afw::math::Kernel >, double > lsst::ip::diffim::StaticKernelSolution< InputT >::getSolutionPair ( )
virtual

Definition at line 252 of file KernelSolution.cc.

252  {
254  throw LSST_EXCEPT(pexExcept::Exception, "Kernel not solved; cannot return solution");
255  }
256 
257  return std::make_pair(_kernel, _background);
258  }
lsst::afw::math::Kernel::Ptr _kernel
Derived single-object convolution kernel.
KernelSolvedBy _solvedBy
Type of algorithm used to make solution.
double _background
Derived differential background estimate.
#define LSST_EXCEPT(type,...)
Definition: Exception.h:46
template<typename InputT >
lsst::afw::image::Image< lsst::afw::math::Kernel::Pixel >::Ptr lsst::ip::diffim::StaticKernelSolution< InputT >::makeKernelImage ( )
virtual

Definition at line 223 of file KernelSolution.cc.

223  {
225  throw LSST_EXCEPT(pexExcept::Exception, "Kernel not solved; cannot return image");
226  }
229  );
230  (void)_kernel->computeImage(*image, false);
231  return image;
232  }
lsst::afw::math::Kernel::Ptr _kernel
Derived single-object convolution kernel.
KernelSolvedBy _solvedBy
Type of algorithm used to make solution.
table::Key< table::Array< Kernel::Pixel > > image
Definition: FixedKernel.cc:117
#define LSST_EXCEPT(type,...)
Definition: Exception.h:46
A class to represent a 2-dimensional array of pixels.
Definition: Image.h:415
template<typename InputT >
void lsst::ip::diffim::StaticKernelSolution< InputT >::solve ( )
virtual

Reimplemented from lsst::ip::diffim::KernelSolution.

Reimplemented in lsst::ip::diffim::RegularizedKernelSolution< InputT >.

Definition at line 401 of file KernelSolution.cc.

401  {
402  pexLog::TTrace<5>("lsst.ip.diffim.StaticKernelSolution.solve",
403  "mMat is %d x %d; bVec is %d; cMat is %d x %d; vVec is %d; iVec is %d",
404  (*_mMat).rows(), (*_mMat).cols(), (*_bVec).size(),
405  (*_cMat).rows(), (*_cMat).cols(), (*_ivVec).size(), (*_iVec).size());
406 
407  /* If I put this here I can't check for condition number before solving */
408  /*
409  _mMat.reset(new Eigen::MatrixXd((*_cMat).transpose() * ((*_ivVec).asDiagonal() * (*_cMat))));
410  _bVec.reset(new Eigen::VectorXd((*_cMat).transpose() * ((*_ivVec).asDiagonal() * (*_iVec))));
411  */
412 
413  if (DEBUG_MATRIX) {
414  std::cout << "C" << std::endl;
415  std::cout << (*_cMat) << std::endl;
416  std::cout << "iV" << std::endl;
417  std::cout << (*_ivVec) << std::endl;
418  std::cout << "I" << std::endl;
419  std::cout << (*_iVec) << std::endl;
420  }
421 
422  try {
424  } catch (pexExcept::Exception &e) {
425  LSST_EXCEPT_ADD(e, "Unable to solve static kernel matrix");
426  throw e;
427  }
428  /* Turn matrices into _kernel and _background */
429  _setKernel();
430  }
void _setKernel()
Set kernel after solution.
#define LSST_EXCEPT_ADD(e, m)
Definition: Exception.h:51
#define DEBUG_MATRIX

Member Data Documentation

template<typename InputT >
double lsst::ip::diffim::StaticKernelSolution< InputT >::_background
protected

Derived differential background estimate.

Definition at line 109 of file KernelSolution.h.

template<typename InputT >
boost::shared_ptr<Eigen::MatrixXd> lsst::ip::diffim::StaticKernelSolution< InputT >::_cMat
protected

K_i x R.

Definition at line 104 of file KernelSolution.h.

template<typename InputT >
boost::shared_ptr<Eigen::VectorXd> lsst::ip::diffim::StaticKernelSolution< InputT >::_iVec
protected

Vectorized I.

Definition at line 105 of file KernelSolution.h.

template<typename InputT >
boost::shared_ptr<Eigen::VectorXd> lsst::ip::diffim::StaticKernelSolution< InputT >::_ivVec
protected

Inverse variance.

Definition at line 106 of file KernelSolution.h.

template<typename InputT >
lsst::afw::math::Kernel::Ptr lsst::ip::diffim::StaticKernelSolution< InputT >::_kernel
protected

Derived single-object convolution kernel.

Definition at line 108 of file KernelSolution.h.

template<typename InputT >
double lsst::ip::diffim::StaticKernelSolution< InputT >::_kSum
protected

Derived kernel sum.

Definition at line 110 of file KernelSolution.h.


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