16 #ifndef BORNAGAIN_CORE_SCAN_ISPECULARSCAN_H
17 #define BORNAGAIN_CORE_SCAN_ISPECULARSCAN_H
38 virtual std::vector<SpecularSimulationElement>
49 virtual std::vector<double>
footprint(
size_t i,
size_t n_elements)
const = 0;
55 virtual std::vector<double>
Defines and implements the standard mix-in ICloneable.
Interface for one-dimensional axes.
Interface for polymorphic classes that should not be copied, except by explicit cloning.
Abstract base class for all types of specular scans.
virtual std::vector< double > footprint(size_t i, size_t n_elements) const =0
Returns footprint correction factor for a range of simulation elements of size n_elements and startin...
virtual const IAxis * coordinateAxis() const =0
Returns coordinate axis assigned to the data holder.
virtual const IFootprintFactor * footprintFactor() const =0
Returns IFootprintFactor object pointer.
virtual std::vector< SpecularSimulationElement > generateSimulationElements(const Instrument &instrument) const =0
Generates simulation elements for specular simulations.
ISpecularScan * clone() const override=0
virtual std::vector< double > createIntensities(const std::vector< SpecularSimulationElement > &sim_elements) const =0
Returns intensity vector corresponding to convolution of given simulation elements.
virtual size_t numberOfSimulationElements() const =0
Returns the number of simulation elements.
Assembles beam, detector and their relative positions with respect to the sample.
Data stucture containing both input and output of a single image pixel for specular simulation.