Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2025-02-20 03:45:56

0001 import FWCore.ParameterSet.Config as cms
0002 from Configuration.Eras.Modifier_run2_HLTconditions_2016_cff import (
0003     run2_HLTconditions_2016,
0004 )
0005 from Configuration.Eras.Modifier_run2_HLTconditions_2017_cff import (
0006     run2_HLTconditions_2017,
0007 )
0008 from Configuration.Eras.Modifier_run2_HLTconditions_2018_cff import (
0009     run2_HLTconditions_2018,
0010 )
0011 from Configuration.StandardSequences.PAT_cff import *
0012 from HLTrigger.HLTfilters.triggerResultsFilter_cfi import *
0013 from PhysicsTools.PatAlgos.producersLayer1.muonProducer_cfi import patMuons
0014 
0015 ## Trigger requirements
0016 doubleMuonHLTTrigger = cms.EDFilter("TriggerResultsFilter",
0017     hltResults = cms.InputTag("TriggerResults","","HLT"),
0018     l1tResults = cms.InputTag(""),
0019     throw = cms.bool(False),
0020     triggerConditions = cms.vstring("HLT_Mu17_TrkIsoVVL_Mu8_TrkIsoVVL_DZ_Mass3p8_v*") # unprescaled trigger for 2018,22,23,24 (see https://twiki.cern.ch/twiki/bin/view/CMS/MuonHLT2018, https://twiki.cern.ch/twiki/bin/view/CMS/MuonHLT2022, https://twiki.cern.ch/twiki/bin/view/CMS/MuonHLT2023, https://twiki.cern.ch/twiki/bin/view/CMS/MuonHLT2024)
0021 )
0022 
0023 #### change the used triggers for run2 ####
0024 # Use two different triggers as the Mass8 one has a higer luminosity in 2017 according to https://cmshltinfo.app.cern.ch/summary?search=HLT_Mu17_TrkIsoVVL_Mu8_TrkIsoVVL_DZ_Mass&year=2017&paths=true&prescaled=true&stream-types=Physics
0025 # probably because he was already active in earlier runs than the Mass3p8 trigger
0026 # Both are unprescaled
0027 run2_HLTconditions_2017.toModify(doubleMuonHLTTrigger,
0028                                  triggerConditions = ["HLT_Mu17_TrkIsoVVL_Mu8_TrkIsoVVL_DZ_v* OR HLT_Mu17_TrkIsoVVL_Mu8_TrkIsoVVL_DZ_Mass8_v*"])
0029 
0030 # Both are unprescaled according to https://cmshltinfo.app.cern.ch/summary?search=HLT_Mu17_TrkIsoVVL_&year=2016&paths=true&prescaled=true&stream-types=Physics
0031 run2_HLTconditions_2016.toModify(doubleMuonHLTTrigger,
0032                                  triggerConditions = ["HLT_Mu17_TrkIsoVVL_Mu8_TrkIsoVVL_DZ_v* OR HLT_Mu17_TrkIsoVVL_TkMu8_TrkIsoVVL_DZ_v*"])
0033 
0034 ## Muon selection
0035 patMuonsAfterKinCuts = cms.EDFilter("PATMuonSelector",
0036     src = cms.InputTag("slimmedMuons"),
0037     cut = cms.string("pt > 8 && abs(eta) < 2.5"),
0038     filter = cms.bool(True)
0039 )
0040 
0041 
0042 # For impact parameter (w.r.t. to PV) requirements, a vector collection is needed, therefore only dB < 0.2 required.
0043 # The default requirements (in C++):
0044 # 1) fabs(recoMu.muonBestTrack()->dxy(vertex->position())) < 0.2 ----> similar to dB < 0.2
0045 # 2) fabs(recoMu.muonBestTrack()->dz(vertex->position())) < 0.5
0046 patMuonsAfterTightID = cms.EDFilter("PATMuonSelector",
0047     src = cms.InputTag("patMuonsAfterKinCuts"),
0048     cut = cms.string(
0049     "isPFMuon && isGlobalMuon"
0050     " && muonID('GlobalMuonPromptTight')"
0051     " && numberOfMatchedStations > 1"
0052     " && innerTrack.hitPattern.trackerLayersWithMeasurement > 5"
0053     " && innerTrack.hitPattern.numberOfValidPixelHits > 0"
0054     " && dB < 0.2"
0055     ),
0056     filter = cms.bool(True)
0057 )
0058 
0059 patMuonsAfterMediumID = cms.EDFilter("PATMuonSelector",
0060     src = cms.InputTag("patMuonsAfterKinCuts"),
0061     cut = cms.string("isMediumMuon"),
0062     filter = cms.bool(True)
0063 )
0064 
0065 patMuonsAfterLooseID = cms.EDFilter("PATMuonSelector",
0066     src = cms.InputTag("patMuonsAfterKinCuts"),
0067     cut = cms.string("isLooseMuon"),
0068     filter = cms.bool(True)
0069 )
0070 
0071 patMuonsAfterID = patMuonsAfterLooseID.clone()
0072 
0073 ZmumuCandidates = cms.EDProducer("CandViewShallowCloneCombiner",
0074     checkCharge = cms.bool(True),
0075     # require one of the muons with pT > 17 GeV, and an invariant mass > 20 GeV
0076     cut = cms.string('charge = 0 & max(daughter(0).pt, daughter(1).pt) > 17 & mass > 20 & daughter(0).isGlobalMuon & daughter(1).isGlobalMuon'),
0077     decay = cms.string("patMuonsAfterID@+ patMuonsAfterID@-")
0078 )
0079 
0080 
0081 ZmumuCandidatesFilter = cms.EDFilter("CandViewCountFilter",
0082     src = cms.InputTag("ZmumuCandidates"),
0083     minNumber = cms.uint32(1)
0084     # filter = cms.bool(True)
0085 )
0086 
0087 selectedMuonsForEmbedding = cms.EDProducer("MuMuForEmbeddingSelector",
0088     ZmumuCandidatesCollection = cms.InputTag("ZmumuCandidates"),
0089     use_zmass = cms.bool(False),
0090     inputTagVertex = cms.InputTag("offlinePrimaryVertices"),
0091     inputTagBeamSpot = cms.InputTag("offlineBeamSpot"),
0092     PuppiMet = cms.InputTag("slimmedMETsPuppi"),
0093     Met = cms.InputTag("slimmedMETs"),
0094 )
0095 
0096 makePatMuonsZmumuSelection = cms.Sequence(
0097     doubleMuonHLTTrigger
0098     + patMuonsAfterKinCuts
0099     + patMuonsAfterID
0100     + ZmumuCandidates
0101     + ZmumuCandidatesFilter
0102     + selectedMuonsForEmbedding
0103 )