Welcome to Go-HEP
Go-HEP
is a set of libraries and applications allowing physicists from High Energy Physics (HEP) to write efficient analysis code in the Go programming language.
Go brings the fast edit-compile-run cycle that interpreted language users enjoy and the runtime efficiency that compiled languages users expect.
Go-HEP provides the needed HEP
oriented packages on top of this concurrency-enabled language.
Go-HEP
currently sports the following packages:
- go-hep.org/x/hep/brio: a toolkit to generate serialization code
- go-hep.org/x/hep/fads: a fast detector simulation toolkit
- go-hep.org/x/hep/fastjet: a jet clustering algorithms package (WIP)
- go-hep.org/x/hep/fit: a fitting function toolkit (WIP)
- go-hep.org/x/hep/fmom: a 4-vectors library
- go-hep.org/x/hep/fwk: a concurrency-enabled framework
- go-hep.org/x/hep/groot: a pure Go package for ROOT I/O (WIP)
- go-hep.org/x/hep/hbook: histograms and n-tuples (WIP)
- go-hep.org/x/hep/hplot: interactive plotting (WIP)
- go-hep.org/x/hep/hepmc:
HepMC
in pure Go (EDM + I/O) - go-hep.org/x/hep/hepevt:
HEPEVT
bindings - go-hep.org/x/hep/heppdt:
HEP
particle data table - go-hep.org/x/hep/lcio: read/write support for
LCIO
event data model - go-hep.org/x/hep/lhef: Les Houches Event File format
- go-hep.org/x/hep/rio:
go-hep
record oriented I/O - go-hep.org/x/hep/sio: basic, low-level, serial I/O used by
LCIO
- go-hep.org/x/hep/slha:
SUSY
Les Houches Accord I/O - go-hep.org/x/hep/xrootd: XRootD client in pure Go
- go-hep.org/x/cgo/croot: bindings to a subset of ROOT I/O
Motivation
Writing analyses in HEP involves many steps and one needs a few tools to successfully carry out such an endeavour. But – at minima – one needs to be able to read and write ROOT files to be able to interoperate with the rest of the HEP community or to insert one’s work into an already existing analysis pipeline.
Go-HEP provides this necessary interoperability layer, in the Go programming language. This allows physicists to leverage the great concurrency primitives of Go, together with the surrounding tooling and software engineering ecosystem of Go, to implement physics analyses.
Installation
Go-HEP
packages are installable via the go get
command:
$ go get go-hep.org/x/hep/fads
Just select the package you are interested in and go get
will take care of fetching, building and installing it, as well as its dependencies, recursively.
go-hep
is available on all Go supported platforms, mainly:
linux-{amd64,386,arm,arm64,mips,mips32,...}
darwin-{amd64,386,...}
windows-{amd64,386,...}
freebsd-{amd64,386,...}
Binaries for go-hep
are also available here: go-hep.org/dist
License
All go-hep
code is released under a BSD-3 license.
Authors and Contributors
go-hep
was primarily written by Sebastien Binet (@sbinet).
The complete CONTRIBUTORS and AUTHORS list can be consulted on the dedicated license repository.
Support or Contact
Having trouble with Go-HEP
?
Check out the documentation:
- on pkg.go.dev,
- or the tutos.
There’s also the forum:
- ~sbinet/go-hep@lists.sr.ht (by mail)
- lists.sr.ht/~sbinet/go-hep (via the web interface),
to discuss about Go-HEP
or ask for help.
About
The go-hep
logo was made by Tom Ingebretsen from the Noun Project.