BornAgain  1.18.0
Simulate and fit neutron and x-ray scattering at grazing incidence
IFormFactor Class Referenceabstract

Pure virtual base class for all form factors. More...

+ Inheritance diagram for IFormFactor:

Public Member Functions

 IFormFactor (const NodeMeta &meta, const std::vector< double > &PValues)
 
IFormFactor * clone () const override=0
 Returns a clone of this ISample object.
 
IFormFactor * createSlicedFormFactor (ZLimits limits, const IRotation &rot, kvector_t translation) const
 Creates a (possibly sliced) form factor with the given rotation and translation.
 
virtual void setAmbientMaterial (const Material &)=0
 Passes the material in which this particle is embedded.
 
virtual complex_t evaluate (const WavevectorInfo &wavevectors) const =0
 Returns scattering amplitude for complex wavevectors ki, kf.
 
virtual Eigen::Matrix2cd evaluatePol (const WavevectorInfo &wavevectors) const
 Returns scattering amplitude for matrix interactions.
 
virtual double volume () const
 Returns the total volume of the particle of this form factor's shape.
 
virtual double radialExtension () const =0
 Returns the (approximate in some cases) radial size of the particle of this form factor's shape. More...
 
virtual double bottomZ (const IRotation &rotation) const =0
 Returns the z-coordinate of the lowest point in this shape after a given rotation.
 
virtual double topZ (const IRotation &rotation) const =0
 Returns the z-coordinate of the lowest point in this shape after a given rotation.
 
virtual void setSpecularInfo (std::unique_ptr< const ILayerRTCoefficients >, std::unique_ptr< const ILayerRTCoefficients >)
 Sets reflection/transmission info.
 
- Public Member Functions inherited from ISample
 ISample (const NodeMeta &meta, const std::vector< double > &PValues)
 
virtual const Material * material () const
 Returns nullptr, unless overwritten to return a specific material.
 
std::vector< const Material * > containedMaterials () const
 Returns set of unique materials contained in this ISample.
 
- Public Member Functions inherited from ICloneable
 ICloneable (const ICloneable &)=delete
 
 ICloneable (ICloneable &&)=default
 
virtual void transferToCPP ()
 Used for Python overriding of clone (see swig/tweaks.py)
 
- Public Member Functions inherited from INode
 INode (const NodeMeta &meta, const std::vector< double > &PValues)
 
virtual void accept (INodeVisitor *visitor) const =0
 Calls the INodeVisitor's visit method.
 
virtual std::string treeToString () const
 Returns multiline string representing tree structure below the node.
 
void registerChild (INode *node)
 
virtual std::vector< const INode * > getChildren () const
 Returns a vector of children (const).
 
virtual void setParent (const INode *newParent)
 
const INode * parent () const
 
INode * parent ()
 
int copyNumber (const INode *node) const
 Returns copyNumber of child, which takes into account existence of children with same name.
 
std::string displayName () const
 Returns display name, composed from the name of node and it's copy number.
 
ParameterPool * createParameterTree () const
 Creates new parameter pool, with all local parameters and those of its children.
 
- Public Member Functions inherited from IParameterized
 IParameterized (const std::string &name="")
 
 IParameterized (const IParameterized &other)
 
IParameterized & operator= (const IParameterized &other)=delete
 
ParameterPool * parameterPool () const
 Returns pointer to the parameter pool.
 
std::string parametersToString () const
 Returns multiline string representing available parameters.
 
RealParameter & registerParameter (const std::string &name, double *parpointer)
 
void registerVector (const std::string &base_name, kvector_t *p_vec, const std::string &units="nm")
 
void setParameterValue (const std::string &name, double value)
 
void setVectorValue (const std::string &base_name, kvector_t value)
 
RealParameter * parameter (const std::string &name) const
 Returns parameter with given 'name'.
 
virtual void onChange ()
 Action to be taken in inherited class when a parameter has changed.
 
void removeParameter (const std::string &name)
 
void removeVector (const std::string &base_name)
 
void setName (const std::string &name)
 
const std::string & getName () const
 

Protected Member Functions

virtual bool canSliceAnalytically (const IRotation &rot) const
 Checks if slicing has a fast analytical solution.
 
virtual IFormFactor * sliceFormFactor (ZLimits limits, const IRotation &rot, kvector_t translation) const
 Actually slices the form factor or throws an exception.
 

Additional Inherited Members

- Static Public Member Functions inherited from IParameterized
static std::string XComponentName (const std::string &base_name)
 
static std::string YComponentName (const std::string &base_name)
 
static std::string ZComponentName (const std::string &base_name)
 
- Protected Attributes inherited from INode
const size_t m_NP
 
std::vector< double > m_P
 

Detailed Description

Pure virtual base class for all form factors.

The actual form factor is returned by the complex valued function IFormFactor::evaluate, which depends on the incoming and outgoing wave vectors ki and kf. If it only depends on the scattering vector q=ki-kf, then it is a IBornFormFactor.

Other children besides IBornFormFactor are IFormFactorDecorator, FormFactorWeighted, FormFactorDWBA, FormFactorDWBAPol and FormFactorCrystal.

Definition at line 39 of file IFormFactor.h.

Member Function Documentation

◆ radialExtension()


The documentation for this class was generated from the following files: