-
Notifications
You must be signed in to change notification settings - Fork 4
Installation notes (CMSSW)
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).
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.
The framework setup for Excalibur involves several components:
- The data format definition of the input files: Kappa
- The basic interaction toolkit for this format: KappaTools
- The basic analysis framework: Artus
- The specific analysis program (for e.g. a Z+Jet(s) or calibration analysis): Excalibur
- 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.
Once all packages have been checked out, Excalibur can be compiled with
the scramv1
command (provided as part of CMSSW):
scramv1 b -j12