31 const std::string errMessg =
"processGroups must not be called from SassenaFFT";
33 throw std::logic_error(errMessg);
44 "The name of the input group workspace");
48 "Do we FFT only the real part of I(Q,t)? (optional, default is False)");
51 "Do we apply detailed balance condition? (optional, default is False)");
52 this->
declareProperty(
"Temp", 300.0,
"Multiply structure factor by exp(E/(2*kT)");
54 std::make_unique<Kernel::EnabledWhenProperty>(
"DetailedBalance",
Kernel::IS_EQUAL_TO,
"1"));
62 const std::string ftqReName = gwsName +
"_fqt.Re";
63 const std::string ftqImName = gwsName +
"_fqt.Im";
66 if (!gws->contains(ftqReName)) {
67 const std::string errMessg =
"workspace " + gwsName +
" does not contain an intermediate structure factor";
80 const std::string sqwName = gwsName +
"_sqw";
87 fft->setPropertyValue(
"OutputWorkspace", sqwName);
88 fft->setProperty<
int>(
"FFTPart", part);
89 fft->executeAsChildAlg();
100 scaleX->setProperty<
double>(
"Factor",
m_ps2meV);
102 scaleX->executeAsChildAlg();
112 ec->setProperty<
double>(
"C0", 1.0);
113 ec->setProperty<
double>(
"C1", -1.0 / (2.0 * T *
m_T2ueV));
114 ec->setPropertyValue(
"Operation",
"Multiply");
115 ec->executeAsChildAlg();
124 if (!gws->contains(sqwName)) {
127 this->
g_log.
information(
"Workspace " + sqwName +
" replaced with new contents");
#define DECLARE_ALGORITHM(classname)
void declareProperty(std::unique_ptr< Kernel::Property > p, const std::string &doc="") override
Add a property to the list of managed properties.
std::string getPropertyValue(const std::string &name) const override
Get the value of a property as a string.
TypedValue getProperty(const std::string &name) const override
Get the value of a property.
virtual std::shared_ptr< Algorithm > createChildAlgorithm(const std::string &name, const double startProgress=-1., const double endProgress=-1., const bool enableLogging=true, const int &version=-1)
Create a Child Algorithm.
A property class for workspaces.
Perform Fourier Transform of the Sassena Intermediate Scattering Function.
void init() override
Initialise the algorithm.
static constexpr double m_T2ueV
void exec() override
Execute the algorithm.
bool processGroups() override
processGroups must not be called
Exception for when an item is not found in a collection.
void setPropertySettings(const std::string &name, std::unique_ptr< IPropertySettings > settings)
void error(const std::string &msg)
Logs at error level.
void information(const std::string &msg)
Logs at information level.
The concrete, templated class for properties.
static T & Instance()
Return a reference to the Singleton instance, creating it if it does not already exist Creation is do...
std::shared_ptr< WorkspaceGroup > WorkspaceGroup_sptr
shared pointer to Mantid::API::WorkspaceGroup
std::shared_ptr< MatrixWorkspace > MatrixWorkspace_sptr
shared pointer to the matrix workspace base class
std::shared_ptr< Workspace2D > Workspace2D_sptr
shared pointer to Mantid::DataObjects::Workspace2D
@ InOut
Both an input & output workspace.
@ Input
An input workspace.