Mantid
Loading...
Searching...
No Matches
IsotropicAtomBraggScatterer.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
12
13namespace Mantid {
14namespace Geometry {
15
16class IsotropicAtomBraggScatterer;
17
18using IsotropicAtomBraggScatterer_sptr = std::shared_ptr<IsotropicAtomBraggScatterer>;
19
79public:
81
82 std::string name() const override { return "IsotropicAtomBraggScatterer"; }
83 BraggScatterer_sptr clone() const override;
84
86 const std::string &getElement() const { return m_label; }
88 const PhysicalConstants::NeutronAtom &getNeutronAtom() const { return m_atom; }
89
90 double getOccupancy() const;
91 double getU() const;
92
93 StructureFactor calculateStructureFactor(const Kernel::V3D &hkl) const override;
94
95protected:
96 void setElement(const std::string &element);
97
98 void declareScattererProperties() override;
99 void afterScattererPropertySet(const std::string &propertyName) override;
100
101 double getDebyeWallerFactor(const Kernel::V3D &hkl) const;
102 double getScatteringLength() const;
103
105 std::string m_label;
106};
107
108using IsotropicAtomBraggScatterer_sptr = std::shared_ptr<IsotropicAtomBraggScatterer>;
109
110class MANTID_GEOMETRY_DLL IsotropicAtomBraggScattererParser {
111public:
112 IsotropicAtomBraggScattererParser(std::string scattererString);
113
114 std::vector<BraggScatterer_sptr> operator()() const;
115
116private:
117 BraggScatterer_sptr getScatterer(const std::string &singleScatterer) const;
118 std::vector<std::string> getCleanScattererTokens(const std::vector<std::string> &tokens) const;
119
120 std::string m_scattererString;
121};
122
123MANTID_GEOMETRY_DLL std::string getIsotropicAtomBraggScattererString(const BraggScatterer_sptr &scatterer);
124
125} // namespace Geometry
126} // namespace Mantid
This class provides an extension of BraggScatterer, suitable for scatterers that are part of a crysta...
IsotropicAtomBraggScatterer calculates the structure factor for a given HKL using the following equat...
const std::string & getElement() const
Returns the string representation of the contained element.
const PhysicalConstants::NeutronAtom & getNeutronAtom() const
Returns the internally stored NeutronAtom that holds element specific data.
Class for 3D vectors.
Definition V3D.h:34
std::shared_ptr< IsotropicAtomBraggScatterer > IsotropicAtomBraggScatterer_sptr
MANTID_GEOMETRY_DLL std::string getIsotropicAtomBraggScattererString(const BraggScatterer_sptr &scatterer)
std::shared_ptr< BraggScatterer > BraggScatterer_sptr
std::complex< double > StructureFactor
Helper class which provides the Collimation Length for SANS instruments.
Structure to store neutronic scattering information for the various elements.
Definition NeutronAtom.h:22