Skip to content

tjungni/QEDbase.jl

 
 

Repository files navigation

QEDbase

Doc Stable Doc Dev Build Status Coverage Coverage Code Style: Blue

This is QEDbase.jl, a Julia package that provides the general data structures for calculations in relativistic particle physics.

This package is part of the QED.jl library. For the description of the interoperability with other packages of QED.jl see docs.

Current features

  • generic interface for Lorentz vectors
  • concrete implementations of static and mutable Lorentz-vector/four-momentum types
  • general Dirac bi-spinors, their adjoint counterpart as well as Dirac matrices
  • particle spinors, i.e. solutions of Dirac's equation in momentum space
  • Dirac's gamma matrices

Installation

To install the current stable version of QEDbase.jl you may use the standard Julia package manager within the Julia REPL

julia> using Pkg

julia> Pkg.add("QEDbase")

or you use the Pkg prompt by hitting ] within the Julia REPL and then type

(@v1.7) pkg> add QEDbase

To install the locally downloaded package on Windows, change to the parent directory and type within the Pkg prompt

(@v1.7) pkg> add ./QEDbase.jl

Quickstart

Four-momentum

One can define a static four-momentum component-wise:

julia> using QEDbase

juila> mass = rand()*10

julia> px,py,pz = rand(3)

julia> E = sqrt(px^2 + py^2 + pz^2 + mass^2) # on-shell condition

julia> P = SFourMomentum(E,px,py,pz)

Such an SFourMomentum behaves like a four-element static array (with all the standard arithmetics), but with the dot product exchanged with the Minkowski product

julia> @assert dot(P,P) == P*P == getMass2(P) == P[1]^2 - sum(P[1:].^2)

Furthermore, the Lorentz-vector interface provides a lot of properties for such an SFourMomentum, e.g.

julia> @assert isapprox(getRapidity(mom), 0.5*log((E+pz)/(E-pz)))
julia> @assert isapprox(getPlus(mom), 0.5*(E+pz))
julia> @assert isapprox(getPerp(mom), px^2 + py^2)

and a lot more (see here for a complete list). There is also a mutable version of a four-vector in QEDbase.jl, where the Lorentz-vector interface provides setters to different properties as well (see here for details).

Testing

After installation, it might be necessary to check if everything works properly. For that, you can run the unit tests by typing within the Julia REPL

julia> using Pkg
julia> using QEDbase
julia> Pkg.test("QEDbase")

...

Testing Running tests...
Test Summary: | Pass  Total
QEDbase.jl    |  468    468
     Testing QEDbase tests passed

If you see the last line, you can assume that QEDbase.jl works properly for you.

Contributing

If you want to contribute to QEDbase.jl, feel free to do so by opening an issue or sending me a pull request. In order to keep the packages within QED.jl coherent, consider visiting the general contribution guide of QED.jl.

Credits and contributors

This work was partly funded by the Center for Advanced Systems Understanding (CASUS) which is financed by Germany’s Federal Ministry of Education and Research (BMBF) and by the Saxon Ministry for Science, Culture and Tourism (SMWK) with tax funds on the basis of the budget approved by the Saxon State Parliament.

The core code of the package QEDbase.jl is developed by a small team at the Center for Advanced Systems Understanding (CASUS), namely

This package would not be possible without many contributions from the community as well. For that, we want to send big thanks to:

  • my Mate supplier
  • the guy who will show me how to include the most recent contributors on GitHub

License

MIT © Uwe Hernandez Acosta

Releases

No releases published

Packages

No packages published

Languages

  • Julia 100.0%