LArSoft implementation

Important concepts in LArSoft implementation.

LArSoft Code Organization

How the LArSoft code is organized. The LArSoft body of code has two components, experiment-specific code and experiment-agnostic data structures, algorithms, interfaces, etc.

Contributing Code

Expectations for contributing code to LArSoft. Code can be non-breaking or breaking and the expectations for each case is covered.

Multi-threading in LArSoft

To make code thread-safe, it is important to know what objects are shared and know when they are shared. The difficulty depends on the context. Based on: Making Code Thread-Safe by Kyle Knoepfel and Introduction to multi-threading and vectorization by Matti Kortelainen.

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.

Testing in LArSoft

How to test LArSoft. Based on Erica Snider’s Introduction to LArSoft – source material 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.