Mantid
|
This is a specialization of IFunction for functions defined on an IMDWorkspace. More...
#include <IFunctionMD.h>
Public Member Functions | |
std::shared_ptr< IFunction > | clone () const override |
Virtual copy constructor. More... | |
void | function (const FunctionDomain &domain, FunctionValues &values) const override |
void | functionDeriv (const FunctionDomain &domain, Jacobian &jacobian) override |
Derivatives of function with respect to active parameters. More... | |
void | setWorkspace (std::shared_ptr< const Workspace > ws) override |
Set the workspace. 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... | |
virtual void | setParameter (size_t, const double &value, bool explicitlySet=true)=0 |
Set i-th parameter. More... | |
virtual void | setParameterDescription (size_t, const std::string &description)=0 |
Set i-th parameter description. More... | |
virtual double | getParameter (size_t i) const =0 |
Get i-th parameter. More... | |
virtual void | setParameter (const std::string &name, const double &value, bool explicitlySet=true)=0 |
Set parameter by name. More... | |
virtual void | setParameterDescription (const std::string &name, const std::string &description)=0 |
Set description of parameter by name. More... | |
virtual double | getParameter (const std::string &name) const =0 |
Get parameter by name. More... | |
virtual bool | hasParameter (const std::string &name) const =0 |
Check if function has a parameter with this name. More... | |
virtual size_t | nParams () const =0 |
Total number of parameters. More... | |
virtual size_t | parameterIndex (const std::string &name) const =0 |
Returns the index of parameter name. More... | |
virtual std::string | parameterName (size_t i) const =0 |
Returns the name of parameter i. More... | |
virtual std::string | parameterDescription (size_t i) const =0 |
Returns the description of parameter i. More... | |
virtual bool | isExplicitlySet (size_t i) const =0 |
Checks if a parameter has been set explicitly. More... | |
virtual double | getError (size_t i) const =0 |
Get the fitting error for a parameter. More... | |
virtual double | getError (const std::string &name) const =0 |
Get the fitting error for a parameter by name. More... | |
virtual void | setError (size_t i, double err)=0 |
Set the fitting error for a parameter. More... | |
virtual void | setError (const std::string &name, double err)=0 |
Set the fitting error for a parameter by name. 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... | |
virtual size_t | getParameterIndex (const ParameterReference &ref) const =0 |
Return parameter index from a parameter reference. More... | |
std::vector< std::string > | getParameterNames () const |
Return a vector with all parameter names. More... | |
virtual double | activeParameter (size_t i) const |
Value of i-th active parameter. More... | |
virtual void | setActiveParameter (size_t i, double value) |
Set new value of i-th active parameter. More... | |
virtual std::string | nameOfActive (size_t i) const |
Returns the name of active parameter i. More... | |
virtual std::string | descriptionOfActive (size_t i) const |
Returns the name of active parameter i. 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 void | applyTies () |
Apply the ties. More... | |
virtual void | removeTie (const std::string &parName) |
Removes the tie off a parameter. More... | |
virtual void | clearTies () |
Remove all ties. More... | |
virtual bool | removeTie (size_t i) |
Removes i-th parameter's tie. More... | |
virtual ParameterTie * | getTie (size_t i) const |
Get the tie of i-th parameter. 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 IConstraint * | getConstraint (size_t i) const |
Get constraint of i-th parameter. More... | |
virtual void | removeConstraint (const std::string &parName) |
Remove a constraint. 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 size_t | nAttributes () const |
Returns the number of attributes associated with the function. More... | |
virtual std::vector< std::string > | getAttributeNames () const |
Returns a list of attribute names. More... | |
virtual std::string | attributeName (size_t index) const |
Get name of ith attribute. More... | |
virtual Attribute | getAttribute (const std::string &name) const |
Return a value of attribute attName. More... | |
virtual void | setAttribute (const std::string &name, const Attribute &) |
Set a value to attribute attName. More... | |
virtual bool | hasAttribute (const std::string &name) const |
Check if attribute attName exists. 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 std::size_t | nFunctions () const |
Number of child functions. More... | |
virtual void | setUpForFit () |
Set up the function for a fit. More... | |
virtual size_t | getValuesSize (const FunctionDomain &domain) const |
Get number of values for a given domain. More... | |
virtual size_t | getNumberDomains () const |
Get number of domains required by this function. More... | |
virtual std::vector< std::shared_ptr< IFunction > > | createEquivalentFunctions () const |
Split this function (if needed) into a list of independent functions. 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... | |
virtual void | setParameterStatus (size_t i, ParameterStatus status)=0 |
Change status of parameter. More... | |
virtual ParameterStatus | getParameterStatus (size_t i) const =0 |
Get status of parameter. More... | |
virtual void | setStepSizeMethod (const StepSizeMethod method) |
Sets the StepSizeMethod to use when calculation the step size. More... | |
Protected Member Functions | |
void | evaluateFunction (const FunctionDomainMD &domain, FunctionValues &values) const |
Performs the function evaluations on the MD domain. More... | |
virtual double | functionMD (const IMDIterator &r) const =0 |
Does the function evaluation. Must be implemented in derived classes. More... | |
virtual void | initDimensions () |
Do finction initialization after useAllDimensions() was called. More... | |
virtual void | useDimension (const std::string &id) |
User functions call this method in their constructors to set up the order of the dimensions. More... | |
Protected Member Functions inherited from Mantid::API::IFunction | |
virtual void | init () |
Function initialization. Declare function parameters in this method. More... | |
virtual void | declareParameter (const std::string &name, double initValue=0, const std::string &description="")=0 |
Declare a new parameter. More... | |
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 () |
virtual std::string | writeToString (const std::string &parentLocalAttributesStr="") const |
Writes itself into a string. More... | |
Protected Attributes | |
std::map< std::string, size_t > | m_dimensionIndexMap |
maps dimension id to its index in m_dimensions More... | |
std::vector< std::shared_ptr< const Mantid::Geometry::IMDDimension > > | m_dimensions |
dimensions used in this function in the expected order 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... | |
Private Member Functions | |
virtual void | useAllDimensions (std::shared_ptr< const IMDWorkspace > workspace) |
Use all the dimensions in the workspace. 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... | |
This is a specialization of IFunction for functions defined on an IMDWorkspace.
It uses FunctionDomainMD as a domain. Implement functionMD(...) method in a concrete function.
Definition at line 50 of file IFunctionMD.h.
|
overridevirtual |
Virtual copy constructor.
Reimplemented from Mantid::API::IFunction.
Definition at line 32 of file IFunctionMD.cpp.
References Mantid::API::IFunction::clone().
|
protected |
Performs the function evaluations on the MD domain.
Performs the function evaluations on the domain.
domain | :: The MD domain to evaluate the function |
values | :: The computed values |
Definition at line 85 of file IFunctionMD.cpp.
References functionMD(), Mantid::API::FunctionDomainMD::getNextIterator(), Mantid::API::IFunction::reportProgress(), Mantid::API::FunctionDomainMD::reset(), Mantid::API::FunctionValues::setCalculated(), and std::to_string().
Referenced by function().
|
overridevirtual |
domain | :: The input domain over which to calculate the function |
values | :: A result holder to store the output of the calculation |
Implements Mantid::API::IFunction.
Definition at line 71 of file IFunctionMD.cpp.
References evaluateFunction().
Referenced by Mantid::MDAlgorithms::UserFunctionMD::functionMD().
|
inlineoverridevirtual |
Derivatives of function with respect to active parameters.
Base class implementation calculates the derivatives numerically.
domain | :: The domain of the function |
jacobian | :: A Jacobian matrix. It is expected to have dimensions of domain.size() by nParams(). |
Reimplemented from Mantid::API::IFunction.
Definition at line 61 of file IFunctionMD.h.
|
protectedpure virtual |
Does the function evaluation. Must be implemented in derived classes.
Implemented in Mantid::MDAlgorithms::UserFunctionMD.
Referenced by evaluateFunction().
|
inlineprotectedvirtual |
Do finction initialization after useAllDimensions() was called.
Reimplemented in Mantid::MDAlgorithms::UserFunctionMD.
Definition at line 69 of file IFunctionMD.h.
Referenced by useAllDimensions().
|
overridevirtual |
Set the workspace.
ws | :: Shared pointer to a workspace |
ws | :: A shared pointer to a workspace. |
Reimplemented from Mantid::API::IFunction.
Definition at line 40 of file IFunctionMD.cpp.
References m_dimensionIndexMap, m_dimensions, useAllDimensions(), and workspace.
|
privatevirtual |
Use all the dimensions in the workspace.
This method is called if a function does not call to useDimension at all.
It adds all the dimensions in the workspace in the order they are in in that workspace then calls init().
Definition at line 116 of file IFunctionMD.cpp.
References initDimensions(), useDimension(), and workspace.
Referenced by setWorkspace().
|
protectedvirtual |
User functions call this method in their constructors to set up the order of the dimensions.
The dimensions will be sorted in the order of calls to useDimension. Ordering is needed to access dimensions by ineteger index rather than by name (string)
id | :: The id of a dimension in the workspace |
Definition at line 102 of file IFunctionMD.cpp.
References m_dimensionIndexMap, and n.
Referenced by useAllDimensions().
|
protected |
maps dimension id to its index in m_dimensions
Definition at line 74 of file IFunctionMD.h.
Referenced by Mantid::MDAlgorithms::UserFunctionMD::initDimensions(), setWorkspace(), and useDimension().
|
protected |
dimensions used in this function in the expected order
Definition at line 76 of file IFunctionMD.h.
Referenced by Mantid::MDAlgorithms::UserFunctionMD::functionMD(), and setWorkspace().