## Radial paracrystal

Scattering from a monolayer of monodisperse cylinders, positioned according to the radial paracrystal model.

- The sample is made of cylinders with radii and heights equal to $5$ nm, deposited on a substrate.
- The distribution of particles follows a radial paracrystal, characterized by a peak distance of $20$ nm and a damping length of $1$ $\mu$m.
- The wavelength is equal to 0.1 nm.
- The incident angles are $\alpha_i = 0.2 ^{\circ}$ and $\varphi_i = 0^{\circ}$.

Note:

- A damping length is used to introduce finite size effects by applying a multiplicative coefficient equal to $exp \left(-\frac{peak\_distance}{damping\_length}\right)$ to the Fourier transform of the probability densities.

Scattering intensity

auto/Examples/scatter2d/Interference1DRadialParacrystal.py

## Explanation

The interference function of a radial paracrystal is used to model cumulative disorder of interparticle distances. It is called radial to stress the fact that it only takes into account the radial component of the scattering vector.

Each circle on the plot above represents the area where the probability to find a particle, given a particle at the origin, is above some arbitrary threshold. The growing size of the areas emphasizes the fact the our knowledge about next neighbor’s location decreases with the distance to the origin.

The BornAgain user manual (Chapter 3.5, Paracrystal) details the theoretical model and gives some links to the literature.

### InterferenceRadialParacrystal class

The radial paracrystal is parameterized by the position distribution of the nearest neighbor centered at the peak distance. On the plot below the half-width of this distribution is marked as $\omega$ and the center is marked with “Peak Distance”. The probability distributions of finding other particles to the right are deduced from accumulating position uncertanties of previous particles in the chain.

To create the interference function of a radial paracrystal the following constructor has to be used.

    InterferenceRadialParacrystal(peak_distance, damping_length=0)
    """
    peak_distance   Average distance to the next neighbor in nanometers
    damping_length  The damping (coherence) length of the paracrystal in nanometers.
    """

The parameter `damping_length` is used to introduce finite size effects by applying a multiplicative coefficient equal to `exp(-peak_distance/damping_length)` to the Fourier transform of the probability density of a nearest neighbor. `damping_length` is equal to 0 by default and, in this case, no correction is applied. On the plot above the damping length is provisionally depicted as an area contributing to the scattering.

### Probability Distribution

To account for next neighbor position uncertainty a probability distribution (Fourier transform of probability density) should be assigned to the interference function. This is done using the `setProbabilityDistribution(pdf)` method of the radial paracrystal interference function.

    iff = InterferenceRadialParacrystal(10.0*nm, 1000.0*nm)
    iff.setProbabilityDistribution(FTDistribution1DCauchy(30.0*nm))

The following distributions are available

    # Fourier transform of Cauchy-Lorentzian
    FTDistribution1DCauchy(omega)

    # Fourier transform of a Gaussian
    FTDistribution1DGauss(omega)

    # Fourier transform of a gate distribution
    FTDistribution1DGate(omega)

    # Fourier transform of a triangle distribution
    FTDistribution1DTriangle(omega)

    # Fourier transform of a pseudo-Voigt distribution: eta*Gauss + (1-eta)*Cauchy
    FTDistribution1DVoigt(omega, eta)

The parameter `omega` is used to set the half-width of the distribution in nanometers. In the case of the pseudo-Voigt distribution an additional dimensionless parameter `eta` is used to balance between the Gaussian and Cauchy profiles.

### Domain size

The interference function of a radial paracrystal provides a way to calculate the scattering from a finite portion of the paracrystal using the `setDomainSize`(nm) method. The resulting behaviour is similar to the case when `damping_length` is used (the difference in computation is explained in the user manual). In the code snippet below, the paracrystal is created without specifying the `damping_length`, and then the `setDomainSize` method is used to introduce the alternative mechanism for finite size corrections.

    iff = InterferenceRadialParacrystal(10.0*nm)
    iff.setProbabilityDistribution(FTDistribution1DCauchy(30.0*nm))
    iff.setDomainSize(10000*nm)

### Particle density

During the simulation setup the particle density has to be explicitely specified by the user for correct normalization of overall intensity. This is done by using `ParticleLayout.setParticleDensity(density)` method. The density parameter is given here in “number of particles per square nanometer”.

### Size space coupling

To be written

- Introduction
  - Functionality overview
  - Architectural overview

- Install or build
  - Install Python
    - Python on Linux
    - Python on Windows
    - Python on Mac
    - Python modules
  - Install BornAgain
    - Linux
    - Windows
    - MacOS
    - Development snapshot
  - Build BornAgain
    - Unix
      - Install third-party software
      - Get the source
      - Build and install BornAgain
      - Run a first simulation
    - Windows

