12#include "MantidMDAlgorithms/DllConfig.h"
16namespace MDAlgorithms {
24 const std::string name()
const override;
25 int version()
const override;
26 const std::string category()
const override;
27 const std::string summary()
const override;
28 const std::vector<std::string>
seeAlso()
const override {
29 return {
"CropWorkspaceForMDNorm",
"MDNormSCD",
"MDNormDirectSC",
"RecalculateTrajectoriesExtents"};
35 void validateBinningForTemporaryDataWorkspace(
const std::map<std::string, std::string> &,
37 std::map<std::string, std::string> validateInputs() override final;
38 std::
string QDimensionName(
std::vector<
double> projection);
39 std::
string QDimensionNameQSample(
int i);
40 std::map<
std::
string,
std::
string> getBinParameters();
42 void createBackgroundNormalizationWS(const DataObjects::
MDHistoWorkspace &dataWS);
52 void determineBasisVector(const
size_t &qindex, const
std::
string &
value, const Kernel::
DblMatrix &Qtransform,
53 std::vector<
double> &projection,
std::stringstream &basisVector,
54 std::vector<
size_t> &qDimensionIndices);
55 inline
void setQUnit(const
std::vector<
size_t> &qDimensionIndices,
58 std::vector<
coord_t> getValuesFromOtherDimensions(
bool &skipNormalization, uint16_t expInfoIndex = 0) const;
60 void cacheDimensionXValues();
62 uint16_t expInfoIndex,
size_t soIndex);
64 void calculateIntersections(
std::vector<
std::array<
double, 4>> &intersections, const
double theta, const
double phi,
65 const Kernel::
DblMatrix &transform,
double lowvalue,
double highvalue);
67 void calcIntegralsForIntersections(const
std::vector<
double> &xValues, const
API::
MatrixWorkspace &integrFlux,
69 size_t sp,
std::vector<
double> &yValues);
71 void calcDiffractionIntersectionIntegral(
std::vector<
std::array<
double, 4>> &intersections,
72 std::vector<
double> &xValues,
std::vector<
double> &yValues,
78 void calcSingleDetectorNorm(const
std::vector<
std::array<
double, 4>> &intersections, const
double &solid,
79 std::vector<
double> &yValues, const
size_t &vmdDims,
std::vector<
coord_t> &pos,
81 const
double &solidBkgd,
std::vector<
std::atomic<
signal_t>> &bkgdSignalArray);
84 const
std::
string &outputwsname, const
double &startProgress,
85 const
double &endProgress);
98 std::vector<
double> m_Q0Basis{1., 0., 0.}, m_Q1Basis{0., 1., 0.}, m_Q2Basis{0., 0., 1.};
107 std::vector<double> m_hX, m_kX, m_lX,
m_eX;
const std::vector< double > & rhs
double value
The value of the point.
Base class from which all concrete algorithm classes should be derived.
This class is shared by a few Workspace types and holds information related to a particular experimen...
Base MatrixWorkspace Abstract Class.
Crystallographic symmetry operations are composed of a rotational component, which is represented by ...
MDNormalization : Bin single crystal diffraction or direct geometry inelastic data and calculate the ...
size_t m_numSymmOps
number of symmetry operations
Mantid::Kernel::DblMatrix m_W
W matrix.
Mantid::Kernel::Matrix< coord_t > m_transformation
matrix for transforming from intersections to positions in the normalization workspace
bool m_dEIntegrated
Flag to indicate that the energy dimension is integrated.
bool m_diffraction
Flag indicating if the input workspace is from diffraction.
bool m_accumulate
Flag to accumulate normalization.
const std::vector< std::string > seeAlso() const override
Function to return all of the seeAlso (these are not validated) algorithms related to this algorithm....
double m_Ei
Cached value of incident energy dor direct geometry.
Mantid::Kernel::DblMatrix m_UB
UB matrix.
Kernel::V3D m_beamDir
Beam direction.
size_t m_numExptInfos
number of experimentInfo objects
std::string convention
ki-kf for Inelastic convention; kf-ki for Crystallography convention
std::vector< double > m_eX
Kernel::V3D m_samplePos
Sample position.
std::shared_ptr< IMDEventWorkspace > IMDEventWorkspace_sptr
Shared pointer to Mantid::API::IMDEventWorkspace.
std::shared_ptr< IMDHistoWorkspace > IMDHistoWorkspace_sptr
shared pointer to Mantid::API::IMDHistoWorkspace
std::shared_ptr< IMDWorkspace > IMDWorkspace_sptr
Shared pointer to the IMDWorkspace base class.
std::shared_ptr< MDHistoWorkspace > MDHistoWorkspace_sptr
A shared pointer to a MDHistoWorkspace.
Helper class which provides the Collimation Length for SANS instruments.
float coord_t
Typedef for the data type to use for coordinate axes in MD objects such as MDBox, MDEventWorkspace,...
double signal_t
Typedef for the signal recorded in a MDBox, etc.