Skip to content
Snippets Groups Projects
Commit 0c12d076 authored by Yurov, Dmitry's avatar Yurov, Dmitry
Browse files

Add test for TOF reflectometry with pointwise resolution

parent 9d031e72
No related branches found
No related tags found
No related merge requests found
"""
An example of defining reflectometry instrument
for time of flight experiment. In this example
we will use purely qz-defined beam,
without explicitly specifying
incident angle or a wavelength.
Additionally we will set pointwise resolution
to the scan.
Note that these approaches work with SLD-based
materials only.
"""
import numpy as np
import bornagain as ba
from bornagain import angstrom
def get_sample():
"""
Defines sample and returns it. Note that SLD-based materials are used.
"""
# creating materials
m_ambient = ba.MaterialBySLD("Ambient", 0.0, 0.0)
m_ti = ba.MaterialBySLD("Ti", -1.9493e-06, 0.0)
m_ni = ba.MaterialBySLD("Ni", 9.4245e-06, 0.0)
m_substrate = ba.MaterialBySLD("SiSubstrate", 2.0704e-06, 0.0)
# creating layers
ambient_layer = ba.Layer(m_ambient)
ti_layer = ba.Layer(m_ti, 30 * angstrom)
ni_layer = ba.Layer(m_ni, 70 * angstrom)
substrate_layer = ba.Layer(m_substrate)
# creating multilayer
multi_layer = ba.MultiLayer()
multi_layer.addLayer(ambient_layer)
for i in range(10):
multi_layer.addLayer(ti_layer)
multi_layer.addLayer(ni_layer)
multi_layer.addLayer(substrate_layer)
return multi_layer
def get_simulation(scan_size=500):
"""
Defines and returns specular simulation
with a qz-defined beam
"""
qzs = np.linspace(0.01, 1.0, scan_size) # qz-values
dq = 0.03 * qzs
n_sig = 2.0
n_samples = 25
distr = ba.RangedDistributionGaussian(n_samples, n_sig)
scan = ba.QSpecScan(qzs)
scan.setAbsoluteQResolution(distr, dq)
simulation = ba.SpecularSimulation()
simulation.setScan(scan)
return simulation
def run_simulation():
"""
Runs simulation and returns its result.
"""
sample = get_sample()
simulation = get_simulation()
simulation.setSample(sample)
simulation.runSimulation()
return simulation.result()
if __name__ == '__main__':
result = run_simulation()
ba.plot_simulation_result(result)
""" """
An example of defining reflectometry instrument An example of defining reflectometry instrument
for time of flight experiment. In this example for time of flight experiment. In this example
two approaches are used: first, we define we will use purely qz-defined beam,
beam parameters through a range of wavelengths and without explicitly specifying
an incident angle; second, we will use purely
qz-defined beam, without explicitly specifying
incident angle or a wavelength. incident angle or a wavelength.
Note that these approaches work with SLD-based Note that these approaches work with SLD-based
materials only. materials only.
......
...@@ -62,6 +62,7 @@ test_example("simulation/ex06_Reflectometry/BeamAngularDivergence_copy" 2e-10) ...@@ -62,6 +62,7 @@ test_example("simulation/ex06_Reflectometry/BeamAngularDivergence_copy" 2e-10)
test_example("simulation/ex06_Reflectometry/BeamFullDivergence" 2e-10) test_example("simulation/ex06_Reflectometry/BeamFullDivergence" 2e-10)
test_example("simulation/ex06_Reflectometry/BeamFullDivergence_copy" 2e-10) test_example("simulation/ex06_Reflectometry/BeamFullDivergence_copy" 2e-10)
test_example("simulation/ex06_Reflectometry/TimeOfFlightReflectometry" 2e-10) test_example("simulation/ex06_Reflectometry/TimeOfFlightReflectometry" 2e-10)
test_example("simulation/ex06_Reflectometry/TOFRWithResolution" 2e-10)
test_example("simulation/ex07_Miscellaneous/CylindersInAverageLayer" 2e-10) test_example("simulation/ex07_Miscellaneous/CylindersInAverageLayer" 2e-10)
test_example("simulation/ex07_Miscellaneous/DepthProbe" 2e-10) test_example("simulation/ex07_Miscellaneous/DepthProbe" 2e-10)
......
File added
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment