Z+Jet (Muon) : My Notes
Understanding SelectedPatMuons
Collection
The
selectedPatMuons
module takes in
patMuons
and does a dummy preselection. Now the
patMuons
as a default option take in the
pfIsolatedMuons
as input, which already have so many cuts (dxy,dz and isolation applied). We could call this pfIdentification step. What we are doing now, is that we circumvent the process.... we give
pfAllMuons
as input to
patMuons
and check/apply cuts inside our
ZmmFilter
module. But we still run the PFMUON sequence, it may probably we required to properly run the pfJet sequence.
Our Muon Sequence
process.patMuons.useParticleFlow=True
Use all pfMuons, instead of
PF2PAT default: pfIsolatedMuons.
process.patMuons.pfMuonSource = cms.InputTag("pfMuons")
Store trigger match information : note that this is not a selector (I think so no muons get dropped here).
process.selectedPatMuonsTriggerMatch = cms.EDProducer(
"PATTriggerMatchMuonEmbedder",
src = cms.InputTag("selectedPatMuons"),
matches = cms.VInputTag(cms.InputTag('muonTriggerMatchHLT'))
)
switchOnTriggerMatchEmbedding(process ,triggerMatchers = ['muonTriggerMatchHLTMuons'],)
removeCleaningFromTriggerMatching(process)
Use muons with a minor pt cut for the further analysis.
process.allMuons = selectedPatMuons.clone(
src = cms.InputTag('selectedPatMuonsTriggerMatch'),
cut = cms.string("pt>10")
#cut = cms.string("pt>10 ")
)
The PFMuon Sequence
Following Modules run sequentially:
- pfAllMuons ##THESE GUYS ARE USED BY US : RIGHT HERE
- pfMuonsFromVertex
- pfSelectedMuons
- pfMuonIsolationSequence
- pfIsolatedMuons
- pfMuons
- All Muons are taken from the handle labelled pfNoPileUp.
pfAllMuons = cms.EDFilter("PdgIdPFCandidateSelector",
src = cms.InputTag("pfNoPileUp"),
pdgId = cms.vint32( -13, 13)
)
- Then vertex constraints are applied:
pfMuonsFromVertex = cms.EDFilter(
"IPCutPFCandidateSelector",
src = cms.InputTag("pfAllMuons"), # PFCandidate source
vertices = cms.InputTag("offlinePrimaryVertices"), # vertices source
d0Cut = cms.double(0.2), # transverse IP
dzCut = cms.double(0.5), # longitudinal IP
d0SigCut = cms.double(99.), # transverse IP significance
dzSigCut = cms.double(99.), # longitudinal IP significance
)
- Then a minimal cut of 5 GeV is applied:
pfSelectedMuons = cms.EDFilter(
"GenericPFCandidateSelector",
src = cms.InputTag("pfMuonsFromVertex"),
cut = cms.string("pt>5")
)
- The pfSelectedMuons are then fed to the isolation modules:
pfIsolatedMuons = cms.EDFilter(
"IsolatedPFCandidateSelector",
src = cms.InputTag("pfSelectedMuons"),
isolationValueMapsCharged = cms.VInputTag(
cms.InputTag("muPFIsoValueCharged04"),
),
isolationValueMapsNeutral = cms.VInputTag(
cms.InputTag("muPFIsoValueNeutral04"),
cms.InputTag("muPFIsoValueGamma04")
),
doDeltaBetaCorrection = cms.bool(False),
deltaBetaIsolationValueMap = cms.InputTag("muPFIsoValuePU04"),
deltaBetaFactor = cms.double(-0.5),)
## if True isolation is relative to pT
isRelative = cms.bool(True),
## if True all isoValues are combined (summed)
# isCombined = cms.bool(True),
## not used when isCombined=True
# non-optimised default for loose absulute isolation
# isolationCuts = cms.vdouble( 10,
# 10,
# 10 ),
# not used when isCombined=False
# default value for combined relative with DR={0.4,0.4,0.4}
# and weight={1.,1.,1.}; optimised for Z->mu,mu
isolationCut = cms.double(0.15)
)
--
AnilSingh - 02-Jul-2012