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 | Static Public Member Functions | Protected Member Functions | Protected Attributes | Private Member Functions | Friends | List of all members
lsst::afw::math::BasePolynomialFunction2< ReturnT > Class Template Reference

Base class for 2-dimensional polynomials of the form: More...

#include <Function.h>

Inheritance diagram for lsst::afw::math::BasePolynomialFunction2< ReturnT >:
lsst::afw::math::Function2< ReturnT > lsst::afw::table::io::PersistableFacade< Function2< ReturnT > > lsst::afw::math::Function< ReturnT > lsst::daf::base::Citizen lsst::afw::table::io::PersistableFacade< Function< ReturnT > > lsst::afw::table::io::Persistable lsst::afw::math::Chebyshev1Function2< ReturnT > lsst::afw::math::PolynomialFunction2< ReturnT >

Public Types

typedef Function2< ReturnT >::Ptr Function2Ptr
 
- Public Types inherited from lsst::afw::math::Function2< ReturnT >
typedef boost::shared_ptr
< Function2< ReturnT > > 
Ptr
 
- Public Types inherited from lsst::daf::base::Citizen
enum  { magicSentinel = 0xdeadbeef }
 
typedef unsigned long memId
 Type of the block's ID. More...
 
typedef memId(* memNewCallback )(const memId cid)
 A function used to register a callback. More...
 
typedef memId(* memCallback )(const Citizen *ptr)
 

Public Member Functions

 BasePolynomialFunction2 (unsigned int order)
 Construct a polynomial function of specified order. More...
 
 BasePolynomialFunction2 (std::vector< double > params)
 Construct a polynomial function with specified parameters. More...
 
virtual ~BasePolynomialFunction2 ()
 
int getOrder () const
 Get the polynomial order. More...
 
virtual bool isLinearCombination () const
 Is the function a linear combination of its parameters? More...
 
virtual std::vector< double > getDFuncDParameters (double x, double y) const
 
- Public Member Functions inherited from lsst::afw::math::Function2< ReturnT >
 Function2 (unsigned int nParams)
 Construct a Function2 given the number of function parameters. More...
 
 Function2 (std::vector< double > const &params)
 Construct a Function2 given the function parameters. More...
 
virtual ~Function2 ()
 
virtual Ptr clone () const =0
 Return a pointer to a deep copy of this function. More...
 
virtual ReturnT operator() (double x, double y) const =0
 
virtual std::string toString (std::string const &prefix="") const
 Return a string representation of the function. More...
 
- Public Member Functions inherited from lsst::afw::math::Function< ReturnT >
 Function (unsigned int nParams)
 Construct a Function given the number of function parameters. More...
 
 Function (std::vector< double > const &params)
 Construct a Function given the function parameters. More...
 
virtual ~Function ()
 
unsigned int getNParameters () const
 Return the number of function parameters. More...
 
virtual double getParameter (unsigned int ind) const
 Get one function parameter without range checking. More...
 
std::vector< double > const & getParameters () const
 Return all function parameters. More...
 
void setParameter (unsigned int ind, double newValue)
 Set one function parameter without range checking. More...
 
void setParameters (std::vector< double > const &params)
 Set all function parameters. More...
 
- Public Member Functions inherited from lsst::daf::base::Citizen
 Citizen (const std::type_info &)
 
 Citizen (Citizen const &)
 
 ~Citizen ()
 
Citizenoperator= (Citizen const &)
 
std::string repr () const
 Return a string representation of a Citizen. More...
 
void markPersistent (void)
 Mark a Citizen as persistent and not destroyed until process end. More...
 
memId getId () const
 Return the Citizen's ID. More...
 
- Public Member Functions inherited from lsst::afw::table::io::Persistable
void writeFits (std::string const &fileName, std::string const &mode="w") const
 Write the object to a regular FITS file. More...
 
void writeFits (fits::MemFileManager &manager, std::string const &mode="w") const
 Write the object to a FITS image in memory. More...
 
