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.