### Beam divergence

By default, the incident beam is perfectly monochromatic and collimated. Here we show how to set finite distributions of wavelengths and of incident angles.

• The wavelength follows a log-normal distribution around the mean value of 0.1 nm with a scale parameter equal to $0.1$.
• Both incident angles follow a Gaussian distribution around the average values $\alpha_i = 0.2 ^{\circ}$ and $\varphi_i = 0^{\circ}$, respectively and $\sigma_{\alpha_i} = \sigma_{\varphi_i} = 0.1^{\circ}$.

The DWBA simulation is shown for a standard sample model:

• The sample is composed of monodisperse cylinders deposited on a substrate.
• The cylinders are dilute and distributed at random, hence there is no interference between scattered waves.
  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  #!/usr/bin/env python3 """ Cylinder form factor in DWBA with beam divergence """ import bornagain as ba from bornagain import ba_plot as bp, deg, nm def get_sample(): from bornagain import std_samples return std_samples.cylinders() def get_simulation(sample): beam = ba.UnitBeam(0.1*nm, 0.2*deg) detector = ba.SphericalDetector(bp.simargs['n'], 2*deg, 1*deg, 1*deg) simulation = ba.ScatteringSimulation(beam, sample, detector) distr_1 = ba.DistributionLogNormal(0.1*nm, 0.1, 5, 0) simulation.addParameterDistribution( ba.ParameterDistribution.BeamWavelength, distr_1) distr_2 = ba.DistributionGaussian(0.2*deg, 0.1*deg, 5, 0) simulation.addParameterDistribution( ba.ParameterDistribution.BeamInclinationAngle, distr_2) distr_3 = ba.DistributionGaussian(0, 0.1*deg, 5, 0) simulation.addParameterDistribution( ba.ParameterDistribution.BeamAzimuthalAngle, distr_3) return simulation if __name__ == '__main__': bp.parse_args(sim_n=100) sample = get_sample() simulation = get_simulation(sample) result = simulation.simulate() bp.plot_simulation_result(result) 
Examples/scatter2d/BeamDivergence.py