The incident beam must be specified for scattering simulations with 2D detector (SAS and GISAS). For other simulations, the beam is set internally according to the given scan model.
To create a beam, use
beam = ba.Beam(intensity, wavelength, alpha, phi=0)
For the wavelenth, use unit multiplier *nm or *angstrom.
For the grazing angle $\alpha_\text{i}$, use unit multiplier *deg.
The azimuthal angle $\varphi_\text{i}$ can be omitted, as in most applications the default value 0 is pertinent. If $\varphi_\text{i}\ne0$ is used, then it is defined as the angle between the incident half ray (with $x<0$, projected into the $xy$ plane) and the $x$ axis. Conversely, $\varphi_\text{f}$ is the angle between the outgoing half ray ($x>0$, projected into the $xy$ plane) and the $x$ axis so that scattering is by $\varphi_\text{f}-\varphi_\text{i}$.
After creation of a beam, additional properties can be set with
beam.setFootprint(footprint)
beam.setPolarization(polarization)
For the arguments, see footprint and polarization.
The beam intensity may appear inconsequential for specular simulations because resulting reflectivities are normalized. However, the intensity does influence the simulated noise.
The above definition of $\varphi_\text{i,f}$ agrees with IsGisaxs (Manual Fig. 2.1, where $\varphi$ is named $\theta$). Prior to release 24, this was unclear in BornAgain, and the computations of scattering and specular reflection were inconsistent with each other for $\varphi_\text{i}\ne0$.