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
85 std::string getElement() const;
86 PhysicalConstants::NeutronAtom getNeutronAtom() const;
87
88 double getOccupancy() const;
89 double getU() const;
90
91 StructureFactor calculateStructureFactor(const Kernel::V3D &hkl) const override;
92
93protected:
94 void setElement(const std::string &element);
95
96 void declareScattererProperties() override;
97 void afterScattererPropertySet(const std::string &propertyName) override;
98
99 double getDebyeWallerFactor(const Kernel::V3D &hkl) const;
100 double getScatteringLength() const;
101
103 std::string m_label;
104};
105
106using IsotropicAtomBraggScatterer_sptr = std::shared_ptr<IsotropicAtomBraggScatterer>;
107
108class MANTID_GEOMETRY_DLL IsotropicAtomBraggScattererParser {
109public:
110 IsotropicAtomBraggScattererParser(std::string scattererString);
111
112 std::vector<BraggScatterer_sptr> operator()() const;
113
114private:
115 BraggScatterer_sptr getScatterer(const std::string &singleScatterer) const;
116 std::vector<std::string> getCleanScattererTokens(const std::vector<std::string> &tokens) const;
117
118 std::string m_scattererString;
119};
120
121MANTID_GEOMETRY_DLL std::string getIsotropicAtomBraggScattererString(const BraggScatterer_sptr &scatterer);
122
123} // namespace Geometry
124} // 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...
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