15 #ifndef BORNAGAIN_CORE_SIMULATION_DEPTHPROBESIMULATION_H 
   16 #define BORNAGAIN_CORE_SIMULATION_DEPTHPROBESIMULATION_H 
   48     void setBeamParameters(
double lambda, 
int nbins, 
double alpha_i_min, 
double alpha_i_max,
 
   53     void setZSpan(
size_t n_bins, 
double z_min, 
double z_max);
 
   65     std::unique_ptr<IUnitConverter> createUnitConverter() 
const;
 
   76     void initSimulationElementVector() 
override;
 
   79     size_t numberOfSimulationElements() 
const override;
 
   82     std::vector<DepthProbeElement> generateSimulationElements(
const Beam& beam);
 
   87     std::unique_ptr<IComputation> generateSingleThreadedComputation(
size_t start,
 
   88                                                                     size_t n_elements) 
override;
 
   91     void validityCheck() 
const;
 
   93     void checkCache() 
const;
 
  104     void normalize(
size_t start_ind, 
size_t n_elements) 
override;
 
  106     void addBackgroundIntensity(
size_t start_ind, 
size_t n_elements) 
override;
 
  108     void addDataToCache(
double weight) 
override;
 
  110     void moveDataFromCache() 
override;
 
  112     double incidentAngle(
size_t index) 
const;
 
  115     std::unique_ptr<OutputData<double>> createIntensityData() 
const;
 
  117     std::vector<double> rawResults() 
const override;
 
  118     void setRawResults(
const std::vector<double>& raw_data) 
override;
 
  120     std::unique_ptr<IAxis> m_alpha_axis;
 
  121     std::unique_ptr<IAxis> m_z_axis;
 
  122     std::vector<DepthProbeElement> m_sim_elements;
 
  123     std::vector<std::valarray<double>> m_cache;
 
Defines class DepthProbeElement.
 
Defines and implements class ILayerRTCoefficients.
 
Defines class Simulation.
 
Beam defined by wavelength, direction and intensity.
 
const IAxis * getAlphaAxis() const
Returns a pointer to incident angle axis.
 
SimulationResult result() const override
Returns the results of the simulation in a format that supports unit conversion and export to numpy a...
 
void setBeamParameters(double lambda, int nbins, double alpha_i_min, double alpha_i_max, const IFootprintFactor *beam_shape=nullptr)
Sets beam parameters with alpha_i of the beam defined in the range.
 
void setZSpan(size_t n_bins, double z_min, double z_max)
Set z positions for intensity calculations.
 
const IAxis * getZAxis() const
Returns a pointer to z-position axis.
 
size_t intensityMapSize() const override
Returns the total number of the intensity values in the simulation result.
 
void accept(INodeVisitor *visitor) const override final
Calls the INodeVisitor's visit method.
 
One dimensional histogram.
 
Interface for one-dimensional axes.
 
Interface for a single-threaded computation with given range of SimulationElements and ProgressHandle...
 
Visitor interface to visit ISample objects.
 
Interface to the class capable to build samples to simulate.
 
Pure virtual base class for sample components and properties related to scattering.
 
Interface to provide axis translations to different units for simulation output.
 
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.
 
Pure virtual base class of OffSpecularSimulation, GISASSimulation and SpecularSimulation.