- Graphical user interface
  - Quick Start
  - GUI overview
  - Fitting in the GUI

- Python scripting
  - Run a script
  - Understand the syntax
  - Fitting
  - Upgrading

- Reference
  - Simulation model
    - Simulation classes
      - Specular
        - Example
      - Scattering
        - Examples
          - GISAS
          - without DWBA terms
          - with specular peak
          - SAS
          - Polarized SANS
          - Monte-Carlo
      - Off-specular
        - Off-specular
      - Depth probe
        - Examples
          - Thin film
          - Transmitted modulus
          - Resonator
    - Common settings
      - Background
      - Options
        - Monte-Carlo
        - # threads
        - Average materials
        - Include specular
      - Progress monitor
  - Instrument model
    - Beam
      - Footprint
      - Beam divergence
    - Scan
      - TOF reflectometry
      - TOF resolution
      - Beam Angular Spread
      - Beam Wavelength Spread
    - Detectors
      - SphericalDetector
      - 2d detector resolution
      - Offspec detector
    - Neutron polarization
      - Spin asymmetry example
    - Examples
      - 2D detector resolution
      - Neutron polarization
        - Magnetic layer
        - Ditto, realistic instrument
        - Polarized scattering
  - Sample model
    - Materials
      - Magnetization
    - Sample
      - Layer
      - LayerStack
      - Layout
    - Roughness
      - Interface model
      - Transient
      - Cross-correlation
      - Examples
        - GISAS
        - Reflectivity
    - Particles
      - Form factor
        - Hard particles
          - Bipyramid4
          - Box
          - CantellatedCube
          - Cone
          - Cylinder
          - Dodecahedron
          - EllipsoidalCylinder
          - HemiEllipsoid
          - HorizontalCylinder
          - Icosahedron
          - PlatonicOctahedron
          - PlatonicTetrahedron
          - Prism3
          - Prism6
          - Pyramid2
          - Pyramid3
          - Pyramid4
          - Pyramid6
          - Sphere
          - SphericalSegment
          - Spheroid
          - SpheroidalSegment
          - TruncatedCube
        - Ripples
          - Bar ripple
          - Cosine ripple
          - Sawtooth ripple
        - Soft particles
          - FuzzySphere
          - Gauss
        - Custom formfactor
      - Composite particles
        - Core and shell
        - Compound particle
        - Mesocrystal
      - Examples
        - Compound particle
        - Core and shell
        - Crossing an interface
        - Mesocrystal
        - Rotation example
        - Dense cylinders
        - Dense hemispheres
        - Uncorrelated mixture
        - Polydispersity
    - Particle assemblies
      - Grating
        - 1D lattice
        - Cosine ripples in a lattice
        - Triangular ripples in a lattice
      - 2D lattice
        - Square lattice
        - Lattice orientation distribution
        - Finite square lattice
        - Lattice with basis
        - Multi-layer lattice
        - Position variance
      - Radial paracrystal
      - 2D paracrystal
      - Others
        - Size-distribution model: decoupling approximation
        - Size-distribution model: local monodisperse approximation
        - Size-distribution model: size-spacing coupling approximation
  - Model modifiers
    - Rotation
    - Distributions
  - Data types
    - Class Datafield
      - Export
      - Find intensity peaks
    - SLD profile
      - SLD profile with rough interfaces
      - SLD profile with a sliced particle layer
  - Plotting
    - Functions
    - Configuration
    - Heat map
    - LaTeX markup
    - Export
    - Plot axes in different units
  - Fitting
    - Data import
      - TIFF
    - Minimizer settings
    - Multiple datasets
    - Examples
      - Fitting with masks
      - Custom objective function
      - Fitting along slices
      - GISAS 2D fits
      - Experiment at GALAXI
      - Find background
      - Minimizer settings
      - Bayesian Sampling
      - Consecutive fitting
      - Considering uncertainties
      - External minimizer
      - External minimizer: plotting
      - Simultaneous fit of two datasets
      - Spin asymmetry fit example
      - Reflectometry: Fit Pt layer
      - Reflectometry: Fit honeycomb

- Literature
  - Babonneau2010
  - Babonneau2013
  - Croset2021
  - Lazzari2002
  - Lazzari2006
  - Pospelov2020
  - Renaud2009
  - Sears1992
  - Wuttke2021

- How to
  - Get announcements
  - Solve known problems
    - Set Python environmental variables under Windows
  - Request help or report bugs
  - Cite BornAgain

- Developers' corner
  - Configure
    - Build
    - Pyenv
  - Develop
    - Manual checks
    - Debug
    - Webdoc
    - Code analyses
  - Release
    - Manual GUI test