void writeFits (fits::Fits &fitsfile) const
 Write the object to an already-open FITS object. More...
 
virtual bool isPersistable () const
 Return true if this particular object can be persisted using afw::table::io. More...
 
virtual ~Persistable ()
 

Static Public Member Functions

static int nParametersFromOrder (int order)
 Compute number of parameters from polynomial order. More...
 
static int orderFromNParameters (int nParameters)
 Compute polynomial order from the number of parameters. More...
 
- Static Public Member Functions inherited from lsst::afw::table::io::PersistableFacade< Function2< ReturnT > >
static boost::shared_ptr
< Function2< ReturnT > > 
readFits (fits::Fits &fitsfile)
 Read an object from an already open FITS object. More...
 
static boost::shared_ptr
< Function2< ReturnT > > 
readFits (std::string const &fileName, int hdu=0)
 Read an object from a regular FITS file. More...
 
static boost::shared_ptr
< Function2< ReturnT > > 
readFits (fits::MemFileManager &manager, int hdu=0)
 Read an object from a FITS file in memory. More...
 
- Static Public Member Functions inherited from lsst::daf::base::Citizen
static bool hasBeenCorrupted ()
 Check all allocated blocks for corruption. More...
 
static memId getNextMemId ()
 Return the memId of the next object to be allocated. More...
 
static int init ()
 Called once when the memory system is being initialised. More...
 
static int census (int, memId startingMemId=0)
 How many active Citizens are there? More...
 
static void census (std::ostream &stream, memId startingMemId=0)
 Print a list of all active Citizens to stream, sorted by ID. More...
 
static const std::vector
< const Citizen * > * 
census ()
 Return a (newly allocated) std::vector of active Citizens sorted by ID. More...
 
static memId setNewCallbackId (memId id)
 Call the NewCallback when block is allocated. More...
 
static memId setDeleteCallbackId (memId id)
 Call the current DeleteCallback when block is deleted. More...
 
static memNewCallback setNewCallback (memNewCallback func)
 Set the NewCallback function. More...
 
static memCallback setDeleteCallback (memCallback func)
 Set the DeleteCallback function. More...
 
static memCallback setCorruptionCallback (memCallback func)
 Set the CorruptionCallback function. More...
 
- Static Public Member Functions inherited from lsst::afw::table::io::PersistableFacade< Function< ReturnT > >
static boost::shared_ptr
< Function< ReturnT > > 
readFits (fits::Fits &fitsfile)
 Read an object from an already open FITS object. More...
 
static boost::shared_ptr
< Function< ReturnT > > 
readFits (std::string const &fileName, int hdu=0)
 Read an object from a regular FITS file. More...
 
static boost::shared_ptr
< Function< ReturnT > > 
readFits (fits::MemFileManager &manager, int hdu=0)
 Read an object from a FITS file in memory. More...
 

Protected Member Functions

 BasePolynomialFunction2 ()
 
- Protected Member Functions inherited from lsst::afw::math::Function2< ReturnT >
 Function2 ()
 
- Protected Member Functions inherited from lsst::afw::math::Function< ReturnT >
virtual std::string getPythonModule () const
 Return the fully-qualified Python module that should be imported to guarantee that its factory is registered. More...
 
 Function ()
 
- Protected Member Functions inherited from lsst::afw::table::io::Persistable
virtual std::string getPersistenceName () const
 Return the unique name used to persist this object and look up its factory. More...
 
virtual void write (OutputArchiveHandle &handle) const
 Write the object to one or more catalogs. More...
 
 Persistable ()
 
 Persistable (Persistable const &other)
 
void operator= (Persistable const &other)
 

Protected Attributes

int _order
 order of polynomial More...
 
- Protected Attributes inherited from lsst::afw::math::Function< ReturnT >
std::vector< double > _params
 
bool _isCacheValid
 

Private Member Functions

template<class Archive >
void serialize (Archive &ar, unsigned const int version)
 

Friends

class boost::serialization::access
 

Additional Inherited Members

