Mantid
Loading...
Searching...
No Matches
PeakShapeEllipsoid.h
Go to the documentation of this file.
1// Mantid Repository : https://github.com/mantidproject/mantid
2//
3// Copyright © 2015 ISIS Rutherford Appleton Laboratory UKRI,
4// NScD Oak Ridge National Laboratory, European Spallation Source,
5// Institut Laue - Langevin & CSNS, Institute of High Energy Physics, CAS
6// SPDX - License - Identifier: GPL - 3.0 +
7#pragma once
8
11#include "MantidKernel/Matrix.h"
12#include "MantidKernel/V3D.h"
13
14namespace Mantid {
15namespace DataObjects {
16
19class MANTID_DATAOBJECTS_DLL PeakShapeEllipsoid : public PeakShapeBase {
20public:
22 PeakShapeEllipsoid(const PeakEllipsoidFrame &directions, const PeakEllipsoidExtent &abcRadii,
23 const PeakEllipsoidExtent &abcRadiiBackgroundInner,
24 const PeakEllipsoidExtent &abcRadiiBackgroundOuter, Kernel::SpecialCoordinateSystem frame,
25 std::string algorithmName = std::string(), int algorithmVersion = -1,
26 const Mantid::Kernel::V3D &translation = {0.0, 0.0, 0.0});
28 bool operator==(const PeakShapeEllipsoid &other) const;
30 const PeakEllipsoidExtent &abcRadii() const;
32 const PeakEllipsoidExtent &abcRadiiBackgroundInner() const;
34 const PeakEllipsoidExtent &abcRadiiBackgroundOuter() const;
36 const PeakEllipsoidFrame &directions() const;
38 const Kernel::V3D &translation() const;
40 PeakEllipsoidFrame getDirectionInSpecificFrame(Kernel::Matrix<double> &invertedGoniometerMatrix) const;
41
43 std::string toJSON() const override;
45 PeakShapeEllipsoid *clone() const override;
47 std::string shapeName() const override;
48
50 std::optional<double> radius(RadiusType type = RadiusType::Radius) const override;
51 static const std::string ellipsoidShapeName();
52
53private:
64};
65
66using PeakShapeEllipsoid_sptr = std::shared_ptr<PeakShapeEllipsoid>;
67using PeakShapeEllipsoid_const_sptr = std::shared_ptr<const PeakShapeEllipsoid>;
68
69} // namespace DataObjects
70} // namespace Mantid
PeakShapeBase : Base class for concrete PeakShapes containing common code.
PeakShapeEllipsoid : PeakShape representing a 3D ellipsoid.
Mantid::Kernel::V3D m_translation
translation of center
PeakEllipsoidExtent m_abc_radiiBackgroundInner
inner radii
PeakEllipsoidFrame m_directions
principle axis
PeakEllipsoidExtent m_abc_radiiBackgroundOuter
outer radii
RadiusType
For selecting different radius types.
Definition PeakShape.h:35
Numerical Matrix class.
Definition Matrix.h:42
Class for 3D vectors.
Definition V3D.h:34
std::shared_ptr< PeakShapeEllipsoid > PeakShapeEllipsoid_sptr
std::array< Kernel::V3D, PEAK_ELLIPSOID_DIMS > PeakEllipsoidFrame
std::array< double, PEAK_ELLIPSOID_DIMS > PeakEllipsoidExtent
std::shared_ptr< const PeakShapeEllipsoid > PeakShapeEllipsoid_const_sptr
SpecialCoordinateSystem
Special coordinate systems for Q3D.
Helper class which provides the Collimation Length for SANS instruments.
constexpr bool operator==(const wide_integer< Bits, Signed > &lhs, const wide_integer< Bits2, Signed2 > &rhs)