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.
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 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.