diff --git a/RecoLocalMuon/RPCRecHit/plugins/RPCRecHitProducer.cc b/RecoLocalMuon/RPCRecHit/plugins/RPCRecHitProducer.cc index 500efac4cc3c8..75db587198313 100644 --- a/RecoLocalMuon/RPCRecHit/plugins/RPCRecHitProducer.cc +++ b/RecoLocalMuon/RPCRecHit/plugins/RPCRecHitProducer.cc @@ -5,19 +5,13 @@ #include "RPCRecHitProducer.h" -#include "FWCore/Framework/interface/ESHandle.h" - #include "Geometry/RPCGeometry/interface/RPCRoll.h" -#include "Geometry/RPCGeometry/interface/RPCGeometry.h" -#include "Geometry/Records/interface/MuonGeometryRecord.h" #include "DataFormats/MuonDetId/interface/RPCDetId.h" #include "DataFormats/RPCRecHit/interface/RPCRecHit.h" #include "RPCRecHitAlgoFactory.h" #include "DataFormats/RPCRecHit/interface/RPCRecHitCollection.h" -#include "CondFormats/DataRecord/interface/RPCMaskedStripsRcd.h" -#include "CondFormats/DataRecord/interface/RPCDeadStripsRcd.h" #include "FWCore/MessageLogger/interface/MessageLogger.h" #include @@ -28,6 +22,7 @@ using namespace std; RPCRecHitProducer::RPCRecHitProducer(const ParameterSet& config) : theRPCDigiLabel(consumes(config.getParameter("rpcDigiLabel"))), + theRPCGeomToken(esConsumes()), // Get the concrete reconstruction algo from the factory theAlgo{RPCRecHitAlgoFactory::get()->create(config.getParameter("recAlgo"), config.getParameter("recAlgoConfig"))}, @@ -56,6 +51,8 @@ RPCRecHitProducer::RPCRecHitProducer(const ParameterSet& config) MaskVec.push_back(Item); } inputFile.close(); + } else { + theReadoutMaskedStripsToken = esConsumes(); } const string deadSource = config.getParameter("deadSource"); @@ -74,17 +71,15 @@ RPCRecHitProducer::RPCRecHitProducer(const ParameterSet& config) DeadVec.push_back(Item); } inputFile.close(); + } else { + theReadoutDeadStripsToken = esConsumes(); } } void RPCRecHitProducer::beginRun(const edm::Run& r, const edm::EventSetup& setup) { // Getting the masked-strip information if (maskSource_ == MaskSource::EventSetup) { - edm::ESHandle readoutMaskedStrips; - setup.get().get(readoutMaskedStrips); - const RPCMaskedStrips* tmp_obj = readoutMaskedStrips.product(); - theRPCMaskedStripsObj->MaskVec = tmp_obj->MaskVec; - delete tmp_obj; + theRPCMaskedStripsObj->MaskVec = setup.getData(theReadoutMaskedStripsToken).MaskVec; } else if (maskSource_ == MaskSource::File) { std::vector::iterator posVec; for (posVec = MaskVec.begin(); posVec != MaskVec.end(); ++posVec) { @@ -97,11 +92,7 @@ void RPCRecHitProducer::beginRun(const edm::Run& r, const edm::EventSetup& setup // Getting the dead-strip information if (deadSource_ == MaskSource::EventSetup) { - edm::ESHandle readoutDeadStrips; - setup.get().get(readoutDeadStrips); - const RPCDeadStrips* tmp_obj = readoutDeadStrips.product(); - theRPCDeadStripsObj->DeadVec = tmp_obj->DeadVec; - delete tmp_obj; + theRPCDeadStripsObj->DeadVec = setup.getData(theReadoutDeadStripsToken).DeadVec; } else if (deadSource_ == MaskSource::File) { std::vector::iterator posVec; for (posVec = DeadVec.begin(); posVec != DeadVec.end(); ++posVec) { @@ -115,8 +106,7 @@ void RPCRecHitProducer::beginRun(const edm::Run& r, const edm::EventSetup& setup void RPCRecHitProducer::produce(Event& event, const EventSetup& setup) { // Get the RPC Geometry - ESHandle rpcGeom; - setup.get().get(rpcGeom); + auto const& rpcGeom = setup.getData(theRPCGeomToken); // Get the digis from the event Handle digis; @@ -135,7 +125,7 @@ void RPCRecHitProducer::produce(Event& event, const EventSetup& setup) { const RPCDetId& rpcId = (*rpcdgIt).first; // Get the GeomDet from the setup - const RPCRoll* roll = rpcGeom->roll(rpcId); + const RPCRoll* roll = rpcGeom.roll(rpcId); if (roll == nullptr) { edm::LogError("BadDigiInput") << "Failed to find RPCRoll for ID " << rpcId; continue; diff --git a/RecoLocalMuon/RPCRecHit/plugins/RPCRecHitProducer.h b/RecoLocalMuon/RPCRecHit/plugins/RPCRecHitProducer.h index 45e311f2a06fe..aa665ea3e2150 100644 --- a/RecoLocalMuon/RPCRecHit/plugins/RPCRecHitProducer.h +++ b/RecoLocalMuon/RPCRecHit/plugins/RPCRecHitProducer.h @@ -14,6 +14,10 @@ #include "DataFormats/RPCDigi/interface/RPCDigiCollection.h" #include "CondFormats/RPCObjects/interface/RPCMaskedStrips.h" #include "CondFormats/RPCObjects/interface/RPCDeadStrips.h" +#include "CondFormats/DataRecord/interface/RPCMaskedStripsRcd.h" +#include "CondFormats/DataRecord/interface/RPCDeadStripsRcd.h" +#include "Geometry/RPCGeometry/interface/RPCGeometry.h" +#include "Geometry/Records/interface/MuonGeometryRecord.h" #include "RPCRecHitBaseAlgo.h" class RPCRecHitProducer : public edm::stream::EDProducer<> { @@ -34,6 +38,9 @@ class RPCRecHitProducer : public edm::stream::EDProducer<> { // The label to be used to retrieve RPC digis from the event const edm::EDGetTokenT theRPCDigiLabel; // edm::InputTag theRPCDigiLabel; + edm::ESGetToken theReadoutMaskedStripsToken; + edm::ESGetToken theReadoutDeadStripsToken; + const edm::ESGetToken theRPCGeomToken; // The reconstruction algorithm std::unique_ptr theAlgo;