LSSTApplications  10.0-2-g4f67435,11.0.rc2+1,11.0.rc2+12,11.0.rc2+3,11.0.rc2+4,11.0.rc2+5,11.0.rc2+6,11.0.rc2+7,11.0.rc2+8
LSSTDataManagementBasePackage
Public Types | Public Member Functions | Protected Member Functions | Private Member Functions | Private Attributes | Friends | List of all members
lsst.afw.math::GaussianFunction2< ReturnT > Class Template Reference

2-dimensional Gaussian More...

#include <FunctionLibrary.h>

Inheritance diagram for lsst.afw.math::GaussianFunction2< 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

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

 GaussianFunction2 (double sigma1, double sigma2, double angle=0.0)
 Construct a 2-dimensional Gaussian function. More...
 
virtual ~GaussianFunction2 ()
 
virtual Function2Ptr clone () const
 Return a pointer to a deep copy of this function. More...
 
virtual ReturnT operator() (double x, double y) const
 
virtual std::string toString (std::string const &prefix) const
 Return a string representation of the function. More...
 
virtual bool isPersistable () const
 Return true if this particular object can be persisted using afw::table::io. More...
 
- 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 std::vector< double > getDFuncDParameters (double, double) const
 
- 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...
 
virtual bool isLinearCombination () const
 Is the function a linear combination of its 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 ~Persistable ()
 

Protected Member Functions

virtual std::string getPersistenceName () const
 Return the unique name used to persist this object and look up its factory. More...
 
virtual void write (afw::table::io::OutputArchiveHandle &handle) const
 Write the object to one or more catalogs. More...
 
 GaussianFunction2 ()
 
- 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
 Persistable ()
 
 Persistable (Persistable const &other)
 
void operator= (Persistable const &other)
 

Private Member Functions

void _updateCache () const
 Update cached values. More...
 
template<class Archive >
void serialize (Archive &ar, unsigned int const version)
 

Private Attributes

const double _multFac
 precomputed scale factor More...
 
double _angle
 cached angle More...
 
double _sinAngle
 cached sin(angle) More...
 
double _cosAngle
 cached cos(angle) More...
 

Friends

class boost::serialization::access
 

Additional Inherited Members

- 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 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::GaussianFunction2< ReturnT >

2-dimensional Gaussian

f(x,y) = A e^((-pos1^2 / 2 sigma1^2) - (pos2^2 / 2 sigma2^2)) where:

Note
if sigma1 > sigma2 then angle is the angle of the major axis

Definition at line 246 of file FunctionLibrary.h.

Member Typedef Documentation

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

Definition at line 248 of file FunctionLibrary.h.

Constructor & Destructor Documentation

template<typename ReturnT >
lsst.afw.math::GaussianFunction2< ReturnT >::GaussianFunction2 ( double  sigma1,
double  sigma2,
double  angle = 0.0 
)
inlineexplicit

Construct a 2-dimensional Gaussian function.

Parameters
sigma1sigma along the pos1 axis
sigma2sigma along the pos2 axis
angleangle of pos1 axis, in rad (along x=0, y=pi/2)

Definition at line 253 of file FunctionLibrary.h.

257  :
258  Function2<ReturnT>(3),
260  {
261  this->_params[0] = sigma1;
262  this->_params[1] = sigma2;
263  this->_params[2] = angle;
264  _updateCache();
265  }
const double _multFac
precomputed scale factor
double const TWOPI
Definition: Angle.h:19
std::vector< double > _params
Definition: Function.h:204
afw::table::Key< double > sigma1
void _updateCache() const
Update cached values.
afw::table::Key< double > sigma2
template<typename ReturnT >
virtual lsst.afw.math::GaussianFunction2< ReturnT >::~GaussianFunction2 ( )
inlinevirtual

Definition at line 267 of file FunctionLibrary.h.

267 {}
template<typename ReturnT >
lsst.afw.math::GaussianFunction2< ReturnT >::GaussianFunction2 ( )
inlineexplicitprotected

Definition at line 330 of file FunctionLibrary.h.

330  : Function2<ReturnT>(3), _multFac(1.0 / (lsst::afw::geom::TWOPI)), _angle(0.0),
331  _sinAngle(0.0), _cosAngle(1.0) {}
const double _multFac
precomputed scale factor
double const TWOPI
Definition: Angle.h:19
double _cosAngle
cached cos(angle)
double _sinAngle
cached sin(angle)

Member Function Documentation

template<typename ReturnT >
void lsst.afw.math::GaussianFunction2< ReturnT >::_updateCache ( ) const
inlineprivate

Update cached values.

sin(angle) and cos(angle) are cached to speed computation and angle is cached so one can check if an update is required

The current design is to have operator() update the cache if needed. An alternate design is to update the cache when the parameters are set, not test in operator(). The main advantage to updating in operator() is safety and simplicity. The test is performed in one place, and it is the place where it matters the most. In contrast, there are multiple member functions to set parameters, and all must be overloaded to update the cache; miss one and the function silently misbehaves. There are trade-offs, of course. Testing the cache in operator() slows down operator() slightly. The overhead is small, but the function is typically evaulated more often than its parameters are changed.

