BornAgain  1.19.0
Simulate and fit neutron and x-ray scattering at grazing incidence
FormFactorLongBoxGauss.h
Go to the documentation of this file.
1 // ************************************************************************************************
2 //
3 // BornAgain: simulate and fit reflection and scattering
4 //
5 //! @file Sample/HardParticle/FormFactorLongBoxGauss.h
6 //! @brief Defines class FormFactorLongBoxGauss.
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_HARDPARTICLE_FORMFACTORLONGBOXGAUSS_H
16 #define BORNAGAIN_SAMPLE_HARDPARTICLE_FORMFACTORLONGBOXGAUSS_H
17 
19 
20 //! The form factor for a long rectangular box.
21 //! @ingroup legacyGrating
22 
24 public:
25  FormFactorLongBoxGauss(const std::vector<double> P);
26  FormFactorLongBoxGauss(double length, double width, double height);
27 
29  {
31  }
32  void accept(INodeVisitor* visitor) const final { visitor->visit(this); }
33 
34  double getLength() const { return m_length; }
35  double getHeight() const { return m_height; }
36  double getWidth() const { return m_width; }
37  double radialExtension() const final { return m_length / 2.0; }
38 
39  complex_t evaluate_for_q(cvector_t q) const final;
40 
41 protected:
42  IFormFactor* sliceFormFactor(ZLimits limits, const IRotation& rot,
43  kvector_t translation) const final;
44 
45  void onChange() final;
46 
47 private:
48  const double& m_length;
49  const double& m_width;
50  const double& m_height;
51 };
52 
53 #endif // BORNAGAIN_SAMPLE_HARDPARTICLE_FORMFACTORLONGBOXGAUSS_H
std::complex< double > complex_t
Definition: Complex.h:20
Defines interface IBornFF.
The form factor for a long rectangular box.
FormFactorLongBoxGauss(const std::vector< double > P)
FormFactorLongBoxGauss * clone() const final
Returns a clone of this ISampleNode object.
IFormFactor * sliceFormFactor(ZLimits limits, const IRotation &rot, kvector_t translation) const final
Actually slices the form factor or throws an exception.
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.
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
Abstract base class for all form factors.
Definition: IFormFactor.h:36
Visitor interface to visit ISampleNode objects.
Definition: INodeVisitor.h:146
Abstract base class for rotations.
Definition: Rotations.h:28
Class that contains upper and lower limits of the z-coordinate for the slicing of form factors.
Definition: ZLimits.h:45