Mantid
|
Performes convolution of two functions. More...
#include <Convolution.h>
Classes | |
class | HalfComplex |
Class for helping to read the transformed data. More... | |
Public Member Functions | |
size_t | addFunction (API::IFunction_sptr f) override |
Add a function. More... | |
const std::string | category () const override |
The categories the Fit function belong to. More... | |
Convolution () | |
Constructor. More... | |
void | function (const API::FunctionDomain &domain, API::FunctionValues &values) const override |
Function you want to fit to. More... | |
void | functionDeriv (const API::FunctionDomain &domain, API::Jacobian &jacobian) override |
Derivatives of function with respect to active parameters. More... | |
void | functionDirectMode (const API::FunctionDomain &domain, API::FunctionValues &values) const |
Calculates convolution of the two member functions when the domain is not symmetric with respect to inversion E --> -E. More... | |
void | functionFFTMode (const API::FunctionDomain &domain, API::FunctionValues &values) const |
Calculates convolution of the two member functions when the domain is symmetric with respect to inversion E --> -E. More... | |
std::string | name () const override |
overwrite IFunction base class methods More... | |
void | refreshResolution () const |
Deletes and zeroes pointer m_resolution forsing function(...) to recalculate the resolution function. More... | |
void | setAttribute (const std::string &attName, const Attribute &) override |
Set a value to attribute attName. More... | |
void | setUpForFit () override |
Set up the function for a fit. More... | |
Public Member Functions inherited from Mantid::API::CompositeFunction | |
double | activeParameter (size_t i) const override |
Value of i-th active parameter. More... | |
virtual size_t | addFunction (IFunction_sptr f) |
Add a function at the back of the internal function list. More... | |
void | applyTies () override |
Apply the ties. More... | |
std::size_t | attributeFunctionIndex (std::size_t i) const |
Get the index of the function to which parameter i belongs. More... | |
std::string | attributeName (size_t i) const override |
Returns the name of attribute i. More... | |
void | checkFunction () |
Check the function. More... | |
void | clear () |
Remove all member functions. More... | |
void | clearTies () override |
Remove all ties. More... | |
CompositeFunction () | |
Default constructor. More... | |
std::vector< std::shared_ptr< IFunction > > | createEquivalentFunctions () const override |
Split this function (if needed) into a list of independent functions. More... | |
std::string | descriptionOfActive (size_t i) const override |
Returns the name of active parameter i. More... | |
void | function (const FunctionDomain &domain, FunctionValues &values) const override |
Function you want to fit to. More... | |
void | functionDeriv (const FunctionDomain &domain, Jacobian &jacobian) override |
Derivatives of function with respect to active parameters. More... | |
std::size_t | functionIndex (const std::string &functionName) const |
Get the first function index with a matching function name. More... | |
std::size_t | functionIndex (std::size_t i) const |
Get the function index. More... | |
Attribute | getAttribute (const std::string &name) const override |
Return a value of attribute attName. More... | |
IConstraint * | getConstraint (size_t i) const override |
Get constraint of i-th parameter. More... | |
IFunction_sptr | getContainingFunction (const ParameterReference &ref) const |
Get the containing function. More... | |
double | getError (const std::string &name) const override |
Get the fitting error for a parameter by name. More... | |
double | getError (size_t i) const override |
Get the fitting error for a parameter. More... | |
double | getError (size_t i, size_t j) const |
Get the fitting error for i-th function's j-th parameter. More... | |
IFunction_sptr | getFunction (std::size_t i) const override |
Returns the pointer to i-th function. More... | |
virtual Attribute | getLocalAttribute (size_t i, const std::string &attName) const |
Return a value of attribute attName. More... | |
virtual std::vector< std::string > | getLocalAttributeNames () const |
Returns a list of attribute names. More... | |
size_t | getNumberDomains () const override |
Get number of domains required by this function. More... | |
double | getParameter (const std::string &name) const override |
Get parameter by name. More... | |
double | getParameter (size_t i) const override |
Get i-th parameter. More... | |
double | getParameter (size_t i, size_t j) const |
Get parameter from i-th function, j-th local parameter index. More... | |
size_t | getParameterIndex (const ParameterReference &ref) const override |
Return parameter index from a parameter reference. More... | |
ParameterStatus | getParameterStatus (size_t i) const override |
Get status of parameter. More... | |
ParameterTie * | getTie (size_t i) const override |
Get the tie of i-th parameter. More... | |
bool | hasAttribute (const std::string &name) const override |
Check if a function has an attribute with this name. More... | |
bool | hasFunction (const std::string &functionName) const |
Returns true if the composite has at least one of this function. More... | |
virtual bool | hasLocalAttribute (const std::string &) const |
Check if attribute attName exists. More... | |
bool | hasParameter (const std::string &name) const override |
Check if function has a parameter with this name. More... | |
bool | isExplicitlySet (size_t i) const override |
Checks if a parameter has been set explicitly. More... | |
std::string | name () const override |
Returns the function's name. More... | |
std::string | nameOfActive (size_t i) const override |
Returns the name of active parameter i. More... | |
size_t | nAttributes () const override |
Returns the number of attributes associated with the function. More... | |
std::size_t | nFunctions () const override |
Number of functions. More... | |
size_t | nGlobalAttributes () const noexcept |
virtual size_t | nLocalAttributes () const |
Returns the number of attributes associated with the function. More... | |
size_t | nParams () const override |
Total number of parameters. More... | |
std::string | parameterDescription (size_t i) const override |
Returns the description of parameter i. More... | |
size_t | parameterIndex (const std::string &name) const override |
Returns the index of parameter name. More... | |
size_t | parameterLocalIndex (size_t i, bool recursive=false) const |
Returns the index of parameter i as it declared in its function. More... | |
std::string | parameterLocalName (size_t i, bool recursive=false) const |
Returns the name of parameter i as it declared in its function. More... | |
std::string | parameterName (size_t i) const override |
Returns the name of parameter i. More... | |
std::string | parameterName (size_t i, size_t j) const |
Returns the name of i-th function's j-th parameter. More... | |
void | registerFunctionUsage (bool internal) override |
Registers the usage of the function with the UsageService. More... | |
void | removeConstraint (const std::string &parName) override |
Remove a constraint. More... | |
void | removeFunction (size_t i) |
Remove a function. More... | |
virtual void | removeTie (const std::string &parName) |
Removes the tie off a parameter. More... | |
virtual bool | removeTie (size_t i) |
Removes i-th parameter's tie. More... | |
bool | removeTie (size_t i) override |
Removes i-th parameter's tie. More... | |
void | replaceFunction (size_t functionIndex, const IFunction_sptr &f) |
Replace a function. More... | |
void | replaceFunctionPtr (const IFunction_sptr &f_old, const IFunction_sptr &f_new) |
Replace a function. More... | |
void | setActiveParameter (size_t i, double value) override |
Set new value of i-th active parameter. More... | |
void | setAttribute (const std::string &name, const API::IFunction::Attribute &value) override |
Set a value of a named attribute. More... | |
void | setError (const std::string &name, double err) override |
Set the fitting error for a parameter by name. More... | |
void | setError (size_t i, double err) override |
Set the fitting error for a parameter. More... | |
virtual void | setLocalAttribute (size_t i, const std::string &attName, const Attribute &) |
Set a value to attribute attName. More... | |
void | setLocalAttributeValue (size_t i, const std::string &attName, const char *value) |
template<typename T > | |
void | setLocalAttributeValue (size_t i, const std::string &attName, const T &value) |
void | setMatrixWorkspace (std::shared_ptr< const API::MatrixWorkspace > workspace, size_t wi, double startX, double endX) override |
Set matrix workspace. More... | |
void | setParameter (const std::string &name, const double &value, bool explicitlySet=true) override |
Set parameter by name. More... | |
void | setParameter (size_t, const double &value, bool explicitlySet=true) override |
Set i-th parameter. More... | |
void | setParameterDescription (const std::string &name, const std::string &description) override |
Set description of parameter by name. More... | |
void | setParameterDescription (size_t, const std::string &description) override |
Set i-th parameter description. More... | |
void | setParameterStatus (size_t i, ParameterStatus status) override |
Change status of parameter. More... | |
void | setStepSizeMethod (const StepSizeMethod stepSizeMethod) override |
Sets the function to use when calculating the step size. More... | |
void | setUpForFit () override |
Prepare function for a fit. More... | |
void | setWorkspace (std::shared_ptr< const Workspace > ws) override |
Sets the workspace for each member function. More... | |
void | updateActive (const double *in) |
Update parameters after a fitting iteration. More... | |
Public Member Functions inherited from Mantid::API::IFunction | |
std::string | asString () const |
Writes itself into a string. More... | |
bool | cancellationRequestReceived () const |
Returns true if a progress reporter is set & evalaution has been requested to stop. More... | |
virtual const std::vector< std::string > | categories () const |
Function to return all of the categories that contain this algorithm. More... | |
virtual const std::string | category () const |
The categories the Fit function belong to. More... | |
virtual const std::string | categorySeparator () const |
Function to return the sperator token for the category string. More... | |
virtual std::shared_ptr< IFunction > | clone () const |
Virtual copy constructor. More... | |
virtual int64_t | estimateNoProgressCalls () const |
Returns an estimate of the number of progress reports a single evaluation of the function will have. More... | |
virtual void | function (const FunctionDomain &domain, FunctionValues &values) const =0 |
Evaluates the function for all arguments in the domain. More... | |
virtual void | functionDeriv (const FunctionDomain &domain, Jacobian &jacobian) |
Derivatives of function with respect to active parameters. More... | |
IFunction () | |
Constructor. More... | |
IFunction (const IFunction &)=delete | |
No copying. More... | |
virtual void | initialize () |
Iinialize the function. More... | |
virtual void | iterationFinished () |
Called at the end of an iteration. More... | |
virtual void | iterationStarting () |
Called at the start of each iteration. More... | |
virtual std::string | name () const =0 |
Returns the function's name. More... | |
IFunction & | operator= (const IFunction &)=delete |
No copying. More... | |
virtual void | registerFunctionUsage (bool internal) |
Registers the usage of the algorithm with the UsageService. More... | |
void | reportProgress (const std::string &msg="") const |
Reports progress with an optional message. More... | |
virtual void | setMatrixWorkspace (std::shared_ptr< const API::MatrixWorkspace > workspace, size_t wi, double startX, double endX) |
Set matrix workspace. More... | |
void | setProgressReporter (std::shared_ptr< Kernel::ProgressBase > reporter) |
Attach a progress reporter. More... | |
virtual void | setWorkspace (std::shared_ptr< const Workspace > ws) |
Set the workspace. More... | |
virtual | ~IFunction () |
Virtual destructor. More... | |
bool | isFixed (size_t i) const |
Check if a parameter i is fixed. More... | |
bool | isFixedByDefault (size_t i) const |
Check if a parameter i is fixed by default (not by user). More... | |
void | fix (size_t i, bool isDefault=false) |
Removes a parameter i from the list of active. More... | |
void | unfix (size_t i) |
Restores a declared parameter i to the active status. More... | |
void | fixParameter (const std::string &name, bool isDefault=false) |
Fix a parameter. More... | |
void | unfixParameter (const std::string &name) |
Free a parameter. More... | |
void | fixAll (bool isDefault=false) |
Fix all parameters. More... | |
void | unfixAll () |
Free all parameters. More... | |
void | unfixAllDefault () |
Free all parameters fixed by default. More... | |
void | fixAllActive (bool isDefault=false) |
Fix all active parameters. More... | |
std::vector< std::string > | getParameterNames () const |
Return a vector with all parameter names. More... | |
bool | isActive (size_t i) const |
Check if an active parameter i is actually active. More... | |
virtual void | tie (const std::string &parName, const std::string &expr, bool isDefault=false) |
Tie a parameter to other parameters (or a constant) More... | |
virtual void | addTies (const std::string &ties, bool isDefault=false) |
Add several ties. More... | |
virtual bool | ignoreTie (const ParameterTie &) const |
Ignore a tie. More... | |
void | sortTies () |
Put all ties in order in which they will be applied correctly. More... | |
std::string | writeTies () const |
Write a parameter tie to a string. More... | |
virtual void | addConstraints (const std::string &str, bool isDefault=false) |
Add a list of conatraints from a string. More... | |
virtual void | addConstraint (std::unique_ptr< IConstraint > ic) |
Add a constraint to function. More... | |
virtual void | setConstraintPenaltyFactor (const std::string &parName, const double &c) |
Set a constraint penalty. More... | |
std::string | writeConstraints () const |
Write a parameter constraint to a string. More... | |
virtual void | clearConstraints () |
Remove all constraints. More... | |
virtual std::vector< std::string > | getAttributeNames () const |
Returns a list of attribute names. More... | |
template<typename T > | |
void | setAttributeValue (const std::string &attName, const T &value) |
Set an attribute value. More... | |
void | setAttributeValue (const std::string &attName, const char *value) |
Overload for const char* values. More... | |
void | setAttributeValue (const std::string &attName, const std::string &value) |
Set string attribute by value. More... | |
virtual std::shared_ptr< IFunction > | getFunction (size_t i) const |
Returns the pointer to i-th child function. More... | |
virtual size_t | getValuesSize (const FunctionDomain &domain) const |
Get number of values for a given domain. More... | |
void | calNumericalDeriv (const FunctionDomain &domain, Jacobian &jacobian) |
Calculate numerical derivatives. More... | |
double | calculateStepSize (const double parameterValue) const |
Calculate step size for the given parameter value. More... | |
void | setCovarianceMatrix (const std::shared_ptr< Kernel::Matrix< double > > &covar) |
Set the covariance matrix. More... | |
std::shared_ptr< const Kernel::Matrix< double > > | getCovarianceMatrix () const |
Get the covariance matrix. More... | |
void | setReducedChiSquared (double chi2) |
Set the reduced chi^2. More... | |
double | getReducedChiSquared () const |
Get the reduced chi^2. More... | |
void | setParallel (bool on) |
Set the parallel hint. More... | |
bool | isParallel () const |
Get the parallel hint. More... | |
void | setHandler (std::unique_ptr< FunctionHandler > handler) |
Set a function handler. More... | |
FunctionHandler * | getHandler () const |
Return the handler. More... | |
Protected Member Functions | |
void | init () override |
overwrite IFunction base class method, which declare function parameters More... | |
Protected Member Functions inherited from Mantid::API::CompositeFunction | |
void | declareAttribute (const std::string &name, const API::IFunction::Attribute &defaultValue) |
Declare a single attribute. More... | |
void | declareAttribute (const std::string &name, const API::IFunction::Attribute &defaultValue, const Kernel::IValidator &validator) |
Declare a single attribute, with a validator. More... | |
void | declareParameter (const std::string &name, double initValue=0, const std::string &description="") override |
Declare a new parameter. More... | |
void | init () override |
Function initialization. Declare function parameters in this method. More... | |
size_t | paramOffset (size_t i) const |
std::string | writeToString (const std::string &parentLocalAttributesStr="") const override |
Writes itself into a string. More... | |
Protected Member Functions inherited from Mantid::API::IFunction | |
double | convertValue (double value, Kernel::Unit_sptr &outUnit, const std::shared_ptr< const MatrixWorkspace > &ws, size_t wsIndex) const |
Convert a value from one unit (inUnit) to unit defined in workspace (ws) More... | |
void | convertValue (std::vector< double > &values, Kernel::Unit_sptr &outUnit, const std::shared_ptr< const MatrixWorkspace > &ws, size_t wsIndex) const |
Convert values from unit defined in workspace (ws) to outUnit. More... | |
virtual void | declareAttributes () |
Override to declare function attributes. More... | |
virtual void | declareParameters () |
Override to declare function parameters. More... | |
void | declareAttribute (const std::string &name, const API::IFunction::Attribute &defaultValue) |
Declare a single attribute. More... | |
void | declareAttribute (const std::string &name, const API::IFunction::Attribute &defaultValue, const Kernel::IValidator &validator) |
Declare a single attribute with validator. More... | |
void | checkAttributeName (const std::string &name) |
Check Attribute to declare does not already exist. More... | |
void | storeAttributeValue (const std::string &name, const API::IFunction::Attribute &value) |
Store an attribute's value. More... | |
void | storeReadOnlyAttribute (const std::string &name, const API::IFunction::Attribute &value) const |
A read-only ("mutable") attribute can be stored in a const method. More... | |
virtual void | addTie (std::unique_ptr< ParameterTie > tie) |
Add a new tie. Derived classes must provide storage for ties. More... | |
bool | hasOrderedTies () const |
void | applyOrderedTies () |
Private Member Functions | |
void | innerFunctionsAre1D () const |
Checks that the functions being convolted are 1D and throws if not. More... | |
Private Attributes | |
std::vector< double > | m_resolution |
Keep the Fourier transform of the resolution function (divided by the step in xValues) when in FFT mode, and the inverted resolution if in Direct mode. More... | |
Additional Inherited Members | |
Public Types inherited from Mantid::API::IFunction | |
enum | ParameterStatus { Active , Fixed , FixedByDefault , Tied } |
Describe parameter status in relation to fitting: Active: Fit varies such parameter directly. More... | |
enum class | StepSizeMethod { DEFAULT , SQRT_EPSILON } |
Describes the method in which the step size will be calculated: DEFAULT: Uses the traditional Mantid method of calculating the step size. More... | |
Static Public Member Functions inherited from Mantid::API::CompositeFunction | |
static std::pair< std::string, size_t > | parseName (const std::string &varName) |
Extract function index and parameter name from a variable name. More... | |
Protected Attributes inherited from Mantid::API::IFunction | |
bool | m_isParallel |
Flag to hint that the function is being used in parallel computations. More... | |
std::unique_ptr< FunctionHandler > | m_handler |
Pointer to a function handler. More... | |
std::shared_ptr< Kernel::ProgressBase > | m_progReporter |
Pointer to the progress handler. More... | |
Mantid::CurveFitting::Functions::Convolution::Convolution | ( | ) |
Constructor.
Definition at line 73 of file Convolution.cpp.
|
overridevirtual |
Add a function.
The first function added must be the resolution.
The second is the convoluted (model) function. If third, fourth and so on functions added they will be combined in a composite function. So the Convolution always has two member functions: the resolution and the model.
f | :: A pointer to the function to add |
Reimplemented from Mantid::API::CompositeFunction.
Definition at line 447 of file Convolution.cpp.
References Mantid::API::CompositeFunction::addFunction(), Mantid::API::CompositeFunction::checkFunction(), Mantid::CurveFitting::Functions::f1(), Mantid::API::CompositeFunction::getAttribute(), Mantid::API::CompositeFunction::getFunction(), Mantid::Kernel::SingletonHolder< T >::Instance(), Mantid::API::CompositeFunction::nFunctions(), and Mantid::API::CompositeFunction::removeFunction().
Referenced by Mantid::CurveFitting::Algorithms::ConvolveWorkspaces::exec().
|
inlineoverridevirtual |
The categories the Fit function belong to.
Categories must be listed as a semi colon separated list. For example: "General, Muon\\Custom" which adds a function to the category "General" and the sub-category "Muon\\Custom"
Reimplemented from Mantid::API::IFunction.
Definition at line 105 of file Convolution.h.
|
overridevirtual |
Function you want to fit to.
Calculates convolution of the two member functions.
domain | :: The buffer for writing the calculated values. Must be big enough to accept dataSize() values |
Switches from FFT mode to direct mode if the domain is not symmetric with respect to the inversion E --> -E.
domain | :: space on which the function acts |
values | :: buffer to store the values returned by the function after acting on the domain. |
Reimplemented from Mantid::API::CompositeFunction.
Definition at line 125 of file Convolution.cpp.
References functionDirectMode(), functionFFTMode(), innerFunctionsAre1D(), Mantid::API::CompositeFunction::nFunctions(), Mantid::API::FunctionDomain::size(), tolerance, and Mantid::API::FunctionValues::zeroCalculated().
Referenced by Mantid::CurveFitting::Algorithms::ConvolveWorkspaces::exec().
|
overridevirtual |
Derivatives of function with respect to active parameters.
Reimplemented from Mantid::API::CompositeFunction.
Definition at line 80 of file Convolution.cpp.
References Mantid::API::IFunction::calNumericalDeriv().
void Mantid::CurveFitting::Functions::Convolution::functionDirectMode | ( | const API::FunctionDomain & | domain, |
API::FunctionValues & | values | ||
) | const |
Calculates convolution of the two member functions when the domain is not symmetric with respect to inversion E --> -E.
The direct mode is slower than the FFT mode. This is meant to be a temporary method until the need for a faster computation of asymetric domain arises.
domain | :: space on which the function acts |
values | :: buffer to store the values returned by the function after acting on the domain. |
Definition at line 329 of file Convolution.cpp.
References Mantid::CurveFitting::Functions::evaluateFunctionOnRange(), Mantid::API::CompositeFunction::getFunction(), Mantid::API::FunctionValues::getPointerToCalculated(), m_resolution, refreshResolution(), Mantid::API::FunctionDomain::size(), tmp, Mantid::Geometry::x, and Mantid::API::FunctionValues::zeroCalculated().
Referenced by function().
void Mantid::CurveFitting::Functions::Convolution::functionFFTMode | ( | const API::FunctionDomain & | domain, |
API::FunctionValues & | values | ||
) | const |
Calculates convolution of the two member functions when the domain is symmetric with respect to inversion E --> -E.
domain | :: space on which the function acts |
values | :: buffer to store the values returned by the function after acting on the domain. |
Definition at line 167 of file Convolution.cpp.
References Mantid::CurveFitting::Functions::evaluateFunctionOnRange(), Mantid::API::CompositeFunction::getFunction(), Mantid::API::FunctionValues::getPointerToCalculated(), Mantid::CurveFitting::Functions::Convolution::HalfComplex::imag(), m_resolution, Mantid::API::CompositeFunction::nFunctions(), Mantid::CurveFitting::Functions::Convolution::HalfComplex::real(), refreshResolution(), Mantid::CurveFitting::Functions::Convolution::HalfComplex::set(), Mantid::CurveFitting::Functions::Convolution::HalfComplex::size(), Mantid::API::FunctionDomain::size(), tmp, workspace, Mantid::Geometry::x, and Mantid::API::FunctionValues::zeroCalculated().
Referenced by function().
|
overrideprotectedvirtual |
overwrite IFunction base class method, which declare function parameters
Reimplemented from Mantid::API::CompositeFunction.
Definition at line 78 of file Convolution.cpp.
|
private |
Checks that the functions being convolted are 1D and throws if not.
Definition at line 152 of file Convolution.cpp.
References Mantid::API::CompositeFunction::getFunction(), index, Mantid::CurveFitting::Functions::is1DCompositeFunction(), and Mantid::API::CompositeFunction::nFunctions().
Referenced by function().
|
inlineoverridevirtual |
overwrite IFunction base class methods
Reimplemented from Mantid::API::CompositeFunction.
Definition at line 104 of file Convolution.h.
void Mantid::CurveFitting::Functions::Convolution::refreshResolution | ( | ) | const |
Deletes and zeroes pointer m_resolution forsing function(...) to recalculate the resolution function.
Definition at line 487 of file Convolution.cpp.
References Mantid::API::CompositeFunction::getFunction(), Mantid::API::IFunction::isActive(), m_resolution, and Mantid::API::IFunction::nParams().
Referenced by functionDirectMode(), and functionFFTMode().
|
overridevirtual |
Set a value to attribute attName.
Reimplemented from Mantid::API::CompositeFunction.
Definition at line 84 of file Convolution.cpp.
References Mantid::API::IFunction::Attribute::asBool(), Mantid::API::CompositeFunction::getFunction(), Mantid::API::CompositeFunction::nFunctions(), and Mantid::API::CompositeFunction::setAttribute().
|
overridevirtual |
Set up the function for a fit.
Make sure that the resolution is updated if this function is reused in several Fits.
Reimplemented from Mantid::API::CompositeFunction.
Definition at line 483 of file Convolution.cpp.
References m_resolution.
|
mutableprivate |
Keep the Fourier transform of the resolution function (divided by the step in xValues) when in FFT mode, and the inverted resolution if in Direct mode.
Definition at line 135 of file Convolution.h.
Referenced by functionDirectMode(), functionFFTMode(), refreshResolution(), and setUpForFit().