8#include "MantidJson/Json.h"
20 int algorithmVersion,
const Kernel::V3D &translation)
21 :
PeakShapeBase(frame,
std::move(algorithmName), algorithmVersion), m_directions(directions), m_abc_radii(abcRadii),
22 m_abc_radiiBackgroundInner(abcRadiiBackgroundInner), m_abc_radiiBackgroundOuter(abcRadiiBackgroundOuter),
23 m_translation(translation) {}
47 throw std::invalid_argument(
"The inverted goniometer matrix is not "
48 "compatible with the direction vector");
53 [&invertedGoniometerMatrix](
const auto &direction) { return invertedGoniometerMatrix * direction; });
54 return directionsInFrame;
80 return Mantid::JsonHelpers::jsonToString(root);
88 std::optional<double>
radius;
PeakShapeBase : Base class for concrete PeakShapes containing common code.
void buildCommon(Json::Value &root) const
Build common parts of outgoing JSON serialization.
bool operator==(const PeakShapeBase &other) const
Equals operator.
PeakShapeEllipsoid : PeakShape representing a 3D ellipsoid.
std::string toJSON() const override
PeakShape interface.
PeakEllipsoidFrame getDirectionInSpecificFrame(Kernel::Matrix< double > &invertedGoniometerMatrix) const
Get ellipsoid directions in a specified frame.
Mantid::Kernel::V3D m_translation
translation of center
const Kernel::V3D & translation() const
Get translation of center.
bool operator==(const PeakShapeEllipsoid &other) const
Equals operator.
PeakEllipsoidExtent m_abc_radiiBackgroundInner
inner radii
PeakEllipsoidFrame m_directions
principle axis
const PeakEllipsoidFrame & directions() const
Get ellipsoid directions.
std::optional< double > radius(RadiusType type=RadiusType::Radius) const override
PeakBase interface.
static const std::string ellipsoidShapeName()
PeakEllipsoidExtent m_abc_radii
radii
PeakShapeEllipsoid * clone() const override
Clone ellipsoid.
PeakEllipsoidExtent m_abc_radiiBackgroundOuter
outer radii
const PeakEllipsoidExtent & abcRadii() const
Get radii.
const PeakEllipsoidExtent & abcRadiiBackgroundInner() const
Get background inner radii.
std::string shapeName() const override
Get the peak shape.
PeakShapeEllipsoid(const PeakEllipsoidFrame &directions, const PeakEllipsoidExtent &abcRadii, const PeakEllipsoidExtent &abcRadiiBackgroundInner, const PeakEllipsoidExtent &abcRadiiBackgroundOuter, Kernel::SpecialCoordinateSystem frame, std::string algorithmName=std::string(), int algorithmVersion=-1, const Mantid::Kernel::V3D &translation={0.0, 0.0, 0.0})
Constructor.
const PeakEllipsoidExtent & abcRadiiBackgroundOuter() const
Get background outer radii.
RadiusType
For selecting different radius types.
size_t numRows() const
Return the number of rows in the matrix.
size_t numCols() const
Return the number of columns in the matrix.
std::array< Kernel::V3D, PEAK_ELLIPSOID_DIMS > PeakEllipsoidFrame
std::array< double, PEAK_ELLIPSOID_DIMS > PeakEllipsoidExtent
SpecialCoordinateSystem
Special coordinate systems for Q3D.