README

hep

Build Status Build status codecov Go Report Card GoDoc License DOI JOSS Paper Binder

hep is a set of libraries and tools to perform High Energy Physics analyses with ease and Go

See go-hep.org for more informations.

License

hep is released under the BSD-3 license.

Documentation

Documentation for hep is served by GoDoc.

Contributing

Guidelines for contributing to go-hep are available here: go-hep.org/contributing

Motivations

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 possibly 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.

Content

Go-HEP currently sports the following packages:

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.

Contact

If you need help with Go-HEP or want to contribute to Go-HEP, feel free to join the go-hep mailing list:

or send a mail with the subject subscribe to go-hep+subscribe@googlegroups.com like so: click.

Documentation

Overview

Package hep is a simple placeholder to root all go-hep documentation

Source Files

Directories

Path Synopsis
Package brio is a set of tools to handle binary (de)serialized data.
Package brio is a set of tools to handle binary (de)serialized data.
cmd/brio-gen
Command brio-gen generates (un)marshaler code for types.
Command brio-gen generates (un)marshaler code for types.
cmd
lhef2hepmc
lhef2hepmc converts a LHEF input file into a HepMC file.
lhef2hepmc converts a LHEF input file into a HepMC file.
rio2yoda
rio2yoda converts rio files containing hbook values (H1D, H2D, P1D, ...) into YODA files.
rio2yoda converts rio files containing hbook values (H1D, H2D, P1D, ...) into YODA files.
root2csv
root2csv converts the content of a ROOT TTree to a CSV file.
root2csv converts the content of a ROOT TTree to a CSV file.
root2npy
root2npy converts the content of a ROOT TTree to a NumPy data file.
root2npy converts the content of a ROOT TTree to a NumPy data file.
root2yoda
root2yoda converts ROOT files containing hbook-like values (H1D, H2D, ...) into YODA files.
root2yoda converts ROOT files containing hbook-like values (H1D, H2D, ...) into YODA files.
yoda2rio
yoda2rio converts YODA files containing hbook-like values (H1D, H2D, P1D, ...) into rio files.
yoda2rio converts YODA files containing hbook-like values (H1D, H2D, P1D, ...) into rio files.
yoda2root
yoda2root converts YODA files containing hbook-like values (H1D, H2D, P1D, ...) into ROOT files.
yoda2root converts YODA files containing hbook-like values (H1D, H2D, P1D, ...) into ROOT files.
Package csvutil exposes functions and types to easily handle CSV files.
Package csvutil exposes functions and types to easily handle CSV files.
csvdriver
package csvdriver registers a database/sql/driver.Driver implementation for CSV files.
package csvdriver registers a database/sql/driver.Driver implementation for CSV files.
Package fads exposes building blocks for a fast simulation of a HEP detector.
Package fads exposes building blocks for a fast simulation of a HEP detector.
cmd/fads-app
fads-app is a command that runs a simple ATLAS-like detector simulation, modelled after the C++ Delphes ATLAS data-card.
fads-app is a command that runs a simple ATLAS-like detector simulation, modelled after the C++ Delphes ATLAS data-card.
cmd/fads-rivet-mc-generic
fads-rivet-mc-generic is a command mirroring the MC_GENERIC analysis example from Rivet.
fads-rivet-mc-generic is a command mirroring the MC_GENERIC analysis example from Rivet.
Package fastjet is a Go-based implementation of the C++ FastJet library.
Package fastjet is a Go-based implementation of the C++ FastJet library.
Package fit provides functions to fit data.
Package fit provides functions to fit data.
Package fmom provides types and functions to operate with Lorentz 4-vectors.
Package fmom provides types and functions to operate with Lorentz 4-vectors.
fwk
Package fwk provides a set of tools to process High Energy Physics events data.
Package fwk provides a set of tools to process High Energy Physics events data.
fsm
job
rio
utils/builder
package builder builds a fwk-app binary from a list of go files.
package builder builds a fwk-app binary from a list of go files.
utils/parallel
The parallel package provides a way of running functions concurrently while limiting the maximum number running at once.
The parallel package provides a way of running functions concurrently while limiting the maximum number running at once.
utils/tarjan
package tarjan implements a graph loop detection algorithm called Tarjan's algorithm.
package tarjan implements a graph loop detection algorithm called Tarjan's algorithm.
geo
gdml
Package gdml parses and interprets GDML files.
Package gdml parses and interprets GDML files.
Package hbook is a set of data analysis tools for HEP (histograms (1D, 2D, 3D), profiles and ntuples).
Package hbook is a set of data analysis tools for HEP (histograms (1D, 2D, 3D), profiles and ntuples).
ntup
Package ntup provides a way to create, open and iterate over n-tuple data.
Package ntup provides a way to create, open and iterate over n-tuple data.
ntup/ntcsv
Package ntcsv provides a convenient access to CSV files as n-tuple data.
Package ntcsv provides a convenient access to CSV files as n-tuple data.
rootcnv
Package rootcnv provides tools to convert ROOT histograms and graphs to go-hep/hbook ones.
Package rootcnv provides tools to convert ROOT histograms and graphs to go-hep/hbook ones.
yodacnv
Package yodacnv provides tools to read/write YODA archive files.
Package yodacnv provides tools to read/write YODA archive files.
Package hepevt provides access to the HEPEVT event format record from FORTRAN-77.
Package hepevt provides access to the HEPEVT event format record from FORTRAN-77.
Package hepmc is a pure Go implementation of the C++ HepMC-2 library.
Package hepmc is a pure Go implementation of the C++ HepMC-2 library.
go-hepmc-dump
go-hepmc-dump is a simple command to dump in an almost human-friendly format the content of a hepmc file.
go-hepmc-dump is a simple command to dump in an almost human-friendly format the content of a hepmc file.
Package heppdt provides access to the HEP Particle Data Table.
Package heppdt provides access to the HEP Particle Data Table.
Package hplot is a package to plot histograms, n-tuples and functions
Package hplot is a package to plot histograms, n-tuples and functions
cmd/hplot
hplot is a simple gnuplot-like command to create plots
hplot is a simple gnuplot-like command to create plots
cmd/lcio-ls
lcio-ls displays the content of a LCIO file.
lcio-ls displays the content of a LCIO file.
example/lcio-ex-read-event
lcio-ex-read-event is the hep/x/lcio example equivalent to: https://github.com/iLCSoft/LCIO/blob/master/examples/cpp/rootDict/readEventTree.C example: $> lcio-ex-read-event ./DST01-06_ppr004_bbcsdu.slcio lcio-ex-read-event: read 50 events from file "./DST01-06_ppr004_bbcsdu.slcio" $> open out.png
lcio-ex-read-event is the hep/x/lcio example equivalent to: https://github.com/iLCSoft/LCIO/blob/master/examples/cpp/rootDict/readEventTree.C example: $> lcio-ex-read-event ./DST01-06_ppr004_bbcsdu.slcio lcio-ex-read-event: read 50 events from file "./DST01-06_ppr004_bbcsdu.slcio" $> open out.png
Package lhef implements the "Les Houches Event File" data format.
Package lhef implements the "Les Houches Event File" data format.
pawgo is a simple interactive shell to quickly plot hbook histograms from rio files.
pawgo is a simple interactive shell to quickly plot hbook histograms from rio files.
rio
Package rio is a record-oriented persistency mechanism.
Package rio is a record-oriented persistency mechanism.
cmd/rio-ls-records
rio-ls-records displays the list of records stored in a given rio file.
rio-ls-records displays the list of records stored in a given rio file.
Package rootio provides a pure-go read-access to ROOT files.
Package rootio provides a pure-go read-access to ROOT files.
cmd/root-cp
root-cp selects and copies keys from a ROOT file to another ROOT file.
root-cp selects and copies keys from a ROOT file to another ROOT file.
cmd/root-diff
root-diff compares the content of 2 ROOT files, including the content of their Trees (for all entries), if any.
root-diff compares the content of 2 ROOT files, including the content of their Trees (for all entries), if any.
cmd/root-dump
root-dump dumps the content of a ROOT file, including the content of the Trees (for all entries), if any.
root-dump dumps the content of a ROOT file, including the content of the Trees (for all entries), if any.
cmd/root-fuse
Command root-fuse mounts the contents of a ROOT file as a local directory.
Command root-fuse mounts the contents of a ROOT file as a local directory.
cmd/root-gen-datareader
Command root-gen-datareader generates a Go struct to easily read the event data type stored inside a Tree.
Command root-gen-datareader generates a Go struct to easily read the event data type stored inside a Tree.
cmd/root-ls
root-ls lists the content of a ROOT file.
root-ls lists the content of a ROOT file.
cmd/root-print
root-print prints ROOT files contents to PDF, PNG, ...
root-print prints ROOT files contents to PDF, PNG, ...
cmd/root-srv/server
Package server encapsulates the creation of the web server for root-srv.
Package server encapsulates the creation of the web server for root-srv.
sio
Package sio implements a record-oriented persistency mechanism.
Package sio implements a record-oriented persistency mechanism.
Package slha implements encoding and decoding of SUSY Les Houches Accords (SLHA) data format.
Package slha implements encoding and decoding of SUSY Les Houches Accords (SLHA) data format.
Package xrootd implements the XRootD protocol from http://xrootd.org
Package xrootd implements the XRootD protocol from http://xrootd.org
client
Package client implements the XRootD client following protocol from http://xrootd.org.
Package client implements the XRootD client following protocol from http://xrootd.org.
cmd/xrd-client
Command xrd-client provides access to data hosted on XRootD clusters.
Command xrd-client provides access to data hosted on XRootD clusters.
cmd/xrd-cp
Command xrd-cp copies files and directories from a remote xrootd server to local storage.
Command xrd-cp copies files and directories from a remote xrootd server to local storage.
cmd/xrd-fuse
Command xrd-fuse mounts the directory contents of a remote xrootd server to a local directory.
Command xrd-fuse mounts the directory contents of a remote xrootd server to a local directory.
cmd/xrd-ls
Command xrd-ls lists directory contents on a remote xrootd server.
Command xrd-ls lists directory contents on a remote xrootd server.
cmd/xrd-srv
Command xrd-srv serves data from a local filesystem over the XRootD protocol.
Command xrd-srv serves data from a local filesystem over the XRootD protocol.
server
Package server provides a high level API for implementing the XRootD server following protocol from http://xrootd.org.
Package server provides a high level API for implementing the XRootD server following protocol from http://xrootd.org.
xrdfs
Package xrdfs contains structures representing the XRootD-based filesystem.
Package xrdfs contains structures representing the XRootD-based filesystem.
xrdfuse
Package xrdfuse contains the implementation of the FUSE API accessing a remote filesystem served over the XRootD protocol.
Package xrdfuse contains the implementation of the FUSE API accessing a remote filesystem served over the XRootD protocol.
xrdio
Package xrdio provides a File type that implements various interfaces from the io package.
Package xrdio provides a File type that implements various interfaces from the io package.
xrdproto
Package protocol contains the XRootD protocol specific types and methods to handle them, such as marshalling and unmarshalling requests.
Package protocol contains the XRootD protocol specific types and methods to handle them, such as marshalling and unmarshalling requests.
xrdproto/auth
Package auth contains the structures describing auth request.
Package auth contains the structures describing auth request.
xrdproto/auth/krb5
Package krb5 contains the implementation of krb5 (Kerberos) security provider.
Package krb5 contains the implementation of krb5 (Kerberos) security provider.
xrdproto/auth/unix
Package unix contains the implementation of unix security provider.
Package unix contains the implementation of unix security provider.
xrdproto/bind
Package bind contains the structures describing bind request and response.
Package bind contains the structures describing bind request and response.
xrdproto/chmod
Package chmod contains the structures describing chmod request.
Package chmod contains the structures describing chmod request.
xrdproto/dirlist
Package dirlist contains the structures describing request and response for dirlist request used to obtain the contents of a directory.
Package dirlist contains the structures describing request and response for dirlist request used to obtain the contents of a directory.
xrdproto/handshake
Package handshake contains the structures describing request and response for handshake request (see XRootD specification).
Package handshake contains the structures describing request and response for handshake request (see XRootD specification).
xrdproto/login
Package login contains the structures describing request and response for login request.
Package login contains the structures describing request and response for login request.
xrdproto/mkdir
Package mkdir contains the structures describing mkdir request.
Package mkdir contains the structures describing mkdir request.
xrdproto/mv
Package mv contains the structures describing mv request.
Package mv contains the structures describing mv request.
xrdproto/open
Package open contains the structures describing request and response for open request.
Package open contains the structures describing request and response for open request.
xrdproto/ping
Package ping contains the structures describing ping request.
Package ping contains the structures describing ping request.
xrdproto/protocol
Package protocol contains the structures describing request and response for protocol request (see XRootD specification).
Package protocol contains the structures describing request and response for protocol request (see XRootD specification).
xrdproto/read
Package read contains the structures describing request and response for read request.
Package read contains the structures describing request and response for read request.
xrdproto/rm
Package rm contains the structures describing rm request.
Package rm contains the structures describing rm request.
xrdproto/rmdir
Package rmdir contains the structures describing rmdir request.
Package rmdir contains the structures describing rmdir request.
xrdproto/signing
Package signing contains implementation of a way to check if request should be signed according to XRootD protocol specification v.
Package signing contains implementation of a way to check if request should be signed according to XRootD protocol specification v.
xrdproto/sigver
Package sigver contains the structures describing sigver request.
Package sigver contains the structures describing sigver request.
xrdproto/stat
Package stat contains the structures describing request and response for stat request.
Package stat contains the structures describing request and response for stat request.
xrdproto/statx
Package statx contains the structures describing request and response for statx request.
Package statx contains the structures describing request and response for statx request.
xrdproto/sync
Package sync contains the structures describing sync request.
Package sync contains the structures describing sync request.
xrdproto/truncate
Package truncate contains the structures describing truncate request.
Package truncate contains the structures describing truncate request.
xrdproto/verifyw
Package verifyw contains the structures describing verifyw request.
Package verifyw contains the structures describing verifyw request.
xrdproto/write
Package write contains the structures describing write request.
Package write contains the structures describing write request.
xrdproto/xrdclose
Package xrdclose contains the structures describing request and response for close request.
Package xrdclose contains the structures describing request and response for close request.