Mantid
Loading...
Searching...
No Matches
Public Member Functions | Protected Member Functions | Protected Attributes | Private Member Functions | List of all members
Mantid::API::IFunctionMD Class Referenceabstract

This is a specialization of IFunction for functions defined on an IMDWorkspace. More...

#include <IFunctionMD.h>

Inheritance diagram for Mantid::API::IFunctionMD:
Mantid::API::IFunction Mantid::MDAlgorithms::UserFunctionMD

Public Member Functions

std::shared_ptr< IFunctionclone () 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< IFunctionclone () 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...
 
IFunctionoperator= (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 ParameterTiegetTie (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 IConstraintgetConstraint (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< IFunctiongetFunction (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...
 
FunctionHandlergetHandler () 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< FunctionHandlerm_handler
 Pointer to a function handler. More...
 
std::shared_ptr< Kernel::ProgressBasem_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...
 

Detailed Description

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.

Author
Roman Tolchenov, Tessella Support Services plc
Date
12/01/2011

Definition at line 50 of file IFunctionMD.h.

Member Function Documentation

◆ clone()

std::shared_ptr< IFunction > Mantid::API::IFunctionMD::clone ( ) const
overridevirtual

Virtual copy constructor.

Reimplemented from Mantid::API::IFunction.

Definition at line 32 of file IFunctionMD.cpp.

References Mantid::API::IFunction::clone().

◆ evaluateFunction()

void Mantid::API::IFunctionMD::evaluateFunction ( const FunctionDomainMD domain,
FunctionValues values 
) const
protected

Performs the function evaluations on the MD domain.

Performs the function evaluations on the domain.

Parameters
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().

◆ function()

void Mantid::API::IFunctionMD::function ( const FunctionDomain domain,
FunctionValues values 
) const
overridevirtual
Parameters
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().

◆ functionDeriv()

void Mantid::API::IFunctionMD::functionDeriv ( const FunctionDomain domain,
Jacobian jacobian 
)
inlineoverridevirtual

Derivatives of function with respect to active parameters.

Base class implementation calculates the derivatives numerically.

Parameters
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.

◆ functionMD()

virtual double Mantid::API::IFunctionMD::functionMD ( const IMDIterator r) const
protectedpure virtual

Does the function evaluation. Must be implemented in derived classes.

Implemented in Mantid::MDAlgorithms::UserFunctionMD.

Referenced by evaluateFunction().

◆ initDimensions()

virtual void Mantid::API::IFunctionMD::initDimensions ( )
inlineprotectedvirtual

Do finction initialization after useAllDimensions() was called.

Reimplemented in Mantid::MDAlgorithms::UserFunctionMD.

Definition at line 69 of file IFunctionMD.h.

Referenced by useAllDimensions().

◆ setWorkspace()

void Mantid::API::IFunctionMD::setWorkspace ( std::shared_ptr< const Workspace ws)
overridevirtual

Set the workspace.

Parameters
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.

◆ useAllDimensions()

void Mantid::API::IFunctionMD::useAllDimensions ( std::shared_ptr< const IMDWorkspace 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().

◆ useDimension()

void Mantid::API::IFunctionMD::useDimension ( const std::string &  id)
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)

Parameters
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().

Member Data Documentation

◆ m_dimensionIndexMap

std::map<std::string, size_t> Mantid::API::IFunctionMD::m_dimensionIndexMap
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().

◆ m_dimensions

std::vector<std::shared_ptr<const Mantid::Geometry::IMDDimension> > Mantid::API::IFunctionMD::m_dimensions
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().


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