____ _ _ _ _ _ _
/ ___|| | | | | | / \ (_) |
\___ \| | | |_| | / _ \ | | |
___) | |___| _ |/ ___ \ _ | | |
|____/|_____|_| |_/_/ \_(_)/ |_|
|__/
This is a package written in Julia to parse, serialize, and perform calculations with the Supersymmetry Les Houches Accord (SLHA) file format, codified by this paper and updated in this paper. As the SLHA format is pervasive in the particle physics, especially beyond the Standard Model (BSM) physics, an agile and robust SLHA library for Julia should establish a foundation for new tools to be developed in Julia, for high energy physics.
You can get started very simply using Julia's package manager. Start Julia's CLI and do the following:
julia> Pkg.add("SLHA")
julia> using SLHA
At this point, you have already downloaded and installed the SLHA.jl
package
and have loaded its symbols.
One of the unique characteristics of this library is that different SLHA blocks,
identified by name have their own type. Using Julia's parametric types which can
be identified by a Symbol
, it is easy to create a large number of subtypes.
The idea is that this might be useful if one wishes to dispatch on a block,
instead of using an associative map. (I'm not sure if this is a useful feature
yet :) .)
There is a large degree of arbitrariness in the types of block that can be
contained by SLHA.jl
. You can have ordinary arrays of arbitrary dimensions,
which can be easily traversed thanks to Julia's
@generated
metaprogramming facilities. And, the multiple/external dispatch of Julia allows
you to easily extend the format to SLHA blocks as you wish. It is my hope that
the rich programming environment will lead to innovative BSM tool development
with clever meta-programming and staged programming techniques.