Imperial Analysis
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Pages
Introduction

Overview

This repository is best considered in two parts. The first is a CMSSW package (UserCode/ICHiggsTauTau), which follows the standard conventions:

  • Physics object classes defined and implemented in the interface and src directories
  • CMSSW modules defined and implemented in the plugins directory that covert CMSSW objects to these formats
  • Configuration fragments for cmsRun jobs in the python directory
  • Complete configurations for cmsRun jobs in the test directory
  • Compiled using the scram tool, which will produce ROOT dictionaries for the object classes following the specification in the src/classes.h and src/classes_def.xml

The second part is an offline analysis framework, organised into a series of packages within the Analysis directory. This provides:

  • A modular build system implemented with make
  • A simple framework for analysing events, in which the work is done by module classes, in a similar fashion to the CMSSW framework
  • The same physics object classes from above are provided in the Objects package, with ROOT dictionaries built using the standard rootcint method and steered by the Objects/interface/LinkDef.h file.

The CMSSW-facing part of the package is designed to meet the following goals:

  • All object classes and CMSSW modules compile successfully with scram in each of the supported CMSSW releases
    • Currently the CMSSW_4_2_8_patch7 release, the CMSSW_5_3_X and CMSSW_7_0_X series have been explicitly tested. If you need to use it in a different release and run into problems, raise an issue here
  • The core set of CMSSW producer modules will run successfully in a default configuration, provided the relevant input collection is present in the processed dataset
    • The cmsRun config file test/validation_cfg.py is the standard means of testing this. Run this first in a new release to ensure everything is working. This config loads default producer configurations from the file python/default_producers_cfi.py.
  • If a producer requires additional input to calculate certain variables the loading of these inputs should be optional. Any features not supported (i.e. do not compile) in all the CMSSW releases above are moved to external packages
  • Wherever possible, each producer accepts either a vector<T> or edm::RefVector<T> collection as input. The latter is one of the (many) smart-pointer containers in CMSSW, somewhat equivalent in concept to a vector of pointers, vector<T *>. This is achieved with the use of the edm::View<T> as the type of the edm::Handle used to extract these collections, as it provides a consistent interface into both types of the container.

Getting Started

The tree on the left of this page can be used to navigate around the documentation. Most has been automatically generated by doxygen, and can be accessed via Namespaces, Data Structures or Files. You can also search for the documentation on a particular class or function using the search box on the top right. Other documentation pages are also linked:

  • CMSSW & Git
    Follow these instructions for setting up a new CMSSW area using git and adding the ICHiggsTauTau package
  • Physics Objects
    This page is the main entry point for documentation on the physics object classes and the CMSSW producer modules
  • NTuple Configuration
    A short introduction to building a python cmsRun configuration using these modules
  • Analysis Build System
    Documents the folder structure and the build system for the analysis framework part of the package
Note
Sign-up for commit notification emails by joining the ic-cms-github-notifications e-group here (CERN login required). Notifications are sent whenever new content (commits, branches, tags etc.) are pushed to our CMSSW or analysis repositories.

Adding your own documentation

  • Doxygen (link) is used to document classes, functions and objects using a special comments syntax. The configuration for this package is in the Doxyfile at the root of the package
  • Currently, all the code in ICHiggsTauTau/{interface/src/plugins} is parsed
  • To add code from your own ICHiggsTauTau/Analysis/{Package} area, append the relevant directories to the INPUT setting in the Doxyfile, e.g. add INPUT += Analysis/HiggsTauTau/interface Analysis/HiggsTauTau/src
  • Documentation pages like this one are also created by Doxygen and can be written using the markdown syntax (details here). To add your own page create a file docs/{your-page}.md, and add this to the INPUT list in the doxygen. Note that the order in which pages appear in the contents pane to the left is set by the order in which they appear in this INPUT list.