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 repositories:
  1. framework-dependent - depends on art and directly and indirectly on other things.
  2. framework-independent - sometimes referred to as shared repositories in the context of LArLite because they are shared directly between external frameworks and LArSoft. They are designed to have minimal dependencies.
  3. product-interface - provides direct access to a particular package (such as Pandora or LArWireCell) without making any other part of LArSoft dependent on them.
    The second and third type will be explicitly identified below.

With the addition of framework-independent repositories, there is now a dependency on the new repositories as shown in the following diagram:

laccoreobj      larcore
       ^       /    ^
       |      /     |
       |     v      |
laracorealg     lardata
       ^         /  ^
       |        /   |
       |       /    |
lardataobj    / larevt
       ^     /      ^
       |    /       |
       |   v        |
laradataalg     larsim


  • Geometry (no LarSoft dependencies)
  • SummaryData (no LarSoft dependencies)
  • SimpleTypesAndConstants (no LarSoft dependencies)

lardata -> larcore

  • AnalysisBase (depends on RecoBase)
  • Utilities (depends on RecoBase and Geometry)
  • RawData (depends on SummaryData)
  • RecoBase (depends on RawData)
  • RecoObjects (depends on AnalysisAlg, Geometry, RecoBase, and Utilities)
  • AnalysisAlg (depends on AnalysisBase, RecoBase, and Utilities)
  • OpticalDetectorData (no LarSoft dependencies)

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