Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2024-07-02 00:54:06

0001 import FWCore.ParameterSet.Config as cms
0002 from Configuration.StandardSequences.PAT_cff import *
0003 
0004 from PhysicsTools.PatAlgos.producersLayer1.muonProducer_cfi import patMuons
0005 from HLTrigger.HLTfilters.triggerResultsFilter_cfi import *
0006 from Configuration.Eras.Modifier_run2_HLTconditions_2016_cff import run2_HLTconditions_2016
0007 
0008 ## Trigger requirements
0009 doubleMuonHLTTrigger = cms.EDFilter("TriggerResultsFilter",
0010     hltResults = cms.InputTag("TriggerResults","","HLT"),
0011     l1tResults = cms.InputTag(""),
0012     throw = cms.bool(False),
0013     triggerConditions = cms.vstring("HLT_Mu17_TrkIsoVVL_Mu8_TrkIsoVVL_DZ_v* OR HLT_Mu17_TrkIsoVVL_Mu8_TrkIsoVVL_DZ_Mass8_v*") # from 2017 on (up to Run 3, it seems)
0014 )
0015 
0016 run2_HLTconditions_2016.toModify(doubleMuonHLTTrigger,
0017                                  triggerConditions = ["HLT_Mu17_TrkIsoVVL_Mu8_TrkIsoVVL_DZ_v* OR HLT_Mu17_TrkIsoVVL_TkMu8_TrkIsoVVL_DZ_v*"])
0018 
0019 ## Muon selection
0020 patMuonsAfterKinCuts = cms.EDFilter("PATMuonSelector",
0021     src = cms.InputTag("slimmedMuons"),
0022     cut = cms.string("pt > 8 && abs(eta) < 2.5"),
0023     filter = cms.bool(True)
0024 )
0025 
0026 
0027 # For impact parameter (w.r.t. to PV) requirements, a vector collection is needed, therefore only dB < 0.2 required.
0028 # The default requirements (in C++):
0029 # 1) fabs(recoMu.muonBestTrack()->dxy(vertex->position())) < 0.2 ----> similar to dB < 0.2
0030 # 2) fabs(recoMu.muonBestTrack()->dz(vertex->position())) < 0.5
0031 patMuonsAfterTightID = cms.EDFilter("PATMuonSelector",
0032     src = cms.InputTag("patMuonsAfterKinCuts"),
0033     cut = cms.string(
0034     "isPFMuon && isGlobalMuon"
0035     " && muonID('GlobalMuonPromptTight')"
0036     " && numberOfMatchedStations > 1"
0037     " && innerTrack.hitPattern.trackerLayersWithMeasurement > 5"
0038     " && innerTrack.hitPattern.numberOfValidPixelHits > 0"
0039     " && dB < 0.2"
0040     ),
0041     filter = cms.bool(True)
0042 )
0043 
0044 patMuonsAfterMediumID = cms.EDFilter("PATMuonSelector",
0045     src = cms.InputTag("patMuonsAfterKinCuts"),
0046     cut = cms.string("isMediumMuon"),
0047     filter = cms.bool(True)
0048 )
0049 
0050 patMuonsAfterLooseID = cms.EDFilter("PATMuonSelector",
0051     src = cms.InputTag("patMuonsAfterKinCuts"),
0052     cut = cms.string("isLooseMuon"),
0053     filter = cms.bool(True)
0054 )
0055 
0056 patMuonsAfterID = patMuonsAfterLooseID.clone()
0057 
0058 ZmumuCandidates = cms.EDProducer("CandViewShallowCloneCombiner",
0059     checkCharge = cms.bool(True),
0060     # require one of the muons with pT > 17 GeV, and an invariant mass > 20 GeV
0061     cut = cms.string('charge = 0 & max(daughter(0).pt, daughter(1).pt) > 17 & mass > 20 & daughter(0).isGlobalMuon & daughter(1).isGlobalMuon'),
0062     decay = cms.string("patMuonsAfterID@+ patMuonsAfterID@-")
0063 )
0064 
0065 
0066 ZmumuCandidatesFilter = cms.EDFilter("CandViewCountFilter",
0067     src = cms.InputTag("ZmumuCandidates"),
0068     minNumber = cms.uint32(1)
0069     # filter = cms.bool(True)
0070 )
0071 
0072 selectedMuonsForEmbedding = cms.EDProducer("MuMuForEmbeddingSelector",
0073     ZmumuCandidatesCollection = cms.InputTag("ZmumuCandidates"),
0074     use_zmass = cms.bool(False),
0075     inputTagVertex = cms.InputTag("offlinePrimaryVertices"),
0076     inputTagBeamSpot = cms.InputTag("offlineBeamSpot"),
0077     PuppiMet = cms.InputTag("slimmedMETsPuppi"),
0078     Met = cms.InputTag("slimmedMETs"),
0079 )
0080 
0081 makePatMuonsZmumuSelection = cms.Sequence(
0082     doubleMuonHLTTrigger
0083     + patMuonsAfterKinCuts
0084     + patMuonsAfterID
0085     + ZmumuCandidates
0086     + ZmumuCandidatesFilter
0087     + selectedMuonsForEmbedding
0088 )