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.