Concepts in LArSoft

The goal of this material to help LArSoft users understand the big picture of what is going on within the code. The aim is not to show specific code examples but to lay the foundation for the conceptual understanding.

Basic steps in a simulation

The simulation is a chain or series of steps. Each step models a specific physical process. Based on Robert Hatcher’s Simulation Tools in Neutrino Experiments.


Detector-specific information is contained within the Geometry so other software doesn’t have to explicitly depend on which detector is being considered. Based on  Erica Snider’s slides from LArSoft classDiego Garcia-Gamez’s slides and Wiki detailed page on Geometry.

Reconstruction steps

Reconstruction extracts physical information provided by the wire output signals. The space coordinates and energy deposited by the different particles are used to build a picture of the event. Based on Erica Snider’s Introduction to LArSoft code and work environment.

Designing software in LArSoft

How to design software for LArSoft. Based on  Erica Snider’s introduction to LArSoft .

Data Products

Data products are classes which can be saved into the art ROOT output file. They are the means by which a module can learn the result of other modules.


An algorithm is a class, with one or more instances managed by user code, that performs a task or part of it.  Based on Gianluca  Petrillo’s slides for algorithms and services from the LArSoft class and  LArSoft Wiki on Writing LArSoft Algorithms.


A LArSoft service is a class, with a single instance managed by the framework, that performs an operation. A service is used by LArSoft algorithms and art modules. Based on Gianluca  Petrillo’s slides for algorithms and services from the LArSoft class and  LArSoft Wiki on Writing LArSoft Services.

Coding in LArSoft 

How to code for LArSoft. Based on Saba Sehrish’s LArSoft technical details and  Erica Snider’s introduction to LArSoft .

Code analysis process

How LArSoft is doing code analysis. Based on LArSfot Redmine wiki page on code analysis  and  Erica Snider’s  – LArSoft code analysis process presentation.


Recommendations on developing configurations and configuration-aware C++ code.

Testing in LArSoft

How to test LArsoft. Based on  Erica Snider’s introduction to LArSoft  and Erica Snider’s Introduction to LArSoft CI System.)

Continuous Integration (CI) in LArSoft

The set of tools, applications and machines that allows users to specify and automate the execution of tests of LArSoft software. This material is based on Erica Snider’s Introduction to LArSoft CI System and the redmine wiki page on CI.