## Resolution effects in TOF Reflectometry

In the following reflectometry example, each scan point has a distribution of $q_z$ values.

The constructor

ba.DistributionGaussian(0., 1., 25, 2.)


specifies a Gaussian distribution with mean 0, standard deviation 1, 25 sampling points, and a cut-off at 2 sigma. For other distributions (besides Gaussian), see distributions.

The statements

scan = ba.QzScan(qzs)
scan.setVectorResolution(distr, dq)


take arrays qzs and dq as arguments. These arrays must have the same length n. For each scan point (i=0,..,n-1), the $q_z$ values have a Gaussian distribution with mean qzs[i] and dq[i].

  1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42  #!/usr/bin/env python3 """ 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 ba_plot as bp, std_samples import matplotlib.pyplot as plt def get_sample(): return std_samples.alternating_layers() def get_simulation(sample): "Specular simulation with a qz-defined beam" n = 500 qzs = np.linspace(0.01, 1, n) # qz-values dq = 0.03*qzs distr = ba.DistributionGaussian(0., 1., 25, 2.) scan = ba.QzScan(qzs) scan.setVectorResolution(distr, dq) return ba.SpecularSimulation(scan, sample) if __name__ == '__main__': sample = get_sample() simulation = get_simulation(sample) result = simulation.simulate() bp.plot_simulation_result(result) plt.show() 
auto/Examples/specular/TOFRWithResolution.py