From 4a0062c4f78e857b84141468dce41467cae1ccb7 Mon Sep 17 00:00:00 2001 From: Matthew Date: Wed, 12 Jan 2022 11:21:47 +0100 Subject: [PATCH 1/6] pre-select high purity tracks as input for muon reco in pp_on_AA era --- .../GlobalMuonProducer/python/globalMuons_cfi.py | 7 ++++++- .../GlobalMuonProducer/src/GlobalMuonProducer.cc | 4 ++++ .../interface/GlobalMuonTrajectoryBuilder.h | 5 +++++ .../src/GlobalMuonTrajectoryBuilder.cc | 7 +++++++ .../MuonIdentification/plugins/MuonIdProducer.cc | 12 ++++++++++++ RecoMuon/MuonIdentification/plugins/MuonIdProducer.h | 5 +++++ RecoMuon/MuonIdentification/python/earlyMuons_cfi.py | 3 ++- .../MuonIdentification/python/muons1stStep_cfi.py | 4 +++- 8 files changed, 44 insertions(+), 3 deletions(-) diff --git a/RecoMuon/GlobalMuonProducer/python/globalMuons_cfi.py b/RecoMuon/GlobalMuonProducer/python/globalMuons_cfi.py index 3b707ff8b0968..7c4837fd938c4 100644 --- a/RecoMuon/GlobalMuonProducer/python/globalMuons_cfi.py +++ b/RecoMuon/GlobalMuonProducer/python/globalMuons_cfi.py @@ -10,7 +10,9 @@ GlobalTrajectoryBuilderCommon ), TrackerCollectionLabel = cms.InputTag("generalTracks"), - MuonCollectionLabel = cms.InputTag("standAloneMuons","UpdatedAtVtx") + MuonCollectionLabel = cms.InputTag("standAloneMuons","UpdatedAtVtx"), + VertexCollectionLabel = cms.InputTag("offlinePrimaryVertices"), + selectHighPurity = cms.bool(False) ) globalMuons.GLBTrajBuilderParameters.GlobalMuonTrackMatcher.Propagator = 'SmartPropagatorRK' @@ -28,3 +30,6 @@ GlobalMuonTrackMatcher = dict(Propagator = 'SmartPropagator') ) ) + +from Configuration.ProcessModifiers.pp_on_AA_cff import pp_on_AA +pp_on_AA.toModify(globalMuons, selectHighPurity = True) diff --git a/RecoMuon/GlobalMuonProducer/src/GlobalMuonProducer.cc b/RecoMuon/GlobalMuonProducer/src/GlobalMuonProducer.cc index c75f7c2f1007a..d9ba66e486937 100644 --- a/RecoMuon/GlobalMuonProducer/src/GlobalMuonProducer.cc +++ b/RecoMuon/GlobalMuonProducer/src/GlobalMuonProducer.cc @@ -39,6 +39,10 @@ GlobalMuonProducer::GlobalMuonProducer(const ParameterSet& parameterSet) { ParameterSet trajectoryBuilderParameters = parameterSet.getParameter("GLBTrajBuilderParameters"); InputTag trackCollectionTag = parameterSet.getParameter("TrackerCollectionLabel"); trajectoryBuilderParameters.addParameter("TrackerCollectionLabel", trackCollectionTag); + InputTag vertexCollectionTag = parameterSet.getParameter("VertexCollectionLabel"); + trajectoryBuilderParameters.addParameter("VertexCollectionLabel", vertexCollectionTag); + bool selectHighPurity_ = parameterSet.getParameter("selectHighPurity"); + trajectoryBuilderParameters.addParameter("selectHighPurity", selectHighPurity_); // STA Muon Collection Label theSTACollectionLabel = parameterSet.getParameter("MuonCollectionLabel"); diff --git a/RecoMuon/GlobalTrackFinder/interface/GlobalMuonTrajectoryBuilder.h b/RecoMuon/GlobalTrackFinder/interface/GlobalMuonTrajectoryBuilder.h index ab1b2136d5741..341eaf3b17428 100644 --- a/RecoMuon/GlobalTrackFinder/interface/GlobalMuonTrajectoryBuilder.h +++ b/RecoMuon/GlobalTrackFinder/interface/GlobalMuonTrajectoryBuilder.h @@ -14,6 +14,7 @@ #include "TrackingTools/PatternTools/interface/TrajTrackAssociation.h" #include "FWCore/Utilities/interface/InputTag.h" #include "FWCore/Framework/interface/ConsumesCollector.h" +#include "DataFormats/VertexReco/interface/Vertex.h" namespace edm { class ParameterSet; @@ -48,5 +49,9 @@ class GlobalMuonTrajectoryBuilder : public GlobalTrajectoryBuilderBase { edm::InputTag theTkTrackLabel; edm::EDGetTokenT allTrackerTracksToken; edm::Handle allTrackerTracks; + edm::InputTag thePrimaryVtxLabel; + edm::EDGetTokenT primaryVertexToken; + edm::Handle vertexCollection; + bool selectHighPurity_; }; #endif diff --git a/RecoMuon/GlobalTrackFinder/src/GlobalMuonTrajectoryBuilder.cc b/RecoMuon/GlobalTrackFinder/src/GlobalMuonTrajectoryBuilder.cc index 02e6fdfedff60..3f01fa3cebe7f 100644 --- a/RecoMuon/GlobalTrackFinder/src/GlobalMuonTrajectoryBuilder.cc +++ b/RecoMuon/GlobalTrackFinder/src/GlobalMuonTrajectoryBuilder.cc @@ -61,6 +61,9 @@ GlobalMuonTrajectoryBuilder::GlobalMuonTrajectoryBuilder(const edm::ParameterSet { theTkTrackLabel = par.getParameter("TrackerCollectionLabel"); allTrackerTracksToken = iC.consumes(theTkTrackLabel); + thePrimaryVtxLabel = par.getParameter("VertexCollectionLabel"); + primaryVertexToken = iC.mayConsume(thePrimaryVtxLabel); + selectHighPurity_ = par.getParameter("selectHighPurity"); } //-------------- @@ -80,6 +83,10 @@ void GlobalMuonTrajectoryBuilder::setEvent(const edm::Event& event) { // get tracker TrackCollection from Event event.getByToken(allTrackerTracksToken, allTrackerTracks); LogDebug(category) << " Found " << allTrackerTracks->size() << " tracker Tracks with label " << theTkTrackLabel; + + // get primary vertex from Event + event.getByToken(primaryVertexToken, vertexCollection); + LogDebug(category) << " Found " << vertexCollection->size() << " tracker Tracks with label " << thePrimaryVtxLabel; } // diff --git a/RecoMuon/MuonIdentification/plugins/MuonIdProducer.cc b/RecoMuon/MuonIdentification/plugins/MuonIdProducer.cc index 974fa1d91b6f3..3fc9cdcdec7bc 100644 --- a/RecoMuon/MuonIdentification/plugins/MuonIdProducer.cc +++ b/RecoMuon/MuonIdentification/plugins/MuonIdProducer.cc @@ -157,6 +157,11 @@ MuonIdProducer::MuonIdProducer(const edm::ParameterSet& iConfig) std::make_unique(iConfig.getParameter("TrackerKinkFinderParameters"), iC); } + if (selectHighPurity_) { + const auto& pvTag = iConfig.getParameter("pvInputTag"); + pvToken_ = mayConsume(pvTag); + } + //create mesh holder meshAlgo_ = std::make_unique(iConfig.getParameter("arbitrationCleanerOptions")); @@ -253,6 +258,8 @@ void MuonIdProducer::init(edm::Event& iEvent, const edm::EventSetup& iSetup) { iEvent.getByToken(rpcHitToken_, rpcHitHandle_); if (fillGlobalTrackQuality_) iEvent.getByToken(glbQualToken_, glbQualHandle_); + if (selectHighPurity_) + iEvent.getByToken(pvToken_, pvHandle_); } reco::Muon MuonIdProducer::makeMuon(edm::Event& iEvent, @@ -540,6 +547,11 @@ void MuonIdProducer::produce(edm::Event& iEvent, const edm::EventSetup& iSetup) const reco::Track& track = innerTrackCollectionHandle_->at(i); if (!isGoodTrack(track)) continue; + if (selectHighPurity_ && !track.quality(reco::TrackBase::highPurity)) { + const reco::VertexCollection* recoVertices = pvHandle_.product(); + if (!recoVertices->at(0).isFake()) + continue; + } const auto& trackRef = reco::TrackRef(innerTrackCollectionHandle_, i); bool splitTrack = false; if (track.extra().isAvailable() && TrackDetectorAssociator::crossedIP(track)) diff --git a/RecoMuon/MuonIdentification/plugins/MuonIdProducer.h b/RecoMuon/MuonIdentification/plugins/MuonIdProducer.h index be7974dfa4ac9..bef21b9a00771 100644 --- a/RecoMuon/MuonIdentification/plugins/MuonIdProducer.h +++ b/RecoMuon/MuonIdentification/plugins/MuonIdProducer.h @@ -36,6 +36,7 @@ #include "DataFormats/Common/interface/Handle.h" #include "DataFormats/TrackReco/interface/Track.h" #include "DataFormats/TrackReco/interface/TrackToTrackMap.h" +#include "DataFormats/VertexReco/interface/Vertex.h" #include "DataFormats/MuonReco/interface/Muon.h" #include "DataFormats/MuonReco/interface/MuonTrackLinks.h" #include "DataFormats/MuonReco/interface/MuonFwd.h" @@ -231,6 +232,7 @@ class MuonIdProducer : public edm::stream::EDProducer<> { edm::Handle tpfmsCollectionHandle_; edm::Handle pickyCollectionHandle_; edm::Handle dytCollectionHandle_; + edm::Handle pvHandle_; edm::EDGetTokenT innerTrackCollectionToken_; edm::EDGetTokenT outerTrackCollectionToken_; @@ -239,6 +241,7 @@ class MuonIdProducer : public edm::stream::EDProducer<> { edm::EDGetTokenT tpfmsCollectionToken_; edm::EDGetTokenT pickyCollectionToken_; edm::EDGetTokenT dytCollectionToken_; + edm::EDGetTokenT pvToken_; edm::EDGetTokenT rpcHitToken_; edm::EDGetTokenT > glbQualToken_; @@ -264,6 +267,8 @@ class MuonIdProducer : public edm::stream::EDProducer<> { bool fillGlobalTrackRefits_; edm::InputTag globalTrackQualityInputTag_; + edm::InputTag pvInputTag_; + bool selectHighPurity_; bool fillTrackerKink_; std::unique_ptr trackerKinkFinder_; diff --git a/RecoMuon/MuonIdentification/python/earlyMuons_cfi.py b/RecoMuon/MuonIdentification/python/earlyMuons_cfi.py index eaccc9d968b4b..0f10b0f204a6d 100644 --- a/RecoMuon/MuonIdentification/python/earlyMuons_cfi.py +++ b/RecoMuon/MuonIdentification/python/earlyMuons_cfi.py @@ -17,7 +17,8 @@ TrackAssociatorParameters = dict( useHO = False, useEcal = False, - useHcal = False) + useHcal = False), + pvInputTag = "firstStepPrimaryVertices" #Not used, but needed to avoid circular dependency in schedule ) earlyDisplacedMuons = earlyMuons.clone( inputCollectionLabels = ['earlyGeneralTracks','displacedStandAloneMuons:'] diff --git a/RecoMuon/MuonIdentification/python/muons1stStep_cfi.py b/RecoMuon/MuonIdentification/python/muons1stStep_cfi.py index 4cf0ab8b7aaf9..94664a7a384c4 100644 --- a/RecoMuon/MuonIdentification/python/muons1stStep_cfi.py +++ b/RecoMuon/MuonIdentification/python/muons1stStep_cfi.py @@ -66,6 +66,8 @@ # global quality fillGlobalTrackQuality = cms.bool(False), #input depends on external module output --> set to True where the sequence is defined globalTrackQualityInputTag = cms.InputTag('glbTrackQual'), + selectHighPurity = cms.bool(False), + pvInputTag = cms.InputTag('offlinePrimaryVertices'), # tracker kink finding fillTrackerKink = cms.bool(True), @@ -100,7 +102,7 @@ ) from Configuration.ProcessModifiers.pp_on_AA_cff import pp_on_AA -pp_on_AA.toModify(muons1stStep, minPt = 0.8) +pp_on_AA.toModify(muons1stStep, minPt = 0.8, selectHighPurity = True) from Configuration.ProcessModifiers.recoFromReco_cff import recoFromReco recoFromReco.toModify(muons1stStep,fillShowerDigis = False) From bfea3ce81bb3ee0e181609d2156c5d7f0f067b31 Mon Sep 17 00:00:00 2001 From: Matthew Date: Wed, 12 Jan 2022 19:54:06 +0100 Subject: [PATCH 2/6] set _selectHighPurity --- RecoMuon/MuonIdentification/plugins/MuonIdProducer.cc | 1 + 1 file changed, 1 insertion(+) diff --git a/RecoMuon/MuonIdentification/plugins/MuonIdProducer.cc b/RecoMuon/MuonIdentification/plugins/MuonIdProducer.cc index 3fc9cdcdec7bc..fa0957b754d76 100644 --- a/RecoMuon/MuonIdentification/plugins/MuonIdProducer.cc +++ b/RecoMuon/MuonIdentification/plugins/MuonIdProducer.cc @@ -64,6 +64,7 @@ MuonIdProducer::MuonIdProducer(const edm::ParameterSet& iConfig) fillGlobalTrackQuality_ = iConfig.getParameter("fillGlobalTrackQuality"); fillGlobalTrackRefits_ = iConfig.getParameter("fillGlobalTrackRefits"); arbitrateTrackerMuons_ = iConfig.getParameter("arbitrateTrackerMuons"); + selectHighPurity_ = iConfig.getParameter("selectHighPurity"); //SK: (maybe temporary) run it only if the global is also run fillTrackerKink_ = false; if (fillGlobalTrackQuality_) From 9697e00513b5a4ea6356f2c562beb7576c40acb8 Mon Sep 17 00:00:00 2001 From: Matthew Date: Wed, 12 Jan 2022 21:02:27 +0100 Subject: [PATCH 3/6] add selectHighPurity to fillDescriptions of MuonIdProducer --- RecoMuon/MuonIdentification/plugins/MuonIdProducer.cc | 1 + 1 file changed, 1 insertion(+) diff --git a/RecoMuon/MuonIdentification/plugins/MuonIdProducer.cc b/RecoMuon/MuonIdentification/plugins/MuonIdProducer.cc index fa0957b754d76..a2b2f77b155b6 100644 --- a/RecoMuon/MuonIdentification/plugins/MuonIdProducer.cc +++ b/RecoMuon/MuonIdentification/plugins/MuonIdProducer.cc @@ -1409,6 +1409,7 @@ void MuonIdProducer::fillDescriptions(edm::ConfigurationDescriptions& descriptio desc.add("arbitrateTrackerMuons", false); desc.add("storeCrossedHcalRecHits", false); desc.add("fillShowerDigis", false); + desc.add("selectHighPurity", false); edm::ParameterSetDescription descTrkAsoPar; descTrkAsoPar.add("GEMSegmentCollectionLabel", edm::InputTag("gemSegments")); From d778f876b1cceb502e2b5b5eb33631fef02993f1 Mon Sep 17 00:00:00 2001 From: Matthew Date: Mon, 17 Jan 2022 17:24:37 +0100 Subject: [PATCH 4/6] use ifValue, move era customization --- RecoMuon/Configuration/python/RecoMuon_cff.py | 3 +++ RecoMuon/MuonIdentification/plugins/MuonIdProducer.cc | 7 +++++-- RecoMuon/MuonIdentification/python/earlyMuons_cfi.py | 3 +-- RecoMuon/MuonIdentification/python/muons1stStep_cfi.py | 2 -- 4 files changed, 9 insertions(+), 6 deletions(-) diff --git a/RecoMuon/Configuration/python/RecoMuon_cff.py b/RecoMuon/Configuration/python/RecoMuon_cff.py index a2d0f63e6863a..34856285f1006 100644 --- a/RecoMuon/Configuration/python/RecoMuon_cff.py +++ b/RecoMuon/Configuration/python/RecoMuon_cff.py @@ -84,3 +84,6 @@ muonshighlevelrecoTask = cms.Task(muonPFIsolationTask,muons,muonReducedTrackExtras) muonshighlevelreco = cms.Sequence(muonshighlevelrecoTask) + +from Configuration.ProcessModifiers.pp_on_AA_cff import pp_on_AA +pp_on_AA.toModify(muons1stStep, minPt = 0.8, selectHighPurity = True) diff --git a/RecoMuon/MuonIdentification/plugins/MuonIdProducer.cc b/RecoMuon/MuonIdentification/plugins/MuonIdProducer.cc index a2b2f77b155b6..b5c0830bf47a4 100644 --- a/RecoMuon/MuonIdentification/plugins/MuonIdProducer.cc +++ b/RecoMuon/MuonIdentification/plugins/MuonIdProducer.cc @@ -550,7 +550,7 @@ void MuonIdProducer::produce(edm::Event& iEvent, const edm::EventSetup& iSetup) continue; if (selectHighPurity_ && !track.quality(reco::TrackBase::highPurity)) { const reco::VertexCollection* recoVertices = pvHandle_.product(); - if (!recoVertices->at(0).isFake()) + if (!(*recoVertices)[0].isFake()) continue; } const auto& trackRef = reco::TrackRef(innerTrackCollectionHandle_, i); @@ -1409,7 +1409,10 @@ void MuonIdProducer::fillDescriptions(edm::ConfigurationDescriptions& descriptio desc.add("arbitrateTrackerMuons", false); desc.add("storeCrossedHcalRecHits", false); desc.add("fillShowerDigis", false); - desc.add("selectHighPurity", false); + desc.ifValue( + edm::ParameterDescription("selectHighPurity", false, true), + true >> (edm::ParameterDescription("pvInputTag", edm::InputTag("offlinePrimaryVertices"), true)) or + false >> (edm::ParameterDescription("pvInputTag", edm::InputTag(""), true))); edm::ParameterSetDescription descTrkAsoPar; descTrkAsoPar.add("GEMSegmentCollectionLabel", edm::InputTag("gemSegments")); diff --git a/RecoMuon/MuonIdentification/python/earlyMuons_cfi.py b/RecoMuon/MuonIdentification/python/earlyMuons_cfi.py index 0f10b0f204a6d..eaccc9d968b4b 100644 --- a/RecoMuon/MuonIdentification/python/earlyMuons_cfi.py +++ b/RecoMuon/MuonIdentification/python/earlyMuons_cfi.py @@ -17,8 +17,7 @@ TrackAssociatorParameters = dict( useHO = False, useEcal = False, - useHcal = False), - pvInputTag = "firstStepPrimaryVertices" #Not used, but needed to avoid circular dependency in schedule + useHcal = False) ) earlyDisplacedMuons = earlyMuons.clone( inputCollectionLabels = ['earlyGeneralTracks','displacedStandAloneMuons:'] diff --git a/RecoMuon/MuonIdentification/python/muons1stStep_cfi.py b/RecoMuon/MuonIdentification/python/muons1stStep_cfi.py index 94664a7a384c4..41cb5dcfddbb1 100644 --- a/RecoMuon/MuonIdentification/python/muons1stStep_cfi.py +++ b/RecoMuon/MuonIdentification/python/muons1stStep_cfi.py @@ -101,8 +101,6 @@ inputCollection = cms.InputTag("muons1stStep") ) -from Configuration.ProcessModifiers.pp_on_AA_cff import pp_on_AA -pp_on_AA.toModify(muons1stStep, minPt = 0.8, selectHighPurity = True) from Configuration.ProcessModifiers.recoFromReco_cff import recoFromReco recoFromReco.toModify(muons1stStep,fillShowerDigis = False) From 3aa8262eba6a0170e9076fd3f356b64a9cd2b4b0 Mon Sep 17 00:00:00 2001 From: Matthew Date: Tue, 25 Jan 2022 13:01:00 +0100 Subject: [PATCH 5/6] activate highPurity selection in GlobalMuonTrajectoryBuilder, move era customization back --- RecoMuon/Configuration/python/RecoMuonPPonly_cff.py | 3 ++- RecoMuon/Configuration/python/RecoMuon_cff.py | 11 ++++++----- RecoMuon/Configuration/python/SETRecoMuon_cff.py | 7 +++++-- .../src/GlobalMuonTrajectoryBuilder.cc | 4 ++++ RecoMuon/MuonIdentification/python/earlyMuons_cfi.py | 3 ++- .../MuonIdentification/python/muons1stStep_cfi.py | 2 ++ 6 files changed, 21 insertions(+), 9 deletions(-) diff --git a/RecoMuon/Configuration/python/RecoMuonPPonly_cff.py b/RecoMuon/Configuration/python/RecoMuonPPonly_cff.py index 7d05060ffbc85..b644af735b36d 100644 --- a/RecoMuon/Configuration/python/RecoMuonPPonly_cff.py +++ b/RecoMuon/Configuration/python/RecoMuonPPonly_cff.py @@ -27,7 +27,8 @@ from RecoMuon.Configuration.iterativeTkDisplaced_cff import * displacedGlobalMuons = globalMuons.clone( MuonCollectionLabel = 'displacedStandAloneMuons:', - TrackerCollectionLabel = 'displacedTracks' + TrackerCollectionLabel = 'displacedTracks', + selectHighPurity = False ) # TeV refinement diff --git a/RecoMuon/Configuration/python/RecoMuon_cff.py b/RecoMuon/Configuration/python/RecoMuon_cff.py index 34856285f1006..5280509564207 100644 --- a/RecoMuon/Configuration/python/RecoMuon_cff.py +++ b/RecoMuon/Configuration/python/RecoMuon_cff.py @@ -25,7 +25,9 @@ TimingFillerParameters = dict( MatchParameters = dict(DTsegments = 'dt4DCosmicSegments'), DTTimingParameters = dict(PruneCut = 9999), - CSCTimingParameters = dict(PruneCut = 9999)) + CSCTimingParameters = dict(PruneCut = 9999)), + selectHighPurity = False, + minPt = 0.5 ) #add regional cosmic tracks here @@ -56,7 +58,9 @@ TimingFillerParameters = dict( MatchParameters = dict(DTsegments = 'dt4DCosmicSegments'), DTTimingParameters = dict(PruneCut = 9999), - CSCTimingParameters = dict(PruneCut = 9999)) + CSCTimingParameters = dict(PruneCut = 9999)), + selectHighPurity = False, + minPt = 0.5 ) muoncosmicreco1legSTATask = cms.Task(CosmicMuonSeed,cosmicMuons1Leg) @@ -84,6 +88,3 @@ muonshighlevelrecoTask = cms.Task(muonPFIsolationTask,muons,muonReducedTrackExtras) muonshighlevelreco = cms.Sequence(muonshighlevelrecoTask) - -from Configuration.ProcessModifiers.pp_on_AA_cff import pp_on_AA -pp_on_AA.toModify(muons1stStep, minPt = 0.8, selectHighPurity = True) diff --git a/RecoMuon/Configuration/python/SETRecoMuon_cff.py b/RecoMuon/Configuration/python/SETRecoMuon_cff.py index 5979895d9e51c..fd7916627d22a 100644 --- a/RecoMuon/Configuration/python/SETRecoMuon_cff.py +++ b/RecoMuon/Configuration/python/SETRecoMuon_cff.py @@ -6,7 +6,8 @@ from RecoMuon.GlobalMuonProducer.GlobalMuonProducer_cff import * globalSETMuons = globalMuons.clone( - MuonCollectionLabel = 'standAloneSETMuons:UpdatedAtVtx' + MuonCollectionLabel = 'standAloneSETMuons:UpdatedAtVtx', + selectHighPurity = False ) muontracking_with_SET_Task = cms.Task(SETMuonSeed,standAloneSETMuons,globalSETMuons) muontracking_with_SET = cms.Sequence(muontracking_with_SET_Task) @@ -16,7 +17,9 @@ inputCollectionLabels = ['generalTracks', 'globalSETMuons', 'standAloneSETMuons:UpdatedAtVtx'], - inputCollectionTypes = ['inner tracks', 'links', 'outer tracks'] + inputCollectionTypes = ['inner tracks', 'links', 'outer tracks'], + selectHighPurity = False, + minPt = 0.5 ) #muonreco_with_SET = cms.Sequence(muontracking_with_SET*muonsWithSET) #run only the tracking part for SET, after that it should be merged with the main ones at some point diff --git a/RecoMuon/GlobalTrackFinder/src/GlobalMuonTrajectoryBuilder.cc b/RecoMuon/GlobalTrackFinder/src/GlobalMuonTrajectoryBuilder.cc index 3f01fa3cebe7f..7043707488be6 100644 --- a/RecoMuon/GlobalTrackFinder/src/GlobalMuonTrajectoryBuilder.cc +++ b/RecoMuon/GlobalTrackFinder/src/GlobalMuonTrajectoryBuilder.cc @@ -158,6 +158,10 @@ vector GlobalMuonTrajectoryBuilder::make for (unsigned int position = 0; position != allTrackerTracks->size(); ++position) { reco::TrackRef tkTrackRef(allTrackerTracks, position); TrackCand tkCand = TrackCand((Trajectory*)nullptr, tkTrackRef); + if(selectHighPurity_ && !tkTrackRef->quality(reco::TrackBase::highPurity)) { + const reco::VertexCollection *recoVertices = vertexCollection.product(); + if(!(*recoVertices)[0].isFake()) continue; + } tkTrackCands.push_back(tkCand); } diff --git a/RecoMuon/MuonIdentification/python/earlyMuons_cfi.py b/RecoMuon/MuonIdentification/python/earlyMuons_cfi.py index eaccc9d968b4b..8af4860d08fb0 100644 --- a/RecoMuon/MuonIdentification/python/earlyMuons_cfi.py +++ b/RecoMuon/MuonIdentification/python/earlyMuons_cfi.py @@ -17,7 +17,8 @@ TrackAssociatorParameters = dict( useHO = False, useEcal = False, - useHcal = False) + useHcal = False), + selectHighPurity = False ) earlyDisplacedMuons = earlyMuons.clone( inputCollectionLabels = ['earlyGeneralTracks','displacedStandAloneMuons:'] diff --git a/RecoMuon/MuonIdentification/python/muons1stStep_cfi.py b/RecoMuon/MuonIdentification/python/muons1stStep_cfi.py index 41cb5dcfddbb1..94664a7a384c4 100644 --- a/RecoMuon/MuonIdentification/python/muons1stStep_cfi.py +++ b/RecoMuon/MuonIdentification/python/muons1stStep_cfi.py @@ -101,6 +101,8 @@ inputCollection = cms.InputTag("muons1stStep") ) +from Configuration.ProcessModifiers.pp_on_AA_cff import pp_on_AA +pp_on_AA.toModify(muons1stStep, minPt = 0.8, selectHighPurity = True) from Configuration.ProcessModifiers.recoFromReco_cff import recoFromReco recoFromReco.toModify(muons1stStep,fillShowerDigis = False) From eced23d98819c86fe97e30b1af42e916a05c14d2 Mon Sep 17 00:00:00 2001 From: Matthew Date: Tue, 25 Jan 2022 13:07:04 +0100 Subject: [PATCH 6/6] code-format --- .../GlobalTrackFinder/src/GlobalMuonTrajectoryBuilder.cc | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/RecoMuon/GlobalTrackFinder/src/GlobalMuonTrajectoryBuilder.cc b/RecoMuon/GlobalTrackFinder/src/GlobalMuonTrajectoryBuilder.cc index 7043707488be6..f9c4cc5f22698 100644 --- a/RecoMuon/GlobalTrackFinder/src/GlobalMuonTrajectoryBuilder.cc +++ b/RecoMuon/GlobalTrackFinder/src/GlobalMuonTrajectoryBuilder.cc @@ -158,9 +158,10 @@ vector GlobalMuonTrajectoryBuilder::make for (unsigned int position = 0; position != allTrackerTracks->size(); ++position) { reco::TrackRef tkTrackRef(allTrackerTracks, position); TrackCand tkCand = TrackCand((Trajectory*)nullptr, tkTrackRef); - if(selectHighPurity_ && !tkTrackRef->quality(reco::TrackBase::highPurity)) { - const reco::VertexCollection *recoVertices = vertexCollection.product(); - if(!(*recoVertices)[0].isFake()) continue; + if (selectHighPurity_ && !tkTrackRef->quality(reco::TrackBase::highPurity)) { + const reco::VertexCollection* recoVertices = vertexCollection.product(); + if (!(*recoVertices)[0].isFake()) + continue; } tkTrackCands.push_back(tkCand); }