Go HEP release 0.23.0


Release v0.23.0 is fresh from the oven.

This release contains a couple of groot related features and bugfixes.


groot gained 2 new commands:

$> root2fits -h
root2fits converts the content of a ROOT tree to a FITS (binary) table.

Usage: root2fits [OPTIONS] -f input.root


 $> root2fits -f ./input.root -t tree

  -f string
    	path to input ROOT file name
  -o string
    	path to output FITS file name (default "output.fits")
  -t string
    	name of the ROOT tree to convert
$> fits2root -h
fits2root converts the content of a FITS table to a ROOT file and tree.

Usage: fits2root [OPTIONS] -f input.fits


 $> fits2root -f ./input.fits -t MyHDU

  -f string
    	path to input FITS file name
  -o string
    	path to output ROOT file name (default "output.root")
  -t string
    	name of the FITS table to convert

Also, many root-xyz commands have been refactored into a simple shim executable that calls into the new groot/rcmd so users (and groot tests) can more easily customize or re-use, say, root-ls, root-dump, … through an API instead of spawning a sub-process. This refactor is especially useful for rcmd.Merge, where users can register their own merge strategy for their own types (by implementing the root.Merger interface.)

groot/rtree can now correctly read multi-leaves branches.

And support for TLeafF16, TLeafD32, TProcessID, TRef, TRefArray, TVector2, TVector3, TLorentzVector and TFeldmanCousins has been added.


  • fixes for HLine and VLine have been applied: HLine/VLine outside a canvas were incorrectly drawn.


  • migration to gokrb5/v8


  • 398059a groot/rbase: add initial support for tracking Refs
  • 8c42445 groot: introduce root.UIDer interface
  • 8d26a4a groot{,rdict,rvers}: first stab at TBits
  • 4b94d19 groot{,rdict,rvers}: first stab at TProcessUUID
  • 84a6e03 ci: bump appveyor to Go-1.13
  • 6e0dddd groot{,rdict,rphys,rvers}: add TFeldmanCousins
  • be0efa3 groot/rphys: properly handle version-2 of TVector{2,3}
  • c9a6535 groot{,rdict,rphys,rvers}: add TVector2
  • 77598d3 hplot: fix HLine/VLine for out of canvas lines
  • 64086e9 hep: update Go modules
  • 20a7b06 hep,xrootd/xrdproto/auth: migrate to gokrb5/v8
  • 4900ca2 groot: implement TVector3, TLorentzVector
  • 808cc5b groot: add TRefArray
  • dbf217c groot: add first stab at a TRef implementation
  • 683c737 hbook: fix doc-example of H1D.Integral after Binning1D API migration
  • c1fb32e cmd/root2arrow: improve automatic installation of arrow-cat
  • 237736a groot/{internal,rdict}: add list-groot-{sinfos,types}
  • 12725a7 groot: generate textual representation of streamers
  • 9ae982c groot/rdict: handling of Long64_t members in ROOT->groot streamer generation
  • ca69d60 groot/rdict: better handling of groot-wrapped ROOT types in ROOT->groot streamer generation
  • c19782e groot/rdict: add range-parsing to StreamerElement unmarshaling
  • 499a8f4 groot/riofs: add generation of std::map-based ROOT data tree
  • 2376dc0 groot/riofs/gendata: simplify code generation
  • d5830ae groot/{rdict,riofs,rtree}: improve STL-container name arguments parsing
  • 7118537 groot/{rdict,rtree}: rename StreamerSTL.STLVectorType into STLType
  • 8e85fb9 xroot/xrdproto/auth/krb5: migrate to gokrb5.v7
  • a44b1ea hep: go mod tidy
  • 3216604 hplot: make sure embedmd is installed+required
  • fb7f30f hep: remove link to opencollective
  • 64d644a groot: implement r/w TLeafF16
  • d17364c groot: implement r/w TLeafD32
  • c9904cb groot/rdict: add support for TLeaf{D32,F16} comment/range parsing
  • 98e75b5 groot{,/riofs,/rvers}: add support for TLeafF16 and TLeafD32
  • 5621593 groot/{cmd/root-diff,rcmd}: refactor root-diff into rcmd.Diff
  • 4c1484a groot/rcmd: refactor Dump into a dumpCmd struct
  • 9e53d27 groot/{cmd/root-cp,rcmd}: export root-cp as rcmd.Copy
  • a1734ed groot/{cmd/root-merge,rcmd}: export root-merge as rcmd.Merge
  • 6851230 cmd/arrow2root: use rcmd.Dump
  • 944c4a9 cmd/fits2root: use groot/rcmd.Dump in tests
  • e20ccab groot: export rcmd package
  • 098e848 groot: more pervasive use of rtests.RunCxxROOT
  • af6ef10 groot/rtree: handle merging of Atlas flat-tuples
  • 1df725b groot/riofs: add support for TProcessID StreamerInfo
  • 0e1f43f groot/{rbase,rtypes}: implement TProcessID
  • 1978a74 groot{,/rvers}: add support for TProcessID
  • ebbd064 groot/rdict: better error message
  • d3b1b41 groot/rmeta: better error message
  • cee0755 groot/rtree: add more Branch.setAddress tests
  • aad9221 groot/riofs: use rtests for generating testdata
  • 98fe128 groot/{internal/rcmd,riofs}: add testfile w/ & w/o padding
  • 4419621 groot/internal/rcmd: properly display branches w/ multi-leaves in root-dump
  • e25f2ad groot/rtree: support reading multi-leaves branches
  • 3c58df0 cmd/root2fits: first import
  • f15977d cmd/fits2root: first import
  • 3e92a08 all: 2020 is the year of the Gopher