15 #ifndef BORNAGAIN_CORE_SIMULATION_SPECULARSIMULATION_H
16 #define BORNAGAIN_CORE_SIMULATION_SPECULARSIMULATION_H
76 size_t n_elements)
override;
89 void normalize(
size_t start_ind,
size_t n_elements)
override;
100 std::vector<double>
rawResults()
const override;
101 void setRawResults(
const std::vector<double>& raw_data)
override;
Defines interface ISimulation.
Interface for one-dimensional axes.
Interface for a single-threaded computation with given range of SimulationElements and ProgressHandle...
Visitor interface to visit ISampleNode objects.
Interface to the class capable to build samples to simulate.
Abstract base class for sample components and properties related to scattering.
Abstract base class of OffSpecularSimulation, GISASSimulation and SpecularSimulation.
Abstract base class for all types of specular scans.
Our sample model: a stack of layers one below the other.
A parametric distribution function, for use with any model parameter.
Wrapper around OutputData<double> that also provides unit conversions.
Data stucture containing both input and output of a single image pixel for specular simulation.
Main class to run a specular simulation.
std::vector< double > rawResults() const override
const IAxis * coordinateAxis() const
Returns a pointer to coordinate axis.
void initialize()
Initializes simulation.
SimulationResult result() const override
Returns the results of the simulation in a format that supports unit conversion and export to numpy a...
void setRawResults(const std::vector< double > &raw_data) override
SpecularSimulation * clone() const override
std::vector< double > m_cache
void addDataToCache(double weight) override
std::vector< SpecularSimulationElement > m_sim_elements
size_t intensityMapSize() const override
Returns the total number of the intensity values in the simulation result.
std::unique_ptr< ISpecularScan > m_scan
~SpecularSimulation() override
void initSimulationElementVector() override
Initializes the vector of ISimulation elements.
void setScan(const ISpecularScan &scan)
Sets chosen specular scan to the simulation.
void addBackgroundIntensity(size_t start_ind, size_t n_elements) override
void prepareSimulation() override
Put into a clean state for running a simulation.
size_t numberOfSimulationElements() const override
Gets the number of elements this simulation needs to calculate.
void moveDataFromCache() override
void validateParametrization(const ParameterDistribution &par_distr) const override
Checks the distribution validity for simulation.
const IFootprintFactor * footprintFactor() const
Returns a pointer to footprint factor holder.
void normalize(size_t start_ind, size_t n_elements) override
Normalize the detector counts to beam intensity, to solid angle, and to exposure angle.
const ISpecularScan * dataHandler() const
Returns internal data handler.
void accept(INodeVisitor *visitor) const final
Calls the INodeVisitor's visit method.
std::unique_ptr< IComputation > generateSingleThreadedComputation(size_t start, size_t n_elements) override
Generate a single threaded computation for a given range of simulation elements.