35 for (
size_t i = 0; i < N; ++i) {
40 m_sigmas.push_back(p_roughness->getSigma());
54 std::vector<complex_t> result(z_values.size(), top_value);
55 for (
size_t i = 0; i <
m_zlimits.size(); ++i) {
57 for (
size_t j = 0; j < z_values.size(); ++j) {
60 result[j] += sld_diff * t;
71 double default_margin = interface_span > 0.0 ? interface_span / 20.0 : 10.0;
72 double top_margin =
m_sigmas.front() > 0.0 ? 5.0 *
m_sigmas.front() : default_margin;
73 double bottom_margin =
m_sigmas.back() > 0.0 ? 5.0 *
m_sigmas.back() : default_margin;
74 double z_min =
m_zlimits.back() - bottom_margin;
75 double z_max =
m_zlimits.front() + top_margin;
76 return {z_min, z_max};
86 return x < 0.0 ? 1.0 : 0.0;
91 return (1.0 - std::tanh(
prefactor * x)) / 2.0;
std::complex< double > complex_t
Defines class LayerRoughness.
Defines class ProcessedSample.
Defines class ProfileHelper.
Data structure that contains all the necessary data for scattering calculations.
double sliceBottomZ(size_t i) const
size_t numberOfSlices() const
const std::vector< Slice > & averageSlices() const
const LayerRoughness * bottomRoughness(size_t i) const
std::vector< complex_t > m_materialdata
std::pair< double, double > defaultLimits() const
std::vector< complex_t > calculateProfile(const std::vector< double > &z_values) const
std::vector< double > m_sigmas
ProfileHelper(const ProcessedSample &sample)
std::vector< double > m_zlimits
double TransitionTanh(double x)
double Transition(double x, double sigma)