BornAgain  1.19.0
Simulate and fit neutron and x-ray scattering at grazing incidence
FormFactorSphereLogNormalRadius.h
Go to the documentation of this file.
1 // ************************************************************************************************
2 //
3 // BornAgain: simulate and fit reflection and scattering
4 //
5 //! @file Sample/SoftParticle/FormFactorSphereLogNormalRadius.h
6 //! @brief Defines and implements class FormFactorSphereLogNormalRadius.
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_SAMPLE_SOFTPARTICLE_FORMFACTORSPHERELOGNORMALRADIUS_H
16 #define BORNAGAIN_SAMPLE_SOFTPARTICLE_FORMFACTORSPHERELOGNORMALRADIUS_H
17 
20 #include <memory>
21 
22 //! A sphere with log normal radius distribution.
23 //! @ingroup softParticle
24 
26 public:
27  FormFactorSphereLogNormalRadius(const std::vector<double> P, size_t n_samples = 0);
28  FormFactorSphereLogNormalRadius(double mean, double scale_param, size_t n_samples);
29 
31 
32  void accept(INodeVisitor* visitor) const final { visitor->visit(this); }
33 
34  double radialExtension() const final { return m_mean; }
35 
36  complex_t evaluate_for_q(cvector_t q) const final;
37 
38 protected:
39  void onChange() final;
40 
41 private:
42  const double& m_mean;
43  const double& m_scale_param;
44  size_t m_n_samples;
45 
46  std::vector<double> m_radii;
47  std::vector<double> m_probabilities;
48 };
49 
50 #endif // BORNAGAIN_SAMPLE_SOFTPARTICLE_FORMFACTORSPHERELOGNORMALRADIUS_H
std::complex< double > complex_t
Definition: Complex.h:20
Defines interface IBornFF.
Defines and implements template class SafePointerVector.
A sphere with log normal radius distribution.
double radialExtension() const final
Returns the (approximate in some cases) radial size of the particle of this form factor's shape.
void onChange() final
Action to be taken in inherited class when a parameter has changed.
FormFactorSphereLogNormalRadius * clone() const final
Returns a clone of this ISampleNode object.
FormFactorSphereLogNormalRadius(const std::vector< double > P, size_t n_samples=0)
void accept(INodeVisitor *visitor) const final
Calls the INodeVisitor's visit method.
complex_t evaluate_for_q(cvector_t q) const final
Returns scattering amplitude for complex scattering wavevector q=k_i-k_f.
Abstract base class for Born form factors.
Definition: IBornFF.h:41
Visitor interface to visit ISampleNode objects.
Definition: INodeVisitor.h:146
Definition: filesystem.h:81