BornAgain  1.19.0
Simulate and fit neutron and x-ray scattering at grazing incidence
SpecularComputationTerm Class Referenceabstract

Computes the specular scattering. More...

Inheritance diagram for SpecularComputationTerm:
[legend]

Public Member Functions

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

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< DelayedProgressCounterm_progress_counter
 

Detailed Description

Computes the specular scattering.

Used by SpecularComputation.

Abstract base class of SpecularScalarTerm, SpecularMatrixTerm

Definition at line 40 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

◆ 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  m_progress_counter->stepProgress();
49 }
std::unique_ptr< DelayedProgressCounter > m_progress_counter
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 m_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().

◆ 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  m_progress_counter = std::make_unique<DelayedProgressCounter>(p_progress, 100);
37 }

References m_progress_counter.

Member Data Documentation

◆ m_progress_counter

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

Definition at line 57 of file SpecularComputationTerm.h.

Referenced by computeIntensity(), and setProgressHandler().

◆ m_Strategy

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

Definition at line 54 of file SpecularComputationTerm.h.

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


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