Old LArSoftWiki » History » Version 38

Version 37 (Erica Snider, 11/30/2013 08:12 PM) → Version 38/136 (Erica Snider, 11/30/2013 08:16 PM)

If you are looking for the legacy cvs LArSoft site, *all content has been moved to "LArSoft cvs (legacy site) ":*


This will be the new home of the LArSoft redmine project. For the current version of this page, please visit the "current wiki":

h1. LArSoftWiki

*Under construction...* Will go live when the migration to git/cmake is completed.

The LArSoft software is designed to work for all planned and running liquid argon experiments at Fermilab. It is written in C++ and built on the "ROOT": data analysis software and the "FMWK": framework for HEP experiments. The releases of the software are managed using an "SRT": distribution.

To join the LArSoft mailing list, please follow these "instructions": using the list name LARSOFT.

h1. Getting started

h2. Access to Fermilab computing

h3. Load balanced access to GPCF VMs

h2. Where to find the software

At Fermilab, the software lives in a set of re-locatable ups products, each of which corresponds to the code within a git repository. Each product and associated repository contain LArSoft software components (i.e., SoftRelTool "packages") that are at a similar layer of functionality. The reference products and repository urls are the following:

name* | *repository url (all in Redmine)* | lxr link
(not yet avail) | Redmine browser |
|larcore| ssh:// | -- |
|lardata| ssh:// | -- |
|larevt | ssh:// | -- |
|larsim | ssh:// | -- |
|larreco| ssh:// | -- |
|larana | ssh:// | -- |
|lareventdisplay| ssh:// | -- |
|larexamples| ssh:// | -- |
|larsoft | (A product that exists only to set up the others with a single
command. The larsoft product otherwise has no content.) | -- |

(The SoftRelTools-based packages in each product/repository can be found "here": along with the approximate order of dependency.)

You can use the @git clone <repository url>@ command to download a copy of each repository to your local area. Additional steps are needed to use, build or develop the software. These steps are described in the "How to use and develop LArSoft code" section below.

h2. Accessing LArSoft

* Repositories
* Browsing the software

h2. Release notes

| *Release* | *Date* | *Purpose* | *Changes / notes* | *Full release notes* |
| v0.00.04| 9/15/2013| "alpha" release | First release of git/cmake/ups-based LArSoft products
Used for mrb, configuration and re-factoring
development and testing | N/A |
| v0.00.09| 11/25/2013| "beta" pre-release | Second full release under new system. First full re-factoring
of experiment-specific and core LArSoft code in the larcore,
lardata, larevt, and larsim products. Preparation for expert
user testing of beta release.| N/A|
| v0.0x.0y| 12/02/2013| "beta" limited release | Beta suitable for expert testing | N/A |
| v1.00.00| Jan 2014 | First production
release | Replica of final svn-based release. Future LArSoft development
proceeds from this release. | xxx |

h1. Documentation

h2. LArSoft

h2. How to use and develop LArSoft code

h3. Overview of the user environment

LArSoft releases are distributed via "re-locatable" ups products. (A "re-locatable" ups product has a simplified structure compared to that of legacy ups products, and do not require that they be "declared" to a ups database. These features make it easier to distribute and install re-locatable products that is was with legacy ups products.) People interested in using the core LArSoft software, but who have no need to modify or develop that software can in principle simply perform the appropriate ups @setup <product> <version> -q <qualifier>@ commands, then build their code against those products by reference to the corresponding $<PRODUCT_NAME>_INC and $<PRODUCT_NAME>_LIB environment variables. In addition to the individual products, there is a @larsoft@ product that can be used to set up all other products with a single command:
setup larsoft <version> -q <qualifiers>
The qualifiers will be one of the following:
* debug:e2
* prof:e2
* opt:e2


* debug = debugging symbols available
* opt = compiler optimizations enabled
* prof = compiler optimizations enabled, generate profiling code
* e2 = built witih gcc 4.7.1 and -std=c++0x

In general, only @debug@ and @prof@ will be provided, since there is no run-time performance penalty for code that has the profiling code present.

The recommended way to work with LArSoft is to use @mrb@, the multi-repository build tool, to check out and build your own code.

h3. Overview of the developer environment

h2. General user workflow

h2. Tools for working with the software

* git
* git flow
* mrb : the multi-repository build tool

* Basic workflow
* Using git
* Multi-repository build

h1. How to

h2. Advanced technical how-to's

h2. Release procedures

h1. Walk-through exercises

h1. Working areas

[[Beta re-factoring]]