The Software Working Group is working on physics and detector simulations that enable a quantitative assessment of the measurement capabilities of the EIC detector(s) and their physics impact for the Yellow Report Initiative. The common simulation tools and workflow environment being set up by the working group allow the EICUG to pursue the Yellow Report studies in a manner that is accessible, consistent, and reproducible.

Table of contents

General Update


The Software Working Group will start to announce software updates, known bugs, and other software related news on the mailing list. While summaries will be provided in our Software News, we encourage all working groups to subscribe to

Expression of Interest on Software

The Software Working Group is coordinating an Expression of Interest on Software. In the Expression of Interest, we would like to leverage everyone’s experience to define requirements for EIC Software and identify common software projects based on these requirements. Examples for common software in the community are ACTS, DD4hep, Gaudi, Geant4, JANA2, Jupyter, or ROOT. Our Expression of Interest on Software will cover all components of EIC Software: Simulation, reconstruction, physics analyses, streaming readout, online monitoring, etc., and will include the emerging technologies of Artificial Intelligence and Quantum Computing. As a next step, we invite you to a meeting on Thursday, September 3.

GitHub for the EICUG is available for the whole EICUG. For membership, please send your GitHub username to We encourage you to share your software and documentation on Please follow our guidelines in doing so.

Support us to support you better

The common simulation tools and workflow environment can only grow with user input. The Software Working Group asks interested users to join our support team to ensure fast response to user requests. This is an ideal opportunity to learn more about the software and its development.


The tutorials for fast and detector full simulations are available on the EICUG YouTube channel. The next tutorials will be on Monte Carlo Event Generators (MCEGs):

Details will be shared on the Indico site for the MCEG tutorials.

Workshop on “Machine Learning for Particle Physics Experiments”

The first joint GlueX-PANDA-EIC workshop will take place September 21-15 2020. The online meeting on “Machine Learning for Particle Physics Experiments” will consist of 3 to 4 lectures a day each 45 minutes long. The workshop aims both at beginners in Machine Learning and more experienced software developers. Longer sessions for questions and discussions at the beginning and the end of each working day are foreseen. A tentative agenda can be found at the Indico page of the workshop. Registration is free and encouraged.

Software Update

In the July Software News, updates on eic-smear, EicToyModel, ESCalate, and Fun4All are included.


The master branch is now updated to version 1.1.0 and is rolling out on farms now.

This update introduces major updates and changes:

Eic-smear Detectors

The detector scripts including test and example code are provided in their own repository. This repository now also creates a separate library to use with compiled code.

The MATRIX parameterizations are derived from the interactive Detector Matrix and represent the detector parameterizations by the Detector Working Group. In the currently available version, only information about the central detector but not yet the far-forward detectors are available. By request from various working groups, an interim parametrization, MATRIXFF, is provided that combines the MATRIX parameterizations with first information on the far-forward detectors (ZDC, B0, and Roman Pots). This information is available for a few beam energies only. When using the MATRIXFF parameterizations, the beam energy has to be specified as a second parameter. An example is given here:

$ eic-smear
eic-smear [0] BuildTree("ep_hiQ2.20x250.small.txt.gz")
eic-smear [1] SmearTree(BuildByName("MATRIXFF",275),"ep_hiQ2.20x250.small.root")
//compared to: 
//eic-smear [2] SmearTree(BuildByName("MATRIX"),"ep_hiQ2.20x250.small.root"))

Please see the README for details.


The EicToyModel software suite was recently added to the EIC Software collection. This compact ROOT-based C++ library was developed for EIC Central Detector configuration purposes, with a goal to synchronize the detector layout description in various Yellow Report related activities, GEANT4 simulations in particular.

The tool allows users to create various EIC detector configuration templates (namely, the self-consistent collections of 3D sub-detector integration volumes), visualize and share the models, and ultimately make use of them in the GEANT4 simulation environment. An extensive README with several usage examples is provided. Interfaces to the EIC simulation frameworks ESCalate and Fun4All still needs to be finalized.


ESCalate v1.1.0

ESCalate version 1.1.0 has been released. It includes JANA v2.0.3, eJANA v1.2.3, g4e v1.3.5, and many other software packages as listed in the software version table.

For the new release, the instructions for getting started with ESCalate have been simplified. You can run ESCalate:

  1. on your local machine using Docker
  2. at the labs (or also locally) using Singularity
  3. in a native build at Jefferson Lab
  4. in your browser using JupyterLab

You can also try out ESCalate without any installation on Binder.

Spack and CVMFS central installation

The Software Working Group has started to test Spack as a package manager for the EIC. Spack is open-source software that enables and automates the deployment of multiple versions of a software package to a single installation. In the Software News of the next months, we will share more details on Spack for the EIC. For ESCalate, Spack packages are in a beta stage but already very convenient to use. The packages are installed on /cmvfs/ and available at the labs but can be also installed locally.

Calorimeter updates in g4e and eJANA

For the calorimeter studies in ESCalate, a new wall standing calorimeter algorithm has been introduced. The Islreco reconstruction algorithm has been used extensively in the Segmented Large X baryon Spectrometer (SELEX) at Fermilab and the PrimEx-II and PrimEx-D experiments at Jefferson Lab. In this algorithm, island method clusterization is combined with common reconstruction algorithms. The Islreco algorithm can be used for hybrid calorimeters and has many helpful features, e.g., the (x,y) coordinates from tracking can be used for or better cluster separation.


The macros were reorganized to disentangle the various large detector concepts. The macros which set up the subsystems for the EIC detector based on the Babar magnet and for other EIC detector implementations were moved into separate areas. They are installed during the build and are available via the ROOT_INCLUDE_PATH (just like any other include). The advantage of this setup is that detector systems can now share these subsystems without having to copy those macros locally. Development is done locally - the local macro takes precedence over the installed macro.

Why should you care?

This makes it much easier to set up your own complete eic detector with components of your choosing (but you are responsible that they fit - better run with overlap check for the first time). We have a handful of pre-defined configurations, all using the proper scalable fieldmaps or constant solenoidal field:

You will find a Fun4All_G4_XXX.C and G4Setup_XXX.C macro in those directories. The G4Setup_XXX.C macro set up the magnet and the selection of subsystems which can be used. The Fun4All_G4_XXX.C selects the options what you want to run.

All Fun4All_G4_XXX.C macros can run all our event generators (single particles - gun and distributions, pythia6, pythia8, generators from eic-smear, sartre, hijing, upsilons). The Beast implementation is currently the magnet with the eic beampipe only - lets see if we can fill the empty space. Fast truth based tracking based on genfit is enabled for all eic detectors. sPHENIX and fsPHENIX have actual tracking for the barrel which is under development, if someone is interested to work on eic tracking we have some ideas and some code to start with (caveat: this is an expert operation where some experience is needed). The raw output can be written to root TTrees for inspection.

The macros run out of the box (after sourcing the /cvmfs/ script using a single particle generator).

Create Your Own Detector Concepts

If you want to create your own you can start with our newest addition to our tutorial. They contain the Fun4All_G4 and G4Setup templates for the available magnets (which differ in size and strength):

By default the respective fieldmaps are used but you can switch to a constant solenoidal field and the eic beam pipe is included. Once you decided on the volume names of your tracking detectors you can run our fast genfit based track fitting. It supports cylinders and planes (barrel detectors and forward/backward disks).

Help with Fun4All

Help is available via our support channel in Mattermost, non BNL Accounts need an invite - contact us.

About the Software Working Group

Please see our website for more information about the Software Working Group and engage in the discussion on our mailing list. For software questions, please see our tutorials, contact us via, or join our Slack channel (see QR code below).