abstract base class for resolution function basis functions More...
#include <resol_fn.h>
abstract base class for resolution function basis functions
A basis function must be able to return its value and derivatives for any given HKL.
Optionally, performance can be improved by returning a flag to indicate if the value of the basis function for a given reflection is linearly dependent on the values of the parameter, and a value indicating whether the curvature matrix takes an N-diagonal form.
NOTE: for performance reasons the derivatives are returned as a reference to an internal object, so if you store a reference to the result (which is also good for performance, it will be overwritten on the next call. If this matters, store a copy rather than a reference.
[virtual]
the type of the function: optionally used to improve convergence
Defaults to GENERAL, which will always work. If the basis function is linearly dependent on the parameters, override this with a function returning LINEAR for improved performance. See the provided basis functions for examples.
Reimplemented in clipper::BasisFn_binner, clipper::BasisFn_linear, clipper::BasisFn_spline, clipper::BasisFn_log_gaussian, and clipper::BasisFn_log_aniso_gaussian.
Referenced by clipper::ResolutionFn::ResolutionFn().
[virtual]
number of non-zero diagonals in the upper triangle of the curvatures
Defaults to 0, which will always work. If the basis function has compact support among the parameters, i.e. the value for any HKL depends only on a few parameters, then set this to the number of non-zero diagonals in the upper triangle of the matrix, i.e. 1 for a diagonal matrix, 2 for a tri-diagonal matrix etc.
Reimplemented in clipper::BasisFn_binner, clipper::BasisFn_linear, and clipper::BasisFn_spline.
Referenced by clipper::ResolutionFn::calc_derivs().