This web page collects documentation and ideas concerning publicly accessible information on the nanoAOD CMS event format for Run 2 and information relevant for backporting it to Run 1 in the form of a nanoAOD-like format.
General idea of nanoAOD in CMS
as presented at
CHEP Sofia
in 2018.
nanoAOD workbook
https://twiki.cern.ch/twiki/bin/view/CMSPublic/WorkBookNanoAOD
contains general description, and links to the details of all the variables:
- nanoAOD is a flat ntuple format readable with plain ROOT
- from CMSSW 9_4_X (2017 data+MC) a version is included in CMSSW
- nanoAOD production is handled centrally, but can be produced via CRAB, and can also be run over (+extensions) via CRAB
- users can easily extend nanoAOD for their specific study making a private production when needed (for samples that are not too large/special needs) or can ask for new features inclusion in the central format (suggestion when need to run on multi-billion events)
- a nanoAOD file contains a main TTree named Events and some additional TTrees for run, lumi and metadata
- references across objects are implemented via branches with idx suffix. set to -1 if null. Can point outside boundaries->check
- HLT bits are automatically generated according to the HLT bits in the input file. When files are merged they are merged and the nonmatching bits zero-filled.
- object systematic uncertainties are saved as per-event information.
- linking to gen and trigger objects is based on common PF constituents, not on Delta R.
- jets are corrected. Tools for further corrections/smearing are provided.
- post-processing is based on python.
- details of variable descriptions are available (for 9.4.X) in
https://cms-nanoaod-integration.web.cern.ch/integration/master/mc94X_doc.html
- the list of kept generator particles is given in
https://github.com/cms-sw/cmssw/blob/master/PhysicsTools/NanoAOD/python/genparticles_cff.py#L8
e.g. all c and b hadrons, as well as all leptons with at most one mother back
in the history are kept.
- an example how to create a structure of global variables can be found in
https://github.com/cms-nanoAOD/cmssw/blob/master/PhysicsTools/NanoAOD/python/globals_cff.py
nanoAOD-like ntuple
nanoAOD is currently only available for CMS pp data at 13 TeV from 2016 onwards. It is not available for any of
the Run 1 datasets (pp, pPb, PbPb @ 0.9, 2.76, 5, 7, 8 TeV), nor for the 2015 datasets.
A nanoAOD-like ntuple is an ntuple that has a large (ideally full) overlap in format and content with nanoAOD,
potentially extended by additional information. In an ongoing project, the creation of such a format for datasets
for which nanoAOD does not exist, in particular for Run 1, is currently being initiated.
For a dedicated status report, see (internal) contribution to Budapest CMS week DPOA parallel session.
As a starting point, for Run 1 muons, all the technical details documented in the
Run 1 Muon Id software guide
are currently being implemented, in a way consistent with those in the
Run 2 Muon Id software guide,
in a format fully consistent with the Run 2 nanoAOD. Currently many of the distributions of the public
dimuon Open Data validation example
can already be reproduced from this format.
further relevant info snippets
For an example on how to
map vertices and tracks in AOD and miniAOD, and how to access the PF list, see
https://github.com/cms-analysis/flashgg/blob/master/MicroAOD/plugins/VertexMapValidator.cc
a description/documentation of the
basic track (helix)
parameters can be found in
https://github.com/cms-sw/cmssw/blob/master/DataFormats/TrackReco/interface/TrackBase.h
a description of the
basic vertex parameters can be found in
https://github.com/cms-sw/cmssw/blob/master/DataFormats/VertexReco/interface/Vertex.h
a description of
transient vertices with their tracks can be found in
https://github.com/cms-sw/cmssw/blob/master/RecoVertex/VertexPrimitives/interface/TransientVertex.h
nanoAOD-like ntuple, educational version from Open Data
A version of a nanoAOD-like ntuple with reduced and simplified content for educational purposes, based on the CMS Open Data,
is available as a semi-private Root tutorial project of Stefan Wunsch based on code in
https://github.com/stwunsch/AOD2NanoAOD
with a usage example on
https://root.cern/doc/master/df102__NanoAODDimuonAnalysis_8C.html
some general flat root ntuple issues
- a description of the root tree structure and the allowed variable types can be found in
https://root.cern.ch/doc/master/classTTree.html
--
AchimGeiser - 2018-08-01