LArSoft repositories packages and dependencies

There are a number of repositories/ups products that are in core LArSoft.

There are three types of core LArSoft repositories:
  1. framework-dependent - depends on art and directly and indirectly on other things. These repositories are depicted in the dependency diagram below as the center column of magenta ovals. These repositories also depend on a variety of external products, depicted in the column on the left, and on framework-independent LArSoft repositories (to be discussed next) shown in the column to the right.
  2. framework-independent - sometimes referred to as "shared" repositories (e.g., in the context of LArLite) because they can be shared directly with external frameworks and packages, and LArSoft. They are designed to have minimal dependencies to other products or repositories beyond other "shared" repositories, as shown in the right column of ovals.
  3. product-interface - provides direct access to a particular package (such as Pandora or LArWireCell) without making any other part of LArSoft dependent on that package. The interface products may depend on other core LArSoft repositories, but none of the other core LArSoft repositories may depend on the interface products. Some examples of these repositories are depicted as the green ovals in the dependency diagram below.

Note that arrows in the dependency diagram point to repositories that resolve direct dependencies in the repository at the tail of the arrow.

structural diagram

Dependencies diagram


  • interface to Geant4


  • interface to the Wire Cell Toolkit


  • LArSoft interface to the pandora reconstruction package


  • An umbrella product which is used to setup all the individual larsoft products


  • Secondary reconstruction/analysis e.g. PID


  • Primary reconstruction modules


  • Simulation modules


  • Low level algorithm and utility code that may be needed at various levels of the simulation and reconstruction, and that use data products. Interface services to conditions databases typically live here.


  • Utilities and services that manipulate or provide simplified interfaces to data products.


  • Low level utilities, functions and services

The following repositories have no framework dependencies, and can be built and used in alternate frameworks and development environments


  • Deep learning algorithms and their dependencies


  • Simulations that use deep learning algorithms


  • Simulations for radiologicals


  • umbrella that sets up all the individual lar*obj and lar*alg


  • algorithms shared between larsoft and art-independent frameworks such as gallery, larlite, etc.


  • common data products for reconstruction, analysis, etc shared between larsoft and art-independent frameworks


  • core algorithms shared between larsoft and art-independent frameworks such as gallery, larlite, etc.


  • data products for geometry and core utilities that are shared between larsoft and art-independent frameworks


  • A special UPS package that contains configuration data in large, binary, or other file types that are unsuitable for storage in code repositories. Version control is managed through the UPS system. Because there is no corresponding code repository, this product is not included in the larsoft_suite repositories, and is not part of core LArSoft. Open a LArSoft issue ticket to discuss additions or modifications to the contents of this product.

Experiment Code

The following diagram shows how experiment code fits into the system.