Reference event selection for th(bb) analyses
The page is under development at the moment. Do not trust blindly any information in it before this warning is removed.
The page describes CMSSW setup, physics objects definitions, and the reference event selection adopted in single-top plus higgs,

analyses.
CMSSW setup
Release version and tags
The section lists CMSSW subpackages exploited in the analyses. A reference for every tag must be provided (desirably, with the specific revision number of the page). Subpackages that are needed to implement the adopted setup are only listed here, but not analysis-specific ones. Analyses use
22Jan2013 rereco of 8 TeV data and
Summer12_DR53X simulation.
CMSSW release
5_3_11 is used as the baseline as recommended
here.
scramv1 project CMSSW CMSSW_5_3_11
Recommended PAT release is
V08-09-62. Corresponding tags are provided below with an exception of tags for tau-lepton reconstruction as they are not used in the analyses.
addpkg DataFormats/PatCandidates V06-05-06-12
addpkg PhysicsTools/PatAlgos V08-09-62
addpkg PhysicsTools/PatUtils
addpkg RecoBTag/ImpactParameter V01-04-09-01
addpkg RecoBTag/SecondaryVertex V01-10-06
addpkg RecoBTag/SoftLepton V05-09-11
addpkg RecoBTau/JetTagComputer V02-03-02
addpkg RecoBTag/Configuration V00-07-05
addpkg RecoParticleFlow/PFProducer V15-02-06
Tags and data files for
electron MVA ID as recommended
here:
addpkg RecoEgamma/EgammaTools V09-00-01
addpkg EgammaAnalysis/ElectronTools SE_PhotonIsoProducer_MovedIn
cvs co -r SE_PhotonIsoProducer_MovedOut -d EGamma/EGammaAnalysisTools UserCode/EGamma/EGammaAnalysisTools
cd EgammaAnalysis/ElectronTools/data/
cat download.url | xargs wget
cd -
Setup
recommended for studies involving
MET:
addpkg RecoMET/METAnalyzers V00-00-08
addpkg DataFormats/METReco V03-03-11-01
addpkg JetMETCorrections/Type1MET V04-06-09-02
Latest corrections for
phi modulation of MET calculated with the whole 2012 dataset should be checked out separately:
cvs co -r 1.7 JetMETCorrections/Type1MET/python/pfMETsysShiftCorrections_cfi.py
Tags for various
MET filters recommended
here are provided below. Most of them either are already checked out by instructions above or superseded by subpackages' versions included in the release.
addpkg DPGAnalysis/SiStripTools V00-11-17
#addpkg RecoMET/METFilters V00-00-13-01 # same version in the release
#addpkg RecoMET/METAnalyzers V00-00-08 # already check out as a part of MET tags
#addpkg CommonTools/RecoAlgos V00-03-23 # a newer version in the release
#addpkg DPGAnalysis/Skims V01-00-11-01 # a newer version in the release
#addpkg DataFormats/TrackerCommon V00-00-08 # same version in the release
#addpkg RecoLocalTracker/SubCollectionProducers V01-09-05 # same version in the release
Mandatory corrections and bugfixes
In addition,
jet probability calibration used for b-tagging must be rerun in simulation as recommended
here. Relevant code snippet is copied from
this reference. Note that the calibration in 22Jan2013 rereco of real data is fine.
process.GlobalTag.toGet = cms.VPSet(
cms.PSet(record = cms.string('BTagTrackProbability2DRcd'),
tag = cms.string('TrackProbabilityCalibration_2D_MC53X_v2'),
connect = cms.untracked.string('frontier://FrontierPrep/CMS_COND_BTAU')),
cms.PSet(record = cms.string('BTagTrackProbability3DRcd'),
tag = cms.string('TrackProbabilityCalibration_3D_MC53X_v2'),
connect = cms.untracked.string('frontier://FrontierPrep/CMS_COND_BTAU')))
Particle-flow-based reconstruction
A coherent interpretation of an event provided by particle-flow-based reconstruction (PFBRECO) is exploited. In the line of idea of
hermetic top projections, exactly the same collections are used to veto additional loose leptons and to exclude PF candidates from jet clustering. In addition, the same collections are fed into MET uncertainty tool when running over simulated events. Tight analysis-level leptons are a strict subset of these collections.
Tau-leptons are not considered in the analyses, and the corresponding top projector is switched off (
pfNoTau.enable = False
).
Contribution from pile-up is suppressed with the help of charged-hadron subtraction (CHS). The default configuration should be modified by setting
pfPileUp.checkClosestZVertex = False
as recommended
here.
Objects definitions
Below, the cuts defining the physics objects used in the analysis are given.
Trigger
- Electron channel : HLT_Ele27_WP80_vX
- Muon channel : HLT_IsoMu24_vX
Primary vertices
A good primary vertex is defined according to criteria specified at
WorkBookJetEnergyCorrections page, namely the following:
Description of selection |
Implementation |
Longitudinal distance from the nominal detector center is smaller than 24 cm |
fabs(reco::Vertex::z()) < 24. |
Not marked as a fake vertex by the reconstruction algorithm |
not reco::Vertex::isFake() |
Effective number of degrees of freedom is not smaller than 4 |
reco::Vertex::ndof() ≥ 4. |
Transverse distance from the nominal beam position is smaller that 2 mm |
reco::Vertex::Rho() < 2. |
(The first criterion is hard-coded in plugin
PrimaryVertexObjectFilter
, the last one is defined in the default parameter set
pvSelector
, which is imported in the code snippet under the link above.)
The
first vertex in
offlinePrimaryVertices
(i.e. the one with the largest

of associated tracks) are required to satisfy these conditions.
Event filters
To be written.
Electrons
Loose electrons
The definition below is a proposal for discussion.
Exactly the same definition is used to prevent electrons from clustering into jets with the help of top projections and to veto additional loose electrons in an event.
Description of selection |
Implementation |
Transverse momentum is greater that 20 GeV/c 1 |
reco::PFCandidate::pt() > 20. |
1 |
fabs(PFCandidate::eta()) < 2.5 |
-corrected relative isolation with cone size 0.3 is smaller than 0.15 1 |
Non-trivial to implement; description is to be added |
1 This selection is inherited from
TWikiTopRefEventSel.
In default PFBRECO configuration module
pfElectronsFromVertex
requires electrons to be compatible with the first primary vertex. Such a behaviour is
not recommended
and should be prevented with the following modifications:
process.pfElectronsFromVertex.d0Cut = 9999.
process.pfElectronsFromVertex.d0SigCut = 9999.
process.pfElectronsFromVertex.dzCut = 9999.
process.pfElectronsFromVertex.dzSigCut = 9999.
Tight electrons
|
Electron |
Electron ID |
GsfElectron |
pT |
> 30 GeV |
fabs(eta) |
< 2.5 |
excluding EB-EE transition region 1.4442 < fabs(superCluster.eta) < 1.5660 |
applied |
Conversion rejection : electron.passConversionVeto() |
true |
MVA : electron.electronID("mvaTrigV0") |
> 0.5 |
mHits: electron.gsfTrack()->trackerExpectedHitsInner().numberOfHits() |
≤ 0 |
relIso (r=0.3) with Rho corrections |
< 0.1 |
Preselection for Electron MVAID
NOTE: For the triggering electrons this preselection to match the trigger condition needs to be applied off-line:
bool ElectronAnalyzer::trainTrigPresel(const reco::GsfElectron& ele) {
bool myTrigPresel = false;
if(fabs(ele.superCluster()->eta()) < 1.479) {
if(ele.sigmaIetaIeta() < 0.014 &&
ele.hadronicOverEm() < 0.15 &&
ele.dr03TkSumPt()/ele.pt() < 0.2 &&
ele.dr03EcalRecHitSumEt()/ele.pt() < 0.2 &&
ele.dr03HcalTowerSumEt()/ele.pt() < 0.2 &&
ele.gsfTrack()->trackerExpectedHitsInner().numberOfLostHits() == 0)
myTrigPresel = true;
}
else {
if(ele.sigmaIetaIeta() < 0.035 &&
ele.hadronicOverEm() < 0.10 &&
ele.dr03TkSumPt()/ele.pt() < 0.2 &&
ele.dr03EcalRecHitSumEt()/ele.pt() < 0.2 &&
ele.dr03HcalTowerSumEt()/ele.pt() < 0.2 &&
ele.gsfTrack()->trackerExpectedHitsInner().numberOfLostHits() == 0)
myTrigPresel = true;
}
return myTrigPresel;
}
Muons
Loose muons
Exactly the same definition of loose muons is used in top projections in PFBRECO and to reject events that contain additional muons (veto).
Description of selection |
Implementation |
Muon is reconstructed by PF algorithm 1 |
'muonRef.isAvailable & muonRef.isPFMuon' in pfSelectedMuons.cut 2 |
Avoid using muons that are only standalone muons 1 |
'muonRef.isAvailable & (muonRef.isGlobalMuon || isTrackerMuon)' in =pfSelectedMuons.cut= 2 |
Transverse momentum is greater that 10 GeV/c 3 |
reco::PFCandidate::pt() > 10. |
3 |
fabs(reco::PFCandidate::eta()) < 2.5 |
-corrected relative isolation with cone size 0.4 is smaller than 0.2 4 |
Can be implemented with module pfIsolatedMuons as described in 4 |
1 Recommended in
SWGuideMuonId.
2 It looks like
PFCandidate::muonRef().isAvailable()
returns true for all PF muons, but it should be checked.
3 This selection is inherited from
TWikiTopRefEventSel.
4 Recommended in
SWGuideMuonId.

