BornAgain
1.18.0
Simulate and fit neutron and x-ray scattering at grazing incidence
FormFactorHemiEllipsoid.h
Go to the documentation of this file.
1
// ************************************************************************** //
2
//
3
// BornAgain: simulate and fit scattering at grazing incidence
4
//
5
//! @file Sample/HardParticle/FormFactorHemiEllipsoid.h
6
//! @brief Defines class FormFactorHemiEllipsoid.
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_HARDPARTICLE_FORMFACTORHEMIELLIPSOID_H
16
#define BORNAGAIN_CORE_HARDPARTICLE_FORMFACTORHEMIELLIPSOID_H
17
18
#include "
Sample/Scattering/IFormFactorBorn.h
"
19
20
//! An hemi ellipsoid,
21
//! obtained by truncating a full ellipsoid in the middle plane spanned by two principal axes.
22
//! @ingroup hardParticle
23
24
class
FormFactorHemiEllipsoid
:
public
IFormFactorBorn
25
{
26
public
:
27
FormFactorHemiEllipsoid
(
const
std::vector<double> P);
28
FormFactorHemiEllipsoid
(
double
radius_x,
double
radius_y,
double
height
);
29
virtual
~FormFactorHemiEllipsoid
() {}
30
31
FormFactorHemiEllipsoid
*
clone
() const override final
32
{
33
return
new
FormFactorHemiEllipsoid
(
m_radius_x
,
m_radius_y
,
m_height
);
34
}
35
void
accept
(
INodeVisitor
* visitor)
const
override
final
{ visitor->visit(
this
); }
36
37
double
getHeight
()
const
{
return
m_height
; }
38
double
getRadiusX
()
const
{
return
m_radius_x
; }
39
double
getRadiusY
()
const
{
return
m_radius_y
; }
40
41
double
radialExtension
() const override final;
42
43
complex_t
evaluate_for_q
(
cvector_t
q) const override final;
44
45
protected:
46
void
onChange
() override final;
47
48
private:
49
complex_t
Integrand
(
double
Z) const;
50
51
const
double
&
m_radius_x
;
52
const
double
&
m_radius_y
;
53
const
double
&
m_height
;
54
mutable
cvector_t
m_q
;
55
};
56
57
#endif
// BORNAGAIN_CORE_HARDPARTICLE_FORMFACTORHEMIELLIPSOID_H
complex_t
std::complex< double > complex_t
Definition:
Complex.h:20
IFormFactorBorn.h
Defines pure virtual interface class IFormFactorBorn.
BasicVector3D< std::complex< double > >
FormFactorHemiEllipsoid
An hemi ellipsoid, obtained by truncating a full ellipsoid in the middle plane spanned by two princip...
Definition:
FormFactorHemiEllipsoid.h:25
FormFactorHemiEllipsoid::onChange
void onChange() override final
Action to be taken in inherited class when a parameter has changed.
Definition:
FormFactorHemiEllipsoid.cpp:75
FormFactorHemiEllipsoid::getRadiusX
double getRadiusX() const
Definition:
FormFactorHemiEllipsoid.h:38
FormFactorHemiEllipsoid::getRadiusY
double getRadiusY() const
Definition:
FormFactorHemiEllipsoid.h:39
FormFactorHemiEllipsoid::~FormFactorHemiEllipsoid
virtual ~FormFactorHemiEllipsoid()
Definition:
FormFactorHemiEllipsoid.h:29
FormFactorHemiEllipsoid::getHeight
double getHeight() const
Definition:
FormFactorHemiEllipsoid.h:37
FormFactorHemiEllipsoid::accept
void accept(INodeVisitor *visitor) const override final
Calls the INodeVisitor's visit method.
Definition:
FormFactorHemiEllipsoid.h:35
FormFactorHemiEllipsoid::m_height
const double & m_height
Definition:
FormFactorHemiEllipsoid.h:53
FormFactorHemiEllipsoid::clone
FormFactorHemiEllipsoid * clone() const override final
Returns a clone of this ISample object.
Definition:
FormFactorHemiEllipsoid.h:31
FormFactorHemiEllipsoid::evaluate_for_q
complex_t evaluate_for_q(cvector_t q) const override final
Returns scattering amplitude for complex scattering wavevector q=k_i-k_f.
Definition:
FormFactorHemiEllipsoid.cpp:63
FormFactorHemiEllipsoid::m_q
cvector_t m_q
Definition:
FormFactorHemiEllipsoid.h:54
FormFactorHemiEllipsoid::Integrand
complex_t Integrand(double Z) const
Integrand for complex form factor.
Definition:
FormFactorHemiEllipsoid.cpp:45
FormFactorHemiEllipsoid::m_radius_x
const double & m_radius_x
Definition:
FormFactorHemiEllipsoid.h:51
FormFactorHemiEllipsoid::m_radius_y
const double & m_radius_y
Definition:
FormFactorHemiEllipsoid.h:52
FormFactorHemiEllipsoid::radialExtension
double radialExtension() const override final
Returns the (approximate in some cases) radial size of the particle of this form factor's shape.
Definition:
FormFactorHemiEllipsoid.cpp:39
FormFactorHemiEllipsoid::FormFactorHemiEllipsoid
FormFactorHemiEllipsoid(const std::vector< double > P)
Definition:
FormFactorHemiEllipsoid.cpp:22
IFormFactorBorn
Pure virtual base class for Born form factors.
Definition:
IFormFactorBorn.h:32
INodeVisitor
Visitor interface to visit ISample objects.
Definition:
INodeVisitor.h:149
anonymous_namespace{BoxCompositionBuilder.cpp}::height
const double height
Definition:
BoxCompositionBuilder.cpp:32
Sample
HardParticle
FormFactorHemiEllipsoid.h
Generated by
1.9.1