From 61da785d25280313d2992455c92a0f19ee58a0f3 Mon Sep 17 00:00:00 2001 From: Matti Kortelainen Date: Fri, 16 Oct 2020 15:14:00 +0200 Subject: [PATCH 1/4] Migrate GlobalMuonRefitter to EventSetup consumes --- .../interface/GlobalMuonRefitter.h | 17 ++++++++--------- .../src/GlobalMuonRefitter.cc | 18 ++++++++---------- 2 files changed, 16 insertions(+), 19 deletions(-) diff --git a/RecoMuon/GlobalTrackingTools/interface/GlobalMuonRefitter.h b/RecoMuon/GlobalTrackingTools/interface/GlobalMuonRefitter.h index d6a59657d9c21..e49282598869d 100644 --- a/RecoMuon/GlobalTrackingTools/interface/GlobalMuonRefitter.h +++ b/RecoMuon/GlobalTrackingTools/interface/GlobalMuonRefitter.h @@ -16,11 +16,11 @@ #include "DataFormats/Common/interface/Handle.h" #include "FWCore/Framework/interface/EDProducer.h" -#include "FWCore/Framework/interface/ESHandle.h" #include "FWCore/Utilities/interface/InputTag.h" #include "DataFormats/TrackReco/interface/TrackFwd.h" #include "FWCore/ParameterSet/interface/ParameterSet.h" #include "FWCore/Framework/interface/ConsumesCollector.h" +#include "FWCore/Framework/interface/FrameworkfwdMostUsed.h" #include "RecoMuon/TrackingTools/interface/MuonTrajectoryBuilder.h" #include "RecoMuon/TransientTrackingRecHit/interface/MuonTransientTrackingRecHit.h" #include "TrackingTools/TrackRefitter/interface/TrackTransformer.h" @@ -33,9 +33,6 @@ #include "DataFormats/MuonReco/interface/DYTInfo.h" #include "RecoTracker/TransientTrackingRecHit/interface/TkTransientTrackingRecHitBuilder.h" -namespace edm { - class Event; -} namespace reco { class TransientTrack; } @@ -48,6 +45,8 @@ class MuonServiceProxy; class Trajectory; class TrajectoryFitter; +class TrajectoryFitterRecord; +class TransientRecHitRecord; class GlobalMuonRefitter { public: @@ -172,15 +171,15 @@ class GlobalMuonRefitter { edm::ParameterSet theDYTthrsParameters; reco::DYTInfo* dytInfo; - std::string theFitterName; + edm::ESGetToken theFitterToken; std::unique_ptr theFitter; - std::string theTrackerRecHitBuilderName; - edm::ESHandle theTrackerRecHitBuilder; + edm::ESGetToken theTrackerRecHitBuilderToken; + const TransientTrackingRecHitBuilder* theTrackerRecHitBuilder; TkClonerImpl hitCloner; - std::string theMuonRecHitBuilderName; - edm::ESHandle theMuonRecHitBuilder; + edm::ESGetToken theMuonRecHitBuilderToken; + const TransientTrackingRecHitBuilder* theMuonRecHitBuilder; const MuonServiceProxy* theService; const edm::Event* theEvent; diff --git a/RecoMuon/GlobalTrackingTools/src/GlobalMuonRefitter.cc b/RecoMuon/GlobalTrackingTools/src/GlobalMuonRefitter.cc index b13868e118180..7ca852105e629 100644 --- a/RecoMuon/GlobalTrackingTools/src/GlobalMuonRefitter.cc +++ b/RecoMuon/GlobalTrackingTools/src/GlobalMuonRefitter.cc @@ -105,15 +105,15 @@ GlobalMuonRefitter::GlobalMuonRefitter(const edm::ParameterSet& par, << "\n" << "RefitDirection = insideOut or RefitDirection = outsideIn"; - theFitterName = par.getParameter("Fitter"); + theFitterToken = iC.esConsumes(edm::ESInputTag("", par.getParameter("Fitter"))); thePropagatorName = par.getParameter("Propagator"); theSkipStation = par.getParameter("SkipStation"); theTrackerSkipSystem = par.getParameter("TrackerSkipSystem"); theTrackerSkipSection = par.getParameter("TrackerSkipSection"); //layer, wheel, or disk depending on the system - theTrackerRecHitBuilderName = par.getParameter("TrackerRecHitBuilder"); - theMuonRecHitBuilderName = par.getParameter("MuonRecHitBuilder"); + theTrackerRecHitBuilderToken = iC.esConsumes(edm::ESInputTag("", par.getParameter("TrackerRecHitBuilder"))); + theMuonRecHitBuilderToken = iC.esConsumes(edm::ESInputTag("", par.getParameter("MuonRecHitBuilder"))); theRPCInTheFit = par.getParameter("RefitRPCHits"); @@ -161,17 +161,15 @@ void GlobalMuonRefitter::setEvent(const edm::Event& event) { } void GlobalMuonRefitter::setServices(const EventSetup& setup) { - edm::ESHandle aFitter; - theService->eventSetup().get().get(theFitterName, aFitter); - theFitter = aFitter->clone(); + theFitter = setup.getData(theFitterToken).clone(); // Transient Rechit Builders unsigned long long newCacheId_TRH = setup.get().cacheIdentifier(); if (newCacheId_TRH != theCacheId_TRH) { LogDebug(theCategory) << "TransientRecHitRecord changed!"; - setup.get().get(theTrackerRecHitBuilderName, theTrackerRecHitBuilder); - setup.get().get(theMuonRecHitBuilderName, theMuonRecHitBuilder); - hitCloner = static_cast(theTrackerRecHitBuilder.product())->cloner(); + theTrackerRecHitBuilder = &setup.getData(theTrackerRecHitBuilderToken); + theMuonRecHitBuilder = &setup.getData(theMuonRecHitBuilderToken); + hitCloner = static_cast(theTrackerRecHitBuilder)->cloner(); } theFitter->setHitCloner(&hitCloner); } @@ -188,7 +186,7 @@ vector GlobalMuonRefitter::refit(const reco::Track& globalTrack, reco::TransientTrack track(globalTrack, &*(theService->magneticField()), theService->trackingGeometry()); - auto tkbuilder = static_cast(theTrackerRecHitBuilder.product()); + auto tkbuilder = static_cast(theTrackerRecHitBuilder); for (trackingRecHit_iterator hit = track.recHitsBegin(); hit != track.recHitsEnd(); ++hit) if ((*hit)->isValid()) { From fec10940b83fdae71a3a75ce3b4ba9c43cd6d046 Mon Sep 17 00:00:00 2001 From: Matti Kortelainen Date: Fri, 16 Oct 2020 17:38:23 +0200 Subject: [PATCH 2/4] Migrate GlobalTrajectoryBuilderBase to EventSetup consumes --- .../interface/GlobalTrajectoryBuilderBase.h | 12 +++++----- .../src/GlobalTrajectoryBuilderBase.cc | 23 +++++++------------ 2 files changed, 14 insertions(+), 21 deletions(-) diff --git a/RecoMuon/GlobalTrackingTools/interface/GlobalTrajectoryBuilderBase.h b/RecoMuon/GlobalTrackingTools/interface/GlobalTrajectoryBuilderBase.h index 0eb876e44cefd..6395b24a92a70 100644 --- a/RecoMuon/GlobalTrackingTools/interface/GlobalTrajectoryBuilderBase.h +++ b/RecoMuon/GlobalTrackingTools/interface/GlobalTrajectoryBuilderBase.h @@ -18,7 +18,6 @@ * \author A. Everett Purdue University */ -#include "FWCore/Framework/interface/ESHandle.h" #include "DataFormats/TrackReco/interface/TrackFwd.h" #include "RecoMuon/TrackingTools/interface/MuonTrajectoryBuilder.h" #include "RecoMuon/TransientTrackingRecHit/interface/MuonTransientTrackingRecHit.h" @@ -38,6 +37,7 @@ class MuonDetLayerMeasurements; class MuonServiceProxy; class MuonTrackingRegionBuilder; class GlobalMuonRefitter; +class TransientRecHitRecord; class GlobalTrajectoryBuilderBase : public MuonTrajectoryBuilder { public: @@ -151,7 +151,6 @@ class GlobalTrajectoryBuilderBase : public MuonTrajectoryBuilder { MuonTrackingRegionBuilder* theRegionBuilder; const MuonServiceProxy* theService; GlobalMuonRefitter* theGlbRefitter; - unsigned long long theCacheId_TRH; bool theRPCInTheFit; bool theRefitFlag; int theMuonHitsOption; @@ -159,10 +158,11 @@ class GlobalTrajectoryBuilderBase : public MuonTrajectoryBuilder { float theTECyScale; std::string theTrackerPropagatorName; const edm::Event* theEvent; - std::string theTrackerRecHitBuilderName; - edm::ESHandle theTrackerRecHitBuilder; - std::string theMuonRecHitBuilderName; - edm::ESHandle theMuonRecHitBuilder; + edm::ESGetToken theTrackerRecHitBuilderToken; + const TransientTrackingRecHitBuilder* theTrackerRecHitBuilder; + edm::ESGetToken theMuonRecHitBuilderToken; + const TransientTrackingRecHitBuilder* theMuonRecHitBuilder; + edm::ESGetToken theTopoToken; const TrackerTopology* theTopo; }; #endif diff --git a/RecoMuon/GlobalTrackingTools/src/GlobalTrajectoryBuilderBase.cc b/RecoMuon/GlobalTrackingTools/src/GlobalTrajectoryBuilderBase.cc index 170a4e745ac86..efdc961fa8a22 100644 --- a/RecoMuon/GlobalTrackingTools/src/GlobalTrajectoryBuilderBase.cc +++ b/RecoMuon/GlobalTrackingTools/src/GlobalTrajectoryBuilderBase.cc @@ -103,8 +103,10 @@ GlobalTrajectoryBuilderBase::GlobalTrajectoryBuilderBase(const edm::ParameterSet theMuonHitsOption = refitterParameters.getParameter("MuonHitsOption"); theRefitFlag = refitterParameters.getParameter("RefitFlag"); - theTrackerRecHitBuilderName = par.getParameter("TrackerRecHitBuilder"); - theMuonRecHitBuilderName = par.getParameter("MuonRecHitBuilder"); + theTrackerRecHitBuilderToken = + iC.esConsumes(edm::ESInputTag("", par.getParameter("TrackerRecHitBuilder"))); + theMuonRecHitBuilderToken = iC.esConsumes(edm::ESInputTag("", par.getParameter("MuonRecHitBuilder"))); + theTopoToken = iC.esConsumes(); theRPCInTheFit = par.getParameter("RefitRPCHits"); @@ -112,8 +114,6 @@ GlobalTrajectoryBuilderBase::GlobalTrajectoryBuilderBase(const edm::ParameterSet theTECyScale = par.getParameter("ScaleTECyFactor"); thePtCut = par.getParameter("PtCut"); thePCut = par.getParameter("PCut"); - - theCacheId_TRH = 0; } //-------------- @@ -142,18 +142,11 @@ void GlobalTrajectoryBuilderBase::setEvent(const edm::Event& event) { theGlbRefitter->setEvent(event); theGlbRefitter->setServices(theService->eventSetup()); - unsigned long long newCacheId_TRH = theService->eventSetup().get().cacheIdentifier(); - if (newCacheId_TRH != theCacheId_TRH) { - LogDebug(theCategory) << "TransientRecHitRecord changed!"; - theCacheId_TRH = newCacheId_TRH; - theService->eventSetup().get().get(theTrackerRecHitBuilderName, theTrackerRecHitBuilder); - theService->eventSetup().get().get(theMuonRecHitBuilderName, theMuonRecHitBuilder); - } + theTrackerRecHitBuilder = &theService->eventSetup().getData(theTrackerRecHitBuilderToken); + theMuonRecHitBuilder = &theService->eventSetup().getData(theMuonRecHitBuilderToken); //Retrieve tracker topology from geometry - edm::ESHandle tTopoHand; - theService->eventSetup().get().get(tTopoHand); - theTopo = tTopoHand.product(); + theTopo = &theService->eventSetup().getData(theTopoToken); } // @@ -510,7 +503,7 @@ TransientTrackingRecHit::ConstRecHitContainer GlobalTrajectoryBuilderBase::getTr TrajectoryStateOnSurface currTsos = trajectoryStateTransform::innerStateOnSurface( track, *theService->trackingGeometry(), &*theService->magneticField()); - auto tkbuilder = static_cast(theTrackerRecHitBuilder.product()); + auto tkbuilder = static_cast(theTrackerRecHitBuilder); auto hitCloner = tkbuilder->cloner(); for (trackingRecHit_iterator hit = track.recHitsBegin(); hit != track.recHitsEnd(); ++hit) { if ((*hit)->isValid()) { From 27d5ed3666b4353cbad6deec084cbbda2c564469 Mon Sep 17 00:00:00 2001 From: Matti Kortelainen Date: Fri, 16 Oct 2020 23:35:44 +0200 Subject: [PATCH 3/4] Migrate GlobalTrackQualityProducer fully to EventSetup consumes --- .../plugins/GlobalTrackQualityProducer.cc | 5 ++--- .../GlobalTrackingTools/plugins/GlobalTrackQualityProducer.h | 1 + 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/RecoMuon/GlobalTrackingTools/plugins/GlobalTrackQualityProducer.cc b/RecoMuon/GlobalTrackingTools/plugins/GlobalTrackQualityProducer.cc index b5728003b2254..73bb76d6824f7 100644 --- a/RecoMuon/GlobalTrackingTools/plugins/GlobalTrackQualityProducer.cc +++ b/RecoMuon/GlobalTrackingTools/plugins/GlobalTrackQualityProducer.cc @@ -28,6 +28,7 @@ GlobalTrackQualityProducer::GlobalTrackQualityProducer(const edm::ParameterSet& iConfig) : inputCollection_(iConfig.getParameter("InputCollection")), inputLinksCollection_(iConfig.getParameter("InputLinksCollection")), + tTopoToken_(esConsumes()), theService(nullptr), theGlbRefitter(nullptr), theGlbMatcher(nullptr) { @@ -81,9 +82,7 @@ void GlobalTrackQualityProducer::produce(edm::Event& iEvent, const edm::EventSet iEvent.getByToken(linkCollectionToken, linkCollectionHandle); //Retrieve tracker topology from geometry - edm::ESHandle tTopoHand; - iSetup.get().get(tTopoHand); - const TrackerTopology* tTopo = tTopoHand.product(); + const TrackerTopology* tTopo = &iSetup.getData(tTopoToken_); // reserve some space std::vector valuesQual; diff --git a/RecoMuon/GlobalTrackingTools/plugins/GlobalTrackQualityProducer.h b/RecoMuon/GlobalTrackingTools/plugins/GlobalTrackQualityProducer.h index a34e931b2e37f..56273fed8a64d 100644 --- a/RecoMuon/GlobalTrackingTools/plugins/GlobalTrackQualityProducer.h +++ b/RecoMuon/GlobalTrackingTools/plugins/GlobalTrackQualityProducer.h @@ -44,6 +44,7 @@ class GlobalTrackQualityProducer : public edm::stream::EDProducer<> { edm::InputTag inputLinksCollection_; edm::EDGetTokenT glbMuonsToken; edm::EDGetTokenT linkCollectionToken; + const edm::ESGetToken tTopoToken_; MuonServiceProxy* theService; GlobalMuonRefitter* theGlbRefitter; GlobalMuonTrackMatcher* theGlbMatcher; From 36f11b103cb0a2f82f2ae6f52d27f793b9a69f2a Mon Sep 17 00:00:00 2001 From: Matti Kortelainen Date: Sat, 17 Oct 2020 00:15:35 +0200 Subject: [PATCH 4/4] Migrate TevMuonProducer to EventSetup consumes --- RecoMuon/GlobalMuonProducer/src/TevMuonProducer.cc | 6 ++---- RecoMuon/GlobalMuonProducer/src/TevMuonProducer.h | 9 +++------ 2 files changed, 5 insertions(+), 10 deletions(-) diff --git a/RecoMuon/GlobalMuonProducer/src/TevMuonProducer.cc b/RecoMuon/GlobalMuonProducer/src/TevMuonProducer.cc index 348f363afdabc..252767510251c 100644 --- a/RecoMuon/GlobalMuonProducer/src/TevMuonProducer.cc +++ b/RecoMuon/GlobalMuonProducer/src/TevMuonProducer.cc @@ -33,7 +33,7 @@ using namespace reco; // // constructor with config // -TevMuonProducer::TevMuonProducer(const ParameterSet& parameterSet) { +TevMuonProducer::TevMuonProducer(const ParameterSet& parameterSet) : tTopoToken(esConsumes()) { LogDebug("Muon|RecoMuon|TevMuonProducer") << "constructor called" << endl; // GLB Muon Collection Label @@ -92,9 +92,7 @@ void TevMuonProducer::produce(Event& event, const EventSetup& eventSetup) { theRefitter->setServices(theService->eventSetup()); //Retrieve tracker topology from geometry - edm::ESHandle tTopoHand; - eventSetup.get().get(tTopoHand); - const TrackerTopology* tTopo = tTopoHand.product(); + const TrackerTopology* tTopo = &eventSetup.getData(tTopoToken); // Take the GLB muon container(s) Handle glbMuons; diff --git a/RecoMuon/GlobalMuonProducer/src/TevMuonProducer.h b/RecoMuon/GlobalMuonProducer/src/TevMuonProducer.h index 125df166fda57..9ba8559e4f6d4 100644 --- a/RecoMuon/GlobalMuonProducer/src/TevMuonProducer.h +++ b/RecoMuon/GlobalMuonProducer/src/TevMuonProducer.h @@ -14,6 +14,7 @@ */ #include "FWCore/Framework/interface/stream/EDProducer.h" +#include "FWCore/Framework/interface/FrameworkfwdMostUsed.h" #include "RecoMuon/GlobalTrackingTools/interface/GlobalMuonRefitter.h" #include "RecoMuon/TrackingTools/interface/MuonTrackLoader.h" @@ -31,14 +32,9 @@ typedef edm::ValueMap DYTestimators; -namespace edm { - class ParameterSet; - class Event; - class EventSetup; -} // namespace edm - class MuonTrackFinder; class MuonServiceProxy; +class TrackerTopologyRcd; class TevMuonProducer : public edm::stream::EDProducer<> { public: @@ -56,6 +52,7 @@ class TevMuonProducer : public edm::stream::EDProducer<> { edm::InputTag theGLBCollectionLabel; edm::EDGetTokenT glbMuonsToken; edm::EDGetTokenT > glbMuonsTrajToken; + const edm::ESGetToken tTopoToken; /// the event setup proxy, it takes care the services update std::unique_ptr theService;