This repository contains documentation for the ICHiggsTauTau CMSSW package. This provides:
- A C++ namespace, ic, under which all new classes, structs and functions should be defined
- A set of physics object classes, e.g. ic::Electron and ic::Jet which can be stored in ntuples and manipulated in analysis code. The definition and implementation of these classes can be found in the interface and src directories of this package. These classes and associated ROOT I/O dictionaries are generated by the
scram
tool - CMSSW producer plugins that manufactures these physics objects from CMS datasets, located in the plugins directory of the package. These modules are also compiled by
scram
. - An offline analysis framework which is mostly independent of the CMSSW framework. This is organised into a series of packages located in the
Analysis
directory. This area is intended to contain all the code for event processing, applying cut-flows and making final plots.
Documentation can be produced by running doxygen
from within the ICHiggsTauTau directory. A recent copy of the html output can be found here:
http://agilbert.web.cern.ch/agilbert/analysis/index.html
The instructions for setting a CMSSW area with the ICHiggsTauTau package are reproduced below.
The following steps set up a new area, but note that only certain CMSSW releases are supported. This replaces the CVS recipe of creating a new area and running the setup_X_Y_Z.sh
script, and unfortunately this new procedure is more complicated.
Supported releases:
CMSSW_4_2_8_patch7
CMSSW_5_3_7
CMSSW_5_3_11
The official CMSSW repository is hosted here: https://github.com/cms-sw/cmssw. If you do not already have a GitHub account, please read through the instructions at http://cms-sw.github.io/cmssw/faq.html, in particular ensure you have configured git with your personal information:
git config --global user.name [First Name] [Last Name]
git config --global user.email [Email Address]
git config --global user.github [GitHub account name]
#If you are running at IC you also need to do: git config --global http.sslVerify false
#This extra line is not needed at CERN. Anywhere else if you see a fatal error message relating to SSL certificate problems it may be required
\attention If working from a machine based at IC, the version of git supplied by the operating system may be too old to support some of the commands in these instructions. A more up-to-date version is provided here /home/hep/ajg06/git/
, to use this by default add this line to the .bashrc
file:
export PATH=/home/hep/ajg06/git/bin:$PATH
Before working with CMSSW in git, you will need to create a copy (or fork) of the official CMSSW repository in your own account at https://github.com/cms-sw/cmssw/fork. You will be able to store your own CMSSW branches and developments in this forked repository.
Create a new CMSSW area:
export SCRAM_ARCH=slc5_amd64_gcc462
# Newer versions of CMSSW need SCRAM_ARCH=slc5_amd64_gcc472
scramv1 project CMSSW CMSSW_X_Y_Z
cd CMSSW_X_Y_Z/src/
cmsenv
Initialise this area for git by adding a single package:
git cms-addpkg FWCore/Version
# If you are not running on a machine based at CERN, this script will ask if you want to create a new reference repository.
# You should answer yes to this, and the script will copy the entire cmssw repository to your home folder,
# which will make setting up subsequent release areas a lot faster.
This command will have created two remote repositories, official-cmssw
and my-cmssw
. It will also have created and switched to a new branch, from-CMSSW_X_Y_Z
. An additional remote should be added which provides the pre-configured branches:
git remote add ic-cmssw git@github.com:ajgilbert/cmssw.git
git pull ic-cmssw from-CMSSW_X_Y_Z # fetch from the ic-cmssw remote repository and merge the from-CMSSW_X_Y_Z into your own local branch.
# At this point, if you run 'ls' you will not see any new packages in the release area.
# This is because the repository operates in sparse-checkout mode, hiding folders unless they are
# explicitly made visible. This is important, as we don't want to have to compile every single package.
# To make the packages visible that have been modified from the release tag, run these commands:
git cms-sparse-checkout CMSSW_X_Y_Z HEAD
git read-tree -mu HEAD
# You may optionally make other packages visible that depend on those which have been modified, so that
# they will be recompiled.
git-cms-checkdeps -a
# In principle this should have also been done when using CVS, but is still not essential.
Next, add the IC analysis code package:
mkdir UserCode
cd UserCode
git clone git@github.com:ajgilbert/ICHiggsTauTau.git
cd ICHiggsTauTau
./init_X_Y_Z.sh # This script performs a few final tasks in the new cmssw area