LArSoft repositories packages and dependencies2
Under development

LArSoft repositories packages and dependencies

The following is a list of the repositories/ups products that are in core LArSoft. The bullets show the corresponding SoftRelTools "packages" that are in each. The dependencies (approximate) area shown as arrows.

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.

larcore -> larcorealg

  • CoreUtils
  • Geometry (larcorealg/Geometry)

lardata -> larcore

  • ArtDataHelper
  • DetectorInfoServices
  • RawData
  • RecoBaseProxy
  • RecoObjects
  • Utilities

larevt -> lardata -> larcore

  • Filters (depends on RecoBase, Geometry, and Utilities)
  • (do not build Filters/ since this depends on RecoAlg and needs to be moved)
  • CalData (depends on Filters, RawData, RecoBase, and Utilities)

larsim -> larevt -> lardata -> larcore

  • Simulation (depends on Utilities)
  • DetSim (depends on Simulation, Filters, RawData,and Geometry)
  • LArG4 (depends on PhotonPropagation, Simulation, Geometry, and Utilities)
  • MCCheater (depends on Simulation, RecoBase,and Geometry)
  • PhotonPropagation (depends on Simulation, Filters, RawData,and Geometry)
  • TriggerAlgo (no LarSoft dependencies)
  • EventGenerator ( depends on PhotonPropagation, Simulation, SummaryData, and Geometry)

larreco -> larsim -> larevt -> lardata -> larcore

  • ClusterFinder (depends on RecoAlg, MCCheater, Filters, RecoBase,and Geometry)
  • EventFinder (depends on RecoBase and Geometry)
  • Genfit (no LarSoft dependencies)
  • HitFinder (depends on MCCheater, Simulation, Utilities, RecoBase, and Geometry)
  • ShowerFinder (depends on MCCheater, Simulation, Utilities, RecoBase, AnalysisBase, and Geometry)
  • TrackFinder (depends on RecoAlg, Genfit, Simulation, RecoObjects, AnalysisAlg, AnalysisBase, RecoBase,and Geometry)
  • VertexFinder (depends on MCCheater, Filters, Simulation, Utilities, RecoBase, and Geometry)
  • RecoAlg (depends on VertexFinder, MCCheater, RecoBase, Simulation, Filters, Geometry, RecoObjects, AnalysisBase, and Utilities)

larana -> larreco -> larsim -> larevt -> lardata -> larcore

  • Calorimetry (depends on Filters, Simulation, RecoBase, Geometry, RecoObjects, AnalysisAlg, AnalysisBase, and Utilities)
  • OpticalDetector (depends on Filters, Simulation, PhotonPropagation, RecoBase, Geometry, RecoObjects, AnalysisAlg, AnalysisBase, and Utilities)
  • ParticleIdentification (depends on RecoBase, AnalysisAlg, AnalysisBase, and Geometry)

larpandora -> larsim -> larevt -> lardata -> larcore

  • larpandora constains the code which uses Pandora
  • LArPandoraAlgorithms
  • LArPandoraInterface

Note, this is type 3, product-interface.

lareventdisplay -> larsim -> larevt -> lardata -> larcore

  • EventDisplay (depends on RecoBase, Simulation, RawData, RecoObjects, AnalysisAlg, Filters, Geometry
  • (does not depend on larreco or larana)

larexamples -> larsim -> larevt -> lardata -> larcore

  • AnalysisExample (depends on Simulation, RecoBase, and Geometry)

lardataalg -> lardataobj -> larcorealg -> larcoreobj -> canvas

This is type 2, framework-independent, but it does depend on canvas which understands the Event Data Model of art and newsimdata.


  • A special package that contains data files needed by some LArSoft jobs. This product is not
    included in larsoft_suite, and strictly speaking, is not part of core LArSoft. It is maintained
    here until a more general solution can be found. Setting up larsoft will set up larsoft_data.


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