diff --git a/Core/StandardSamples/MaterialBySLDBuilder.cpp b/Core/StandardSamples/MaterialBySLDBuilder.cpp index e8cbf33b8ef8d029cd3946c51b363106dea51183..6a7950cdf629db1dabcda85d9c5800bd2bce3ebe 100644 --- a/Core/StandardSamples/MaterialBySLDBuilder.cpp +++ b/Core/StandardSamples/MaterialBySLDBuilder.cpp @@ -20,9 +20,9 @@ MaterialBySLDBuilder::MaterialBySLDBuilder() : m_number_of_layers(10) - , m_si {4.1491e-6, 4.99e+1, 0.171 * Units::barn / 0.1798197} // [nm, nm^{-3}, nm^2] - , m_ti {-3.438e-6, 5.67e+1, 6.09 * Units::barn * 1e+4 / 0.1798197} // [nm, nm^{-3}, nm^2] - , m_ni {1.03e-5, 9.15e+1, 4.49 * Units::barn / 0.1798197} // [nm, nm^{-3}, nm^2] + , m_si { 2.0704e-06, 2.3726e-11} + , m_ti {-1.9493e-06, 9.6013e-06} + , m_ni { 9.4245e-06, 1.1423e-09} , m_thick_ti(3.0) // nm , m_thick_ni(7.0) //nm {} @@ -32,9 +32,9 @@ MultiLayer* MaterialBySLDBuilder::buildSample() const std::unique_ptr<MultiLayer> multi_layer(new MultiLayer()); Material vacuum_material = MaterialBySLD(); - Material substrate_material = MaterialBySLD("Si_substrate", m_si.sld(), m_si.abs_term()); - Material ni_material = MaterialBySLD("Ni", m_ni.sld(), m_ni.abs_term()); - Material ti_material = MaterialBySLD("Ti", m_ti.sld(), m_ti.abs_term()); + Material substrate_material = MaterialBySLD("Si_substrate", m_si.sld_real, m_si.sld_imag); + Material ni_material = MaterialBySLD("Ni", m_ni.sld_real, m_ni.sld_imag); + Material ti_material = MaterialBySLD("Ti", m_ti.sld_real, m_ti.sld_imag); Layer vacuum_layer(vacuum_material, 0); Layer ni_layer(ni_material, m_thick_ni); diff --git a/Core/StandardSamples/MaterialBySLDBuilder.h b/Core/StandardSamples/MaterialBySLDBuilder.h index 236a4ec02e6d8bcf7f2a83fe6864d11d112192f9..1af1c04d7928ea059f31a5443a57a5b6e2e5b57e 100644 --- a/Core/StandardSamples/MaterialBySLDBuilder.h +++ b/Core/StandardSamples/MaterialBySLDBuilder.h @@ -30,20 +30,8 @@ public: protected: struct MaterialData { - double sld() const - { - return density * scat_length; - } - - //! Returns macroscopic cross-section for 2200 m/s neutrons - double abs_term() const - { - return density * abs_cx; - } - - double scat_length; //!< bound coherent scattering length - double density; //!< number density - double abs_cx; //!< absorption cross-section for 2200 m/s neutrons + double sld_real; //!< real part of sld in AA^{-2} + double sld_imag; //!< imaginary part of sld in AA^{-2} }; size_t m_number_of_layers; MaterialData m_si; diff --git a/Examples/python/fitting/ex09_FitSpecular/FitSpecularBasics.py b/Examples/python/fitting/ex09_FitSpecular/FitSpecularBasics.py index 2e443d5b0122168d8837c363396d41396128fcd3..99f9aabb1ead188e73c5fe952f810a8902d0a8c3 100644 --- a/Examples/python/fitting/ex09_FitSpecular/FitSpecularBasics.py +++ b/Examples/python/fitting/ex09_FitSpecular/FitSpecularBasics.py @@ -15,27 +15,25 @@ from os import path wavelength = 1.54 * ba.angstrom # substrate (Si) -bc_si = 4.1491 * ba.angstrom * 1e-5 # bound coherent scattering length for Si +si_sld_real = 2.0704e-06 # \AA^{-2} density_si = 0.0499 / ba.angstrom ** 3 # Si atomic number density # layers' parameters n_repetitions = 10 # Ni -bc_ni = 10.3 * ba.angstrom * 1e-5 -density_ni = 0.0915 / ba.angstrom ** 3 +ni_sld_real = 9.4245e-06 # \AA^{-2} d_ni = 70 * ba.angstrom # Ti -bc_ti = -3.438 * ba.angstrom * 1e-5 -density_ti = 0.0567 / ba.angstrom ** 3 +ti_sld_real = -1.9493e-06 # \AA^{-2} d_ti = 30 * ba.angstrom def get_sample(): # defining materials m_air = ba.MaterialBySLD() - m_ni = ba.MaterialBySLD("Ni", density_ni * bc_ni, 0.0) - m_ti = ba.MaterialBySLD("Ti", density_ti * bc_ti, 0.0) - m_substrate = ba.MaterialBySLD("SiSubstrate", density_si * bc_si, 0.0) + m_ni = ba.MaterialBySLD("Ni", ni_sld_real, 0.0) + m_ti = ba.MaterialBySLD("Ti", ti_sld_real, 0.0) + m_substrate = ba.MaterialBySLD("SiSubstrate", si_sld_real, 0.0) # air layer and substrate form multi layer air_layer = ba.Layer(m_air) diff --git a/Examples/python/simulation/ex06_Reflectometry/BeamAngularDivergence.py b/Examples/python/simulation/ex06_Reflectometry/BeamAngularDivergence.py index 11050e8fe3f204ed4399334032ad98f03369f8aa..570ef4c41449029464dda48abb9db911cec5b777 100644 --- a/Examples/python/simulation/ex06_Reflectometry/BeamAngularDivergence.py +++ b/Examples/python/simulation/ex06_Reflectometry/BeamAngularDivergence.py @@ -21,27 +21,23 @@ n_sig = 3 # number of sigmas to convolve over n_points = 25 # number of points to convolve over # substrate (Si) -# bound coherent scattering length for Si (nat. ab.) -bc_si = 4.1491 * ba.angstrom * 1e-5 -density_si = 0.0499 / ba.angstrom ** 3 # Si atomic number density +si_sld_real = 2.0704e-06 # \AA^{-2} # layer parameters n_repetitions = 10 # Ni -bc_ni = 10.3 * ba.angstrom * 1e-5 -density_ni = 0.0915 / ba.angstrom ** 3 +ni_sld_real = 9.4245e-06 # \AA^{-2} d_ni = 70 * ba.angstrom # Ti -bc_ti = -3.438 * ba.angstrom * 1e-5 -density_ti = 0.0567 / ba.angstrom ** 3 +ti_sld_real = -1.9493e-06 # \AA^{-2} d_ti = 30 * ba.angstrom def get_sample(): # defining materials m_air = ba.MaterialBySLD("Air", 0.0, 0.0) - m_ni = ba.MaterialBySLD("Ni", density_ni * bc_ni, 0.0) - m_ti = ba.MaterialBySLD("Ti", density_ti * bc_ti, 0.0) - m_substrate = ba.MaterialBySLD("SiSubstrate", density_si * bc_si, 0.0) + m_ni = ba.MaterialBySLD("Ni", ni_sld_real, 0.0) + m_ti = ba.MaterialBySLD("Ti", ti_sld_real, 0.0) + m_substrate = ba.MaterialBySLD("SiSubstrate", si_sld_real, 0.0) air_layer = ba.Layer(m_air) ni_layer = ba.Layer(m_ni, d_ni) diff --git a/Examples/python/simulation/ex06_Reflectometry/BeamFullDivergence.py b/Examples/python/simulation/ex06_Reflectometry/BeamFullDivergence.py index 27c4f6b828f91b48b2484a86db52071b6344ec1c..bf423cbf3babeaf0c2fec1d396885edc8912d439 100644 --- a/Examples/python/simulation/ex06_Reflectometry/BeamFullDivergence.py +++ b/Examples/python/simulation/ex06_Reflectometry/BeamFullDivergence.py @@ -18,19 +18,15 @@ n_sig = 3 # number of sigmas to convolve over n_points = 25 # number of points to convolve over # substrate (Si) -# bound coherent scattering length for Si (nat. ab.) -bc_si = 4.1491 * ba.angstrom * 1e-5 -density_si = 0.0499 / ba.angstrom ** 3 # Si atomic number density +si_sld_real = 2.0704e-06 # \AA^{-2} # layer parameters n_repetitions = 10 # Ni -bc_ni = 10.3 * ba.angstrom * 1e-5 -density_ni = 0.0915 / ba.angstrom ** 3 -d_ni = 70 * ba.angstrom +ni_sld_real = 9.4245e-06 # \AA^{-2} +d_ni = 70 * ba.angstrom # ni layer thickness (nm) # Ti -bc_ti = -3.438 * ba.angstrom * 1e-5 -density_ti = 0.0567 / ba.angstrom ** 3 -d_ti = 30 * ba.angstrom +ti_sld_real = -1.9493e-06 # \AA^{-2} +d_ti = 30 * ba.angstrom # ti layer thickness (nm) def get_sample(): @@ -38,9 +34,9 @@ def get_sample(): # this example implies beam divergence in the wavelength, # thus MaterialBySLD must be used to provide correct result m_air = ba.MaterialBySLD("Air", 0.0, 0.0) - m_ni = ba.MaterialBySLD("Ni", density_ni * bc_ni, 0.0) - m_ti = ba.MaterialBySLD("Ti", density_ti * bc_ti, 0.0) - m_substrate = ba.MaterialBySLD("SiSubstrate", density_si * bc_si, 0.0) + m_ni = ba.MaterialBySLD("Ni", ni_sld_real, 0.0) + m_ti = ba.MaterialBySLD("Ti", ti_sld_real, 0.0) + m_substrate = ba.MaterialBySLD("SiSubstrate", si_sld_real, 0.0) air_layer = ba.Layer(m_air) ni_layer = ba.Layer(m_ni, d_ni) diff --git a/Tests/ReferenceData/Core/HomogeneousTiNiSampleWithAbsorption.int.gz b/Tests/ReferenceData/Core/HomogeneousTiNiSampleWithAbsorption.int.gz index f7de47d7f05daa93b2b6ffcf72f875e688f2b293..f7962d37f750bf1a007dac2ab9ec2fa23ea10d5d 100644 Binary files a/Tests/ReferenceData/Core/HomogeneousTiNiSampleWithAbsorption.int.gz and b/Tests/ReferenceData/Core/HomogeneousTiNiSampleWithAbsorption.int.gz differ diff --git a/Tests/ReferenceData/Python/BeamAngularDivergence.ref.int.gz b/Tests/ReferenceData/Python/BeamAngularDivergence.ref.int.gz index 6f77cfabd1a8b3c239e98af2d9b5f38e69c8acb9..9c1dda65e49e83fafa315c366fe4afdbaa3725c3 100644 Binary files a/Tests/ReferenceData/Python/BeamAngularDivergence.ref.int.gz and b/Tests/ReferenceData/Python/BeamAngularDivergence.ref.int.gz differ diff --git a/Tests/ReferenceData/Python/BeamFullDivergence.ref.int.gz b/Tests/ReferenceData/Python/BeamFullDivergence.ref.int.gz index 28e54ce539bf5a70646759cf6147902442247c57..a74c173951d56d27c2338eb83650bbf843050dd7 100644 Binary files a/Tests/ReferenceData/Python/BeamFullDivergence.ref.int.gz and b/Tests/ReferenceData/Python/BeamFullDivergence.ref.int.gz differ