15 #ifndef BORNAGAIN_CORE_INSTRUMENT_ANGULARSPECSCAN_H
16 #define BORNAGAIN_CORE_INSTRUMENT_ANGULARSPECSCAN_H
37 AngularSpecScan(
double wl,
int nbins,
double alpha_i_min,
double alpha_i_max);
53 std::vector<double>
footprint(
size_t i,
size_t n_elements)
const override;
60 createIntensities(
const std::vector<SpecularSimulationElement>& sim_elements)
const override;
63 std::string
print()
const override;
65 double wavelength()
const {
return m_wl; }
68 const ScanResolution* wavelengthResolution()
const {
return m_wl_resolution.get(); }
69 const ScanResolution* angleResolution()
const {
return m_inc_resolution.get(); }
84 const std::vector<double>& rel_dev);
91 const std::vector<double>& std_dev);
102 const std::vector<double>& rel_dev);
109 const std::vector<double>& std_dev);
112 using DistrOutput = std::vector<std::vector<ParameterSample>>;
114 void checkInitialization();
115 DistrOutput applyWlResolution()
const;
116 DistrOutput applyIncResolution()
const;
119 std::unique_ptr<IAxis> m_inc_angle;
120 std::unique_ptr<IFootprintFactor> m_footprint;
122 std::unique_ptr<ScanResolution> m_wl_resolution;
123 mutable DistrOutput m_wl_res_cache;
125 std::unique_ptr<ScanResolution> m_inc_resolution;
126 mutable DistrOutput m_inc_res_cache;
Declares and implements pure virtual class ISpecularScan.
Scan type with inclination angles as coordinate values and a unique wavelength.
void setAngleResolution(const ScanResolution &resolution)
Sets angle resolution values via ScanResolution object.
virtual const IFootprintFactor * footprintFactor() const override
Returns IFootprintFactor object pointer.
std::vector< double > footprint(size_t i, size_t n_elements) const override
Returns footprint correction factor for a range of simulation elements of size n_elements and startin...
size_t numberOfSimulationElements() const override
Returns the number of simulation elements.
virtual const IAxis * coordinateAxis() const override
Returns coordinate axis assigned to the data holder.
std::vector< double > createIntensities(const std::vector< SpecularSimulationElement > &sim_elements) const override
Returns intensity vector corresponding to convolution of given simulation elements.
void setFootprintFactor(const IFootprintFactor *f_factor)
Sets footprint correction factor.
void setWavelengthResolution(const ScanResolution &resolution)
Sets wavelength resolution values via ScanResolution object.
std::string print() const override
Print scan definition in python format.
std::vector< SpecularSimulationElement > generateSimulationElements() const override
Generates simulation elements for specular simulations.
Interface for one-dimensional axes.
Pure virtual base class for all types of specular scans.
A parameter value with a weight, as obtained when sampling from a distribution.
Interface for one-dimensional ranged distributions.
Container for reflectivity resolution data.