Mantid
|
Calculates the multiple scattering & total scattering contributions for a flat-plate or cylindrical sample. More...
#include <VesuvioCalculateMS.h>
Classes | |
struct | ComptonNeutronAtom |
struct | SampleComptonProperties |
Public Member Functions | |
const std::string | category () const override |
function to return a category of the algorithm. More... | |
const std::string | name () const override |
function to return a name of the algorithm, must be overridden in all algorithms More... | |
const std::vector< std::string > | seeAlso () const override |
Function to return all of the seeAlso (these are not validated) algorithms related to this algorithm.A default implementation is provided. More... | |
const std::string | summary () const override |
function returns a summary message that will be displayed in the default GUI, and in the help. More... | |
int | version () const override |
function to return a version of the algorithm, must be overridden in all algorithms More... | |
VesuvioCalculateMS () | |
Constructor. More... | |
Public Member Functions inherited from Mantid::API::Algorithm | |
Algorithm () | |
Constructor. More... | |
Algorithm (const Algorithm &)=delete | |
Algorithm & | operator= (const Algorithm &)=delete |
~Algorithm () override | |
Virtual destructor. More... | |
void | initialize () override |
Initialization method invoked by the framework. More... | |
bool | execute () override final |
The actions to be performed by the algorithm on a dataset. More... | |
void | addTimer (const std::string &name, const Kernel::time_point_ns &begin, const Kernel::time_point_ns &end) |
void | executeAsChildAlg () override |
Execute as a Child Algorithm. More... | |
std::map< std::string, std::string > | validateInputs () override |
Perform validation of ALL the input properties of the algorithm. More... | |
ExecutionState | executionState () const override |
Gets the current execution state. More... | |
ResultState | resultState () const override |
Gets the current result State. More... | |
bool | isInitialized () const override |
Has the Algorithm already been initialized. More... | |
bool | isExecuted () const override |
Has the Algorithm already been executed successfully. More... | |
bool | isRunning () const override |
True if the algorithm is running. More... | |
bool | isReadyForGarbageCollection () const override |
True if the algorithm is ready for garbage collection. More... | |
bool | isChild () const override |
To query whether algorithm is a child. More... | |
void | setChild (const bool isChild) override |
To set whether algorithm is a child. More... | |
void | enableHistoryRecordingForChild (const bool on) override |
Change the state of the history recording flag. More... | |
bool | isRecordingHistoryForChild () |
void | setAlwaysStoreInADS (const bool doStore) override |
Do we ALWAYS store in the AnalysisDataService? This is set to true for python algorithms' child algorithms. More... | |
bool | getAlwaysStoreInADS () const override |
Returns true if we always store in the AnalysisDataService. More... | |
void | setRethrows (const bool rethrow) override |
Set whether the algorithm will rethrow exceptions. More... | |
Poco::ActiveResult< bool > | executeAsync () override |
Asynchronous execution. More... | |
void | addObserver (const Poco::AbstractObserver &observer) const override |
Add an observer for a notification. More... | |
void | removeObserver (const Poco::AbstractObserver &observer) const override |
Remove an observer. More... | |
void | cancel () override |
Raises the cancel flag. More... | |
bool | getCancel () const |
Returns the cancellation state. More... | |
Kernel::Logger & | getLogger () const |
Returns a reference to the logger. More... | |
void | setLogging (const bool value) override |
Logging can be disabled by passing a value of false. More... | |
bool | isLogging () const override |
returns the status of logging, True = enabled More... | |
void | setLoggingOffset (const int value) override |
gets the logging priority offset More... | |
int | getLoggingOffset () const override |
returns the logging priority offset More... | |
void | setAlgStartupLogging (const bool enabled) override |
disable Logging of start and end messages More... | |
bool | getAlgStartupLogging () const override |
get the state of Logging of start and end messages More... | |
void | setChildStartProgress (const double startProgress) const override |
setting the child start progress More... | |
void | setChildEndProgress (const double endProgress) const override |
setting the child end progress More... | |
std::string | toString () const override |
Serialize an object to a string. More... | |
::Json::Value | toJson () const override |
Serialize an object to a json object. More... | |
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. More... | |
void | setupAsChildAlgorithm (const Algorithm_sptr &algorithm, const double startProgress=-1., const double endProgress=-1., const bool enableLogging=true) |
Setup algorithm as child algorithm. More... | |
void | trackAlgorithmHistory (std::shared_ptr< AlgorithmHistory > parentHist) |
set whether we wish to track the child algorithm's history and pass it the parent object to fill. More... | |
void | findWorkspaces (WorkspaceVector &workspaces, unsigned int direction, bool checkADS=false) const |
Populate lists of the workspace properties for a given direction (InOut workspaces are included in both input/output) More... | |
virtual bool | checkGroups () |
Check the input workspace properties for groups. More... | |
virtual bool | processGroups () |
Process WorkspaceGroup inputs. More... | |
void | copyNonWorkspaceProperties (IAlgorithm *alg, int periodNum) |
Copy all the non-workspace properties from this to alg. More... | |
const Parallel::Communicator & | communicator () const |
Returns a const reference to the (MPI) communicator of the algorithm. More... | |
void | setCommunicator (const Parallel::Communicator &communicator) |
Sets the (MPI) communicator of the algorithm. More... | |
void | declareProperty (std::unique_ptr< Kernel::Property > p, const std::string &doc="") override |
Add a property to the list of managed properties. More... | |
void | declareOrReplaceProperty (std::unique_ptr< Kernel::Property > p, const std::string &doc="") override |
Add or replace property in the list of managed properties. More... | |
void | resetProperties () override |
Reset property values back to initial values (blank or default values) More... | |
void | setProperties (const std::string &propertiesJson, const std::unordered_set< std::string > &ignoreProperties=std::unordered_set< std::string >(), bool createMissing=false) override |
Set the ordered list of properties by one string of values, separated by semicolons. More... | |
void | setProperties (const ::Json::Value &jsonValue, const std::unordered_set< std::string > &ignoreProperties=std::unordered_set< std::string >(), bool createMissing=false) override |
Sets all the declared properties from a json object. More... | |
void | setPropertiesWithString (const std::string &propertiesString, const std::unordered_set< std::string > &ignoreProperties=std::unordered_set< std::string >()) override |
Sets all the declared properties from a string. More... | |
void | setPropertyValue (const std::string &name, const std::string &value) override |
Set the value of a property by string N.B. More... | |
void | setPropertyValueFromJson (const std::string &name, const Json::Value &value) override |
Set the value of a property by Json::Value object. More... | |
void | setPropertyOrdinal (const int &index, const std::string &value) override |
Set the value of a property by an index N.B. More... | |
virtual void | copyPropertiesFrom (const Algorithm &alg) |
Make m_properties point to the same PropertyManager as alg.m_properties. More... | |
bool | existsProperty (const std::string &name) const override |
Checks whether the named property is already in the list of managed property. More... | |
bool | validateProperties () const override |
Validates all the properties in the collection. More... | |
size_t | propertyCount () const override |
Count the number of properties under management. More... | |
std::string | getPropertyValue (const std::string &name) const override |
Get the value of a property as a string. More... | |
const std::vector< Kernel::Property * > & | getProperties () const override |
Get the list of managed properties. More... | |
std::vector< std::string > | getDeclaredPropertyNames () const noexcept override |
Return the list of declared property names. More... | |
TypedValue | getProperty (const std::string &name) const override |
Get the value of a property. More... | |
std::string | asString (bool withDefaultValues=false) const override |
Return the property manager serialized as a string. More... | |
::Json::Value | asJson (bool withDefaultValues=false) const override |
Return the property manager serialized as a json object. More... | |
bool | isDefault (const std::string &name) const |
void | removeProperty (const std::string &name, const bool delproperty=true) override |
Removes the property from management. More... | |
std::unique_ptr< Kernel::Property > | takeProperty (const size_t index) override |
Removes the property from management and returns a pointer to it. More... | |
void | clear () override |
Clears all properties under management. More... | |
void | afterPropertySet (const std::string &) override |
Override this method to perform a custom action right after a property was set. More... | |
void | filterByTime (const Types::Core::DateAndTime &, const Types::Core::DateAndTime &) override |
void | splitByTime (std::vector< Kernel::SplittingInterval > &, std::vector< Kernel::PropertyManager * >) const override |
void | filterByProperty (const Kernel::TimeSeriesProperty< bool > &, const std::vector< std::string > &) override |
Kernel::Property * | getPointerToProperty (const std::string &name) const override |
Get a property by name. More... | |
Kernel::Property * | getPointerToPropertyOrdinal (const int &index) const override |
Get a property by an index. More... | |
virtual void | declareProperty (std::unique_ptr< Property > p, const std::string &doc="")=0 |
Function to declare properties (i.e. store them) More... | |
template<typename T > | |
void | declareProperty (const std::string &name, T value, IValidator_sptr validator=std::make_shared< NullValidator >(), const std::string &doc="", const unsigned int direction=Direction::Input) |
Add a property of the template type to the list of managed properties. More... | |
template<typename T > | |
void | declareProperty (const std::string &name, T value, const std::string &doc, const unsigned int direction=Direction::Input) |
Add a property to the list of managed properties with no validator. More... | |
template<typename T > | |
void | declareProperty (const std::string &name, T value, const unsigned int direction) |
Add a property of the template type to the list of managed properties. More... | |
void | declareProperty (const std::string &name, const char *value, IValidator_sptr validator=std::make_shared< NullValidator >(), const std::string &doc=std::string(), const unsigned int direction=Direction::Input) |
Specialised version of declareProperty template method to prevent the creation of a PropertyWithValue of type const char* if an argument in quotes is passed (it will be converted to a string). More... | |
void | declareProperty (const std::string &name, const char *value, const std::string &doc, IValidator_sptr validator=std::make_shared< NullValidator >(), const unsigned int direction=Direction::Input) |
Specialised version of declareProperty template method to prevent the creation of a PropertyWithValue of type const char* if an argument in quotes is passed (it will be converted to a string). More... | |
void | declareProperty (const std::string &name, const char *value, const unsigned int direction) |
Add a property of string type to the list of managed properties. More... | |
const std::vector< std::string > | categories () const override |
Function to return all of the categories that contain this algorithm. More... | |
const std::string | categorySeparator () const override |
Function to return the separator token for the category string. More... | |
const std::string | alias () const override |
function to return any aliases to the algorithm; A default implementation is provided More... | |
const std::string | aliasDeprecated () const override |
Expiration date (in ISO8601 format) for the algorithm aliases; default implementation for no expiration date. More... | |
const std::string | helpURL () const override |
function to return URL for algorithm documentation; A default implementation is provided. More... | |
template<typename T , typename = typename std::enable_if<std::is_convertible<T *, MatrixWorkspace *>::value>::type> | |
std::tuple< std::shared_ptr< T >, Indexing::SpectrumIndexSet > | getWorkspaceAndIndices (const std::string &name) const |
template<typename T1 , typename T2 , typename = typename std::enable_if<std::is_convertible<T1 *, MatrixWorkspace *>::value>::type, typename = typename std::enable_if<std::is_convertible<T2 *, std::string *>::value || std::is_convertible<T2 *, std::vector<int64_t> *>::value>::type> | |
void | setWorkspaceInputProperties (const std::string &name, const std::shared_ptr< T1 > &wksp, IndexType type, const T2 &list) |
template<typename T1 , typename T2 , typename = typename std::enable_if<std::is_convertible<T1 *, MatrixWorkspace *>::value>::type, typename = typename std::enable_if<std::is_convertible<T2 *, std::string *>::value || std::is_convertible<T2 *, std::vector<int64_t> *>::value>::type> | |
void | setWorkspaceInputProperties (const std::string &name, const std::string &wsName, IndexType type, const T2 &list) |
const std::string | workspaceMethodName () const override |
const std::vector< std::string > | workspaceMethodOn () const override |
const std::string | workspaceMethodInputProperty () const override |
AlgorithmID | getAlgorithmID () const override |
Algorithm ID. More... | |
virtual void | addObserver (const Poco::AbstractObserver &observer) const =0 |
Add an observer for a notification. More... | |
virtual const std::string | alias () const =0 |
function to return any aliases of the algorithm. More... | |
virtual const std::string | aliasDeprecated () const =0 |
Expiration date (in ISO8601 format) for the algorithm aliases. Empty if no expiration date. More... | |
virtual void | cancel ()=0 |
Raises the cancel flag. More... | |
virtual const std::vector< std::string > | categories () const =0 |
Function to return all of the categories that contain this algorithm. More... | |
virtual const std::string | category () const =0 |
function to return a category of the algorithm. More... | |
virtual const std::string | categorySeparator () const =0 |
Function to return the separator token for the category string. More... | |
virtual void | enableHistoryRecordingForChild (const bool on)=0 |
If true history will be recorded for a child. More... | |
virtual bool | execute ()=0 |
System execution. More... | |
virtual void | executeAsChildAlg ()=0 |
Execute as a Child Algorithm, with try/catch. More... | |
virtual Poco::ActiveResult< bool > | executeAsync ()=0 |
Asynchronous execution of the algorithm. More... | |
virtual ExecutionState | executionState () const =0 |
Gets the current execution state. More... | |
virtual AlgorithmID | getAlgorithmID () const =0 |
Algorithm ID. More... | |
virtual bool | getAlgStartupLogging () const =0 |
get the state of Logging of start and end messages More... | |
virtual bool | getAlwaysStoreInADS () const =0 |
To query whether the output is stored in the analysis data service. More... | |
virtual int | getLoggingOffset () const =0 |
returns the logging priority offset More... | |
virtual const std::string | helpURL () const =0 |
function to return an optional URL for documentation. More... | |
virtual void | initialize ()=0 |
Initialization method invoked by the framework. More... | |
virtual bool | isChild () const =0 |
To query whether algorithm is a child. Default to false. More... | |
virtual bool | isExecuted () const =0 |
Check whether the algorithm has been executed sucessfully. More... | |
virtual bool | isInitialized () const =0 |
Check whether the algorithm is initialized properly. More... | |
virtual bool | isLogging () const =0 |
returns the status of logging, True = enabled More... | |
virtual bool | isReadyForGarbageCollection () const =0 |
True if the algorithm is ready for garbage collection. More... | |
virtual bool | isRunning () const =0 |
True if the algorithm is running. More... | |
virtual const std::string | name () const =0 |
function to return a name of the algorithm, must be overridden in all algorithms More... | |
virtual void | removeObserver (const Poco::AbstractObserver &observer) const =0 |
Remove an observer. More... | |
virtual ResultState | resultState () const =0 |
Gets the currnet result State. More... | |
virtual const std::vector< std::string > | seeAlso () const =0 |
Function to return all of the seeAlso algorithms related to this algorithm. More... | |
virtual void | setAlgStartupLogging (const bool enabled)=0 |
disable Logging of start and end messages More... | |
virtual void | setAlwaysStoreInADS (const bool doStore)=0 |
Set whether we always store the output in the analysis data service. More... | |
virtual void | setChild (const bool isChild)=0 |
To set whether algorithm is a child. More... | |
virtual void | setChildEndProgress (const double endProgress) const =0 |
setting the child end progress More... | |
virtual void | setChildStartProgress (const double startProgress) const =0 |
setting the child start progress More... | |
virtual void | setLogging (const bool value)=0 |
Logging can be disabled by passing a value of false. More... | |
virtual void | setLoggingOffset (const int value)=0 |
gets the logging priority offset More... | |
virtual void | setRethrows (const bool rethrow)=0 |
To query whether an algorithm should rethrow exceptions when executing. More... | |
virtual const std::string | summary () const =0 |
function returns a summary message that will be displayed in the default GUI, and in the help. More... | |
virtual ::Json::Value | toJson () const =0 |
Serialize an algorithm as Json. More... | |
virtual std::string | toString () const =0 |
Serialize an algorithm. More... | |
virtual std::map< std::string, std::string > | validateInputs ()=0 |
Method checking errors on ALL the inputs, before execution. More... | |
virtual int | version () const =0 |
function to return a version of the algorithm, must be overridden in all algorithms More... | |
Algorithms As Methods | |
Public Member Functions inherited from Mantid::Kernel::IPropertyManager | |
virtual ::Json::Value | asJson (bool withDefaultValues=false) const =0 |
Return the property manager serialized as a json object. More... | |
virtual std::string | asString (bool withDefaultValues=false) const =0 |
Return the property manager serialized as a string. More... | |
virtual void | declareOrReplaceProperty (std::unique_ptr< Property > p, const std::string &doc="")=0 |
Function to declare properties (i.e. store them) More... | |
void | declareProperty (const std::string &name, const char *value, const std::string &doc, IValidator_sptr validator=std::make_shared< NullValidator >(), const unsigned int direction=Direction::Input) |
Specialised version of declareProperty template method to prevent the creation of a PropertyWithValue of type const char* if an argument in quotes is passed (it will be converted to a string). More... | |
void | declareProperty (const std::string &name, const char *value, const unsigned int direction) |
Add a property of string type to the list of managed properties. More... | |
void | declareProperty (const std::string &name, const char *value, IValidator_sptr validator=std::make_shared< NullValidator >(), const std::string &doc=std::string(), const unsigned int direction=Direction::Input) |
Specialised version of declareProperty template method to prevent the creation of a PropertyWithValue of type const char* if an argument in quotes is passed (it will be converted to a string). More... | |
template<typename T > | |
void | declareProperty (const std::string &name, T value, const std::string &doc, const unsigned int direction=Direction::Input) |
Add a property to the list of managed properties with no validator. More... | |
template<typename T > | |
void | declareProperty (const std::string &name, T value, const unsigned int direction) |
Add a property of the template type to the list of managed properties. More... | |
template<typename T > | |
void | declareProperty (const std::string &name, T value, IValidator_sptr validator=std::make_shared< NullValidator >(), const std::string &doc="", const unsigned int direction=Direction::Input) |
Add a property of the template type to the list of managed properties. More... | |
virtual void | declareProperty (std::unique_ptr< Property > p, const std::string &doc="")=0 |
Function to declare properties (i.e. store them) More... | |
virtual bool | existsProperty (const std::string &name) const =0 |
Checks whether the named property is already in the list of managed property. More... | |
virtual void | filterByProperty (const TimeSeriesProperty< bool > &, const std::vector< std::string > &)=0 |
virtual void | filterByTime (const Types::Core::DateAndTime &, const Types::Core::DateAndTime &)=0 |
virtual std::vector< std::string > | getDeclaredPropertyNames () const noexcept=0 |
Get the list of managed property names. More... | |
virtual Property * | getPointerToProperty (const std::string &name) const =0 |
Get a pointer to property by name. More... | |
virtual const std::vector< Property * > & | getProperties () const =0 |
Get the list of managed properties. More... | |
std::vector< Property * > | getPropertiesInGroup (const std::string &group) const |
Get the list of managed properties in a given group. More... | |
virtual TypedValue | getProperty (const std::string &name) const =0 |
Get the value of a property. More... | |
virtual std::string | getPropertyValue (const std::string &name) const =0 |
Get the value of a property as a string. More... | |
virtual size_t | propertyCount () const =0 |
Returns the number of properties under management. More... | |
virtual void | removeProperty (const std::string &name, const bool delproperty=true)=0 |
Removes the property from management. More... | |
virtual void | resetProperties ()=0 |
virtual void | setProperties (const ::Json::Value &jsonValue, const std::unordered_set< std::string > &ignoreProperties=std::unordered_set< std::string >(), bool createMissing=false)=0 |
Sets all the properties from a json object. More... | |
virtual void | setProperties (const std::string &propertiesJson, const std::unordered_set< std::string > &ignoreProperties=std::unordered_set< std::string >(), bool createMissing=false)=0 |
Sets all properties from a string. More... | |
virtual void | setPropertiesWithString (const std::string &propertiesString, const std::unordered_set< std::string > &ignoreProperties=std::unordered_set< std::string >())=0 |
Sets all the declared properties from a string. More... | |
IPropertyManager * | setProperty (const std::string &name, const char *value) |
Specialised version of setProperty template method to handle const char *. More... | |
IPropertyManager * | setProperty (const std::string &name, const std::string &value) |
Specialised version of setProperty template method to handle std::string. More... | |
template<typename T > | |
IPropertyManager * | setProperty (const std::string &name, const T &value) |
Templated method to set the value of a PropertyWithValue. More... | |
template<typename T > | |
IPropertyManager * | setProperty (const std::string &name, std::unique_ptr< T > value) |
Templated method to set the value of a PropertyWithValue from a std::unique_ptr. More... | |
void | setPropertyGroup (const std::string &name, const std::string &group) |
Set the group for a given property. More... | |
virtual void | setPropertyOrdinal (const int &index, const std::string &value)=0 |
Set the value of a property by an index. More... | |
void | setPropertySettings (const std::string &name, std::unique_ptr< IPropertySettings > settings) |
virtual void | setPropertyValue (const std::string &name, const std::string &value)=0 |
Sets property value from a string. More... | |
virtual void | setPropertyValueFromJson (const std::string &name, const Json::Value &value)=0 |
Sets property value from a Json::Value. More... | |
virtual void | splitByTime (std::vector< SplittingInterval > &, std::vector< PropertyManager * >) const =0 |
virtual std::unique_ptr< Property > | takeProperty (const size_t index)=0 |
Removes the property from management and returns a pointer to it. More... | |
void | updatePropertyValues (const IPropertyManager &other) |
Update values of the existing properties. More... | |
virtual bool | validateProperties () const =0 |
Validates all the properties in the collection. More... | |
virtual | ~IPropertyManager ()=default |
Private Member Functions | |
void | assignToOutput (const MSVesuvioHelper::SimulationWithErrors &avgCounts, API::ISpectrum &totalsc, API::ISpectrum &multsc) const |
Assign the averaged counts to the correct workspaces. More... | |
void | cacheInputs () |
Caches inputs insuitable form for speed in later calculations. More... | |
double | calculateCounts (CurveFitting::MSVesuvioHelper::RandomVariateGenerator &rng, const DetectorParams &detpar, const Functions::ResolutionParams &respar, MSVesuvioHelper::Simulation &simulation) const |
std::pair< double, double > | calculateE1Range (const double theta, const double en0) const |
void | calculateMS (CurveFitting::MSVesuvioHelper::RandomVariateGenerator &rng, const size_t wsIndex, API::ISpectrum &totalsc, API::ISpectrum &multsc) const |
Calculate the total scattering and contributions from higher-order scattering for given spectrum. More... | |
void | exec () override |
Execute the algorithm. More... | |
Kernel::V3D | generateDetectorPos (CurveFitting::MSVesuvioHelper::RandomVariateGenerator &rng, const Kernel::V3D &nominalPos, const double energy, const Kernel::V3D &scatterPt, const Kernel::V3D &direcBeforeSc, double &scang, double &distToExit) const |
Generate a random position within the final detector in the lab frame. More... | |
double | generateE0 (CurveFitting::MSVesuvioHelper::RandomVariateGenerator &rng, const double l1, const double t2, double &weight) const |
Generate an incident energy based on a randomly-selected TOF value It is assigned a weight = (2.0*E0/(T-t2))/E0^0.9. More... | |
double | generateE1 (CurveFitting::MSVesuvioHelper::RandomVariateGenerator &rng, const double angle, const double e1nom, const double e1res) const |
Generate the final energy of the analyser. More... | |
bool | generateScatter (CurveFitting::MSVesuvioHelper::RandomVariateGenerator &rng, const Kernel::V3D &startPos, const Kernel::V3D &direc, double &weight, Kernel::V3D &scatterPt) const |
Generate a scatter event and update the weight according to the amount the beam would be attenuted by the sample. More... | |
Kernel::V3D | generateSrcPos (CurveFitting::MSVesuvioHelper::RandomVariateGenerator &rng, const double l1) const |
Sample from the moderator assuming it can be seen as a cylindrical ring with inner and outer radius. More... | |
double | generateTOF (CurveFitting::MSVesuvioHelper::RandomVariateGenerator &rng, const double en0, const double dtof, const double dl1) const |
Generate an initial tof from this distribution: 1-(0.5*X**2/T0**2+X/T0+1)*EXP(-X/T0), where x is the time and t0 is the src-sample time. More... | |
void | init () override |
Initialize the algorithm's properties. More... | |
double | partialDiffXSec (const double en0, const double en1, const double theta) const |
Compute the partial differential cross section for this energy and theta. More... | |
void | simulate (CurveFitting::MSVesuvioHelper::RandomVariateGenerator &rng, const DetectorParams &detpar, const Functions::ResolutionParams &respar, MSVesuvioHelper::Simulation &simulCounts) const |
Perform a single simulation of a given number of events for up to a maximum number of scatterings on a chosen detector. More... | |
Private Attributes | |
size_t | m_acrossIdx |
Kernel::V3D | m_beamDir |
size_t | m_beamIdx |
double | m_delt |
double | m_detHeight |
double | m_detThick |
double | m_detWidth |
double | m_foilRes |
double | m_halfSampleHeight |
double | m_halfSampleThick |
double | m_halfSampleWidth |
API::MatrixWorkspace_sptr | m_inputWS |
size_t | m_nevents |
size_t | m_nruns |
size_t | m_nscatters |
std::unique_ptr< API::Progress > | m_progress |
std::unique_ptr< SampleComptonProperties > | m_sampleProps |
Geometry::IObject const * | m_sampleShape |
double | m_srcR2 |
double | m_tmax |
double | m_tmin |
size_t | m_upIdx |
Additional Inherited Members | |
Public Types inherited from Mantid::API::Algorithm | |
using | WorkspaceVector = std::vector< std::shared_ptr< Workspace > > |
Static Public Member Functions inherited from Mantid::API::Algorithm | |
static IAlgorithm_sptr | fromString (const std::string &input) |
De-serialize an object from a string. More... | |
static IAlgorithm_sptr | fromJson (const Json::Value &input) |
De-serialize an object from a Json. More... | |
static IAlgorithm_sptr | fromHistory (const AlgorithmHistory &history) |
Construct an object from a history entry. More... | |
Public Attributes inherited from Mantid::API::Algorithm | |
bool | calledByAlias = false |
Flag to indicate if the algorithm is called by its alias. More... | |
Protected Member Functions inherited from Mantid::API::Algorithm | |
void | exec (Parallel::ExecutionMode executionMode) |
Runs the algorithm with the specified execution mode. More... | |
virtual void | execDistributed () |
Runs the algorithm in distributed execution mode. More... | |
virtual void | execMasterOnly () |
Runs the algorithm in master-only execution mode. More... | |
virtual Parallel::ExecutionMode | getParallelExecutionMode (const std::map< std::string, Parallel::StorageMode > &storageModes) const |
Get correct execution mode based on input storage modes for an MPI run. More... | |
virtual const std::string | workspaceMethodOnTypes () const |
Returns a semi-colon separated list of workspace types to attach this algorithm. More... | |
void | cacheWorkspaceProperties () |
Go through the properties and cache the input/output workspace properties for later use. More... | |
void | cacheInputWorkspaceHistories () |
Cache the histories of any input workspaces so they can be copied over after algorithm completion. More... | |
void | setExecutionState (const ExecutionState state) |
Sets the current execution state. More... | |
void | setResultState (const ResultState state) |
Sets the result execution state. More... | |
void | store () |
Stores any output workspaces into the AnalysisDataService. More... | |
void | progress (double p, const std::string &msg="", double estimatedTime=0.0, int progressPrecision=0) |
Sends ProgressNotification. More... | |
void | interruption_point () |
This is called during long-running operations, and check if the algorithm has requested that it be cancelled. More... | |
Poco::NotificationCenter & | notificationCenter () const |
Return a reference to the algorithm's notification dispatcher. More... | |
void | handleChildProgressNotification (const Poco::AutoPtr< ProgressNotification > &pNf) |
Observation slot for child algorithm progress notification messages, these are scaled and then signalled for this algorithm. More... | |
const Poco::AbstractObserver & | progressObserver () const |
Return a reference to the algorithm's object that is reporting progress. More... | |
bool | isWorkspaceProperty (const Kernel::Property *const prop) const |
checks the property is a workspace property More... | |
bool | trackingHistory () |
get whether we are tracking the history for this algorithm, More... | |
virtual void | fillHistory () |
Copy workspace history for input workspaces to output workspaces and record the history for ths algorithm. More... | |
virtual void | setOtherProperties (IAlgorithm *alg, const std::string &propertyName, const std::string &propertyValue, int periodNum) |
Virtual method to set the non workspace properties for this algorithm. More... | |
template<typename T , const int AllowedIndexTypes = static_cast<int>(IndexType::WorkspaceIndex), typename... WSPropArgs, typename = typename std::enable_if<std::is_convertible<T *, MatrixWorkspace *>::value>::type> | |
void | declareWorkspaceInputProperties (const std::string &propertyName, const std::string &doc, WSPropArgs &&...wsPropArgs) |
Protected Member Functions inherited from Mantid::Kernel::IPropertyManager | |
virtual void | afterPropertySet (const std::string &) |
Override this method to perform a custom action right after a property was set. More... | |
virtual void | clear ()=0 |
Clears all properties under management. More... | |
virtual Property * | getPointerToPropertyOrdinal (const int &index) const =0 |
Get a property by an index. More... | |
template<typename T > | |
T | getValue (const std::string &name) const |
Templated method to get the value of a property. More... | |
template<> | |
MANTID_KERNEL_DLL PropertyManager_sptr | getValue (const std::string &name) const |
template<> | |
MANTID_KERNEL_DLL PropertyManager_const_sptr | getValue (const std::string &name) const |
Static Protected Member Functions inherited from Mantid::API::Algorithm | |
template<typename NumT > | |
static bool | isEmpty (const NumT toCheck) |
checks that the value was not set by users, uses the value in empty double/int. More... | |
Protected Attributes inherited from Mantid::API::Algorithm | |
std::atomic< bool > | m_cancel |
Set to true to stop execution. More... | |
std::atomic< bool > | m_parallelException |
Set if an exception is thrown, and not caught, within a parallel region. More... | |
std::vector< IWorkspaceProperty * > | m_inputWorkspaceProps |
All the WorkspaceProperties that are Input or InOut. Set in execute() More... | |
std::shared_ptr< AlgorithmHistory > | m_history |
Pointer to the history for the algorithm being executed. More... | |
Kernel::Logger | m_log |
Logger for this algorithm. More... | |
Kernel::Logger & | g_log |
std::shared_ptr< AlgorithmHistory > | m_parentHistory |
Pointer to the parent history object (if set) More... | |
std::vector< WorkspaceVector > | m_unrolledInputWorkspaces |
One vector of workspaces for each input workspace property. More... | |
size_t | m_groupSize |
Size of the group(s) being processed. More... | |
bool | m_usingBaseProcessGroups = false |
distinguish between base processGroups() and overriden/algorithm specific versions More... | |
Static Protected Attributes inherited from Mantid::API::Algorithm | |
static size_t | g_execCount = 0 |
Counter to keep track of algorithm execution order. More... | |
Calculates the multiple scattering & total scattering contributions for a flat-plate or cylindrical sample.
Definition at line 39 of file VesuvioCalculateMS.h.
Mantid::CurveFitting::Algorithms::VesuvioCalculateMS::VesuvioCalculateMS | ( | ) |
Constructor.
Definition at line 52 of file VesuvioCalculateMS.cpp.
|
private |
Assign the averaged counts to the correct workspaces.
avgCounts | Counts & errors separated for each scattering order |
totalsc | A non-const reference to the spectrum for the total scattering calculation |
multsc | A non-const reference to the spectrum for the multiple scattering contribution |
Definition at line 338 of file VesuvioCalculateMS.cpp.
References Mantid::CurveFitting::MSVesuvioHelper::Simulation::counts, Mantid::CurveFitting::MSVesuvioHelper::SimulationWithErrors::errors, m_nscatters, Mantid::API::ISpectrum::mutableE(), Mantid::API::ISpectrum::mutableY(), and Mantid::CurveFitting::MSVesuvioHelper::SimulationWithErrors::sim.
Referenced by calculateMS().
|
private |
Caches inputs insuitable form for speed in later calculations.
Definition at line 161 of file VesuvioCalculateMS.cpp.
References Mantid::PhysicalConstants::AtomicMassUnit, Mantid::Geometry::IObject::getBoundingBox(), Mantid::API::Algorithm::getProperty(), index, m_acrossIdx, m_beamDir, m_beamIdx, m_delt, m_detHeight, m_detThick, m_detWidth, m_foilRes, m_halfSampleHeight, m_halfSampleThick, m_halfSampleWidth, m_inputWS, m_nevents, m_nruns, m_nscatters, m_sampleProps, m_sampleShape, m_srcR2, m_tmax, m_tmin, m_upIdx, Mantid::PhysicalConstants::NeutronMassAMU, Mantid::Kernel::V3D::normalize(), and Mantid::Geometry::BoundingBox::width().
Referenced by exec().
|
private |
rng | A reference to a PseudoRandomNumberGenerator |
detpar | Detector information describing the final detector position |
respar | Resolution information on the intrument as a whole |
simulation | [Output] Store the calculated counts here |
Definition at line 371 of file VesuvioCalculateMS.cpp.
References Mantid::Kernel::V3D::angle(), Mantid::Kernel::V3D::azimuth_polar_SNS(), calculateE1Range(), Mantid::CurveFitting::MSVesuvioHelper::Simulation::counts, Mantid::Kernel::V3D::distance(), Mantid::CurveFitting::Functions::ResolutionParams::dl1, Mantid::CurveFitting::Functions::ResolutionParams::dtof, Mantid::CurveFitting::Algorithms::DetectorParams::efixed, fabs, Mantid::CurveFitting::MSVesuvioHelper::RandomVariateGenerator::flat(), generateDetectorPos(), generateE0(), generateE1(), generateScatter(), generateSrcPos(), generateTOF(), Mantid::CurveFitting::Algorithms::DetectorParams::l1, Mantid::CurveFitting::Algorithms::DetectorParams::l2, m_acrossIdx, m_beamDir, m_delt, m_foilRes, m_halfSampleHeight, m_halfSampleWidth, m_inputWS, m_nscatters, m_sampleProps, m_upIdx, partialDiffXSec(), Mantid::CurveFitting::Algorithms::DetectorParams::pos, Mantid::CurveFitting::Algorithms::DetectorParams::t0, and Mantid::CurveFitting::Algorithms::DetectorParams::theta.
Referenced by simulate().
|
private |
theta | Neutron scattering angle (radians) |
en0 | Computed incident energy |
Definition at line 608 of file VesuvioCalculateMS.cpp.
References Mantid::PhysicalConstants::E_mev_toNeutronWavenumberSq, and m_sampleProps.
Referenced by calculateCounts().
|
private |
Calculate the total scattering and contributions from higher-order scattering for given spectrum.
rng | A reference to a PseudoRandomNumberGenerator |
wsIndex | The index on the input workspace for the chosen spectrum |
totalsc | A non-const reference to the spectrum that will contain the total scattering calculation |
multsc | A non-const reference to the spectrum that will contain the multiple scattering contribution |
Definition at line 288 of file VesuvioCalculateMS.cpp.
References assignToOutput(), Mantid::CurveFitting::MSVesuvioHelper::SimulationAggregator::average(), Mantid::CurveFitting::Algorithms::ConvertToYSpace::getDetectorParameters(), Mantid::CurveFitting::Functions::VesuvioResolution::getResolutionParameters(), m_inputWS, m_nruns, m_nscatters, m_progress, Mantid::CurveFitting::MSVesuvioHelper::SimulationAggregator::newSimulation(), Mantid::CurveFitting::MSVesuvioHelper::SimulationWithErrors::normalise(), simulate(), Mantid::CurveFitting::Algorithms::DetectorParams::t0, and std::to_string().
Referenced by exec().
|
inlineoverridevirtual |
function to return a category of the algorithm.
A default implementation is provided
Reimplemented from Mantid::API::Algorithm.
Definition at line 65 of file VesuvioCalculateMS.h.
|
overrideprivatevirtual |
Execute the algorithm.
Implements Mantid::API::Algorithm.
Definition at line 113 of file VesuvioCalculateMS.cpp.
References cacheInputs(), calculateMS(), Mantid::API::Algorithm::g_log, Mantid::API::Algorithm::getProperty(), Mantid::Kernel::Logger::information(), Mantid::Kernel::SingletonHolder< T >::Instance(), m_inputWS, m_nruns, m_progress, PARALLEL_CHECK_INTERRUPT_REGION, PARALLEL_END_INTERRUPT_REGION, PARALLEL_FOR_IF, PARALLEL_START_INTERRUPT_REGION, Mantid::Kernel::IPropertyManager::setProperty(), and Mantid::Kernel::threadSafe().
|
private |
Generate a random position within the final detector in the lab frame.
rng | A reference to a PseudoRandomNumberGenerator |
nominalPos | The poisiton of the centre point of the detector |
energy | The final energy of the neutron |
scatterPt | The position of the scatter event that lead to this detector |
direcBeforeSc | Directional vector that lead to scatter point that hit this detector |
scang | [Output] The value of the scattering angle for the generated point |
distToExit | [Output] The distance covered within the object from scatter to exit |
Definition at line 689 of file VesuvioCalculateMS.cpp.
References Mantid::Kernel::V3D::angle(), Mantid::Geometry::Track::cbegin(), energy, Mantid::CurveFitting::MSVesuvioHelper::RandomVariateGenerator::flat(), Mantid::Geometry::IObject::interceptSurface(), m_acrossIdx, m_beamIdx, m_detHeight, m_detThick, m_detWidth, m_sampleShape, m_upIdx, and Mantid::Kernel::normalize().
Referenced by calculateCounts().
|
private |
Generate an incident energy based on a randomly-selected TOF value It is assigned a weight = (2.0*E0/(T-t2))/E0^0.9.
rng | A reference to a PseudoRandomNumberGenerator |
l1 | Distance from src to sample (metres) |
t2 | Nominal time from sample to detector (seconds) |
weight | [Out] Weight factor to modify for the generated energy value |
Definition at line 517 of file VesuvioCalculateMS.cpp.
References Mantid::CurveFitting::MSVesuvioHelper::RandomVariateGenerator::flat(), m_tmax, and m_tmin.
Referenced by calculateCounts().
|
private |
Generate the final energy of the analyser.
rng | A reference to a PseudoRandomNumberGenerator |
angle | Detector angle from sample |
e1nom | The nominal final energy of the analyzer |
e1res | The resoltion in energy of the analyser |
Definition at line 739 of file VesuvioCalculateMS.cpp.
References Mantid::CurveFitting::MSVesuvioHelper::finalEnergyAuDD(), Mantid::CurveFitting::MSVesuvioHelper::finalEnergyAuYap(), Mantid::CurveFitting::MSVesuvioHelper::finalEnergyUranium(), and Mantid::CurveFitting::MSVesuvioHelper::RandomVariateGenerator::flat().
Referenced by calculateCounts().
|
private |
Generate a scatter event and update the weight according to the amount the beam would be attenuted by the sample.
rng | A reference to a PseudoRandomNumberGenerator |
startPos | Starting position |
direc | Direction of travel for the neutron |
weight | [InOut] Multiply the incoming weight by the attenuation factor |
scatterPt | [Out] Generated scattering point |
Definition at line 579 of file VesuvioCalculateMS.cpp.
References Mantid::Geometry::Track::cbegin(), Mantid::CurveFitting::MSVesuvioHelper::RandomVariateGenerator::flat(), Mantid::Geometry::IObject::interceptSurface(), m_sampleProps, and m_sampleShape.
Referenced by calculateCounts().
|
private |
Sample from the moderator assuming it can be seen as a cylindrical ring with inner and outer radius.
rng | A reference to a PseudoRandomNumberGenerator |
l1 | Src-sample distance (m) |
Definition at line 491 of file VesuvioCalculateMS.cpp.
References Mantid::CurveFitting::MSVesuvioHelper::RandomVariateGenerator::flat(), m_acrossIdx, m_beamIdx, m_srcR2, m_upIdx, and radius.
Referenced by calculateCounts().
|
private |
Generate an initial tof from this distribution: 1-(0.5*X**2/T0**2+X/T0+1)*EXP(-X/T0), where x is the time and t0 is the src-sample time.
rng | A reference to a PseudoRandomNumberGenerator |
dtof | Error in time resolution (us) |
en0 | Value of the incident energy |
dl1 | S.d of moderator to sample distance |
Definition at line 540 of file VesuvioCalculateMS.cpp.
References fabs, Mantid::CurveFitting::MSVesuvioHelper::RandomVariateGenerator::flat(), Mantid::CurveFitting::MSVesuvioHelper::RandomVariateGenerator::gaussian(), and Mantid::Geometry::y.
Referenced by calculateCounts().
|
overrideprivatevirtual |
Initialize the algorithm's properties.
Implements Mantid::API::Algorithm.
Definition at line 61 of file VesuvioCalculateMS.cpp.
References Mantid::API::Algorithm::declareProperty(), Mantid::Kernel::Direction::Input, Mantid::Kernel::Direction::Output, and Mantid::Kernel::IPropertyManager::setPropertyGroup().
|
inlineoverridevirtual |
function to return a name of the algorithm, must be overridden in all algorithms
Implements Mantid::API::Algorithm.
Definition at line 61 of file VesuvioCalculateMS.h.
|
private |
Compute the partial differential cross section for this energy and theta.
en0 | Initial energy (meV) |
en1 | Final energy (meV) |
theta | Scattering angle |
Definition at line 642 of file VesuvioCalculateMS.cpp.
References Mantid::PhysicalConstants::E_mev_toNeutronWavenumberSq, m_sampleProps, and Mantid::Geometry::y.
Referenced by calculateCounts().
|
inlineoverridevirtual |
Function to return all of the seeAlso (these are not validated) algorithms related to this algorithm.A default implementation is provided.
Reimplemented from Mantid::API::Algorithm.
Definition at line 72 of file VesuvioCalculateMS.h.
|
private |
Perform a single simulation of a given number of events for up to a maximum number of scatterings on a chosen detector.
rng | A reference to a PseudoRandomNumberGenerator |
detpar | Detector information describing the final detector position |
respar | Resolution information on the intrument as a whole |
simulCounts | Simulation object used to storing the calculated number of counts |
Definition at line 322 of file VesuvioCalculateMS.cpp.
References calculateCounts(), and m_nevents.
Referenced by calculateMS().
|
inlineoverridevirtual |
function returns a summary message that will be displayed in the default GUI, and in the help.
Implements Mantid::API::Algorithm.
Definition at line 67 of file VesuvioCalculateMS.h.
|
inlineoverridevirtual |
function to return a version of the algorithm, must be overridden in all algorithms
Implements Mantid::API::Algorithm.
Definition at line 63 of file VesuvioCalculateMS.h.
|
private |
Definition at line 109 of file VesuvioCalculateMS.h.
Referenced by cacheInputs(), calculateCounts(), generateDetectorPos(), and generateSrcPos().
|
private |
Definition at line 110 of file VesuvioCalculateMS.h.
Referenced by cacheInputs(), and calculateCounts().
|
private |
Definition at line 109 of file VesuvioCalculateMS.h.
Referenced by cacheInputs(), generateDetectorPos(), and generateSrcPos().
|
private |
Definition at line 116 of file VesuvioCalculateMS.h.
Referenced by cacheInputs(), and calculateCounts().
|
private |
Definition at line 115 of file VesuvioCalculateMS.h.
Referenced by cacheInputs(), and generateDetectorPos().
|
private |
Definition at line 115 of file VesuvioCalculateMS.h.
Referenced by cacheInputs(), and generateDetectorPos().
|
private |
Definition at line 115 of file VesuvioCalculateMS.h.
Referenced by cacheInputs(), and generateDetectorPos().
|
private |
Definition at line 117 of file VesuvioCalculateMS.h.
Referenced by cacheInputs(), and calculateCounts().
|
private |
Definition at line 112 of file VesuvioCalculateMS.h.
Referenced by cacheInputs(), and calculateCounts().
|
private |
Definition at line 112 of file VesuvioCalculateMS.h.
Referenced by cacheInputs().
|
private |
Definition at line 112 of file VesuvioCalculateMS.h.
Referenced by cacheInputs(), and calculateCounts().
|
private |
Definition at line 124 of file VesuvioCalculateMS.h.
Referenced by cacheInputs(), calculateCounts(), calculateMS(), and exec().
|
private |
Definition at line 121 of file VesuvioCalculateMS.h.
Referenced by cacheInputs(), and simulate().
|
private |
Definition at line 120 of file VesuvioCalculateMS.h.
Referenced by cacheInputs(), calculateMS(), and exec().
|
private |
Definition at line 119 of file VesuvioCalculateMS.h.
Referenced by assignToOutput(), cacheInputs(), calculateCounts(), and calculateMS().
|
private |
Definition at line 123 of file VesuvioCalculateMS.h.
Referenced by calculateMS(), and exec().
|
private |
Definition at line 114 of file VesuvioCalculateMS.h.
Referenced by cacheInputs(), calculateCounts(), calculateE1Range(), generateScatter(), and partialDiffXSec().
|
private |
Definition at line 113 of file VesuvioCalculateMS.h.
Referenced by cacheInputs(), generateDetectorPos(), and generateScatter().
|
private |
Definition at line 111 of file VesuvioCalculateMS.h.
Referenced by cacheInputs(), and generateSrcPos().
|
private |
Definition at line 116 of file VesuvioCalculateMS.h.
Referenced by cacheInputs(), and generateE0().
|
private |
Definition at line 116 of file VesuvioCalculateMS.h.
Referenced by cacheInputs(), and generateE0().
|
private |
Definition at line 109 of file VesuvioCalculateMS.h.
Referenced by cacheInputs(), calculateCounts(), generateDetectorPos(), and generateSrcPos().