Mantid
Loading...
Searching...
No Matches
CenteringGroup.h
Go to the documentation of this file.
1// Mantid Repository : https://github.com/mantidproject/mantid
2//
3// Copyright © 2014 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
10#include "MantidGeometry/DllConfig.h"
11#include <map>
12
14
15namespace Mantid {
16namespace Geometry {
17
40class MANTID_GEOMETRY_DLL CenteringGroup : public Group {
41public:
42 enum CenteringType { P, I, A, B, C, F, Robv, Rrev };
43
44 CenteringGroup(const std::string &centeringSymbol);
45 CenteringType getType() const;
46 std::string getSymbol() const;
47
48protected:
50 std::string m_symbol;
51};
52
53using CenteringGroup_sptr = std::shared_ptr<CenteringGroup>;
54using CenteringGroup_const_sptr = std::shared_ptr<const CenteringGroup>;
55
57class MANTID_GEOMETRY_DLL CenteringGroupCreatorImpl {
58public:
59 CenteringGroup::CenteringType getCenteringType(const std::string &centeringSymbol) const;
60
61 std::vector<SymmetryOperation> getSymmetryOperations(CenteringGroup::CenteringType centeringType) const;
62
63protected:
64 std::vector<SymmetryOperation> getPrimitive() const;
65 std::vector<SymmetryOperation> getBodyCentered() const;
66 std::vector<SymmetryOperation> getACentered() const;
67 std::vector<SymmetryOperation> getBCentered() const;
68 std::vector<SymmetryOperation> getCCentered() const;
69 std::vector<SymmetryOperation> getFCentered() const;
70 std::vector<SymmetryOperation> getRobvCentered() const;
71 std::vector<SymmetryOperation> getRrevCentered() const;
73
74 std::map<std::string, CenteringGroup::CenteringType> m_centeringSymbolMap;
75
76private:
78};
79
81
82} // namespace Geometry
83} // namespace Mantid
84
85namespace Mantid {
86namespace Kernel {
87EXTERN_MANTID_GEOMETRY template class MANTID_GEOMETRY_DLL
89}
90} // namespace Mantid
Helper class to keep this out of the interface of CenteringGroup.
std::map< std::string, CenteringGroup::CenteringType > m_centeringSymbolMap
This class is mostly a convenience class.
The class Group represents a set of symmetry operations (or symmetry group).
Definition: Group.h:135
Manage the lifetime of a class intended to be a singleton.
std::shared_ptr< CenteringGroup > CenteringGroup_sptr
std::shared_ptr< const CenteringGroup > CenteringGroup_const_sptr
Helper class which provides the Collimation Length for SANS instruments.
Policy class controlling creation of the singleton Implementation classes should mark their default c...