21#include "MantidMDAlgorithms/DllConfig.h"
24namespace MDAlgorithms {
44 void initSlicingProps();
46 void createTransform();
48 void createGeneralTransform();
49 void processGeneralTransformProperties();
50 void createAlignedTransform();
52 void makeAlignedDimensionFromString(
const std::string &str);
53 void makeBasisVectorFromString(
const std::string &str);
55 std::unique_ptr<Mantid::Geometry::MDImplicitFunction> getImplicitFunctionForChunk(
const size_t *
const chunkMin,
56 const size_t *
const chunkMax);
57 std::unique_ptr<Mantid::Geometry::MDImplicitFunction> getGeneralImplicitFunction(
const size_t *
const chunkMin,
58 const size_t *
const chunkMax);
139 std::vector<Mantid::Kernel::VMD> getOldBasis(
size_t dimension)
const;
142 const std::vector<Mantid::Kernel::VMD> &oldBasis)
const;
144 const std::string &units)
const;
Base class from which all concrete algorithm classes should be derived.
Abstract Algorithm class that will be used by: BinMD and SliceMD and shares code for getting a slice ...
std::unique_ptr< API::CoordTransform > m_transformFromOriginal
Coordinate transformation to save in the output workspace (original->binned)
Mantid::API::IMDWorkspace_sptr m_intermediateWS
Intermediate original workspace.
std::vector< size_t > m_dimensionToBinFrom
Index of the dimension in the MDEW for the dimension in the output.
std::unique_ptr< API::CoordTransform > m_transform
Coordinate transformation to apply.
Mantid::API::IMDWorkspace_sptr m_originalWS
Original (MDEventWorkspace) that inWS was based on.
static std::string getDimensionChars()
~SlicingAlgorithm()=default
Mantid::Kernel::VMD m_inputMinPoint
Coordinates in the INPUT workspace corresponding to the minimum edge in all dimensions.
std::vector< double > m_maxExtents
For non-aligned, the maximum coordinate extents in each OUTPUT dimension.
Mantid::API::IMDWorkspace_sptr m_inWS
Input workspace.
std::unique_ptr< API::CoordTransform > m_transformToOriginal
Coordinate transformation to save in the output workspace (binned->original)
std::unique_ptr< DataObjects::CoordTransformAffine > m_transformFromIntermediate
Coordinate transformation to save in the output WS, from the intermediate WS.
std::vector< double > m_binningScaling
Scaling factor to apply for each basis vector (to map to the bins).
size_t m_outD
Number of dimensions in the output (binned) workspace.
bool m_NormalizeBasisVectors
The NormalizeBasisVectors option.
std::vector< Mantid::Kernel::VMD > m_bases
Basis vectors of the output dimensions, normalized to unity length.
bool m_axisAligned
Set to true if the cut is aligned with the axes.
std::vector< int > m_numBins
For non-aligned, the number of bins in each OUTPUT dimension.
Mantid::Kernel::VMD m_translation
Translation from the OUTPUT to the INPUT workspace i.e.
std::vector< double > m_transformScaling
Scaling factor to apply for each basis vector to transfor to the output dimensions.
std::vector< double > m_minExtents
For non-aligned, the minimum coordinate extents in each OUTPUT dimension.
std::unique_ptr< DataObjects::CoordTransformAffine > m_transformToIntermediate
Coordinate transformation to save in the intermediate WS.
std::vector< Mantid::Geometry::MDHistoDimension_sptr > m_binDimensions
Bin dimensions to actually use.
std::shared_ptr< IMDWorkspace > IMDWorkspace_sptr
Shared pointer to the IMDWorkspace base class.
std::unique_ptr< MDFrame > MDFrame_uptr
Helper class which provides the Collimation Length for SANS instruments.