Code

From Mu2eWiki
Revision as of 19:44, 21 March 2017 by Rlc (talk | contribs)
Jump to navigation Jump to search


example page for git documentation

Building code

There is one main mu2e code git repository which holds our simulation and reconstruction modules and algorithms, and fcl files. You can run the code out of a tagged and pre-built release, by building the entire repository locally, or by build part of the repository locally in a satellite release. You can build it optimized (prof) or in debug by issuing an scons command.

  • Basic recipe for setup, checkout and build
source /cvmfs/fermilab.opensciencegrid.org/products/common/etc/setups
setup mu2e
git clone http://cdcvs.fnal.gov/projects/mu2eofflinesoftwaremu2eoffline/Offline.git
- or -
git clone ssh://p-mu2eofflinesoftwaremu2eoffline@cdcvs.fnal.gov/cvs/projects/mu2eofflinesoftwaremu2eoffline/Offline.git
git checkout -b work
cd Offline
source setup.sh
scons -j 4 
  • git code repository management
  • scons code building tool
  • Satellite Releases for building only the part of the code base you need
  • Base releases and test releases.

References and How-to's

  • Mu2e Geometry: The Big Picture
    • Notes on the geometry files
  • Using random numbers:
    • Basic Instructions
    • Complete Instructions
  • Magnetic Field Maps.
  • Conditions Data
  • products and modules
    • Which names need to match each other.
    • The Mantra for making data products.
    • listing products and printing their contents
  • What are Services?
    • Services distributed with the framework.
    • Deprecated art services
  • About handles.
  • Filter Modules.
  • Inter-Product References: art::Ptr, art::PtrVector, art::Assns
  • cet::map_vector: a new class template
  • Exceptions: Mu2e policy, CMS guide to managing exceptions.

Configuring fcl

  • SimpleConfig
  • Run-time Configuration (.fcl files)
  • Trigger_paths, end_paths and reconstruction on demand.
  • Configuring input and output modules
  • Search path for some run-time files.
  • Using and configuring the message logger

Code Management

mu2e uses git for all code management. There is one main repository for code (with BTrk, the Kalman fit, in a separate respository) and a few smaller repositories for tools. Built releases are distributed worldwide, including remote institutions and the grids with the cvmfs distributed disk system. The code is built after every commit, and built and validated every night on the Jenkins build platform.

Standards and Practices

  • Editors: Emacs, vim; policy of not using tab characters.
  • CMS code references: Home Offline WorkBook SW Guide
  • Units and Coordinate Systems


External Packages

  • UPS/UPD as used by Mu2e
  • Setting up ROOT by itself
  • Mu2e code
  • art
  • CMS Framework
  • Root (v5.28)
  • Geant4 DOxygen(v9.4.p01)
  • Geant4 LXR
  • CLHEP(v.2.2.0.4)
  • HepPDT
  • fhicl-cpp
  • cetlib
  • Message Facility
  • cpp0x
  • BTrk
  • LXR browsers for many Fermilab projects
  • The art redmine wiki, art-users archive
  • Other external software used by Mu2e with links to documentation.