README

hep

GitHub release go.dev reference Build Status Build status CI codecov Go Report Card GoDoc License DOI JOSS Paper Binder Twitter Follow TODOs

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

Contributors

This project exists thanks to all the people who contribute.

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.

Expand ▾ Collapse ▴

Documentation

Overview

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

    Example (Version)
    Output:
    
    

    Index

    Examples

    Constants

    This section is empty.

    Variables

    This section is empty.

    Functions

    func Version

    func Version() (version, sum string)

      Version returns the version of Go-HEP and its checksum. The returned values are only valid in binaries built with module support.

      Types

      This section is empty.

      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
      arrow2root
      arrow2root converts the content of an ARROW file to a ROOT TTree.
      arrow2root converts the content of an ARROW file to a ROOT TTree.
      fits2root
      fits2root converts the content of a FITS table to a ROOT file and tree.
      fits2root converts the content of a FITS table to a ROOT file and tree.
      lhef2hepmc
      lhef2hepmc converts a LHEF input file into a HepMC file.
      lhef2hepmc converts a LHEF input file into a HepMC file.
      npy2root
      Command npy2root converts the content of a NumPy data file to a ROOT file and tree.
      Command npy2root converts the content of a NumPy data file to a ROOT file and tree.
      podio-gen
      Command podio-gen generates a complete EDM from a PODIO YAML file definition.
      Command podio-gen generates a complete EDM from a PODIO YAML file definition.
      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.
      root2arrow
      root2arrow converts the content of a ROOT TTree to an ARROW file.
      root2arrow converts the content of a ROOT TTree to an ARROW file.
      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.
      root2fits
      root2fits converts the content of a ROOT tree to a FITS (binary) table.
      root2fits converts the content of a ROOT tree to a FITS (binary) table.
      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 groot provides a pure-go read/write-access to ROOT files.
      Package groot provides a pure-go read/write-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-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-gen-rfunc
      Command root-gen-rfunc generates a rfunc.Formula based on a function signature or an already existing function.
      Command root-gen-rfunc generates a rfunc.Formula based on a function signature or an already existing function.
      cmd/root-gen-streamer
      Command root-gen-streamer generates a StreamerInfo for ROOT and user types.
      Command root-gen-streamer generates a StreamerInfo for ROOT and user types.
      cmd/root-gen-type
      Command root-gen-type generates a Go type from the StreamerInfo contained in a ROOT file.
      Command root-gen-type generates a Go type from the StreamerInfo contained in a ROOT file.
      cmd/root-ls
      root-ls lists the content of a ROOT file.
      root-ls lists the content of a ROOT file.
      cmd/root-merge
      root-merge merges ROOT files' content into a merged ROOT file.
      root-merge merges ROOT files' content into a merged 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-split
      root-split splits an input file+tree into multiple output ROOT files, each containing N entries.
      root-split splits an input file+tree into multiple output ROOT files, each containing N entries.
      cmd/root-srv
      root-srv runs a web server that can inspect and browse ROOT files.
      root-srv runs a web server that can inspect and browse ROOT files.
      exp/rntup
      Package rntup contains types to handle RNTuple-related data.
      Package rntup contains types to handle RNTuple-related data.
      rarrow
      Package rarrow handles conversion between ROOT and ARROW data models.
      Package rarrow handles conversion between ROOT and ARROW data models.
      rbase
      Package rbase contains the definitions of ROOT base classes.
      Package rbase contains the definitions of ROOT base classes.
      rbytes
      Package rbytes contains the definitions of types useful for serializing and deserializing ROOT data buffers.
      Package rbytes contains the definitions of types useful for serializing and deserializing ROOT data buffers.
      rcmd
      Package rcmd provides helper functions containing the logic of various root-xyz commands.
      Package rcmd provides helper functions containing the logic of various root-xyz commands.
      rcont
      Package rcont contains the definitions of ROOT container types, such as TList, THashList and TObjArray.
      Package rcont contains the definitions of ROOT container types, such as TList, THashList and TObjArray.
      rdict
      Package rdict contains the definition of ROOT streamers and facilities to generate new streamers meta data from user types.
      Package rdict contains the definition of ROOT streamers and facilities to generate new streamers meta data from user types.
      rhist
      Package rhist contains the interfaces and definitions of ROOT types related to histograms and graphs.
      Package rhist contains the interfaces and definitions of ROOT types related to histograms and graphs.
      riofs
      Package riofs contains the types and low-level functions to deal with opening and creating ROOT files, and decoding the internal structure of ROOT files.
      Package riofs contains the types and low-level functions to deal with opening and creating ROOT files, and decoding the internal structure of ROOT files.
      riofs/plugin/http
      Package http is a plugin for riofs.Open to support opening ROOT files over http(s).
      Package http is a plugin for riofs.Open to support opening ROOT files over http(s).
      riofs/plugin/xrootd
      Package xrootd is a plugin for riofs.Open to support opening ROOT files over xrootd.
      Package xrootd is a plugin for riofs.Open to support opening ROOT files over xrootd.
      rmeta
      Package rmeta provides tools to interoperate with ROOT Meta.
      Package rmeta provides tools to interoperate with ROOT Meta.
      root
      Package root defines ROOT core interfaces.
      Package root defines ROOT core interfaces.
      rphys
      Package rphys contains definitions for physics-related ROOT classes.
      Package rphys contains definitions for physics-related ROOT classes.
      rsql
      Package rsql provides a convenient access to ROOT files/trees as a database.
      Package rsql provides a convenient access to ROOT files/trees as a database.
      rsql/rsqldrv
      Package rsqldrv registers a database/sql/driver.Driver implementation for ROOT files.
      Package rsqldrv registers a database/sql/driver.Driver implementation for ROOT files.
      rsrv
      Package rsrv exposes HTTP end-points to manipulate ROOT files.
      Package rsrv exposes HTTP end-points to manipulate ROOT files.
      rtree
      Package rtree contains the interfaces and types to decode, read, concatenate and iterate over ROOT Trees.
      Package rtree contains the interfaces and types to decode, read, concatenate and iterate over ROOT Trees.
      rtree/rfunc
      Package rfunc provides types and funcs to implement user-provided formulae evaluated on data exposed by ROOT trees.
      Package rfunc provides types and funcs to implement user-provided formulae evaluated on data exposed by ROOT trees.
      rtypes
      Package rtypes contains the means to register types (ROOT ones and user defined ones) with the ROOT type factory.
      Package rtypes contains the means to register types (ROOT ones and user defined ones) with the ROOT type factory.
      rvers
      Package rvers contains the ROOT version and the classes' versions groot is supporting and currently reading.
      Package rvers contains the ROOT version and the classes' versions groot is supporting and currently reading.
      ztypes
      Package ztypes holds all the types registered with the rtypes factory.
      Package ztypes holds all the types registered with the rtypes factory.
      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.
      ntup/ntroot
      Package ntroot provides convenience functions to access ROOT trees as n-tuple data.
      Package ntroot provides convenience functions to access ROOT trees 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
      Package lcio provides read/write access to the LCIO data model.
      Package lcio provides read/write access to the LCIO data model.
      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.
      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.
      sliceop
      f64s
      Package f64s provides common operations on float64 slices.
      Package f64s provides common operations on float64 slices.
      Package xrootd implements the XRootD protocol from http://xrootd.org Package xrootd provides a Client and a Server.
      Package xrootd implements the XRootD protocol from http://xrootd.org Package xrootd provides a Client and a Server.
      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-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.
      xrdfs
      Package xrdfs contains structures representing the XRootD-based filesystem.
      Package xrdfs contains structures representing the XRootD-based filesystem.
      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/admin
      Package admin contains the types related to the admin request.
      Package admin contains the types related to the admin request.
      xrdproto/auth
      Package auth contains the structures describing auth request.
      Package auth contains the structures describing auth request.
      xrdproto/auth/host
      Package host contains the implementation for the "host" security provider.
      Package host contains the implementation for the "host" security provider.
      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/decrypt
      Package decrypt contains the types related to the decrypt request.
      Package decrypt contains the types related to the decrypt 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/endsess
      Package endsess contains the types related to the endsess request.
      Package endsess contains the types related to the endsess request.
      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/locate
      Package locate contains the types related to the locate request.
      Package locate contains the types related to the locate request.
      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/prepare
      Package prepare contains the types related to the prepare request.
      Package prepare contains the types related to the prepare 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/query
      Package query contains the types related to the query request.
      Package query contains the types related to the query request.
      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.