|
Mantid
|
Base class for the three MDNorm, MDNormDirectSC and MDNormSCD algorithms with the common normalization and detector intersections algorithms. More...
#include <MDNormBase.h>
Public Member Functions | |
| MDNormBase () | |
Public Member Functions inherited from Mantid::API::Algorithm | |
| Algorithm () | |
| Constructor. | |
| Algorithm (const Algorithm &)=delete | |
| Algorithm & | operator= (const Algorithm &)=delete |
| ~Algorithm () override | |
| Virtual destructor. | |
| void | initialize () override |
| Initialization method invoked by the framework. | |
| bool | execute () override final |
| The actions to be performed by the algorithm on a dataset. | |
| 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. | |
| std::map< std::string, std::string > | validateInputs () override |
| Perform validation of ALL the input properties of the algorithm. | |
| ExecutionState | executionState () const override |
| Gets the current execution state. | |
| ResultState | resultState () const override |
| Gets the current result State. | |
| bool | isInitialized () const override |
| Has the Algorithm already been initialized. | |
| bool | isExecuted () const override |
| Has the Algorithm already been executed successfully. | |
| bool | isRunning () const override |
| True if the algorithm is running. | |
| bool | isReadyForGarbageCollection () const override |
| True if the algorithm is ready for garbage collection. | |
| bool | isChild () const override |
| To query whether algorithm is a child. | |
| void | setChild (const bool isChild) override |
| To set whether algorithm is a child. | |
| void | enableHistoryRecordingForChild (const bool on) override |
| Change the state of the history recording flag. | |
| void | enableHistoryRecordingForProcessGroups (const bool on) override |
| Change the state of the processGroups history recording flag. | |
| 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. | |
| bool | getAlwaysStoreInADS () const override |
| Returns true if we always store in the AnalysisDataService. | |
| void | setRethrows (const bool rethrow) override |
| Set whether the algorithm will rethrow exceptions. | |
| Poco::ActiveResult< bool > | executeAsync () override |
| Asynchronous execution. | |
| void | addObserver (const Poco::AbstractObserver &observer) const override |
| Add an observer for a notification. | |
| void | removeObserver (const Poco::AbstractObserver &observer) const override |
| Remove an observer. | |
| void | cancel () override |
| Raises the cancel flag. | |
| bool | getCancel () const |
| Returns the cancellation state. | |
| Kernel::Logger & | getLogger () const |
| Returns a reference to the logger. | |
| void | setLogging (const bool value) override |
| Logging can be disabled by passing a value of false. | |
| bool | isLogging () const override |
| returns the status of logging, True = enabled | |
| void | setLoggingOffset (const int value) override |
| gets the logging priority offset | |
| int | getLoggingOffset () const override |
| returns the logging priority offset | |
| void | setAlgStartupLogging (const bool enabled) override |
| disable Logging of start and end messages | |
| bool | getAlgStartupLogging () const override |
| get the state of Logging of start and end messages | |
| void | setChildStartProgress (const double startProgress) const override |
| setting the child start progress | |
| void | setChildEndProgress (const double endProgress) const override |
| setting the child end progress | |
| std::string | toString () const override |
| Serialize an object to a string. | |
| ::Json::Value | toJson () const override |
| Serialize an object to a json object. | |
| 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. | |
| void | setupAsChildAlgorithm (const Algorithm_sptr &algorithm, const double startProgress=-1., const double endProgress=-1., const bool enableLogging=true) |
| Setup algorithm as child algorithm. | |
| 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. | |
| 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) | |
| virtual bool | checkGroups () |
| Check the input workspace properties for groups. | |
| virtual bool | processGroups () |
| Process WorkspaceGroup inputs. | |
| void | copyNonWorkspaceProperties (IAlgorithm *alg, int periodNum) |
| Copy all the non-workspace properties from this to alg. | |
| void | declareProperty (std::unique_ptr< Kernel::Property > p, const std::string &doc="") override |
| Add a property to the list of managed properties. | |
| void | declareOrReplaceProperty (std::unique_ptr< Kernel::Property > p, const std::string &doc="") override |
| Add or replace property in the list of managed properties. | |
| void | resetProperties () override |
| Reset property values back to initial values (blank or default values) | |
| 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. | |
| 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. | |
| 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. | |
| void | setPropertyValue (const std::string &name, const std::string &value) override |
| Set the value of a property by string N.B. | |
| void | setPropertyValueFromJson (const std::string &name, const Json::Value &value) override |
| Set the value of a property by Json::Value object. | |
| void | setPropertyOrdinal (const int &index, const std::string &value) override |
| Set the value of a property by an index N.B. | |
| virtual void | copyPropertiesFrom (const Algorithm &alg) |
| Make m_properties point to the same PropertyManager as alg.m_properties. | |
| bool | existsProperty (const std::string &name) const override |
| Checks whether the named property is already in the list of managed property. | |
| bool | validateProperties () const override |
| Validates all the properties in the collection. | |
| size_t | propertyCount () const override |
| Count the number of properties under management. | |
| std::string | getPropertyValue (const std::string &name) const override |
| Get the value of a property as a string. | |
| const std::vector< Kernel::Property * > & | getProperties () const override |
| Get the list of managed properties. | |
| std::vector< std::string > | getDeclaredPropertyNames () const noexcept override |
| Return the list of declared property names. | |
| TypedValue | getProperty (const std::string &name) const override |
| Get the value of a property. | |
| std::string | asString (bool withDefaultValues=false) const override |
| Return the property manager serialized as a string. | |
| ::Json::Value | asJson (bool withDefaultValues=false) const override |
| Return the property manager serialized as a json object. | |
| bool | isDefault (const std::string &name) const |
| void | removeProperty (const std::string &name, const bool delproperty=true) override |
| Removes the property from management. | |
| std::unique_ptr< Kernel::Property > | takeProperty (const size_t index) override |
| Removes the property from management and returns a pointer to it. | |
| void | clear () override |
| Clears all properties under management. | |
| void | afterPropertySet (const std::string &) override |
| Override this method to perform a custom action right after a property was set. | |
| Kernel::Property * | getPointerToProperty (const std::string &name) const override |
| Get a property by name. | |
| Kernel::Property * | getPointerToPropertyOrdinal (const int &index) const override |
| Get a property by an index. | |
| virtual void | declareProperty (std::unique_ptr< Property > p, const std::string &doc="")=0 |
| Function to declare properties (i.e. store them) | |
| 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. | |
| 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. | |
| 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. | |
| 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). | |
| 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). | |
| 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. | |
| const std::string | name () const override=0 |
| function to return a name of the algorithm, must be overridden in all algorithms | |
| int | version () const override=0 |
| function to return a version of the algorithm, must be overridden in all algorithms | |
| const std::string | summary () const override=0 |
| function returns a summary message that will be displayed in the default GUI, and in the help. | |
| const std::string | category () const override |
| function to return a category of the algorithm. | |
| const std::vector< std::string > | categories () const override |
| Function to return all of the categories that contain this algorithm. | |
| const std::string | categorySeparator () const override |
| Function to return the separator token for the category string. | |
| 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. | |
| const std::string | alias () const override |
| function to return any aliases to the algorithm; A default implementation is provided | |
| const std::string | aliasDeprecated () const override |
| Expiration date (in ISO8601 format) for the algorithm aliases; default implementation for no expiration date. | |
| const std::string | helpURL () const override |
| function to return URL for algorithm documentation; A default implementation is provided. | |
| 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 |
| Mechanism for retriving the index property. | |
| 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) |
| Mechanism for setting the index property with a workspace shared pointer. | |
| 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) |
| Mechanism for setting the index property with a workspace shared pointer. | |
| 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. | |
Algorithms As Methods | |
Public Member Functions inherited from Mantid::Kernel::IPropertyManager | |
| 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). | |
| 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. | |
| 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). | |
| 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. | |
| 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. | |
| 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. | |
| virtual void | filterByProperty (Mantid::Kernel::LogFilter *, const std::vector< std::string > &) |
| std::vector< Property * > | getPropertiesInGroup (const std::string &group) const |
| Get the list of managed properties in a given group. | |
| bool | isPropertyEnabled (const std::string &name) const |
| Test if a given property should be enabled. | |
| bool | isPropertyVisible (const std::string &name) const |
| Test if a given property should be visible. | |
| IPropertyManager * | setProperty (const std::string &name, const char *value) |
| Specialised version of setProperty template method to handle const char *. | |
| IPropertyManager * | setProperty (const std::string &name, const std::string &value) |
| Specialised version of setProperty template method to handle std::string. | |
| template<typename T > | |
| IPropertyManager * | setProperty (const std::string &name, const T &value) |
| Templated method to set the value of a PropertyWithValue. | |
| 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. | |
| void | setPropertyGroup (const std::string &name, const std::string &group) |
| Set the group for a given property. | |
| void | setPropertySettings (const std::string &name, std::unique_ptr< IPropertySettings const > settings) |
| Add a PropertySettings instance to the chain of settings for a given property. | |
| void | updatePropertyValues (const IPropertyManager &other) |
| Update values of the existing properties. | |
| virtual | ~IPropertyManager ()=default |
Static Public Member Functions | |
| static std::string | getDimensionChars () |
Static Public Member Functions inherited from Mantid::API::Algorithm | |
| static IAlgorithm_sptr | fromString (const std::string &input) |
| De-serialize an object from a string. | |
| static IAlgorithm_sptr | fromJson (const Json::Value &input) |
| De-serialize an object from a Json. | |
| static IAlgorithm_sptr | fromHistory (const AlgorithmHistory &history) |
| Construct an object from a history entry. | |
Static Public Attributes | |
| static constexpr double | CHARGEBINSIZE = 1.0 |
| static constexpr double | GONIOBINSTEP = 0.25 |
| static constexpr double | MINPROTONCHARGE = 0.1 |
| static constexpr double | STATIONARYANGLIM = 0.1 |
Protected Member Functions | |
| DataObjects::MDHistoWorkspace_sptr | binInputWS () |
| Runs the BinMD algorithm on the input to provide the output workspace All slicing algorithm properties are passed along. | |
| void | cacheDimensionXValues () |
| Stores the X values from each H,K,L,E dimension as member variables Energy dimension is transformed to final wavevector. | |
| void | calcIntegralsForIntersections (const std::vector< double > &xValues, const API::MatrixWorkspace &integrFlux, size_t sp, std::vector< double > &yValues) const |
| Linearly interpolate between the points in integrFlux at xValues and save the results in yValues. | |
| void | calculateIntersections (std::vector< std::array< double, 4 > > &intersections, const double theta, const double phi, const DblMatrix &transform, double lowvalue=std::nan(""), double highvalue=0) |
| Calculate the points of intersection for the given detector with cuboid surrounding the detector position in HKL. | |
| void | calculateNormalization (const std::vector< coord_t > &otherValues, const Geometry::SymmetryOperation &so, uint16_t expInfoIndex) |
| Computed the normalization for the input workspace (for MDNorm). | |
| void | calculateNormalization (const std::vector< coord_t > &otherValues, uint16_t expInfoIndex) |
| Computed the normalization for the input workspace (for MDNormSCD/MDNormDirectSC). | |
| void | calculateNormContinuous (const std::vector< coord_t > &otherValues, uint16_t expInfoIndex, const Geometry::SymmetryOperation *so=nullptr) |
| Computes the normalization for the input workspace for the case of a continous rotation. | |
| void | calculateNormInner (const API::SpectrumInfo &spectrumInfo, const std::vector< coord_t > &otherValues, const double protonCharge, const double protonChargeBkgd, const DblMatrix &Qtransform, const std::vector< double > &lowValues=std::vector< double >(), const std::vector< double > &highValues=std::vector< double >()) |
| Mantid::Kernel::DblMatrix | calQTransform (const Kernel::DblMatrix &R, const Mantid::Geometry::SymmetryOperation &so, bool doInvert=true) |
| Calculate QTransform = (R * UB * SymmetryOperation * m_W)^-1. | |
| void | createNormalizationWS (const DataObjects::MDHistoWorkspace &dataWS) |
| Create & cached the normalization workspace. | |
| void | findIntegratedDimensions (const std::vector< coord_t > &otherDimValues, bool &skipNormalization) |
| Checks the normalization workspace against the indices of the original dimensions. | |
| std::vector< coord_t > | getValuesFromOtherDimensions (bool &skipNormalization, uint16_t expInfoIndex=0) const |
| Retrieve logged values from non-HKL dimensions. | |
| std::string | inputEnergyMode () const |
| Currently looks for the ConvertToMD algorithm in the history. | |
Protected Member Functions inherited from Mantid::API::Algorithm | |
| virtual void | init ()=0 |
| Virtual method - must be overridden by concrete algorithm. | |
| virtual void | exec ()=0 |
| Virtual method - must be overridden by concrete algorithm. | |
| virtual const std::string | workspaceMethodOnTypes () const |
| Returns a semi-colon separated list of workspace types to attach this algorithm. | |
| void | cacheWorkspaceProperties () |
| Go through the properties and cache the input/output workspace properties for later use. | |
| void | cacheInputWorkspaceHistories () |
| Cache the histories of any input workspaces so they can be copied over after algorithm completion. | |
| void | setExecutionState (const ExecutionState state) |
| Sets the current execution state. | |
| void | setResultState (const ResultState state) |
| Sets the result execution state. | |
| void | store () |
| Stores any output workspaces into the AnalysisDataService. | |
| void | progress (double p, const std::string &msg="", double estimatedTime=0.0, int progressPrecision=0) |
| Sends ProgressNotification. | |
| void | interruption_point () |
| This is called during long-running operations, and check if the algorithm has requested that it be cancelled. | |
| Poco::NotificationCenter & | notificationCenter () const |
| Return a reference to the algorithm's notification dispatcher. | |
| void | handleChildProgressNotification (const Poco::AutoPtr< ProgressNotification > &pNf) |
| Observation slot for child algorithm progress notification messages, these are scaled and then signalled for this algorithm. | |
| const Poco::AbstractObserver & | progressObserver () const |
| Return a reference to the algorithm's object that is reporting progress. | |
| bool | isWorkspaceProperty (const Kernel::Property *const prop) const |
| checks the property is a workspace property | |
| bool | trackingHistory () |
| get whether we are tracking the history for this algorithm, | |
| virtual void | fillHistory () |
| Copy workspace history from input workspaces to output workspaces and record the history for ths algorithm. | |
| void | fillHistory (const std::vector< Workspace_sptr > &outputWorkspaces) |
| Copy workspace history from input workspaces to provided vector of output workspaces. | |
| 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. | |
| 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) |
| Declare a property which defines the workspace and allowed index types, as well as a property for capturing the indices all at once. | |
Protected Member Functions inherited from Mantid::Kernel::IPropertyManager | |
| template<typename T > | |
| T | getValue (const std::string &name) const |
| Templated method to get the value of a property. | |
| 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 |
Protected Attributes | |
| bool | m_accumulate |
| Flag to accumulate normalization. | |
| API::IMDEventWorkspace_sptr | m_backgroundWS |
| Input background workspace. | |
| Kernel::V3D | m_beamDir |
| Beam direction. | |
| DataObjects::MDHistoWorkspace_sptr | m_bkgdNormWS |
| std::vector< std::atomic< signal_t > > | m_bkgdSignalArray |
| std::string | m_convention |
| ki-kf for Inelastic convention; kf-ki for Crystallography convention | |
| bool | m_dEIntegrated |
| coord_t | m_dEmax |
| coord_t | m_dEmin |
| bool | m_diffraction |
| Flag indicating if the input workspace is from diffraction. | |
| double | m_Ei |
| cached values for incident energy and momentum, final momentum min/max | |
| size_t | m_eIdx |
| std::vector< double > | m_eX |
| size_t | m_hIdx |
| index of h,k,l, dE dimensions in the output workspaces | |
| bool | m_hIntegrated |
| flag for integrated h,k,l, dE dimensions | |
| coord_t | m_hmax |
| coord_t | m_hmin |
| limits for h,k,l, dE dimensions | |
| std::vector< double > | m_hX |
| cached X values along dimensions h,k,l. dE | |
| API::IMDEventWorkspace_sptr | m_inputWS |
| Input workspace. | |
| double | m_kfmax |
| double | m_kfmin |
| double | m_ki |
| size_t | m_kIdx |
| bool | m_kIntegrated |
| coord_t | m_kmax |
| coord_t | m_kmin |
| std::vector< double > | m_kX |
| size_t | m_lIdx |
| bool | m_lIntegrated |
| coord_t | m_lmax |
| coord_t | m_lmin |
| std::vector< double > | m_lX |
| DataObjects::MDHistoWorkspace_sptr | m_normWS |
| Normalization workspace. | |
| uint16_t | m_numExptInfos |
| number of experiment infos | |
| std::unique_ptr< API::Progress > | m_progress |
| Progress bar. | |
| Kernel::V3D | m_samplePos |
| Sample position. | |
| std::vector< std::atomic< signal_t > > | m_signalArray |
| internal array to accumulate signals to avoid copying (serial) each loop | |
| Mantid::Kernel::Matrix< coord_t > | m_transformation |
| matrix for transforming from intersections to positions in the normalization workspace | |
| Mantid::Kernel::DblMatrix | m_UB |
| UB matrix. | |
| Mantid::Kernel::DblMatrix | m_W |
| W matrix. | |
Protected Attributes inherited from Mantid::API::Algorithm | |
| std::atomic< bool > | m_cancel |
| Set to true to stop execution. | |
| std::atomic< bool > | m_parallelException |
| Set if an exception is thrown, and not caught, within a parallel region. | |
| std::vector< IWorkspaceProperty * > | m_inputWorkspaceProps |
| All the WorkspaceProperties that are Input or InOut. Set in execute() | |
| std::shared_ptr< AlgorithmHistory > | m_history |
| Pointer to the history for the algorithm being executed. | |
| Kernel::Logger | m_log |
| Logger for this algorithm. | |
| Kernel::Logger & | g_log |
| std::shared_ptr< AlgorithmHistory > | m_parentHistory |
| Pointer to the parent history object (if set) | |
| std::vector< WorkspaceVector > | m_unrolledInputWorkspaces |
| One vector of workspaces for each input workspace property. | |
| size_t | m_groupSize |
| Size of the group(s) being processed. | |
| bool | m_usingBaseProcessGroups = false |
| distinguish between base processGroups() and overriden/algorithm specific versions | |
| bool | m_recordHistoryForProcessGroups = false |
| Opt-in for overridden processGroups() implementations that want the parent algorithm history recorded on group outputs. | |
Additional Inherited Members | |
Public Types inherited from Mantid::API::Algorithm | |
| using | WorkspaceVector = std::vector< std::shared_ptr< Workspace > > |
Public Attributes inherited from Mantid::API::Algorithm | |
| bool | calledByAlias = false |
| Flag to indicate if the algorithm is called by its alias. | |
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. | |
Static Protected Attributes inherited from Mantid::API::Algorithm | |
| static size_t | g_execCount = 0 |
| Counter to keep track of algorithm execution order. | |
Base class for the three MDNorm, MDNormDirectSC and MDNormSCD algorithms with the common normalization and detector intersections algorithms.
Definition at line 32 of file MDNormBase.h.
| Mantid::MDAlgorithms::MDNormBase::MDNormBase | ( | ) |
Definition at line 32 of file MDNormBase.cpp.
|
protected |
Runs the BinMD algorithm on the input to provide the output workspace All slicing algorithm properties are passed along.
Definition at line 69 of file MDNormBase.cpp.
References Mantid::API::Algorithm::createChildAlgorithm(), and Mantid::API::Algorithm::getProperties().
Referenced by Mantid::MDAlgorithms::MDNorm::exec(), Mantid::MDAlgorithms::MDNormDirectSC::exec(), and Mantid::MDAlgorithms::MDNormSCD::exec().
|
protected |
Stores the X values from each H,K,L,E dimension as member variables Energy dimension is transformed to final wavevector.
Definition at line 207 of file MDNormBase.cpp.
References m_dEIntegrated, m_diffraction, m_Ei, m_eIdx, m_eX, m_hIdx, m_hIntegrated, m_hX, m_kIdx, m_kIntegrated, m_kX, m_lIdx, m_lIntegrated, m_lX, and m_normWS.
Referenced by Mantid::MDAlgorithms::MDNorm::exec(), Mantid::MDAlgorithms::MDNormDirectSC::exec(), and Mantid::MDAlgorithms::MDNormSCD::exec().
|
protected |
Linearly interpolate between the points in integrFlux at xValues and save the results in yValues.
| xValues | :: X-values at which to interpolate |
| integrFlux | :: A workspace with the spectra to interpolate |
| sp | :: A workspace index for a spectrum in integrFlux to interpolate. |
| yValues | :: A vector to save the results. |
Definition at line 597 of file MDNormBase.cpp.
References Mantid::API::MatrixWorkspace::x(), and Mantid::API::MatrixWorkspace::y().
Referenced by calculateNormInner().
|
protected |
Calculate the points of intersection for the given detector with cuboid surrounding the detector position in HKL.
| intersections | A list of intersections in HKL space |
| theta | Polar angle with detector |
| phi | Azimuthal angle with detector |
| transform | Transformation matrix from lab (angular) coordinates to Q |
| lowvalue | lower limit of Q (MDNorm only) |
| highvalue | upper limit of Q (MDNorm only) |
Definition at line 676 of file MDNormBase.cpp.
References fabs, m_convention, m_dEIntegrated, m_diffraction, m_Ei, m_eX, m_hIntegrated, m_hmax, m_hmin, m_hX, m_kfmax, m_kfmin, m_ki, m_kIntegrated, m_kmax, m_kmin, m_kX, m_lIntegrated, m_lmax, m_lmin, m_lX, Mantid::Kernel::V3D::X(), Mantid::Kernel::V3D::Y(), and Mantid::Kernel::V3D::Z().
Referenced by calculateNormInner().
|
protected |
Computed the normalization for the input workspace (for MDNorm).
Results are stored in m_normWS
| otherValues | - values for dimensions other than Q or DeltaE |
| so | - symmetry operation |
| expInfoIndex | - current experiment info index |
Definition at line 291 of file MDNormBase.cpp.
References calculateNormInner(), calQTransform(), m_backgroundWS, and m_inputWS.
|
protected |
Computed the normalization for the input workspace (for MDNormSCD/MDNormDirectSC).
Results are stored in m_normWS
| otherValues | non HKLE dimensions |
| expInfoIndex | current experiment info index |
Definition at line 272 of file MDNormBase.cpp.
References calculateNormInner(), Mantid::Kernel::Matrix< T >::Invert(), and m_inputWS.
Referenced by Mantid::MDAlgorithms::MDNorm::exec(), Mantid::MDAlgorithms::MDNormDirectSC::exec(), and Mantid::MDAlgorithms::MDNormSCD::exec().
|
protected |
Computes the normalization for the input workspace for the case of a continous rotation.
| otherValues | non HKLE dimensions |
| expInfoIndex | current experiment info index |
| so | - (default: nullptr) symmetry operation (only when called by MDNorm) |
Definition at line 316 of file MDNormBase.cpp.
References calculateNormInner(), calQTransform(), CHARGEBINSIZE, Mantid::API::Run::getGoniometer(), Mantid::Geometry::Goniometer::getNumberAxes(), Mantid::API::LogManager::getProperty(), Mantid::Geometry::Goniometer::getR(), Mantid::API::LogManager::getTimeROI(), Mantid::API::LogManager::getTimeSeriesProperty(), GONIOBINSTEP, Mantid::API::LogManager::hasProperty(), index, Mantid::Kernel::Matrix< T >::Invert(), m_backgroundWS, m_inputWS, m_numExptInfos, m_progress, MINPROTONCHARGE, n, Mantid::API::Algorithm::name(), Mantid::Geometry::Goniometer::setRotationAngle(), STATIONARYANGLIM, Mantid::Kernel::TimeSeriesProperty< TYPE >::timesAsVector(), Mantid::Kernel::Property::units(), and Mantid::Kernel::TimeSeriesProperty< TYPE >::valuesAsVector().
Referenced by Mantid::MDAlgorithms::MDNorm::exec(), and Mantid::MDAlgorithms::MDNormDirectSC::exec().
|
protected |
Definition at line 448 of file MDNormBase.cpp.
References Mantid::Kernel::AtomicOp(), calcIntegralsForIntersections(), calculateIntersections(), Mantid::Kernel::delta, Mantid::API::SpectrumInfo::detector(), Mantid::API::Algorithm::getProperty(), Mantid::Geometry::IDetector::getTwoTheta(), Mantid::API::SpectrumInfo::hasDetectors(), index, Mantid::API::SpectrumInfo::isMasked(), Mantid::API::SpectrumInfo::isMonitor(), m_backgroundWS, m_beamDir, m_bkgdNormWS, m_bkgdSignalArray, m_diffraction, m_Ei, m_hmax, m_hmin, m_hX, m_kfmax, m_kfmin, m_kmax, m_kmin, m_kX, m_lmax, m_lmin, m_lX, m_normWS, m_samplePos, m_signalArray, m_transformation, Mantid::Kernel::Matrix< T >::multiplyPoint(), PARALLEL_CHECK_INTERRUPT_REGION, PARALLEL_END_INTERRUPT_REGION, PARALLEL_START_INTERRUPT_REGION, PRAGMA_OMP, rhs, Mantid::API::SpectrumInfo::size(), Mantid::Kernel::threadSafe(), and Mantid::Geometry::x.
Referenced by calculateNormalization(), calculateNormalization(), and calculateNormContinuous().
|
protected |
Calculate QTransform = (R * UB * SymmetryOperation * m_W)^-1.
| R | - the goniometers transformation matrix |
| so | - symmetry operation |
| doInvert | - (default: true) returns the inverse or not |
Definition at line 248 of file MDNormBase.cpp.
References Mantid::Kernel::Matrix< T >::Invert(), m_UB, m_W, Mantid::Kernel::Matrix< T >::setColumn(), and Mantid::Geometry::SymmetryOperation::transformHKL().
Referenced by calculateNormalization(), and calculateNormContinuous().
|
protected |
Create & cached the normalization workspace.
| dataWS | The binned workspace that will be used for the data |
Definition at line 90 of file MDNormBase.cpp.
References Mantid::DataObjects::MDHistoWorkspace::clone(), Mantid::API::Algorithm::getProperty(), m_accumulate, m_normWS, and tmp.
Referenced by Mantid::MDAlgorithms::MDNorm::exec(), Mantid::MDAlgorithms::MDNormDirectSC::exec(), and Mantid::MDAlgorithms::MDNormSCD::exec().
|
protected |
Checks the normalization workspace against the indices of the original dimensions.
If not found, the corresponding dimension is integrated
| otherDimValues | Values from non-HKL dimensions |
| skipNormalization | [InOut] Sets the flag true if normalization values are outside of original inputs |
Definition at line 142 of file MDNormBase.cpp.
References m_dEIntegrated, m_dEmax, m_dEmin, m_diffraction, m_eIdx, m_hIdx, m_hIntegrated, m_hmax, m_hmin, m_kIdx, m_kIntegrated, m_kmax, m_kmin, m_lIdx, m_lIntegrated, m_lmax, m_lmin, m_normWS, m_transformation, Mantid::Kernel::Matrix< T >::numCols(), and Mantid::Kernel::Matrix< T >::numRows().
Referenced by Mantid::MDAlgorithms::MDNormDirectSC::exec(), and Mantid::MDAlgorithms::MDNormSCD::exec().
|
inlinestatic |
Definition at line 36 of file MDNormBase.h.
Referenced by Mantid::MDAlgorithms::MDNormDirectSC::init(), and Mantid::MDAlgorithms::MDNormSCD::init().
|
protected |
Retrieve logged values from non-HKL dimensions.
| skipNormalization | [InOut] Updated to false if any values are outside range measured by input workspace |
| expInfoIndex | current experiment info index |
Definition at line 111 of file MDNormBase.cpp.
References m_diffraction, m_inputWS, and value.
Referenced by Mantid::MDAlgorithms::MDNormDirectSC::exec(), and Mantid::MDAlgorithms::MDNormSCD::exec().
|
protected |
Currently looks for the ConvertToMD algorithm in the history.
Definition at line 42 of file MDNormBase.cpp.
References history, and m_inputWS.
Referenced by Mantid::MDAlgorithms::MDNormDirectSC::cacheInputs(), and Mantid::MDAlgorithms::MDNormSCD::cacheInputs().
|
staticconstexpr |
Definition at line 39 of file MDNormBase.h.
Referenced by calculateNormContinuous().
|
staticconstexpr |
Definition at line 40 of file MDNormBase.h.
Referenced by calculateNormContinuous().
|
protected |
Flag to accumulate normalization.
Definition at line 102 of file MDNormBase.h.
Referenced by createNormalizationWS(), Mantid::MDAlgorithms::MDNorm::exec(), Mantid::MDAlgorithms::MDNormDirectSC::exec(), and Mantid::MDAlgorithms::MDNormSCD::exec().
|
protected |
Input background workspace.
Definition at line 74 of file MDNormBase.h.
Referenced by Mantid::MDAlgorithms::MDNorm::binBackgroundWS(), calculateNormalization(), calculateNormContinuous(), calculateNormInner(), Mantid::MDAlgorithms::MDNorm::createBackgroundNormalizationWS(), and Mantid::MDAlgorithms::MDNorm::exec().
|
protected |
Beam direction.
Definition at line 94 of file MDNormBase.h.
Referenced by Mantid::MDAlgorithms::MDNormDirectSC::cacheInputs(), Mantid::MDAlgorithms::MDNormSCD::cacheInputs(), calculateNormInner(), and Mantid::MDAlgorithms::MDNorm::exec().
|
protected |
Definition at line 72 of file MDNormBase.h.
Referenced by calculateNormInner(), Mantid::MDAlgorithms::MDNorm::createBackgroundNormalizationWS(), and Mantid::MDAlgorithms::MDNorm::exec().
|
protected |
Definition at line 107 of file MDNormBase.h.
Referenced by calculateNormInner(), and Mantid::MDAlgorithms::MDNorm::exec().
|
protected |
ki-kf for Inelastic convention; kf-ki for Crystallography convention
Definition at line 96 of file MDNormBase.h.
Referenced by calculateIntersections(), Mantid::MDAlgorithms::MDNorm::exec(), Mantid::MDAlgorithms::MDNormDirectSC::exec(), and Mantid::MDAlgorithms::MDNormSCD::exec().
|
protected |
Definition at line 80 of file MDNormBase.h.
Referenced by cacheDimensionXValues(), calculateIntersections(), Mantid::MDAlgorithms::MDNorm::determineBasisVector(), and findIntegratedDimensions().
|
protected |
Definition at line 76 of file MDNormBase.h.
Referenced by Mantid::MDAlgorithms::MDNormDirectSC::cacheInputs(), and findIntegratedDimensions().
|
protected |
Definition at line 76 of file MDNormBase.h.
Referenced by Mantid::MDAlgorithms::MDNormDirectSC::cacheInputs(), and findIntegratedDimensions().
|
protected |
Flag indicating if the input workspace is from diffraction.
Definition at line 100 of file MDNormBase.h.
Referenced by cacheDimensionXValues(), calculateIntersections(), calculateNormInner(), Mantid::MDAlgorithms::MDNorm::exec(), Mantid::MDAlgorithms::MDNormDirectSC::exec(), Mantid::MDAlgorithms::MDNormSCD::exec(), findIntegratedDimensions(), Mantid::MDAlgorithms::MDNorm::getBinParameters(), and getValuesFromOtherDimensions().
|
protected |
cached values for incident energy and momentum, final momentum min/max
Definition at line 78 of file MDNormBase.h.
Referenced by cacheDimensionXValues(), Mantid::MDAlgorithms::MDNormDirectSC::cacheInputs(), calculateIntersections(), calculateNormInner(), and Mantid::MDAlgorithms::MDNorm::exec().
|
protected |
Definition at line 88 of file MDNormBase.h.
Referenced by cacheDimensionXValues(), Mantid::MDAlgorithms::MDNorm::determineBasisVector(), and findIntegratedDimensions().
|
protected |
Definition at line 90 of file MDNormBase.h.
Referenced by cacheDimensionXValues(), and calculateIntersections().
|
protected |
index of h,k,l, dE dimensions in the output workspaces
Definition at line 88 of file MDNormBase.h.
Referenced by cacheDimensionXValues(), Mantid::MDAlgorithms::MDNorm::determineBasisVector(), and findIntegratedDimensions().
|
protected |
flag for integrated h,k,l, dE dimensions
Definition at line 80 of file MDNormBase.h.
Referenced by cacheDimensionXValues(), calculateIntersections(), Mantid::MDAlgorithms::MDNorm::exec(), and findIntegratedDimensions().
|
protected |
Definition at line 76 of file MDNormBase.h.
Referenced by Mantid::MDAlgorithms::MDNormDirectSC::cacheInputs(), Mantid::MDAlgorithms::MDNormSCD::cacheInputs(), calculateIntersections(), calculateNormInner(), and findIntegratedDimensions().
|
protected |
limits for h,k,l, dE dimensions
Definition at line 76 of file MDNormBase.h.
Referenced by Mantid::MDAlgorithms::MDNormDirectSC::cacheInputs(), Mantid::MDAlgorithms::MDNormSCD::cacheInputs(), calculateIntersections(), calculateNormInner(), and findIntegratedDimensions().
|
protected |
cached X values along dimensions h,k,l. dE
Definition at line 90 of file MDNormBase.h.
Referenced by cacheDimensionXValues(), calculateIntersections(), and calculateNormInner().
|
protected |
Input workspace.
Definition at line 69 of file MDNormBase.h.
Referenced by Mantid::MDAlgorithms::MDNorm::binBackgroundWS(), Mantid::MDAlgorithms::MDNorm::binInputWS(), Mantid::MDAlgorithms::MDNormDirectSC::cacheInputs(), Mantid::MDAlgorithms::MDNormSCD::cacheInputs(), calculateNormalization(), calculateNormalization(), calculateNormContinuous(), Mantid::MDAlgorithms::MDNorm::exec(), Mantid::MDAlgorithms::MDNormDirectSC::exec(), Mantid::MDAlgorithms::MDNorm::getBinParameters(), Mantid::MDAlgorithms::MDNorm::getValuesFromOtherDimensions(), getValuesFromOtherDimensions(), and inputEnergyMode().
|
protected |
Definition at line 78 of file MDNormBase.h.
Referenced by Mantid::MDAlgorithms::MDNormDirectSC::cacheInputs(), calculateIntersections(), and calculateNormInner().
|
protected |
Definition at line 78 of file MDNormBase.h.
Referenced by Mantid::MDAlgorithms::MDNormDirectSC::cacheInputs(), calculateIntersections(), and calculateNormInner().
|
protected |
Definition at line 78 of file MDNormBase.h.
Referenced by Mantid::MDAlgorithms::MDNormDirectSC::cacheInputs(), and calculateIntersections().
|
protected |
Definition at line 88 of file MDNormBase.h.
Referenced by cacheDimensionXValues(), Mantid::MDAlgorithms::MDNorm::determineBasisVector(), and findIntegratedDimensions().
|
protected |
Definition at line 80 of file MDNormBase.h.
Referenced by cacheDimensionXValues(), calculateIntersections(), Mantid::MDAlgorithms::MDNorm::exec(), and findIntegratedDimensions().
|
protected |
Definition at line 76 of file MDNormBase.h.
Referenced by Mantid::MDAlgorithms::MDNormDirectSC::cacheInputs(), Mantid::MDAlgorithms::MDNormSCD::cacheInputs(), calculateIntersections(), calculateNormInner(), and findIntegratedDimensions().
|
protected |
Definition at line 76 of file MDNormBase.h.
Referenced by Mantid::MDAlgorithms::MDNormDirectSC::cacheInputs(), Mantid::MDAlgorithms::MDNormSCD::cacheInputs(), calculateIntersections(), calculateNormInner(), and findIntegratedDimensions().
|
protected |
Definition at line 90 of file MDNormBase.h.
Referenced by cacheDimensionXValues(), calculateIntersections(), and calculateNormInner().
|
protected |
Definition at line 88 of file MDNormBase.h.
Referenced by cacheDimensionXValues(), Mantid::MDAlgorithms::MDNorm::determineBasisVector(), and findIntegratedDimensions().
|
protected |
Definition at line 80 of file MDNormBase.h.
Referenced by cacheDimensionXValues(), calculateIntersections(), Mantid::MDAlgorithms::MDNorm::exec(), and findIntegratedDimensions().
|
protected |
Definition at line 76 of file MDNormBase.h.
Referenced by Mantid::MDAlgorithms::MDNormDirectSC::cacheInputs(), Mantid::MDAlgorithms::MDNormSCD::cacheInputs(), calculateIntersections(), calculateNormInner(), and findIntegratedDimensions().
|
protected |
Definition at line 76 of file MDNormBase.h.
Referenced by Mantid::MDAlgorithms::MDNormDirectSC::cacheInputs(), Mantid::MDAlgorithms::MDNormSCD::cacheInputs(), calculateIntersections(), calculateNormInner(), and findIntegratedDimensions().
|
protected |
Definition at line 90 of file MDNormBase.h.
Referenced by cacheDimensionXValues(), calculateIntersections(), and calculateNormInner().
|
protected |
Normalization workspace.
Definition at line 71 of file MDNormBase.h.
Referenced by cacheDimensionXValues(), calculateNormInner(), createNormalizationWS(), Mantid::MDAlgorithms::MDNorm::exec(), Mantid::MDAlgorithms::MDNormDirectSC::exec(), Mantid::MDAlgorithms::MDNormSCD::exec(), findIntegratedDimensions(), and Mantid::MDAlgorithms::MDNorm::getValuesFromOtherDimensions().
|
protected |
number of experiment infos
Definition at line 98 of file MDNormBase.h.
Referenced by calculateNormContinuous(), Mantid::MDAlgorithms::MDNorm::exec(), Mantid::MDAlgorithms::MDNormDirectSC::exec(), and Mantid::MDAlgorithms::MDNormSCD::exec().
|
protected |
Progress bar.
Definition at line 104 of file MDNormBase.h.
Referenced by calculateNormContinuous(), Mantid::MDAlgorithms::MDNorm::exec(), Mantid::MDAlgorithms::MDNormDirectSC::exec(), Mantid::MDAlgorithms::MDNorm::init(), and Mantid::MDAlgorithms::MDNormDirectSC::init().
|
protected |
Sample position.
Definition at line 92 of file MDNormBase.h.
Referenced by Mantid::MDAlgorithms::MDNormDirectSC::cacheInputs(), Mantid::MDAlgorithms::MDNormSCD::cacheInputs(), calculateNormInner(), and Mantid::MDAlgorithms::MDNorm::exec().
|
protected |
internal array to accumulate signals to avoid copying (serial) each loop
Definition at line 106 of file MDNormBase.h.
Referenced by calculateNormInner(), Mantid::MDAlgorithms::MDNorm::exec(), Mantid::MDAlgorithms::MDNormDirectSC::exec(), and Mantid::MDAlgorithms::MDNormSCD::exec().
|
protected |
matrix for transforming from intersections to positions in the normalization workspace
Definition at line 86 of file MDNormBase.h.
Referenced by calculateNormInner(), findIntegratedDimensions(), Mantid::MDAlgorithms::MDNorm::getBinParameters(), and Mantid::MDAlgorithms::MDNorm::getValuesFromOtherDimensions().
|
protected |
UB matrix.
Definition at line 82 of file MDNormBase.h.
Referenced by Mantid::MDAlgorithms::MDNorm::binBackgroundWS(), Mantid::MDAlgorithms::MDNorm::binMDEventWorkspace(), calQTransform(), and Mantid::MDAlgorithms::MDNorm::getBinParameters().
|
protected |
W matrix.
Definition at line 84 of file MDNormBase.h.
Referenced by Mantid::MDAlgorithms::MDNorm::binBackgroundWS(), Mantid::MDAlgorithms::MDNorm::binMDEventWorkspace(), calQTransform(), Mantid::MDAlgorithms::MDNorm::getBinParameters(), and Mantid::MDAlgorithms::MDNorm::setQUnit().
|
staticconstexpr |
Definition at line 41 of file MDNormBase.h.
Referenced by calculateNormContinuous().
|
staticconstexpr |
Definition at line 42 of file MDNormBase.h.
Referenced by calculateNormContinuous().