- Protected Types inherited from lsst::afw::table::io::Persistable
typedef io::OutputArchiveHandle OutputArchiveHandle
 

Detailed Description

template<typename ReturnT>
class lsst::afw::math::BasePolynomialFunction2< ReturnT >

Base class for 2-dimensional polynomials of the form:

f(x,y) = c0 f0(x) f0(y) (0th order)

and typically f0(x) = 1

Definition at line 384 of file Function.h.

Member Typedef Documentation

template<typename ReturnT >
typedef Function2<ReturnT>::Ptr lsst::afw::math::BasePolynomialFunction2< ReturnT >::Function2Ptr

Definition at line 386 of file Function.h.

Constructor & Destructor Documentation

template<typename ReturnT >
lsst::afw::math::BasePolynomialFunction2< ReturnT >::BasePolynomialFunction2 ( unsigned int  order)
inlineexplicit

Construct a polynomial function of specified order.

The polynomial will have (order + 1) * (order + 2) / 2 coefficients

The parameters are initialized to zero.

Parameters
orderorder of polynomial (0 for constant)

Definition at line 395 of file Function.h.

397  :
398  Function2<ReturnT>(BasePolynomialFunction2::nParametersFromOrder(order)),
399  _order(order)
400  {}
int _order
order of polynomial
Definition: Function.h:492
static int nParametersFromOrder(int order)
Compute number of parameters from polynomial order.
Definition: Function.h:431
template<typename ReturnT >
lsst::afw::math::BasePolynomialFunction2< ReturnT >::BasePolynomialFunction2 ( std::vector< double >  params)
inlineexplicit

Construct a polynomial function with specified parameters.

The order of the polynomial is determined from the length of the params vector (see orderFromNParameters) and only certain lengths are suitable: 1, 3, 6, 10, 15...

Exceptions
lsst::pex::exceptions::InvalidParameterErrorif params length is unsuitable
Parameters
paramspolynomial coefficients

Definition at line 410 of file Function.h.

412  :
413  Function2<ReturnT>(params),
414  _order(BasePolynomialFunction2::orderFromNParameters(static_cast<int>(params.size())))
415  {}
int _order
order of polynomial
Definition: Function.h:492
static int orderFromNParameters(int nParameters)
Compute polynomial order from the number of parameters.
Definition: Function.h:454
template<typename ReturnT >
virtual lsst::afw::math::BasePolynomialFunction2< ReturnT >::~BasePolynomialFunction2 ( )
inlinevirtual

Definition at line 417 of file Function.h.

417 {}
template<typename ReturnT >
lsst::afw::math::BasePolynomialFunction2< ReturnT >::BasePolynomialFunction2 ( )
inlineexplicitprotected

Definition at line 495 of file Function.h.

495 : Function2<ReturnT>(1), _order(0) {}
int _order
order of polynomial
Definition: Function.h:492

Member Function Documentation

template<typename ReturnT >
virtual std::vector<double> lsst::afw::math::BasePolynomialFunction2< ReturnT >::getDFuncDParameters ( double  x,
double  y 
) const
inlinevirtual

Return the derivative of the Function with respect to its parameters

Because this is a polynomial, c0 F0(x,y) + c1 F1(x,y) + c2 F2(x,y) + ... we can set ci = 0 for all i except the parameter of interest and evaluate. This isn't necessarily the most efficient algorithm, but it's general, and you can override it if it isn't suitable for your particular subclass.

Reimplemented from lsst::afw::math::Function2< ReturnT >.

Reimplemented in lsst::afw::math::PolynomialFunction2< ReturnT >.

Definition at line 473 of file Function.h.

