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

1-dimensional weighted sum of Chebyshev polynomials of the first kind. More...

#include <FunctionLibrary.h>

Inheritance diagram for lsst::afw::math::Chebyshev1Function1< ReturnT >:
lsst::afw::math::Function1< ReturnT > lsst::afw::table::io::PersistableFacade< Function1< ReturnT > > lsst::afw::math::Function< ReturnT > lsst::daf::base::Citizen lsst::afw::table::io::PersistableFacade< Function< ReturnT > > lsst::afw::table::io::Persistable

Public Types

typedef Function1< ReturnT >::Ptr Function1Ptr
 
- Public Types inherited from lsst::afw::math::Function1< ReturnT >
typedef boost::shared_ptr
< Function1< 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

 Chebyshev1Function1 (unsigned int order, double minX=-1, double maxX=1)
 Construct a Chebyshev polynomial of specified order and range. More...
 
 Chebyshev1Function1 (std::vector< double > params, double minX=-1, double maxX=1)
 Construct a Chebyshev polynomial with specified parameters and range. More...
 
virtual ~Chebyshev1Function1 ()
 
virtual Function1Ptr clone () const
 Return a pointer to a deep copy of this function. More...
 
double getMinX () const
 Get minimum allowed x. More...
 
double getMaxX () const
 Get maximum allowed x. More...
 
unsigned int getOrder () const
 Get the polynomial order. More...
 
virtual bool isLinearCombination () const
 Is the function a linear combination of its parameters? More...
 
virtual ReturnT operator() (double x) const
 
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::Function1< ReturnT >
 Function1 (unsigned int nParams)
 Construct a Function1 given the number of function parameters. More...
 
 Function1 (std::vector< double > const &params)
 Construct a Function1 given the function parameters. More...
 
virtual ~Function1 ()
 
virtual void computeCache (int const n)
 
- 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 ()
 

Protected Member Functions

 Chebyshev1Function1 ()
 
- Protected Member Functions inherited from lsst::afw::math::Function1< ReturnT >
 Function1 ()
 
- 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)
 

Private Member Functions

void _initialize (double minX, double maxX)
 initialize private constants More...
 
template<class Archive >
void serialize (Archive &ar, unsigned int const)
 

Private Attributes

double _minX
 minimum allowed x More...
 
double _maxX
 maximum allowed x More...
 
double _scale
 x' = (x + _offset) * _scale More...
 
double _offset
 x' = (x + _offset) * _scale More...
 
unsigned int _order
 polynomial order More...
 

Friends

class boost::serialization::access
 

Additional Inherited Members

- Static Public Member Functions inherited from lsst::afw::table::io::PersistableFacade< Function1< ReturnT > >
static boost::shared_ptr
< Function1< ReturnT > > 
readFits (fits::Fits &fitsfile)
 Read an object from an already open FITS object. More...
 
static boost::shared_ptr
< Function1< ReturnT > > 
readFits (std::string const &fileName, int hdu=0)
 Read an object from a regular FITS file. More...
 
static boost::shared_ptr
< Function1< 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 Types inherited from lsst::afw::table::io::Persistable
typedef io::OutputArchiveHandle OutputArchiveHandle
 
- Protected Attributes inherited from lsst::afw::math::Function< ReturnT >
std::vector< double > _params
 
bool _isCacheValid
 

Detailed Description

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

1-dimensional weighted sum of Chebyshev polynomials of the first kind.

