BornAgain  1.19.0
Simulate and fit neutron and x-ray scattering at grazing incidence
IComputeFF.cpp
Go to the documentation of this file.
1 // ************************************************************************************************
2 //
3 // BornAgain: simulate and fit reflection and scattering
4 //
5 //! @file Sample/FFCompute/IComputeFF.cpp
6 //! @brief Implements interface class IFormFactor.
7 //!
8 //! @homepage http://www.bornagainproject.org
9 //! @license GNU General Public License v3 or higher (see COPYING)
10 //! @copyright Forschungszentrum Jülich GmbH 2018
11 //! @authors Scientific Computing Group at MLZ (see CITATION, AUTHORS)
12 //
13 // ************************************************************************************************
14 
16 #include "Sample/RT/ILayerRTCoefficients.h" // required by VS19 compiler
18 #include <stdexcept>
19 
20 IComputeFF::IComputeFF(const IFormFactor& ff) : m_ff(ff.clone()) {}
21 
22 IComputeFF::~IComputeFF() = default;
23 
25 {
26  m_ff->setAmbientMaterial(material);
27 }
28 
29 double IComputeFF::volume() const
30 {
31  return m_ff->volume();
32 }
33 
35 {
36  return m_ff->radialExtension();
37 }
38 
39 double IComputeFF::bottomZ(const IRotation& rotation) const
40 {
41  return m_ff->bottomZ(rotation);
42 }
43 
44 double IComputeFF::topZ(const IRotation& rotation) const
45 {
46  return m_ff->topZ(rotation);
47 }
48 
49 Eigen::Matrix2cd IComputeFF::evaluatePol(const WavevectorInfo&) const
50 {
51  throw std::runtime_error("Bug: impossible call to FFCompute::evaluatePol");
52 }
53 
54 void IComputeFF::setSpecularInfo(std::unique_ptr<const ILayerRTCoefficients>,
55  std::unique_ptr<const ILayerRTCoefficients>)
56 {
57 }
Defines and implements interface IFormFactor.
Defines and implements interface IFormFactor.
Defines and implements class ILayerRTCoefficients.
virtual double topZ(const IRotation &rotation) const
Definition: IComputeFF.cpp:44
virtual void setAmbientMaterial(const Material &material)
Definition: IComputeFF.cpp:24
IComputeFF()=delete
virtual void setSpecularInfo(std::unique_ptr< const ILayerRTCoefficients >, std::unique_ptr< const ILayerRTCoefficients >)
Sets reflection/transmission info.
Definition: IComputeFF.cpp:54
std::unique_ptr< IFormFactor > m_ff
Definition: IComputeFF.h:64
virtual double bottomZ(const IRotation &rotation) const
Definition: IComputeFF.cpp:39
virtual double radialExtension() const
Definition: IComputeFF.cpp:34
virtual ~IComputeFF()
virtual Eigen::Matrix2cd evaluatePol(const WavevectorInfo &wavevectors) const
Returns scattering amplitude for matrix interactions.
Definition: IComputeFF.cpp:49
virtual double volume() const
Definition: IComputeFF.cpp:29
Abstract base class for all form factors.
Definition: IFormFactor.h:36
Abstract base class for rotations.
Definition: Rotations.h:28
A wrapper for underlying material implementation.
Definition: Material.h:29
Holds all wavevector information relevant for calculating form factors.