14using namespace Kernel;
28 :
Group(group), m_number(itNumber), m_hmSymbol(
std::move(hmSymbol)) {}
55 if (operation.hasTranslation()) {
62 (operation.transformHKL(hkl) == hkl)) {
101 std::vector<SymmetryOperation> siteSymmetryOps;
105 [&](
const SymmetryOperation &op) { return Geometry::getWrappedVector(op * wrappedPosition) == wrappedPosition; });
107 return GroupFactory::create<Group>(siteSymmetryOps);
111 stream <<
"Space group with Hermann-Mauguin symbol: " << self.
hmSymbol();
Equality-functor for comparison of atom positions with specifiable precision.
The class Group represents a set of symmetry operations (or symmetry group).
bool isInvariant(const Kernel::DblMatrix &tensor, double tolerance=1e-8) const
Returns true if the tensor is invariant under the group operations.
std::vector< SymmetryOperation > m_allOperations
A class for representing space groups, inheriting from Group.
PointGroup_sptr getPointGroup() const
Returns the point group of the space group.
bool isAllowedReflection(const Kernel::V3D &hkl) const
Returns whether the given reflection is allowed or not in this space group.
Group_const_sptr getSiteSymmetryGroup(const Kernel::V3D &position) const
Returns the site symmetry group.
std::string hmSymbol() const
Returns the stored Hermann-Mauguin symbol.
bool isAllowedUnitCell(const UnitCell &cell) const
Convenience function for checking compatibility of a cell metric with the space group,...
size_t number() const
Returns the stored space group number.
SpaceGroup(size_t itNumber, std::string hmSymbol, const Group &group)
Constructor.
Crystallographic symmetry operations are composed of a rotational component, which is represented by ...
Class to implement unit cell of crystals.
const Kernel::DblMatrix & getG() const
Get the metric tensor.
static T & Instance()
Return a reference to the Singleton instance, creating it if it does not already exist Creation is do...
constexpr double scalar_prod(const V3D &v) const noexcept
Calculates the cross product.
std::shared_ptr< PointGroup > PointGroup_sptr
Shared pointer to a PointGroup.
MANTID_GEOMETRY_DLL std::ostream & operator<<(std::ostream &stream, const PointGroup &self)
Returns a streamed representation of the PointGroup object.
MANTID_GEOMETRY_DLL V3R getWrappedVector(const V3R &vector)
Wraps a V3R to the interval (0, 1].
std::shared_ptr< const Group > Group_const_sptr