BornAgain  1.18.0
Simulate and fit neutron and x-ray scattering at grazing incidence
SSCAHelper.h
Go to the documentation of this file.
1 // ************************************************************************** //
2 //
3 // BornAgain: simulate and fit scattering at grazing incidence
4 //
5 //! @file Sample/Interference/SSCAHelper.h
6 //! @brief Defines class SSCAHelper.
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 
15 #ifndef BORNAGAIN_CORE_MULTILAYER_SSCAHELPER_H
16 #define BORNAGAIN_CORE_MULTILAYER_SSCAHELPER_H
17 
20 #include <Eigen/StdVector>
21 
24 
25 //! Helper class for SSCApproximationStrategy, offering some methods, shared between
26 //! the scalar and polarized scattering calculations
27 //! @ingroup algorithms_internal
28 
30 {
31 public:
32  SSCAHelper(double kappa);
33 
34  void init(const std::vector<FormFactorCoherentSum>& ff_wrappers);
35 
36  complex_t
38  const std::vector<FormFactorCoherentSum>& ff_wrappers) const;
39  complex_t getCharacteristicDistribution(double qp, const IInterferenceFunction* p_iff) const;
40  complex_t calculatePositionOffsetPhase(double qp, double radial_extension) const;
41  complex_t getMeanFormfactorNorm(double qp, const std::vector<complex_t>& precomputed_ff,
42  const std::vector<FormFactorCoherentSum>& ff_wrappers) const;
43  void getMeanFormfactors(double qp, Eigen::Matrix2cd& ff_orig, Eigen::Matrix2cd& ff_conj,
44  const InterferenceFunctionUtils::matrixFFVector_t& precomputed_ff,
45  const std::vector<FormFactorCoherentSum>& ff_wrappers) const;
46 
47 private:
48  double m_kappa;
49  double m_mean_radius;
50 };
51 
52 #endif // BORNAGAIN_CORE_MULTILAYER_SSCAHELPER_H
std::complex< double > complex_t
Definition: Complex.h:20
Defines class IInterferenceFunctionStrategy.
Defines helper functions for InterferenceFunctions and Strategies.
Information about particle form factor and abundance.
Pure virtual base class of interference functions.
Helper class for SSCApproximationStrategy, offering some methods, shared between the scalar and polar...
Definition: SSCAHelper.h:30
complex_t getMeanFormfactorNorm(double qp, const std::vector< complex_t > &precomputed_ff, const std::vector< FormFactorCoherentSum > &ff_wrappers) const
Definition: SSCAHelper.cpp:57
void init(const std::vector< FormFactorCoherentSum > &ff_wrappers)
Definition: SSCAHelper.cpp:22
double m_mean_radius
Definition: SSCAHelper.h:49
complex_t calculatePositionOffsetPhase(double qp, double radial_extension) const
Definition: SSCAHelper.cpp:51
void getMeanFormfactors(double qp, Eigen::Matrix2cd &ff_orig, Eigen::Matrix2cd &ff_conj, const InterferenceFunctionUtils::matrixFFVector_t &precomputed_ff, const std::vector< FormFactorCoherentSum > &ff_wrappers) const
Definition: SSCAHelper.cpp:71
SSCAHelper(double kappa)
Definition: SSCAHelper.cpp:20
complex_t getCharacteristicDistribution(double qp, const IInterferenceFunction *p_iff) const
Definition: SSCAHelper.cpp:41
double m_kappa
Definition: SSCAHelper.h:48
complex_t getCharacteristicSizeCoupling(double qp, const std::vector< FormFactorCoherentSum > &ff_wrappers) const
Definition: SSCAHelper.cpp:29
std::vector< Eigen::Matrix2cd, Eigen::aligned_allocator< Eigen::Matrix2cd > > matrixFFVector_t