BornAgain  1.18.0
Simulate and fit neutron and x-ray scattering at grazing incidence
SpecularComputationTerm Class Referenceabstract
Inheritance diagram for SpecularComputationTerm:
Collaboration diagram for SpecularComputationTerm:

Public Member Functions

 SpecularComputationTerm (std::unique_ptr< ISpecularStrategy > strategy)
 
virtual ~SpecularComputationTerm ()
 
 SpecularComputationTerm (const SpecularComputationTerm &other)=delete
 
SpecularComputationTermoperator= (const SpecularComputationTerm &other)=delete
 
void setProgressHandler (ProgressHandler *p_progress)
 
void computeIntensity (SpecularSimulationElement &elem, const std::vector< Slice > &slices) const
 

Protected Member Functions

virtual void eval (SpecularSimulationElement &elem, const std::vector< Slice > &slices) const =0
 

Protected Attributes

std::unique_ptr< ISpecularStrategym_Strategy
 

Private Attributes

std::unique_ptr< DelayedProgressCountermP_progress_counter
 

Detailed Description

Computes the specular scattering.

Used by SpecularComputation.

Pure virtual base class of SpecularScalarTerm, SpecularMatrixTerm

Definition at line 35 of file SpecularComputationTerm.h.

Constructor & Destructor Documentation

◆ SpecularComputationTerm() [1/2]

SpecularComputationTerm::SpecularComputationTerm ( std::unique_ptr< ISpecularStrategy strategy)

Definition at line 24 of file SpecularComputationTerm.cpp.

25  : m_Strategy(std::move(strategy)){};
std::unique_ptr< ISpecularStrategy > m_Strategy

◆ ~SpecularComputationTerm()

SpecularComputationTerm::~SpecularComputationTerm ( )
virtualdefault

◆ SpecularComputationTerm() [2/2]

SpecularComputationTerm::SpecularComputationTerm ( const SpecularComputationTerm other)
delete

Member Function Documentation

◆ operator=()

SpecularComputationTerm& SpecularComputationTerm::operator= ( const SpecularComputationTerm other)
delete

◆ setProgressHandler()

void SpecularComputationTerm::setProgressHandler ( ProgressHandler p_progress)

Definition at line 34 of file SpecularComputationTerm.cpp.

35 {
36  mP_progress_counter = std::make_unique<DelayedProgressCounter>(p_progress, 100);
37 }
std::unique_ptr< DelayedProgressCounter > mP_progress_counter

References mP_progress_counter.

◆ computeIntensity()

void SpecularComputationTerm::computeIntensity ( SpecularSimulationElement elem,
const std::vector< Slice > &  slices 
) const

Definition at line 39 of file SpecularComputationTerm.cpp.

41 {
42  if (!elem.isCalculated())
43  return;
44 
45  eval(elem, slices);
46 
48  mP_progress_counter->stepProgress();
49 }
virtual void eval(SpecularSimulationElement &elem, const std::vector< Slice > &slices) const =0
bool isCalculated() const
Returns calculation flag (if it's false, zero intensity is assigned to the element)

References eval(), SpecularSimulationElement::isCalculated(), and mP_progress_counter.

Here is the call graph for this function:

◆ eval()

virtual void SpecularComputationTerm::eval ( SpecularSimulationElement elem,
const std::vector< Slice > &  slices 
) const
protectedpure virtual

Implemented in SpecularMatrixTerm, and SpecularScalarTerm.

Referenced by computeIntensity().

Member Data Documentation

◆ m_Strategy

std::unique_ptr<ISpecularStrategy> SpecularComputationTerm::m_Strategy
protected

Definition at line 50 of file SpecularComputationTerm.h.

Referenced by SpecularScalarTerm::eval(), and SpecularMatrixTerm::eval().

◆ mP_progress_counter

std::unique_ptr<DelayedProgressCounter> SpecularComputationTerm::mP_progress_counter
private

Definition at line 53 of file SpecularComputationTerm.h.

Referenced by computeIntensity(), and setProgressHandler().


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