Skip to content

The proof-of-concept: v0.1.0-alpha

No due date 16% complete

General purpose

With this milestone, we want to build the proof-of-concept of QED.jl, focusing on Monte-Carlo event generation involving a small set of predefined scattering processes. Furthermore, with this milestone, we want to set up a framework that includes tests and documentation for both the main package QED.jl and the sub-packages contained in the…

General purpose

With this milestone, we want to build the proof-of-concept of QED.jl, focusing on Monte-Carlo event generation involving a small set of predefined scattering processes. Furthermore, with this milestone, we want to set up a framework that includes tests and documentation for both the main package QED.jl and the sub-packages contained in the proof-of-concept. Finally, we want to investigate and define the workflows necessary to add new functionality, packages, and documentation to the eco-system, as well as to extend and improve the existing ones.

Included subpackages

  • QEDbase.jl
  • QEDfields.jl
  • QEDprocesses.jl
  • QEDevents.jl

The dependence graph of these packages reads

graph TD
   base(QEDbase.jl) --> fields(QEDfields.jl)
   base --> proc(QEDprocesses.jl)
   fields --> proc
   proc --> events(QEDevents.jl)
   base -- maybe? --> events
Loading

Here, the arrows point in the direction, where the respective package is used.

The notion of usage means one of two things:

  1. implementing a new function for an existing type
  2. extending an existing function on a new type via multiple-dispatch

One must not extend an existing function on an existing type, where both, the function and the type, are imported from another package, i.e. avoid type piracy. The implementation of a new function for new types is allowed within one package.

Subpackage: QEDbase.jl

This package should provide all tools and data types to model scattering processes in a quantum field theory. This includes Lorentz vectors and spinors as well as gamma matrices. See here for the respective milestone in the QEDbase.jl repository.

Subpackage: QEDfields.jl

This package will provide a system to describe the classical electromagnetic field, including the classical four-vector potential for different polarisations and field shapes. See QEDjl/QED.jl#3 for the respective issue and here for the respective milestone in the QEDfields.jl repository.

Subpackage: QEDprocesses.jl

This package will provide an interface to work with scattering processes modeled using different notions of quantum electrodynamics. This includes the definition of the processes in terms of particles and interactions and the calculation of several quantities for each of those processes, e.g. differential and total cross sections. See here for the respective milestone in the QEDprocesses.jl repository.

Subpackage: QEDevents.jl

This package should provide an interface to generate events for a given set of scattering processes. Those processes should be provided by QEDprocesses.jl. See here for the respective milestone in the QEDevents.jl repository.

Documentation

For the documentation of the proof-of-concept, it might be appropriate to follow the divio system. However, in addition to the tutorials, how-tos, explanations, and references, there will be a section in the docs, which targets developers and contributors.

Besides the main package documentation, each subpackage should have its documentation quickstarts, small how-tos, and API reference. For a more detailed introduction aimed structure of the documentation, see the respective issue.

Testing

One important part of the proof-of-concept is the implementation of a testing suite. This will include unit tests of all subpackages to check for correctness, but also integration tests of each subpackage against its dependencies to ensure interoperability. For a more detailed description of the unit and integration tests, see the respective issue in the QED.jl repo as well as the respective issues in the subpackage repos.

Loading