Skip to content

Installation notes (CMSSW)

cheideck edited this page May 9, 2019 · 5 revisions

Although it can be installed as a standalone package, the most convenient way of satisfying all dependencies is to set up a working area of the CMS Software Framework (CMSSW).

Setting up a CMSSW working area

Assuming you are on a machine which has the CMS software repository on CVMFS mounted under /cvmfs/cms.cern.ch, you can create a working area in your current directory by running the following commands:

export VO_CMS_SW_DIR=/cvmfs/cms.cern.ch/
export SCRAM_ARCH=slc6_amd64_gcc530
source $VO_CMS_SW_DIR/cmsset_default.sh
cmsrel CMSSW_8_0_28_patch1
cd CMSSW_8_0_28_patch1/src
cmsenv
git cms-init

In the above, CMSSW_8_0_28_patch1 is the CMSSW version number. Note that while Excalibur may work with any recent CMSSW version, it is generally advisable to use one for which the first two numbers (major and minor version) coincide with the CMSSW version used for the input skims.

Once the CMSSW working area has been set up, all required packages must be checked out into the src directory. This is described in the following section.

Checking out all required packages

The framework setup for Excalibur involves several components:

  1. The data format definition of the input files: Kappa
  2. The basic interaction toolkit for this format: KappaTools
  3. The basic analysis framework: Artus
  4. The specific analysis program (for e.g. a Z+Jet(s) or calibration analysis): Excalibur
  5. The CMSSW package for applying jet energy corrections ('CondFormats/JetMETObjects')

These packages must all be installed in the src directory of your CMSSW working area. Before checking out any packages, however, be sure to initialize a CMSSW git repository in your working area:

git cms-init

This will allow you to add individual components from CMSSW by using the git cms-addpkg command. If you don't want to use your own fork of the official CMSSW git, you can force a direct clone by using:

git cms-init --upstream-only

Next, install the CMSSW package for applying jet energy corrections:

git cms-addpkg CondFormats/JetMETObjects

All other packages have their own GitHub repository. You can get these by cloning each one into its own subdirectory under src:

git clone https://github.com/KIT-CMS/Kappa.git
git clone https://github.com/KIT-CMS/KappaTools.git
git clone https://github.com/KIT-CMS/Artus.git
git clone https://github.com/cms-jet/JECDatabase.git --depth=1
git clone https://github.com/KIT-CMS/Excalibur.git

It's also advisable to exclude these subdirectories from being version-controlled by the outer CMSSW git repository:

echo /Kappa >> .git/info/exclude
echo /KappaTools >> .git/info/exclude
echo /Artus >> .git/info/exclude
echo /JECDatabase >> .git/info/exclude
echo /Excalibur >> .git/info/exclude

Since not all of Kappa is needed, a sparse checkout can be configured for the Kappa subdirectory:

cd Kappa
echo docs/ >> .git/info/sparse-checkout
echo DataFormats/ >> .git/info/sparse-checkout
echo Skimming/data/ >> .git/info/sparse-checkout
echo Skimming/python/ >> .git/info/sparse-checkout
git config core.sparsecheckout true
git read-tree -mu HEAD
cd ..

Last, if you are planning to run Excalibur on a distributed computing system, get the latest version of grid-control:

git clone https://github.com/grid-control/grid-control -b r1982 $CMSSW_BASE/../grid-control

A checkout script containing all the above commands is available as part of this repository: checkout_excalibur.sh Run this file in an empty CMSSW working area (under src) to check out all required packages.

Building Excalibur

Once all packages have been checked out, Excalibur can be compiled with the scramv1 command (provided as part of CMSSW):

scramv1 b -j12