|
Mantid
|
Calculates crystal field spectra. More...
#include <CrystalFieldMultiSpectrum.h>
Public Types | |
| enum | PhysicalProperty { HeatCapacity = 1 , Susceptibility = 2 , Magnetisation = 3 , MagneticMoment = 4 } |
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... | |
Public Member Functions | |
| void | buildTargetFunction () const override |
| Uses source to calculate peak centres and intensities then populates m_spectrum with peaks of type given in PeakShape attribute. | |
| std::vector< API::IFunction_sptr > | createEquivalentFunctions () const override |
| Split this function (if needed) into a list of independent functions. | |
| CrystalFieldMultiSpectrum () | |
| Constructor. | |
| size_t | getNumberDomains () const override |
| Get number of domains required by this function. | |
| void | init () override |
| overwrite IFunction base class method, which declare function parameters | |
| std::string | name () const override |
| Returns the function's name. | |
| void | setAttribute (const std::string &name, const Attribute &) override |
| Perform custom actions on setting certain attributes. | |
Public Member Functions inherited from Mantid::API::FunctionGenerator | |
| FunctionGenerator (const IFunction_sptr &source) | |
| Constructor. | |
| size_t | nAttributes () const override |
| Returns the number of attributes associated with the function. | |
| std::vector< std::string > | getAttributeNames () const override |
| Returns a list of attribute names. | |
| Attribute | getAttribute (const std::string &name) const override |
| Return a value of attribute attName. | |
| bool | hasAttribute (const std::string &name) const override |
| Check if attribute attName exists. | |
| std::string | attributeName (size_t i) const override |
| Return the name of the ith attribute. | |
| void | function (const FunctionDomain &domain, FunctionValues &values) const override |
| Evaluate the function. | |
| void | setParameter (size_t, const double &value, bool explicitlySet=true) override |
| Set i-th parameter. | |
| void | setParameterDescription (size_t, const std::string &description) override |
| Set i-th parameter description. | |
| double | getParameter (size_t i) const override |
| Get i-th parameter. | |
| void | setParameter (const std::string &name, const double &value, bool explicitlySet=true) override |
| Set parameter by name. | |
| void | setParameterDescription (const std::string &name, const std::string &description) override |
| Set description of parameter by name. | |
| double | getParameter (const std::string &name) const override |
| Get parameter by name. | |
| bool | hasParameter (const std::string &name) const override |
| Check if function has a parameter with this name. | |
| size_t | nParams () const override |
| Total number of parameters. | |
| size_t | parameterIndex (const std::string &name) const override |
| Returns the index of parameter name. | |
| std::string | parameterName (size_t i) const override |
| Returns the name of parameter i. | |
| std::string | parameterDescription (size_t i) const override |
| Returns the description of parameter i. | |
| bool | isExplicitlySet (size_t i) const override |
| Checks if a parameter has been set explicitly. | |
| double | getError (size_t i) const override |
| Get the fitting error for a parameter. | |
| double | getError (const std::string &name) const override |
| Get the fitting error for a parameter by name. | |
| void | setError (size_t i, double err) override |
| Set the fitting error for a parameter. | |
| void | setError (const std::string &name, double err) override |
| Set the fitting error for a parameter by name. | |
| size_t | getParameterIndex (const ParameterReference &ref) const override |
| Return parameter index from a parameter reference. | |
| void | setUpForFit () override |
| Set up the function for a fit. | |
| ParameterTie * | getTie (size_t i) const override |
| Get the tie for i-th parameter. | |
| IConstraint * | getConstraint (size_t i) const override |
| Get the i-th constraint. | |
Public Member Functions inherited from Mantid::API::IFunction | |
| std::string | asString () const |
| Writes itself into a string. | |
| bool | cancellationRequestReceived () const |
| Returns true if a progress reporter is set & evalaution has been requested to stop. | |
| virtual const std::vector< std::string > | categories () const |
| Function to return all of the categories that contain this algorithm. | |
| virtual const std::string | category () const |
| The categories the Fit function belong to. | |
| virtual const std::string | categorySeparator () const |
| Function to return the sperator token for the category string. | |
| virtual std::shared_ptr< IFunction > | clone () const |
| Virtual copy constructor. | |
| virtual int64_t | estimateNoProgressCalls () const |
| Returns an estimate of the number of progress reports a single evaluation of the function will have. | |
| virtual void | functionDeriv (const FunctionDomain &domain, Jacobian &jacobian) |
| Derivatives of function with respect to active parameters. | |
| IFunction () | |
| Constructor. | |
| IFunction (const IFunction &)=delete | |
| No copying. | |
| virtual void | initialize () |
| Iinialize the function. | |
| virtual void | iterationFinished () |
| Called at the end of an iteration. | |
| virtual void | iterationStarting () |
| Called at the start of each iteration. | |
| IFunction & | operator= (const IFunction &)=delete |
| No copying. | |
| virtual void | registerFunctionUsage (bool internal) |
| Registers the usage of the algorithm with the UsageService. | |
| void | reportProgress (const std::string &msg="") const |
| Reports progress with an optional message. | |
| virtual void | setMatrixWorkspace (std::shared_ptr< const API::MatrixWorkspace > workspace, size_t wi, double startX, double endX) |
| Set matrix workspace. | |
| void | setProgressReporter (std::shared_ptr< Kernel::ProgressBase > reporter) |
| Attach a progress reporter. | |
| virtual void | setWorkspace (std::shared_ptr< const Workspace > ws) |
| Set the workspace. | |
| virtual | ~IFunction () |
| Virtual destructor. | |
| bool | isFixed (size_t i) const |
| Check if a parameter i is fixed. | |
| bool | isFixedByDefault (size_t i) const |
| Check if a parameter i is fixed by default (not by user). | |
| void | fix (size_t i, bool isDefault=false) |
| Removes a parameter i from the list of active. | |
| void | unfix (size_t i) |
| Restores a declared parameter i to the active status. | |
| void | fixParameter (const std::string &name, bool isDefault=false) |
| Fix a parameter. | |
| void | unfixParameter (const std::string &name) |
| Free a parameter. | |
| void | fixAll (bool isDefault=false) |
| Fix all parameters. | |
| void | unfixAll () |
| Free all parameters. | |
| void | unfixAllDefault () |
| Free all parameters fixed by default. | |
| void | fixAllActive (bool isDefault=false) |
| Fix all active parameters. | |
| std::vector< std::string > | getParameterNames () const |
| Return a vector with all parameter names. | |
| virtual double | activeParameter (size_t i) const |
| Value of i-th active parameter. | |
| virtual void | setActiveParameter (size_t i, double value) |
| Set new value of i-th active parameter. | |
| virtual std::string | nameOfActive (size_t i) const |
| Returns the name of active parameter i. | |
| virtual std::string | descriptionOfActive (size_t i) const |
| Returns the name of active parameter i. | |
| bool | isActive (size_t i) const |
| Check if an active parameter i is actually active. | |
| virtual void | tie (const std::string &parName, const std::string &expr, bool isDefault=false) |
| Tie a parameter to other parameters (or a constant) | |
| virtual void | addTies (const std::string &ties, bool isDefault=false) |
| Add several ties. | |
| virtual void | applyTies () |
| Apply the ties. | |
| virtual void | removeTie (const std::string &parName) |
| Removes the tie off a parameter. | |
| virtual void | clearTies () |
| Remove all ties. | |
| virtual bool | removeTie (size_t i) |
| Removes i-th parameter's tie. | |
| virtual bool | ignoreTie (const ParameterTie &) const |
| Ignore a tie. | |
| void | sortTies (const bool checkOnly=false) |
| Put all ties in order in which they will be applied correctly. | |
| std::string | writeTies () const |
| Write a parameter tie to a string. | |
| virtual void | addConstraints (const std::string &str, bool isDefault=false) |
| Add a list of conatraints from a string. | |
| virtual void | addConstraint (std::unique_ptr< IConstraint > ic) |
| Add a constraint to function. | |
| virtual void | removeConstraint (const std::string &parName) |
| Remove a constraint. | |
| virtual void | setConstraintPenaltyFactor (const std::string &parName, const double &c) |
| Set a constraint penalty. | |
| std::string | writeConstraints () const |
| Write a parameter constraint to a string. | |
| virtual void | clearConstraints () |
| Remove all constraints. | |
| template<typename T > | |
| void | setAttributeValue (const std::string &attName, const T &value) |
| Set an attribute value. | |
| void | setAttributeValue (const std::string &attName, const char *value) |
| Overload for const char* values. | |
| void | setAttributeValue (const std::string &attName, const std::string &value) |
| Set string attribute by value. | |
| virtual std::shared_ptr< IFunction > | getFunction (size_t i) const |
| Returns the pointer to i-th child function. | |
| virtual std::size_t | nFunctions () const |
| Number of child functions. | |
| virtual size_t | getValuesSize (const FunctionDomain &domain) const |
| Get number of values for a given domain. | |
| void | calNumericalDeriv (const FunctionDomain &domain, Jacobian &jacobian) |
| Calculate numerical derivatives. | |
| double | calculateStepSize (const double parameterValue) const |
| Calculate step size for the given parameter value. | |
| void | setCovarianceMatrix (const std::shared_ptr< Kernel::Matrix< double > > &covar) |
| Set the covariance matrix. | |
| std::shared_ptr< const Kernel::Matrix< double > > | getCovarianceMatrix () const |
| Get the covariance matrix. | |
| void | setReducedChiSquared (double chi2) |
| Set the reduced chi^2. | |
| double | getReducedChiSquared () const |
| Get the reduced chi^2. | |
| void | setParallel (bool on) |
| Set the parallel hint. | |
| bool | isParallel () const |
| Get the parallel hint. | |
| void | setHandler (std::unique_ptr< FunctionHandler > handler) |
| Set a function handler. | |
| FunctionHandler * | getHandler () const |
| Return the handler. | |
| virtual void | setStepSizeMethod (const StepSizeMethod method) |
| Sets the StepSizeMethod to use when calculation the step size. | |
Protected Member Functions | |
| void | updateTargetFunction () const override |
| Update m_spectrum function. | |
Protected Member Functions inherited from Mantid::API::FunctionGenerator | |
| void | setSource (IFunction_sptr source) const |
| Set the source function. | |
| virtual bool | isSourceName (const std::string &aName) const |
| Test if a name (parameter's or attribute's) belongs to m_source. | |
| void | checkTargetFunction () const |
| Update target function if necessary. | |
| void | declareParameter (const std::string &name, double initValue=0, const std::string &description="") override |
| Declare a new parameter. | |
| void | setParameterStatus (size_t i, ParameterStatus status) override |
| Change status of parameter. | |
| ParameterStatus | getParameterStatus (size_t i) const override |
| Get status of parameter. | |
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) | |
| 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. | |
| virtual void | declareAttributes () |
| Override to declare function attributes. | |
| virtual void | declareParameters () |
| Override to declare function parameters. | |
| void | declareAttribute (const std::string &name, const API::IFunction::Attribute &defaultValue) |
| Declare a single attribute. | |
| void | declareAttribute (const std::string &name, const API::IFunction::Attribute &defaultValue, const Kernel::IValidator &validator) |
| Declare a single attribute with validator. | |
| void | checkAttributeName (const std::string &name) |
| Check Attribute to declare does not already exist. | |
| void | storeAttributeValue (const std::string &name, const API::IFunction::Attribute &value) |
| Store an attribute's value. | |
| void | storeReadOnlyAttribute (const std::string &name, const API::IFunction::Attribute &value) const |
| A read-only ("mutable") attribute can be stored in a const method. | |
| virtual void | addTie (std::unique_ptr< ParameterTie > tie) |
| Add a new tie. Derived classes must provide storage for ties. | |
| bool | hasOrderedTies () const |
| void | applyOrderedTies () |
| virtual std::string | writeToString (const std::string &parentLocalAttributesStr="") const |
| Writes itself into a string. | |
Private Member Functions | |
| API::IFunction_sptr | buildPhysprop (int nre, const DoubleFortranVector &en, const ComplexFortranMatrix &wf, const ComplexFortranMatrix &ham, double temperature, size_t iSpec) const |
| API::IFunction_sptr | buildSpectrum (int nre, const DoubleFortranVector &en, const ComplexFortranMatrix &wf, double temperature, double fwhm, size_t i) const |
| Build a function for a single spectrum. | |
| void | calcExcitations (int nre, const DoubleFortranVector &en, const ComplexFortranMatrix &wf, double temperature, API::FunctionValues &values, size_t iSpec) const |
| Calculate excitations at given temperature. | |
| void | updateSpectrum (API::IFunction &spectrum, int nre, const DoubleFortranVector &en, const ComplexFortranMatrix &wf, const ComplexFortranMatrix &ham, double temperature, double fwhm, size_t i) const |
| Update a function for a single spectrum. | |
Private Attributes | |
| std::vector< double > | m_FWHMs |
| Cache the default peak FWHMs. | |
| std::vector< std::vector< double > > | m_fwhmX |
| Caches of the width functions. | |
| std::vector< std::vector< double > > | m_fwhmY |
| std::vector< size_t > | m_nPeaks |
| Cache number of fitted peaks. | |
| std::vector< int > | m_physprops |
| Cache the list of "spectra" corresponding to physical properties. | |
| std::vector< double > | m_temperatures |
| Cache the temperatures. | |
Additional Inherited Members | |
Protected Attributes inherited from Mantid::API::FunctionGenerator | |
| IFunction_sptr | m_source |
| Function that calculates parameters of the target function. | |
| IFunction_sptr | m_target |
| Function that actually calculates the output. | |
| size_t | m_nOwnParams |
| Cached number of parameters in m_source. | |
| bool | m_dirty |
| Flag indicating that updateTargetFunction() is required. | |
Protected Attributes inherited from Mantid::API::IFunction | |
| bool | m_isParallel |
| Flag to hint that the function is being used in parallel computations. | |
| std::unique_ptr< FunctionHandler > | m_handler |
| Pointer to a function handler. | |
| std::shared_ptr< Kernel::ProgressBase > | m_progReporter |
| Pointer to the progress handler. | |
Calculates crystal field spectra.
Definition at line 20 of file CrystalFieldMultiSpectrum.h.
Definition at line 30 of file CrystalFieldMultiSpectrum.h.
| Mantid::CurveFitting::Functions::CrystalFieldMultiSpectrum::CrystalFieldMultiSpectrum | ( | ) |
Constructor.
Definition at line 103 of file CrystalFieldMultiSpectrum.cpp.
References Mantid::API::IFunction::declareAttribute().
|
private |
Definition at line 364 of file CrystalFieldMultiSpectrum.cpp.
References Mantid::API::FunctionGenerator::getAttribute(), HeatCapacity, m_physprops, MagneticMoment, Magnetisation, Mantid::CurveFitting::Functions::CrystalFieldSusceptibility::setEigensystem(), Mantid::CurveFitting::Functions::CrystalFieldHeatCapacity::setEnergy(), Mantid::CurveFitting::Functions::CrystalFieldMagnetisation::setHamiltonian(), Mantid::CurveFitting::Functions::CrystalFieldMoment::setHamiltonian(), Susceptibility, and std::to_string().
Referenced by buildTargetFunction().
|
private |
Build a function for a single spectrum.
Definition at line 335 of file CrystalFieldMultiSpectrum.cpp.
References Mantid::API::CompositeFunction::addFunction(), Mantid::API::IFunction::Attribute::asBool(), Mantid::API::IFunction::Attribute::asDouble(), Mantid::API::IFunction::Attribute::asInt(), Mantid::API::IFunction::Attribute::asString(), Mantid::API::IFunction::Attribute::asUnquotedString(), Mantid::CurveFitting::Functions::CrystalFieldUtils::buildSpectrumFunction(), calcExcitations(), Mantid::CurveFitting::Functions::CrystalFieldUtils::calculateNPeaks(), Mantid::API::IFunction::getAttribute(), Mantid::API::FunctionGenerator::getAttribute(), m_fwhmX, m_fwhmY, and m_nPeaks.
Referenced by buildTargetFunction().
|
overridevirtual |
Uses source to calculate peak centres and intensities then populates m_spectrum with peaks of type given in PeakShape attribute.
Implements Mantid::API::FunctionGenerator.
Definition at line 229 of file CrystalFieldMultiSpectrum.cpp.
References Mantid::API::IFunction::Attribute::asVector(), buildPhysprop(), buildSpectrum(), Mantid::API::IFunction::getAttribute(), Mantid::API::FunctionGenerator::getAttribute(), Mantid::API::FunctionGenerator::m_dirty, m_FWHMs, m_fwhmX, m_fwhmY, m_nPeaks, m_physprops, Mantid::API::FunctionGenerator::m_target, m_temperatures, and std::to_string().
Referenced by getNumberDomains(), init(), and updateTargetFunction().
|
private |
Calculate excitations at given temperature.
Definition at line 305 of file CrystalFieldMultiSpectrum.cpp.
References Mantid::API::IFunction::Attribute::asDouble(), Mantid::CurveFitting::Functions::calculateExcitations(), Mantid::CurveFitting::Functions::calculateIntensities(), Mantid::API::FunctionValues::expand(), Mantid::CurveFitting::EigenVector::get(), Mantid::API::FunctionGenerator::getAttribute(), Mantid::API::FunctionGenerator::getParameter(), Mantid::API::FunctionGenerator::m_nOwnParams, m_nPeaks, Mantid::API::FunctionValues::setCalculated(), and Mantid::CurveFitting::EigenVector::size().
Referenced by buildSpectrum(), and updateSpectrum().
|
overridevirtual |
Split this function (if needed) into a list of independent functions.
The number of functions must be the number of domains this function is working on (== getNumberDomains()). The result of evaluation of the created functions on their domains must be the same as if this function was evaluated on the composition of those domains.
Reimplemented from Mantid::API::IFunction.
Definition at line 136 of file CrystalFieldMultiSpectrum.cpp.
References Mantid::API::FunctionGenerator::checkTargetFunction().
|
overridevirtual |
Get number of domains required by this function.
If it returns a number greater than 1 then the domain passed to function(domain, values) method must have a CompositeDomain type with the same number of parts.
Reimplemented from Mantid::API::IFunction.
Definition at line 124 of file CrystalFieldMultiSpectrum.cpp.
References buildTargetFunction(), and Mantid::API::FunctionGenerator::m_target.
|
overridevirtual |
overwrite IFunction base class method, which declare function parameters
Reimplemented from Mantid::API::FunctionGenerator.
Definition at line 116 of file CrystalFieldMultiSpectrum.cpp.
References buildTargetFunction(), Mantid::Kernel::Logger::error(), and Mantid::API::g_log.
|
inlineoverridevirtual |
Returns the function's name.
Implements Mantid::API::IFunction.
Definition at line 25 of file CrystalFieldMultiSpectrum.h.
Referenced by setAttribute().
|
overridevirtual |
Perform custom actions on setting certain attributes.
Reimplemented from Mantid::API::FunctionGenerator.
Definition at line 147 of file CrystalFieldMultiSpectrum.cpp.
References Mantid::API::IFunction::Attribute::asVector(), Mantid::API::IFunction::declareAttribute(), Mantid::API::FunctionGenerator::getAttribute(), m_fwhmX, m_fwhmY, Mantid::API::FunctionGenerator::m_nOwnParams, Mantid::API::FunctionGenerator::m_source, MagneticMoment, Magnetisation, name(), Mantid::API::FunctionGenerator::setAttribute(), setAttribute(), Mantid::API::IFunction::Attribute::setVector(), Susceptibility, and std::to_string().
Referenced by setAttribute().
|
private |
Update a function for a single spectrum.
Definition at line 444 of file CrystalFieldMultiSpectrum.cpp.
References Mantid::API::IFunction::Attribute::asBool(), Mantid::API::IFunction::Attribute::asDouble(), Mantid::API::IFunction::Attribute::asString(), calcExcitations(), Mantid::API::IFunction::getAttribute(), Mantid::API::FunctionGenerator::getAttribute(), Mantid::API::FunctionGenerator::getParameter(), HeatCapacity, m_fwhmX, m_fwhmY, m_nPeaks, m_physprops, MagneticMoment, Magnetisation, Mantid::CurveFitting::Functions::CrystalFieldSusceptibility::setEigensystem(), Mantid::CurveFitting::Functions::CrystalFieldHeatCapacity::setEnergy(), Mantid::CurveFitting::Functions::CrystalFieldMagnetisation::setHamiltonian(), Mantid::CurveFitting::Functions::CrystalFieldMoment::setHamiltonian(), Susceptibility, and Mantid::CurveFitting::Functions::CrystalFieldUtils::updateSpectrumFunction().
Referenced by updateTargetFunction().
|
overrideprotectedvirtual |
Update m_spectrum function.
Implements Mantid::API::FunctionGenerator.
Definition at line 415 of file CrystalFieldMultiSpectrum.cpp.
References buildTargetFunction(), Mantid::API::FunctionGenerator::m_dirty, m_FWHMs, Mantid::API::FunctionGenerator::m_target, m_temperatures, and updateSpectrum().
|
mutableprivate |
Cache the default peak FWHMs.
Definition at line 62 of file CrystalFieldMultiSpectrum.h.
Referenced by buildTargetFunction(), and updateTargetFunction().
|
mutableprivate |
Caches of the width functions.
Definition at line 57 of file CrystalFieldMultiSpectrum.h.
Referenced by buildSpectrum(), buildTargetFunction(), setAttribute(), and updateSpectrum().
|
mutableprivate |
Definition at line 58 of file CrystalFieldMultiSpectrum.h.
Referenced by buildSpectrum(), buildTargetFunction(), setAttribute(), and updateSpectrum().
|
mutableprivate |
Cache number of fitted peaks.
Definition at line 53 of file CrystalFieldMultiSpectrum.h.
Referenced by buildSpectrum(), buildTargetFunction(), calcExcitations(), and updateSpectrum().
|
mutableprivate |
Cache the list of "spectra" corresponding to physical properties.
Definition at line 55 of file CrystalFieldMultiSpectrum.h.
Referenced by buildPhysprop(), buildTargetFunction(), and updateSpectrum().
|
mutableprivate |
Cache the temperatures.
Definition at line 60 of file CrystalFieldMultiSpectrum.h.
Referenced by buildTargetFunction(), and updateTargetFunction().