f(x) = c0 T0(x') + c1 T1(x') + c2 T2(x') + ... = c0 + c1 T1(x') + c2 T2(x') + ... where:

The function argument must be in the range [minX, maxX].

Definition at line 669 of file FunctionLibrary.h.

Member Typedef Documentation

template<typename ReturnT >
typedef Function1<ReturnT>::Ptr lsst::afw::math::Chebyshev1Function1< ReturnT >::Function1Ptr

Definition at line 671 of file FunctionLibrary.h.

Constructor & Destructor Documentation

template<typename ReturnT >
lsst::afw::math::Chebyshev1Function1< ReturnT >::Chebyshev1Function1 ( unsigned int  order,
double  minX = -1,
double  maxX = 1 
)
inlineexplicit

Construct a Chebyshev polynomial of specified order and range.

The parameters are initialized to zero.

Parameters
orderorder of polynomial (0 for constant)
minXminimum allowed x
maxXmaximum allowed x

Definition at line 678 of file FunctionLibrary.h.

682  :
683  Function1<ReturnT>(order + 1)
684  {
685  _initialize(minX, maxX);
686  }
void _initialize(double minX, double maxX)
initialize private constants
template<typename ReturnT >
lsst::afw::math::Chebyshev1Function1< ReturnT >::Chebyshev1Function1 ( std::vector< double >  params,
double  minX = -1,
double  maxX = 1 
)
inlineexplicit

Construct a Chebyshev polynomial with specified parameters and range.

The order of the polynomial is set to the length of the params vector.

Exceptions
lsst::pex::exceptions::InvalidParameterErrorif params is empty
Parameters
paramspolynomial coefficients
minXminimum allowed x
maxXmaximum allowed x

Definition at line 695 of file FunctionLibrary.h.

699  :
700  Function1<ReturnT>(params)
701  {
702  if (params.size() < 1) {
703  throw LSST_EXCEPT(lsst::pex::exceptions::InvalidParameterError,
704  "Chebyshev1Function1 called with empty vector");
705  }
706  _initialize(minX, maxX);
707  }
void _initialize(double minX, double maxX)
initialize private constants
#define LSST_EXCEPT(type,...)
Definition: Exception.h:46
template<typename ReturnT >
virtual lsst::afw::math::Chebyshev1Function1< ReturnT >::~Chebyshev1Function1 ( )
inlinevirtual

Definition at line 709 of file FunctionLibrary.h.

709 {}
template<typename ReturnT >
lsst::afw::math::Chebyshev1Function1< ReturnT >::Chebyshev1Function1 ( )
inlineexplicitprotected

Definition at line 780 of file FunctionLibrary.h.

780  : Function1<ReturnT>(1),
781  _minX(0.0), _maxX(0.0), _scale(1.0), _offset(0.0), _order(0) {}
unsigned int _order
polynomial order
double _scale
x&#39; = (x + _offset) * _scale
double _offset
x&#39; = (x + _offset) * _scale

Member Function Documentation

template<typename ReturnT >
void lsst::afw::math::Chebyshev1Function1< ReturnT >::_initialize ( double  minX,
double  maxX 
)
inlineprivate

initialize private constants

Definition at line 770 of file FunctionLibrary.h.

770  {
771  _minX = minX;
772  _maxX = maxX;
773  _scale = 2.0 / (_maxX - _minX);
774  _offset = -(_minX + _maxX) * 0.5;
775  _order = this->getNParameters() - 1;
776  }
unsigned int _order
polynomial order
double _scale
x&#39; = (x + _offset) * _scale
unsigned int getNParameters() const
Return the number of function parameters.
Definition: Function.h:125
double _offset
x&#39; = (x + _offset) * _scale
template<typename ReturnT >
virtual Function1Ptr lsst::afw::math::Chebyshev1Function1< ReturnT >::clone ( ) const
inlinevirtual

Return a pointer to a deep copy of this function.

This function exists instead of a copy constructor so one can obtain a copy of an actual function instead of a useless copy of the base class.

Every concrete subclass must override this method.

Returns
a pointer to a deep copy of the function

Implements lsst::afw::math::Function1< ReturnT >.

Definition at line 711 of file FunctionLibrary.h.

711  {
712  return Function1Ptr(new Chebyshev1Function1(this->_params, _minX, _maxX));
713  }
Function1< ReturnT >::Ptr Function1Ptr
std::vector< double > _params
Definition: Function.h:204
template<typename ReturnT >
double lsst::afw::math::Chebyshev1Function1< ReturnT >::getMaxX ( ) const
inline

Get maximum allowed x.

Definition at line 723 of file FunctionLibrary.h.

723 { return _maxX; };
template<typename ReturnT >
double lsst::afw::math::Chebyshev1Function1< ReturnT >::getMinX ( ) const
inline

Get minimum allowed x.

Definition at line 718 of file FunctionLibrary.h.

718 { return _minX; };
template<typename ReturnT >
unsigned int lsst::afw::math::Chebyshev1Function1< ReturnT >::getOrder ( ) const
inline

Get the polynomial order.

Definition at line 728 of file FunctionLibrary.h.

728 { return this->getNParameters() - 1; };
unsigned int getNParameters() const
Return the number of function parameters.
Definition: Function.h:125
template<typename ReturnT >
virtual bool lsst::afw::math::Chebyshev1Function1< 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 730 of file FunctionLibrary.h.

730 { return true; };
template<typename ReturnT >
virtual ReturnT lsst::afw::math::Chebyshev1Function1< ReturnT >::operator() ( double  x) const
inlinevirtual

Implements lsst::afw::math::Function1< ReturnT >.

Definition at line 732 of file FunctionLibrary.h.

732  {
733  double xPrime = (x + _offset) * _scale;
734 
735  // Clenshaw function for solving the Chebyshev polynomial
736  // Non-recursive version from Kresimir Cosic
737  int const order = _order;
738  if (order == 0) {
739  return this->_params[0];
740  } else if (order == 1) {
741  return this->_params[0] + (this->_params[1] * xPrime);
742  }
743  double cshPrev = this->_params[order];
744  double csh = (2 * xPrime * this->_params[order]) + this->_params[order-1];
745  for (int i = order - 2; i > 0; --i) {
746  double cshNext = (2 * xPrime * csh) + this->_params[i] - cshPrev;
747  cshPrev = csh;
748  csh = cshNext;
749  }
750  return (xPrime * csh) + this->_params[0] - cshPrev;
751  }
unsigned int _order
polynomial order
std::vector< double > _params
Definition: Function.h:204
double _scale
x&#39; = (x + _offset) * _scale
double x
double _offset
x&#39; = (x + _offset) * _scale
template<typename ReturnT >
template<class Archive >
void lsst::afw::math::Chebyshev1Function1< ReturnT >::serialize ( Archive &  ar,
unsigned int  const 
)
inlineprivate

Definition at line 786 of file FunctionLibrary.h.

786  {
787  ar & make_nvp("fn1", boost::serialization::base_object<Function1<ReturnT> >(*this));
788  ar & make_nvp("minX", this->_minX);
789  ar & make_nvp("minX", this->_minX);
790  ar & make_nvp("maxX", this->_maxX);
791  ar & make_nvp("scale", this->_scale);
792  ar & make_nvp("offset", this->_offset);
793  ar & make_nvp("maxInd", this->_order);
794  }
unsigned int _order
polynomial order
double _scale
x&#39; = (x + _offset) * _scale
double _offset
x&#39; = (x + _offset) * _scale
template<typename ReturnT >
virtual std::string lsst::afw::math::Chebyshev1Function1< ReturnT >::toString ( std::string const &  ) const
inlinevirtual

Return a string representation of the function.

Returns
a string representation of the function

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

Definition at line 753 of file FunctionLibrary.h.

753  {
754  std::ostringstream os;
755  os << "Chebyshev1Function1 [" << _minX << ", " << _maxX << "]: ";
756  os << Function1<ReturnT>::toString(prefix);
757  return os.str();
758  }

Friends And Related Function Documentation

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

Definition at line 784 of file FunctionLibrary.h.

Member Data Documentation

template<typename ReturnT >
double lsst::afw::math::Chebyshev1Function1< ReturnT >::_maxX
private

maximum allowed x

Definition at line 762 of file FunctionLibrary.h.

template<typename ReturnT >
double lsst::afw::math::Chebyshev1Function1< ReturnT >::_minX
private

minimum allowed x

Definition at line 761 of file FunctionLibrary.h.

template<typename ReturnT >
double lsst::afw::math::Chebyshev1Function1< ReturnT >::_offset
private

x' = (x + _offset) * _scale

Definition at line 764 of file FunctionLibrary.h.

template<typename ReturnT >
unsigned int lsst::afw::math::Chebyshev1Function1< ReturnT >::_order
private

polynomial order

Definition at line 765 of file FunctionLibrary.h.

template<typename ReturnT >
double lsst::afw::math::Chebyshev1Function1< ReturnT >::_scale
private

x' = (x + _offset) * _scale

Definition at line 763 of file FunctionLibrary.h.


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