473  {
474  unsigned int const numParams = this->getNParameters(); // Number of parameters
475  std::vector<double> deriv(numParams); // Derivatives, to return
476 
477  Function2Ptr dummy = this->clone(); // Dummy function to evaluate for derivatives
478  for (unsigned int i = 0; i < numParams; ++i) {
479  dummy->setParameter(i, 0.0);
480  }
481 
482  for (unsigned int i = 0; i < numParams; ++i) {
483  dummy->setParameter(i, 1.0);
484  deriv[i] = (*dummy)(x, y);
485  dummy->setParameter(i, 0.0);
486  }
487 
488  return deriv;
489  }
int y
Function2< ReturnT >::Ptr Function2Ptr
Definition: Function.h:386
double x
unsigned int getNParameters() const
Return the number of function parameters.
Definition: Function.h:125
virtual Ptr clone() const =0
Return a pointer to a deep copy of this function.
template<typename ReturnT >
int lsst::afw::math::BasePolynomialFunction2< ReturnT >::getOrder ( ) const
inline

Get the polynomial order.

Definition at line 422 of file Function.h.

422 { return _order; }
int _order
order of polynomial
Definition: Function.h:492
template<typename ReturnT >
virtual bool lsst::afw::math::BasePolynomialFunction2< ReturnT >::isLinearCombination ( ) const
inlinevirtual

Is the function a linear combination of its parameters?

Returns
true if the function can be expressed as: sum over i of parameter_i * function_i(args)
Warning
: subclasses must override if true.

Reimplemented from lsst::afw::math::Function< ReturnT >.

Definition at line 424 of file Function.h.

424 { return true; }
template<typename ReturnT >
static int lsst::afw::math::BasePolynomialFunction2< ReturnT >::nParametersFromOrder ( int  order)
inlinestatic

Compute number of parameters from polynomial order.

Exceptions
lsst::pex::exceptions::InvalidParameterErrorif order < 0

Definition at line 431 of file Function.h.

431  {
432  if (order < 0) {
433  std::ostringstream os;
434  os << "order=" << order << " invalid: must be >= 0";
435  throw LSST_EXCEPT(lsst::pex::exceptions::InvalidParameterError, os.str());
436  }
437  return (order + 1) * (order + 2) / 2;
438  }
#define LSST_EXCEPT(type,...)
Definition: Exception.h:46
template<typename ReturnT >
static int lsst::afw::math::BasePolynomialFunction2< ReturnT >::orderFromNParameters ( int  nParameters)
inlinestatic

Compute polynomial order from the number of parameters.

Only certain values of nParameters are acceptable, including: nParameters order 1 0 3 1 6 2 10 3 15 4 ...

Exceptions
lsst::pex::exceptions::InvalidParameterErrorif nParameters is invalid

Definition at line 454 of file Function.h.

454  {
455  int order = static_cast<int>(
456  0.5 + ((-3.0 + (std::sqrt(1.0 + (8.0 * static_cast<double>(nParameters))))) / 2.0));
457  if (nParameters != BasePolynomialFunction2::nParametersFromOrder(order)) {
458  std::ostringstream os;
459  os << "nParameters=" << nParameters << " invalid: order is not an integer";
460  throw LSST_EXCEPT(lsst::pex::exceptions::InvalidParameterError, os.str());
461  }
462  return order;
463  }
static int nParametersFromOrder(int order)
Compute number of parameters from polynomial order.
Definition: Function.h:431
#define LSST_EXCEPT(type,...)
Definition: Exception.h:46
template<typename ReturnT >
template<class Archive >
void lsst::afw::math::BasePolynomialFunction2< ReturnT >::serialize ( Archive &  ar,
unsigned const int  version 
)
inlineprivate

Definition at line 501 of file Function.h.

501  {
502  ar & make_nvp("fn2", boost::serialization::base_object<Function2<ReturnT> >(*this));
503  ar & make_nvp("order", _order);
504  }
int _order
order of polynomial
Definition: Function.h:492

Friends And Related Function Documentation

template<typename ReturnT >
friend class boost::serialization::access
friend

Definition at line 498 of file Function.h.

Member Data Documentation

template<typename ReturnT >
int lsst::afw::math::BasePolynomialFunction2< ReturnT >::_order
protected

order of polynomial

Definition at line 492 of file Function.h.


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