Definition at line 318 of file FunctionLibrary.h.

318  {
319  _angle = this->_params[2];
320  _sinAngle = std::sin(_angle);
321  _cosAngle = std::cos(_angle);
322  }
double _cosAngle
cached cos(angle)
double _sinAngle
cached sin(angle)
std::vector< double > _params
Definition: Function.h:204
template<typename ReturnT >
virtual Function2Ptr lsst.afw.math::GaussianFunction2< 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 non-virtual function must override this method.

Returns
a pointer to a deep copy of the function

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

Definition at line 269 of file FunctionLibrary.h.

269  {
270  return Function2Ptr(new GaussianFunction2(this->_params[0], this->_params[1], this->_params[2]));
271  }
Function2< ReturnT >::Ptr Function2Ptr
std::vector< double > _params
Definition: Function.h:204
template<typename ReturnT >
virtual std::string lsst.afw.math::GaussianFunction2< ReturnT >::getPersistenceName ( ) const
protectedvirtual

Return the unique name used to persist this object and look up its factory.

Must be less than ArchiveIndexSchema::MAX_NAME_LENGTH characters.

Reimplemented from lsst.afw.table.io::Persistable.

template<typename ReturnT >
virtual bool lsst.afw.math::GaussianFunction2< ReturnT >::isPersistable ( ) const
inlinevirtual

Return true if this particular object can be persisted using afw::table::io.

Reimplemented from lsst.afw.table.io::Persistable.

Definition at line 292 of file FunctionLibrary.h.

292 { return true; }
template<typename ReturnT >
virtual ReturnT lsst.afw.math::GaussianFunction2< ReturnT >::operator() ( double  x,
double  y 
) const
inlinevirtual

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

Definition at line 273 of file FunctionLibrary.h.

273  {
274  if (_angle != this->_params[2]) {
275  _updateCache();
276  }
277  double pos1 = ( _cosAngle * x) + (_sinAngle * y);
278  double pos2 = (-_sinAngle * x) + (_cosAngle * y);
279  return static_cast<ReturnT> (
280  (_multFac / (this->_params[0] * this->_params[1])) *
281  std::exp(- ((pos1 * pos1) / (2.0 * this->_params[0] * this->_params[0]))
282  - ((pos2 * pos2) / (2.0 * this->_params[1] * this->_params[1]))));
283  }
int y
const double _multFac
precomputed scale factor
double _cosAngle
cached cos(angle)
double _sinAngle
cached sin(angle)
int x
std::vector< double > _params
Definition: Function.h:204
void _updateCache() const
Update cached values.
template<typename ReturnT >
template<class Archive >
void lsst.afw.math::GaussianFunction2< ReturnT >::serialize ( Archive &  ar,
unsigned int const  version 
)
inlineprivate

Definition at line 336 of file FunctionLibrary.h.

336  {
337  ar & make_nvp("fn2", boost::serialization::base_object<Function2<ReturnT> >(*this));
338  ar & make_nvp("angle", this->_angle);
339  ar & make_nvp("sinAngle", this->_sinAngle);
340  ar & make_nvp("cosAngle", this->_cosAngle);
341  }
double _cosAngle
cached cos(angle)
double _sinAngle
cached sin(angle)
template<typename ReturnT >
virtual std::string lsst.afw.math::GaussianFunction2< 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::Function2< ReturnT >.

Definition at line 285 of file FunctionLibrary.h.

285  {
286  std::ostringstream os;
287  os << "GaussianFunction2: ";
288  os << Function2<ReturnT>::toString(prefix);
289  return os.str();
290  }
template<typename ReturnT >
virtual void lsst.afw.math::GaussianFunction2< ReturnT >::write ( afw::table::io::OutputArchiveHandle handle) const
protectedvirtual

Write the object to one or more catalogs.

The handle object passed to this function provides an interface for adding new catalogs and adding nested objects to the same archive (while checking for duplicates). See OutputArchiveHandle for more information.

Reimplemented from lsst.afw.table.io::Persistable.

Friends And Related Function Documentation

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

Definition at line 334 of file FunctionLibrary.h.

Member Data Documentation

template<typename ReturnT >
double lsst.afw.math::GaussianFunction2< ReturnT >::_angle
mutableprivate

cached angle

Definition at line 324 of file FunctionLibrary.h.

template<typename ReturnT >
double lsst.afw.math::GaussianFunction2< ReturnT >::_cosAngle
mutableprivate

cached cos(angle)

Definition at line 326 of file FunctionLibrary.h.

template<typename ReturnT >
const double lsst.afw.math::GaussianFunction2< ReturnT >::_multFac
private

precomputed scale factor

Definition at line 323 of file FunctionLibrary.h.

template<typename ReturnT >
double lsst.afw.math::GaussianFunction2< ReturnT >::_sinAngle
mutableprivate

cached sin(angle)

Definition at line 325 of file FunctionLibrary.h.


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