-
Nick Draper authored
Update copyright headers in all files Squashed commit of the following: * First version of a script to manage copyright statements re #23468 * Neatened up script, added comments re #23488 * move script to tools directory re #23488 * small script changes and a couple of manual file changes re #23488 * Minor chnage to whitespace detection in regex re #23488 * Add an excluded directory re #23488 * remove a repeasted copyright statement in a file re #23488 * Don't comsume the comment end if it is on the same line re #23488 * fix error in new copright parsing re #23488 * remove double copyrifght entry re #23488 * Improve handling of old copyrights at the start of comments re #23488 * remove empty comments re #23488 * exclude gsoapgenerated directories re #23488 * Sort out greedy line matching re #23488 * improve empty comment removal re #23488 * improve false positives re #23488 * impressive speedup by limiting regex matching length re #23488 * remove evil invisible non ascii character Also upadte the copyright at the same time re #23488 * resolve multiple copyrights in a single file re #23488 * resolve an issue with new statement detection re #23488 * another unprintable unicode character re #23488 * pep updates and cmake the new copyright fit clang format re #23488 * update already done new format headers re #23488 * wrong type of bracket re #23488 * Update class_maker and friends re #23488 * Update all copyright statements re #23488 * clang format re #23488 * flake8 warnings re #23488 * Flake8 warnings re #23488 * Exclude .cmake.in and rb.in files re #23488 * replace missing line re #23488 * exclude .py.in files as they are flasely recognized as C++ re #23488 * another setp.py.in re #23488 * another .py.in correction re #23488 * Hopefully the last of the .py.in files re #23488 * resolve utf-8 encoding of python files and changed ABINS checksum re #23488 * updates to unit tests that reference line numbers re #23488 * remaining unit test files and other fixes re #23488
Nick Draper authoredUpdate copyright headers in all files Squashed commit of the following: * First version of a script to manage copyright statements re #23468 * Neatened up script, added comments re #23488 * move script to tools directory re #23488 * small script changes and a couple of manual file changes re #23488 * Minor chnage to whitespace detection in regex re #23488 * Add an excluded directory re #23488 * remove a repeasted copyright statement in a file re #23488 * Don't comsume the comment end if it is on the same line re #23488 * fix error in new copright parsing re #23488 * remove double copyrifght entry re #23488 * Improve handling of old copyrights at the start of comments re #23488 * remove empty comments re #23488 * exclude gsoapgenerated directories re #23488 * Sort out greedy line matching re #23488 * improve empty comment removal re #23488 * improve false positives re #23488 * impressive speedup by limiting regex matching length re #23488 * remove evil invisible non ascii character Also upadte the copyright at the same time re #23488 * resolve multiple copyrights in a single file re #23488 * resolve an issue with new statement detection re #23488 * another unprintable unicode character re #23488 * pep updates and cmake the new copyright fit clang format re #23488 * update already done new format headers re #23488 * wrong type of bracket re #23488 * Update class_maker and friends re #23488 * Update all copyright statements re #23488 * clang format re #23488 * flake8 warnings re #23488 * Flake8 warnings re #23488 * Exclude .cmake.in and rb.in files re #23488 * replace missing line re #23488 * exclude .py.in files as they are flasely recognized as C++ re #23488 * another setp.py.in re #23488 * another .py.in correction re #23488 * Hopefully the last of the .py.in files re #23488 * resolve utf-8 encoding of python files and changed ABINS checksum re #23488 * updates to unit tests that reference line numbers re #23488 * remaining unit test files and other fixes re #23488
Code owners
Assign users and groups as approvers for specific file changes. Learn more.
SpaceGroup.h 3.22 KiB
// Mantid Repository : https://github.com/mantidproject/mantid
//
// Copyright © 2014 ISIS Rutherford Appleton Laboratory UKRI,
// NScD Oak Ridge National Laboratory, European Spallation Source
// & Institut Laue - Langevin
// SPDX - License - Identifier: GPL - 3.0 +
#ifndef MANTID_GEOMETRY_SPACEGROUP_H_
#define MANTID_GEOMETRY_SPACEGROUP_H_
#include "MantidGeometry/Crystal/Group.h"
#include "MantidGeometry/Crystal/PointGroup.h"
#include "MantidGeometry/Crystal/SymmetryOperation.h"
#include "MantidGeometry/Crystal/UnitCell.h"
#include "MantidGeometry/DllConfig.h"
#include "MantidKernel/V3D.h"
#include <set>
namespace Mantid {
namespace Geometry {
/**
@class SpaceGroup
A class for representing space groups, inheriting from Group.
SpaceGroup-objects represent a space group, which is a set
of symmetry operations. Along with storing the operations themselves,
which is realized through inheriting from Group, SpaceGroup also
stores a number (space group number according to the International
Tables for Crystallography A) and a Hermann-Mauguin-symbol.
SpaceGroup may for example be used to generate all equivalent positions
within the unit cell:
SpaceGroup_const_sptr group;
V3D position(0.13, 0.54, 0.38);
std::vector<V3D> equivalents = group->getEquivalentPositions(position);
The class should not be instantiated directly, see SpaceGroupFactoryImpl
instead.
@author Michael Wedel, Paul Scherrer Institut - SINQ
@date 03/10/2014
*/
class MANTID_GEOMETRY_DLL SpaceGroup : public Group {
public:
SpaceGroup(size_t itNumber, const std::string &hmSymbol, const Group &group);
size_t number() const;
std::string hmSymbol() const;
template <typename T>
std::vector<T> getEquivalentPositions(const T &position) const {
const std::vector<SymmetryOperation> &symmetryOperations =
getSymmetryOperations();
std::vector<T> equivalents;
equivalents.reserve(symmetryOperations.size());
std::transform(symmetryOperations.cbegin(), symmetryOperations.cend(),
std::back_inserter(equivalents),
[&position](const SymmetryOperation &op) {
return Geometry::getWrappedVector(op * position);
});
// Use fuzzy compare with the same condition as V3D::operator==().
std::sort(equivalents.begin(), equivalents.end(), AtomPositionsLessThan());
equivalents.erase(std::unique(equivalents.begin(), equivalents.end(),
AtomPositionsEqual()),
equivalents.end());
return equivalents;
}
bool isAllowedReflection(const Kernel::V3D &hkl) const;
bool isAllowedUnitCell(const UnitCell &cell) const;
PointGroup_sptr getPointGroup() const;
Group_const_sptr getSiteSymmetryGroup(const Kernel::V3D &position) const;
protected:
size_t m_number;
std::string m_hmSymbol;
};
MANTID_GEOMETRY_DLL std::ostream &operator<<(std::ostream &stream,
const SpaceGroup &self);
using SpaceGroup_sptr = boost::shared_ptr<SpaceGroup>;
using SpaceGroup_const_sptr = boost::shared_ptr<const SpaceGroup>;
} // namespace Geometry
} // namespace Mantid
#endif /* MANTID_GEOMETRY_SPACEGROUP_H_ */