correction of isolation can be implemented in default PFBRECO sequence by setting
pfIsolatedMuons.doDeltaBetaCorrection = True
pfIsolatedMuons.deltaBetaFactor = -0.5
pfIsolatedMuons.isolationCut = 0.2
In default configuration of PFBRECO muons are checked for compatibility with first primary vertex, albeit these requirements are not a part of the
official definition of loose muons. The additional selection should be switched off by setting
process.pfMuonsFromVertex.d0Cut = 9999.
process.pfMuonsFromVertex.d0SigCut = 9999.
process.pfMuonsFromVertex.dzCut = 9999.
process.pfMuonsFromVertex.dzSigCut = 9999.
Tight muons
Tight muons are a strict subset of loose ones. Quality criteria follow
recommendations from Muon POG:
Description of selection |
Implementation |
The candidate is a global muon |
pat::Muon::isGlobalMuon |
The candidate passes PF ID |
pat::Muon::isPFMuon |
Fit to global track has |
pat::Muon::globalTrack()->normalizedChi2() < 10. |
At least one hit in muon chambers included in the global track |
pat::Muon::globalTrack()->hitPattern().numberOfValidMuonHits() > 0 |
At least two muon stations with hits |
pat::Muon::numberOfMatchedStations() > 1 |
Transverse impact parameter w.r.t. to the first primary vertex mm |
fabs(pat::Muon::dB() < 0.2) |
Longitudinal distance of tracker track from the first primary vertex mm |
fabs(pat::Muon::muonBestTrack()->dz(vertex->position())) < 0.5 |
At least one hit in pixel system |
pat::Muon::innerTrack()->hitPattern().numberOfValidPixelHits() > 0 |
At least six tracker layers with measurements |
pat::Muon::track()->hitPattern().trackerLayersWithMeasurement() > 5 |
All the above requirements can be evaluated with the help of
muon::isTightMuon
function defined in
DataFormats/MuonReco/interface/MuonSelectors.h
or, equivalently, method
pat::Muon::isTightMuon
.
Isolation is calculated in the same way as for loose muons with a tighter cut value (recommended in
SWGuideMuonId):
Description of selection |
Implementation |
-corrected relative isolation with cone size 0.4 is smaller than 0.12 |
(pat::Muon::chargedHadronIso() + std::max(pat::Muon::neutralHadronIso() + pat::Muon::photonIso() - 0.5 * pat::Muon::puChargedHadronIso(), 0.)) / pat::Muon::pt() < 0.12 1 |
1 Note
SWGuideMuonId provides two different recipes to calculated muon isolation. The one cited here exploits the same value maps for isolation (
muPFIsoValueCharged04
and others) as module
pfIsolatedMuons
; thus, it is fully consistent with PFBRECO and should be preferred.
Kinematical cuts are used on top of the above quality requirements in order to stay on the trigger plateau:
Jets
It is recommended to use AK5 PF jets.
- Minimal selection for any analysis: jet with corrected pT>10 GeV and |eta|<4.7
- We use 30 GeV as jet-pT-threshold for the analysis and also for the synchronisation exercise.
- CHS (PFnoPU) is recommended for 2012 data (chsPFjets and PFjets being both fully commissioned). CHS stays not recommended for running on 2011 data, but can be used from analyses particularly sensitive to JER.
- JetID
- Reject jets failing the loose PFJetID
- number of constituents>1 (patJet->numberOfDaughters())
- NHF<0.99 ( ( patJet->neutralHadronEnergy() + patJet->HFHadronEnergy() ) / patJet->energy() )
- NEF<0.99 (patJet->neutralEmEnergyFraction())
- if |η|<2.4, CEF<0.99 (patJet->chargedEmEnergyFraction())
- if |η|<2.4, CHF>0 (patJet->chargedHadronEnergyFraction())
- if |η|<2.4, NCH>0 (patJet->chargedMultiplicity())
- Equivalently using the SelectorUtils:
FIRSTDATA
LOOSE
PFJetID accessed with SelectorUtils/interface/PFJetIDSelectionFunctor.h
.
- Documentation in https://twiki.cern.ch/twiki/bin/viewauth/CMS/JetID If you are also using MET (warning!): some analyses veto events where a jet above some pT threshold fails JetID. Needs to be studied.
- Jet energy resolution smearing (not yet considered)
ACTION: Give the high granularity definitions going into the above objects.
Missing transverse energy
To be written.
Reference event selection
The event selection described below is used as a reference point for different analyses only.
This table summarises the selection for the electron channel
In order to get a structured selection flow, I suggest the following steps in the selection:
Muon Channel
Step |
Selection |
Comments/details/code snippets |
0 |
trigger |
|
1 |
exactly one isol. muon |
exactly one muon passing the selection |
2 |
loose muon veto |
Reject events with any other loose muon. |
3 |
loose electron veto |
Reject events with any loose electron. |
4a,b,c,d |
>= 1,2,3,4 jets |
for jets passing the event selection. |
Electron Channel
Step |
Selection |
Comments/details/code snippets |
0 |
trigger |
|
1 |
exactly one isol. ele |
Exactly one isolated electron passing the selection. |
2 |
loose muon veto |
Reject events with any loose muon. |
3 |
loose electron veto |
Reject events with any other loose electron. |
4a,b,c,d |
>=1,2,3,4 jets |
for jets passing the event selection described in the section |
Synchronization exercise
The Synchronization exercise can be found in
SingleTopHiggsBBSynchEx .