Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2024-04-06 12:06:47

0001 import FWCore.ParameterSet.Config as cms
0002 ### HLT filter
0003 import copy
0004 from HLTrigger.HLTfilters.hltHighLevel_cfi import *
0005 from PhysicsTools.PatAlgos.producersLayer1.genericParticleProducer_cfi import patGenericParticles
0006 from PhysicsTools.PatAlgos.producersLayer1.muonProducer_cfi import patMuons
0007 
0008 ZMuHLTFilter = copy.deepcopy(hltHighLevel)
0009 ZMuHLTFilter.throw = cms.bool(False)
0010 ZMuHLTFilter.HLTPaths = ["HLT_Mu*","HLT_IsoMu*"]
0011 
0012 ### Z -> MuMu candidates
0013 # Get muons of needed quality for Zs
0014 
0015 ###create a track collection with generic kinematic cuts
0016 looseMuonsForZMuSkim = cms.EDFilter("TrackSelector",
0017                              src = cms.InputTag("generalTracks"),
0018                              cut = cms.string('pt > 10 &&  abs(eta)<2.4 &&  (charge!=0)'),
0019                              filter = cms.bool(True)                                
0020                              )
0021 
0022 
0023 
0024 ###cloning the previous collection into a collection of candidates
0025 ConcretelooseMuonsForZMuSkim = cms.EDProducer("ConcreteChargedCandidateProducer",
0026                                               src = cms.InputTag("looseMuonsForZMuSkim"),
0027                                               particleType = cms.string("mu+")
0028                                               )
0029 
0030 
0031 
0032 ###create iso deposits
0033 tkIsoDepositTk = cms.EDProducer("CandIsoDepositProducer",
0034                                 src = cms.InputTag("ConcretelooseMuonsForZMuSkim"),
0035                                 MultipleDepositsFlag = cms.bool(False),
0036                                 trackType = cms.string('track'),
0037                                 ExtractorPSet = cms.PSet(
0038         #MIsoTrackExtractorBlock
0039         Diff_z = cms.double(0.2),
0040         inputTrackCollection = cms.InputTag("generalTracks"),
0041         BeamSpotLabel = cms.InputTag("offlineBeamSpot"),
0042         ComponentName = cms.string('TrackExtractor'),
0043         DR_Max = cms.double(0.5),
0044         Diff_r = cms.double(0.1),
0045         Chi2Prob_Min = cms.double(-1.0),
0046         DR_Veto = cms.double(0.01),
0047         NHits_Min = cms.uint32(0),
0048         Chi2Ndof_Max = cms.double(1e+64),
0049         Pt_Min = cms.double(-1.0),
0050         DepositLabel = cms.untracked.string('tracker'),
0051         BeamlineOption = cms.string('BeamSpotFromEvent')
0052         )
0053                                 )
0054 
0055 ###adding isodeposits to candidate collection
0056 allPatTracks = patGenericParticles.clone(
0057     src = cms.InputTag("ConcretelooseMuonsForZMuSkim"),
0058     # isolation configurables
0059     userIsolation = cms.PSet(
0060       tracker = cms.PSet(
0061         veto = cms.double(0.015),
0062         src = cms.InputTag("tkIsoDepositTk"),
0063         deltaR = cms.double(0.3),
0064         #threshold = cms.double(1.5)
0065       ),
0066       ),
0067     isoDeposits = cms.PSet(
0068         tracker = cms.InputTag("tkIsoDepositTk"),
0069         ),
0070     )
0071 
0072 
0073 
0074 
0075 ###create the "probe collection" of isolated tracks 
0076 looseIsoMuonsForZMuSkim = cms.EDFilter("PATGenericParticleSelector",  
0077                              src = cms.InputTag("allPatTracks"), 
0078                              cut = cms.string("(userIsolation('pat::TrackIso')/pt)<0.4"),
0079                              filter = cms.bool(True)
0080                              )
0081 
0082 
0083 
0084 ###create the "tag collection" of muon candidate, embedding the relevant infos  
0085 tightMuonsCandidateForZMuSkim = patMuons.clone(
0086     src = cms.InputTag("muons"),
0087     embedHighLevelSelection = cms.bool(True), 
0088 )
0089 
0090 ##apply ~tight muon ID 
0091 tightMuonsForZMuSkim = cms.EDFilter("PATMuonSelector",
0092                                     src = cms.InputTag("tightMuonsCandidateForZMuSkim"),       
0093                                     cut = cms.string('(pt > 28) &&  (abs(eta)<2.4) && (isPFMuon>0) && (isGlobalMuon = 1) && (globalTrack().normalizedChi2() < 10) && (globalTrack().hitPattern().numberOfValidMuonHits()>0)&& (numberOfMatchedStations() > 1)&& (innerTrack().hitPattern().numberOfValidPixelHits() > 0)&& (innerTrack().hitPattern().trackerLayersWithMeasurement() > 5) && (abs(dB)<0.2)  && ((isolationR03().sumPt/pt)<0.1)'),
0094                                     filter = cms.bool(True)                                
0095                                     )
0096 
0097 
0098 # build Z-> MuMu candidates
0099 dimuonsZMuSkim = cms.EDProducer("CandViewShallowCloneCombiner",
0100                          checkCharge = cms.bool(False),
0101                          cut = cms.string('(mass > 60) &&  (charge=0) && (abs(daughter(0).vz - daughter(1).vz) < 0.1)'),
0102                          decay = cms.string("tightMuonsForZMuSkim looseIsoMuonsForZMuSkim")
0103                          )                                    
0104 
0105 
0106 # Z filter
0107 dimuonsFilterZMuSkim = cms.EDFilter("CandViewCountFilter",
0108                              src = cms.InputTag("dimuonsZMuSkim"),
0109                              minNumber = cms.uint32(1)
0110                              )
0111 
0112 
0113 
0114 diMuonSelSeq = cms.Sequence(
0115                             ZMuHLTFilter *
0116                             looseMuonsForZMuSkim *
0117                             ConcretelooseMuonsForZMuSkim *
0118                             tkIsoDepositTk *
0119                             allPatTracks *
0120                             looseIsoMuonsForZMuSkim * 
0121                             tightMuonsCandidateForZMuSkim *
0122                             tightMuonsForZMuSkim *
0123                             dimuonsZMuSkim *
0124                             dimuonsFilterZMuSkim 
0125 )
0126 
0127 
0128 
0129 
0130 
0131