16 #ifndef BORNAGAIN_SAMPLE_SCATTERING_IBORNFF_H
17 #define BORNAGAIN_SAMPLE_SCATTERING_IBORNFF_H
58 virtual double topZ(
const IRotation& rotation)
const override;
84 static double BottomZ(
const std::vector<kvector_t>& vertices,
const IRotation& rotation);
87 static double TopZ(
const std::vector<kvector_t>& vertices,
const IRotation& rotation);
std::complex< double > complex_t
Abstract base class for Born form factors.
std::unique_ptr< IShape3D > m_shape3D
IShape3D object, used to retrieve vertices (which may be approximate in the case of round shapes).
void setAmbientMaterial(const Material &) override
Passes the material in which this particle is embedded.
virtual Eigen::Matrix2cd evaluate_for_q_pol(cvector_t q) const
Returns scattering amplitude for complex scattering wavevector q=k_i-k_f in case of matrix interactio...
Eigen::Matrix2cd evaluatePol(const WavevectorInfo &wavevectors) const override
Returns scattering amplitude for matrix interactions.
static double TopZ(const std::vector< kvector_t > &vertices, const IRotation &rotation)
Calculates the z-coordinate of the highest vertex after rotation.
bool canSliceAnalytically(const IRotation &rot) const override
Default implementation only allows rotations along z-axis.
virtual double bottomZ(const IRotation &rotation) const override
Returns the z-coordinate of the lowest point in this shape after a given rotation.
IBornFF * clone() const override=0
Returns a clone of this ISampleNode object.
virtual double topZ(const IRotation &rotation) const override
Returns the z-coordinate of the lowest point in this shape after a given rotation.
virtual complex_t evaluate_for_q(cvector_t q) const =0
Returns scattering amplitude for complex scattering wavevector q=k_i-k_f.
complex_t evaluate(const WavevectorInfo &wavevectors) const override
Returns scattering amplitude for complex wavevectors ki, kf.
static double BottomZ(const std::vector< kvector_t > &vertices, const IRotation &rotation)
Calculates the z-coordinate of the lowest vertex after rotation.
static SlicingEffects computeSlicingEffects(ZLimits limits, const kvector_t &position, double height)
Helper method for slicing.
Abstract base class for rotations.
Abstract base class for different shapes.
A wrapper for underlying material implementation.
Holds all wavevector information relevant for calculating form factors.
Class that contains upper and lower limits of the z-coordinate for the slicing of form factors.
Nested structure that holds slicing effects on position and removed parts.