diff --git a/L1Trigger/DTTrackFinder/interface/L1AbstractProcessor.h b/L1Trigger/DTTrackFinder/interface/L1AbstractProcessor.h deleted file mode 100644 index 82727583b8e49..0000000000000 --- a/L1Trigger/DTTrackFinder/interface/L1AbstractProcessor.h +++ /dev/null @@ -1,48 +0,0 @@ -//------------------------------------------------- -// -/** \class L1AbstractProcessor - * - * Abstract Base Class for L1 Trigger Devices with EventSetup -*/ -// -// -// Author : -// N. Neumeister CERN EP -// -//-------------------------------------------------- -#ifndef L1_ABSTRACT_PROCESSOR_H -#define L1_ABSTRACT_PROCESSOR_H - -//--------------- -// C++ Headers -- -//--------------- - -//---------------------- -// Base Class Headers -- -//---------------------- - -//------------------------------------ -// Collaborating Class Declarations -- -//------------------------------------ - -#include - -// --------------------- -// -- Class Interface -- -// --------------------- - -class L1AbstractProcessor { -public: - /// destructor - virtual ~L1AbstractProcessor() {} - - /// run processor logic - virtual void run(){}; - - virtual void run(const edm::EventSetup& c){}; - - /// clear event memory of processor - virtual void reset() = 0; -}; - -#endif diff --git a/L1Trigger/DTTrackFinder/src/L1MuDTAssignmentUnit.cc b/L1Trigger/DTTrackFinder/src/L1MuDTAssignmentUnit.cc index be36c1df67171..1abbf0abd889e 100644 --- a/L1Trigger/DTTrackFinder/src/L1MuDTAssignmentUnit.cc +++ b/L1Trigger/DTTrackFinder/src/L1MuDTAssignmentUnit.cc @@ -54,8 +54,16 @@ using namespace std; // Constructors -- //---------------- -L1MuDTAssignmentUnit::L1MuDTAssignmentUnit(L1MuDTSectorProcessor& sp, int id) - : m_sp(sp), m_id(id), m_addArray(), m_TSphi(), m_ptAssMethod(NODEF), nbit_phi(12), nbit_phib(10) { +L1MuDTAssignmentUnit::L1MuDTAssignmentUnit(L1MuDTSectorProcessor& sp, int id, edm::ConsumesCollector iC) + : m_sp(sp), + m_id(id), + m_addArray(), + m_TSphi(), + m_ptAssMethod(NODEF), + thePhiToken(iC.esConsumes()), + thePtaToken(iC.esConsumes()), + nbit_phi(12), + nbit_phib(10) { m_TSphi.reserve(4); // a track candidate can consist of max 4 TS reset(); @@ -133,7 +141,7 @@ void L1MuDTAssignmentUnit::reset() { void L1MuDTAssignmentUnit::PhiAU(const edm::EventSetup& c) { // calculate phi at station 2 using 8 bits (precision = 2.5 degrees) - c.get().get(thePhiLUTs); + thePhiLUTs = c.getHandle(thePhiToken); int sh_phi = 12 - m_sp.tf().config()->getNbitsPhiPhi(); int sh_phib = 10 - m_sp.tf().config()->getNbitsPhiPhib(); @@ -203,7 +211,7 @@ void L1MuDTAssignmentUnit::PhiAU(const edm::EventSetup& c) { // assign pt with 5 bit precision // void L1MuDTAssignmentUnit::PtAU(const edm::EventSetup& c) { - c.get().get(thePtaLUTs); + thePtaLUTs = c.getHandle(thePtaToken); // get pt-assignment method as function of track class and TS phib values m_ptAssMethod = getPtMethod(); diff --git a/L1Trigger/DTTrackFinder/src/L1MuDTAssignmentUnit.h b/L1Trigger/DTTrackFinder/src/L1MuDTAssignmentUnit.h index 62fd059f5c84a..dd84461ba65f5 100644 --- a/L1Trigger/DTTrackFinder/src/L1MuDTAssignmentUnit.h +++ b/L1Trigger/DTTrackFinder/src/L1MuDTAssignmentUnit.h @@ -29,17 +29,20 @@ // Base Class Headers -- //---------------------- -#include "L1Trigger/DTTrackFinder/interface/L1AbstractProcessor.h" - //------------------------------------ // Collaborating Class Declarations -- //------------------------------------ -#include +#include "FWCore/Framework/interface/Frameworkfwd.h" +#include "FWCore/Framework/interface/ESHandle.h" +#include "FWCore/Framework/interface/ConsumesCollector.h" +#include "FWCore/Utilities/interface/ESGetToken.h" #include "CondFormats/L1TObjects/interface/L1MuDTAssParam.h" #include "L1Trigger/DTTrackFinder/interface/L1MuDTAddressArray.h" class L1MuDTPhiLut; class L1MuDTPtaLut; +class L1MuDTPhiLutRcd; +class L1MuDTPtaLutRcd; class L1MuDTTrackSegPhi; class L1MuDTSectorProcessor; @@ -47,19 +50,19 @@ class L1MuDTSectorProcessor; // -- Class Interface -- // --------------------- -class L1MuDTAssignmentUnit : public L1AbstractProcessor { +class L1MuDTAssignmentUnit { public: /// constructor - L1MuDTAssignmentUnit(L1MuDTSectorProcessor& sp, int id); + L1MuDTAssignmentUnit(L1MuDTSectorProcessor& sp, int id, edm::ConsumesCollector); /// destructor - ~L1MuDTAssignmentUnit() override; + ~L1MuDTAssignmentUnit(); /// run Assignment Unit - void run(const edm::EventSetup& c) override; + void run(const edm::EventSetup& c); /// reset Assignment Unit - void reset() override; + void reset(); /// assign phi void PhiAU(const edm::EventSetup& c); @@ -103,6 +106,8 @@ class L1MuDTAssignmentUnit : public L1AbstractProcessor { std::vector m_TSphi; PtAssMethod m_ptAssMethod; + edm::ESGetToken thePhiToken; + edm::ESGetToken thePtaToken; edm::ESHandle thePhiLUTs; ///< phi-assignment look-up tables edm::ESHandle thePtaLUTs; ///< pt-assignment look-up tables unsigned short nbit_phi; ///< # of bits used for pt-assignment diff --git a/L1Trigger/DTTrackFinder/src/L1MuDTERS.h b/L1Trigger/DTTrackFinder/src/L1MuDTERS.h index 5c98b311aaf81..1969004662405 100644 --- a/L1Trigger/DTTrackFinder/src/L1MuDTERS.h +++ b/L1Trigger/DTTrackFinder/src/L1MuDTERS.h @@ -27,8 +27,6 @@ // Base Class Headers -- //---------------------- -#include "L1Trigger/DTTrackFinder/interface/L1AbstractProcessor.h" - //------------------------------------ // Collaborating Class Declarations -- //------------------------------------ @@ -40,19 +38,19 @@ class L1MuDTSEU; // -- Class Interface -- // --------------------- -class L1MuDTERS : public L1AbstractProcessor { +class L1MuDTERS { public: /// constructor L1MuDTERS(const L1MuDTSEU&); /// destructor - ~L1MuDTERS() override; + ~L1MuDTERS(); /// run L1MuDTERS - void run() override; + void run(); /// reset ERS - void reset() override; + void reset(); /// return extrapolation quality inline unsigned int quality(int id) const { return m_quality[id]; } diff --git a/L1Trigger/DTTrackFinder/src/L1MuDTEUX.h b/L1Trigger/DTTrackFinder/src/L1MuDTEUX.h index 9e628320493d2..86116bd73c544 100644 --- a/L1Trigger/DTTrackFinder/src/L1MuDTEUX.h +++ b/L1Trigger/DTTrackFinder/src/L1MuDTEUX.h @@ -28,13 +28,12 @@ // Base Class Headers -- //---------------------- -#include "L1Trigger/DTTrackFinder/interface/L1AbstractProcessor.h" - //------------------------------------ // Collaborating Class Declarations -- //------------------------------------ -#include +#include "FWCore/Framework/interface/Frameworkfwd.h" +#include "FWCore/Framework/interface/ESHandle.h" class L1MuDTTrackSegPhi; class L1MuDTSectorProcessor; class L1MuDTSEU; @@ -45,22 +44,22 @@ class L1MuDTTFParameters; // -- Class Interface -- // --------------------- -class L1MuDTEUX : public L1AbstractProcessor { +class L1MuDTEUX { public: /// constructor L1MuDTEUX(const L1MuDTSectorProcessor& sp, const L1MuDTSEU& seu, int id); /// destructor - ~L1MuDTEUX() override; + ~L1MuDTEUX(); /// equal operator bool operator==(const L1MuDTEUX&) const; /// run Extrapolator - void run(const edm::EventSetup& c) override; + void run(const edm::EventSetup& c); /// reset Extrapolator - void reset() override; + void reset(); /// load data into EUX void load(const L1MuDTTrackSegPhi* start_ts, const L1MuDTTrackSegPhi* target_ts); diff --git a/L1Trigger/DTTrackFinder/src/L1MuDTEtaProcessor.cc b/L1Trigger/DTTrackFinder/src/L1MuDTEtaProcessor.cc index 991b5cc5338a4..7080ede3e9489 100644 --- a/L1Trigger/DTTrackFinder/src/L1MuDTEtaProcessor.cc +++ b/L1Trigger/DTTrackFinder/src/L1MuDTEtaProcessor.cc @@ -65,7 +65,10 @@ L1MuDTEtaProcessor::L1MuDTEtaProcessor(const L1MuDTTrackFinder& tf, int id, edm: m_epid(id), m_foundPattern(0), m_tseta(15), - m_DTDigiToken(iC.consumes(m_tf.config()->getDTDigiInputTag())) { + m_DTDigiToken(iC.consumes(m_tf.config()->getDTDigiInputTag())), + theEtaToken(iC.esConsumes()), + theQualToken(iC.esConsumes()), + theMsksToken(iC.esConsumes()) { m_tseta.reserve(15); } @@ -208,7 +211,7 @@ void L1MuDTEtaProcessor::print() const { // receive data ( 15*3 DTBX eta trigger primitives ) // void L1MuDTEtaProcessor::receiveData(int bx, const edm::Event& e, const edm::EventSetup& c) { - c.get().get(msks); + msks = c.getHandle(theMsksToken); edm::Handle dttrig; e.getByToken(m_DTDigiToken, dttrig); @@ -301,7 +304,7 @@ void L1MuDTEtaProcessor::receiveAddresses() { // run Eta Track Finder (ETF) // void L1MuDTEtaProcessor::runEtaTrackFinder(const edm::EventSetup& c) { - c.get().get(theEtaPatternLUT); + theEtaPatternLUT = c.getHandle(theEtaToken); // check if there are any data bool empty = true; @@ -347,7 +350,7 @@ void L1MuDTEtaProcessor::runEtaTrackFinder(const edm::EventSetup& c) { // run Eta Matching Unit (EMU) // void L1MuDTEtaProcessor::runEtaMatchingUnit(const edm::EventSetup& c) { - c.get().get(theQualPatternLUT); + theQualPatternLUT = c.getHandle(theQualToken); // loop over all addresses for (int i = 0; i < 12; i++) { diff --git a/L1Trigger/DTTrackFinder/src/L1MuDTEtaProcessor.h b/L1Trigger/DTTrackFinder/src/L1MuDTEtaProcessor.h index 282364a7543dd..e33809b65cacb 100644 --- a/L1Trigger/DTTrackFinder/src/L1MuDTEtaProcessor.h +++ b/L1Trigger/DTTrackFinder/src/L1MuDTEtaProcessor.h @@ -38,6 +38,7 @@ #include "FWCore/Framework/interface/Event.h" #include "FWCore/Framework/interface/ESHandle.h" #include "FWCore/Framework/interface/EventSetup.h" +#include "FWCore/Utilities/interface/ESGetToken.h" #include "FWCore/Utilities/interface/EDGetToken.h" #include "L1Trigger/DTTrackFinder/interface/L1MuDTAddressArray.h" class L1MuDTChambThContainer; @@ -47,7 +48,9 @@ class L1MuDTTrack; class L1MuDTEtaPatternLut; class L1MuDTQualPatternLut; class L1MuDTTFMasks; - +class L1MuDTTFMasksRcd; +class L1MuDTEtaPatternLutRcd; +class L1MuDTQualPatternLutRcd; // --------------------- // -- Class Interface -- // --------------------- @@ -118,6 +121,9 @@ class L1MuDTEtaProcessor { std::vector m_tseta; edm::EDGetTokenT m_DTDigiToken; + edm::ESGetToken theEtaToken; + edm::ESGetToken theQualToken; + edm::ESGetToken theMsksToken; edm::ESHandle theEtaPatternLUT; // ETF look-up table edm::ESHandle theQualPatternLUT; // EMU look-up tables edm::ESHandle msks; diff --git a/L1Trigger/DTTrackFinder/src/L1MuDTExtrapolationUnit.cc b/L1Trigger/DTTrackFinder/src/L1MuDTExtrapolationUnit.cc index 472e6e74e12b1..b0aec58e6629e 100644 --- a/L1Trigger/DTTrackFinder/src/L1MuDTExtrapolationUnit.cc +++ b/L1Trigger/DTTrackFinder/src/L1MuDTExtrapolationUnit.cc @@ -52,7 +52,8 @@ using namespace std; // Constructors -- //---------------- -L1MuDTExtrapolationUnit::L1MuDTExtrapolationUnit(const L1MuDTSectorProcessor& sp) : m_sp(sp), m_SEUs() { +L1MuDTExtrapolationUnit::L1MuDTExtrapolationUnit(const L1MuDTSectorProcessor& sp, edm::ConsumesCollector iC) + : m_sp(sp), m_SEUs(), m_parsToken(iC.esConsumes()) { for (int ext_idx = 0; ext_idx < MAX_EXT; ext_idx++) { Extrapolation ext = static_cast(ext_idx); @@ -92,7 +93,7 @@ L1MuDTExtrapolationUnit::~L1MuDTExtrapolationUnit() { // run Extrapolation Unit // void L1MuDTExtrapolationUnit::run(const edm::EventSetup& c) { - c.get().get(pars); + pars = c.getHandle(m_parsToken); SEUmap::const_iterator iter; for (iter = m_SEUs.begin(); iter != m_SEUs.end(); iter++) { diff --git a/L1Trigger/DTTrackFinder/src/L1MuDTExtrapolationUnit.h b/L1Trigger/DTTrackFinder/src/L1MuDTExtrapolationUnit.h index d1eb5d63ce3c3..48880dd7f211e 100644 --- a/L1Trigger/DTTrackFinder/src/L1MuDTExtrapolationUnit.h +++ b/L1Trigger/DTTrackFinder/src/L1MuDTExtrapolationUnit.h @@ -33,38 +33,39 @@ // Base Class Headers -- //---------------------- -#include "L1Trigger/DTTrackFinder/interface/L1AbstractProcessor.h" - //------------------------------------ // Collaborating Class Declarations -- //------------------------------------ #include "CondFormats/L1TObjects/interface/L1MuDTExtParam.h" -#include +#include "FWCore/Framework/interface/Frameworkfwd.h" +#include "FWCore/Framework/interface/ESHandle.h" +#include "FWCore/Framework/interface/ConsumesCollector.h" class L1MuDTSectorProcessor; class L1MuDTSEU; class L1MuDTTFParameters; +class L1MuDTTFParametersRcd; // --------------------- // -- Class Interface -- // --------------------- -class L1MuDTExtrapolationUnit : public L1AbstractProcessor { +class L1MuDTExtrapolationUnit { public: typedef std::pair SEUId; typedef std::map > SEUmap; /// constructor - L1MuDTExtrapolationUnit(const L1MuDTSectorProcessor&); + L1MuDTExtrapolationUnit(const L1MuDTSectorProcessor&, edm::ConsumesCollector); /// destructor - ~L1MuDTExtrapolationUnit() override; + ~L1MuDTExtrapolationUnit(); /// run Extrapolation Unit - void run(const edm::EventSetup& c) override; + void run(const edm::EventSetup& c); /// reset Extrapolation Unit - void reset() override; + void reset(); /// reset a single extrapolation void reset(Extrapolation ext, unsigned int startAdr, unsigned int relAdr); @@ -95,6 +96,7 @@ class L1MuDTExtrapolationUnit : public L1AbstractProcessor { mutable SEUmap m_SEUs; // Single Extrapolation Units + edm::ESGetToken m_parsToken; edm::ESHandle pars; }; diff --git a/L1Trigger/DTTrackFinder/src/L1MuDTMuonSorter.h b/L1Trigger/DTTrackFinder/src/L1MuDTMuonSorter.h index 229dcf57085b0..f0e09628fb99a 100644 --- a/L1Trigger/DTTrackFinder/src/L1MuDTMuonSorter.h +++ b/L1Trigger/DTTrackFinder/src/L1MuDTMuonSorter.h @@ -28,8 +28,6 @@ // Base Class Headers -- //---------------------- -#include "L1Trigger/DTTrackFinder/interface/L1AbstractProcessor.h" - //------------------------------------ // Collaborating Class Declarations -- //------------------------------------ @@ -42,19 +40,19 @@ class L1MuDTSecProcId; // -- Class Interface -- // --------------------- -class L1MuDTMuonSorter : public L1AbstractProcessor { +class L1MuDTMuonSorter { public: /// constructor L1MuDTMuonSorter(const L1MuDTTrackFinder&); /// destructor - ~L1MuDTMuonSorter() override; + ~L1MuDTMuonSorter(); /// run Muon Sorter - void run() override; + void run(); /// reset Muon Sorter - void reset() override; + void reset(); /// print results after sorting void print() const; diff --git a/L1Trigger/DTTrackFinder/src/L1MuDTSEU.h b/L1Trigger/DTTrackFinder/src/L1MuDTSEU.h index d10b0591c113d..6be71448bcafe 100644 --- a/L1Trigger/DTTrackFinder/src/L1MuDTSEU.h +++ b/L1Trigger/DTTrackFinder/src/L1MuDTSEU.h @@ -29,12 +29,10 @@ // Base Class Headers -- //---------------------- -#include "L1Trigger/DTTrackFinder/interface/L1AbstractProcessor.h" - //------------------------------------ // Collaborating Class Declarations -- //------------------------------------ - +#include "FWCore/Framework/interface/Frameworkfwd.h" #include "CondFormats/L1TObjects/interface/L1MuDTExtParam.h" class L1MuDTSectorProcessor; class L1MuDTTrackSegPhi; @@ -45,19 +43,19 @@ class L1MuDTERS; // -- Class Interface -- // --------------------- -class L1MuDTSEU : public L1AbstractProcessor { +class L1MuDTSEU { public: /// constructor L1MuDTSEU(const L1MuDTSectorProcessor& sp, Extrapolation ext, unsigned int tsId); /// destructor - ~L1MuDTSEU() override; + ~L1MuDTSEU(); /// run SEU - void run(const edm::EventSetup& c) override; + void run(const edm::EventSetup& c); /// reset SEU - void reset() override; + void reset(); /// reset single extrapolation void reset(unsigned int relAdr); diff --git a/L1Trigger/DTTrackFinder/src/L1MuDTSectorProcessor.cc b/L1Trigger/DTTrackFinder/src/L1MuDTSectorProcessor.cc index 5a82f72c8c648..87082bf32a2bb 100644 --- a/L1Trigger/DTTrackFinder/src/L1MuDTSectorProcessor.cc +++ b/L1Trigger/DTTrackFinder/src/L1MuDTSectorProcessor.cc @@ -38,7 +38,6 @@ #include "L1Trigger/DTTrackFinder/src/L1MuDTTrackAssembler.h" #include "L1Trigger/DTTrackFinder/src/L1MuDTAssignmentUnit.h" #include "L1Trigger/DTTrackFinder/interface/L1MuDTTrackFinder.h" -#include "L1Trigger/DTTrackFinder/interface/L1MuDTTrack.h" using namespace std; @@ -52,47 +51,22 @@ using namespace std; L1MuDTSectorProcessor::L1MuDTSectorProcessor(const L1MuDTTrackFinder& tf, const L1MuDTSecProcId& id, - edm::ConsumesCollector&& iC) + edm::ConsumesCollector iC) : m_tf(tf), m_spid(id), - m_SectorReceiver(new L1MuDTSectorReceiver(*this, std::move(iC))), - m_DataBuffer(new L1MuDTDataBuffer(*this)), - m_EU(new L1MuDTExtrapolationUnit(*this)), - m_TA(new L1MuDTTrackAssembler(*this)), - m_AUs(), - m_TrackCands(), - m_TracKCands() { - // 2 assignment units - m_AUs.reserve(2); - m_AUs.push_back(new L1MuDTAssignmentUnit(*this, 0)); - m_AUs.push_back(new L1MuDTAssignmentUnit(*this, 1)); - - // now the 2 track candidates - m_TrackCands.reserve(2); - m_TrackCands.push_back(new L1MuDTTrack(m_spid)); - m_TrackCands.push_back(new L1MuDTTrack(m_spid)); - - m_TracKCands.reserve(2); - m_TracKCands.push_back(new L1MuDTTrack(m_spid)); - m_TracKCands.push_back(new L1MuDTTrack(m_spid)); -} + m_SectorReceiver(*this, iC), + m_DataBuffer(*this), + m_EU(*this, iC), + m_TA(*this), + m_AUs{{{*this, 0, iC}, {*this, 1, iC}}}, + m_TrackCands{{{m_spid}, {m_spid}}}, + m_TracKCands{{{m_spid}, {m_spid}}} {} //-------------- // Destructor -- //-------------- -L1MuDTSectorProcessor::~L1MuDTSectorProcessor() { - delete m_SectorReceiver; - delete m_DataBuffer; - delete m_EU; - delete m_TA; - delete m_AUs[0]; - delete m_AUs[1]; - delete m_TrackCands[0]; - delete m_TrackCands[1]; - delete m_TracKCands[0]; - delete m_TracKCands[1]; -} +L1MuDTSectorProcessor::~L1MuDTSectorProcessor() {} //-------------- // Operations -- @@ -103,25 +77,22 @@ L1MuDTSectorProcessor::~L1MuDTSectorProcessor() { // void L1MuDTSectorProcessor::run(int bx, const edm::Event& e, const edm::EventSetup& c) { // receive data and store them into the data buffer - if (m_SectorReceiver) - m_SectorReceiver->run(bx, e, c); + m_SectorReceiver.run(bx, e, c); // check content of data buffer - if (m_DataBuffer) { - if (m_tf.config()->Debug(4) && m_DataBuffer->numberTSphi() > 0) { - cout << "Phi track segments received by " << m_spid << " : " << endl; - m_DataBuffer->printTSphi(); - } + if (m_tf.config()->Debug(4) && m_DataBuffer.numberTSphi() > 0) { + cout << "Phi track segments received by " << m_spid << " : " << endl; + m_DataBuffer.printTSphi(); } // perform all extrapolations int n_ext = 0; // number of successful extrapolations - if (m_EU && m_DataBuffer && m_DataBuffer->numberTSphi() > 1) { - m_EU->run(c); - n_ext = m_EU->numberOfExt(); + if (m_DataBuffer.numberTSphi() > 1) { + m_EU.run(c); + n_ext = m_EU.numberOfExt(); if (m_tf.config()->Debug(3) && n_ext > 0) { cout << "Number of successful extrapolations : " << n_ext << endl; - m_EU->print(); + m_EU.print(); } } @@ -129,98 +100,74 @@ void L1MuDTSectorProcessor::run(int bx, const edm::Event& e, const edm::EventSet // m_EU->print(1); // perform track assembling - if (m_TA && n_ext > 0) { - m_TA->run(); + if (n_ext > 0) { + m_TA.run(); if (m_tf.config()->Debug(3)) - m_TA->print(); + m_TA.print(); } // assign pt, eta, phi and quality - if (m_AUs[0] && !m_TA->isEmpty(0)) - m_AUs[0]->run(c); - if (m_AUs[1] && !m_TA->isEmpty(1)) - m_AUs[1]->run(c); + if (!m_TA.isEmpty(0)) + m_AUs[0].run(c); + if (!m_TA.isEmpty(1)) + m_AUs[1].run(c); if (m_spid.wheel() == -1) { - if (m_TrackCands[0] && !m_TrackCands[0]->empty() && m_TrackCands[0]->address(2) > 3 && - m_TrackCands[0]->address(2) < 6) - m_TrackCands[0]->reset(); - if (m_TrackCands[0] && !m_TrackCands[0]->empty() && m_TrackCands[0]->address(3) > 3 && - m_TrackCands[0]->address(3) < 6) - m_TrackCands[0]->reset(); - if (m_TrackCands[0] && !m_TrackCands[0]->empty() && m_TrackCands[0]->address(4) > 3 && - m_TrackCands[0]->address(4) < 6) - m_TrackCands[0]->reset(); - - if (m_TracKCands[0] && !m_TracKCands[0]->empty() && m_TracKCands[0]->address(2) > 3 && - m_TracKCands[0]->address(2) < 6) - m_TracKCands[0]->reset(); - if (m_TracKCands[0] && !m_TracKCands[0]->empty() && m_TracKCands[0]->address(3) > 3 && - m_TracKCands[0]->address(3) < 6) - m_TracKCands[0]->reset(); - if (m_TracKCands[0] && !m_TracKCands[0]->empty() && m_TracKCands[0]->address(4) > 3 && - m_TracKCands[0]->address(4) < 6) - m_TracKCands[0]->reset(); - - if (m_TrackCands[1] && !m_TrackCands[1]->empty() && m_TrackCands[1]->address(2) > 3 && - m_TrackCands[1]->address(2) < 6) - m_TrackCands[1]->reset(); - if (m_TrackCands[1] && !m_TrackCands[1]->empty() && m_TrackCands[1]->address(3) > 3 && - m_TrackCands[1]->address(3) < 6) - m_TrackCands[1]->reset(); - if (m_TrackCands[1] && !m_TrackCands[1]->empty() && m_TrackCands[1]->address(4) > 3 && - m_TrackCands[1]->address(4) < 6) - m_TrackCands[1]->reset(); - - if (m_TracKCands[1] && !m_TracKCands[1]->empty() && m_TracKCands[1]->address(2) > 3 && - m_TracKCands[1]->address(2) < 6) - m_TracKCands[1]->reset(); - if (m_TracKCands[1] && !m_TracKCands[1]->empty() && m_TracKCands[1]->address(3) > 3 && - m_TracKCands[1]->address(3) < 6) - m_TracKCands[1]->reset(); - if (m_TracKCands[1] && !m_TracKCands[1]->empty() && m_TracKCands[1]->address(4) > 3 && - m_TracKCands[1]->address(4) < 6) - m_TracKCands[1]->reset(); - - if (m_TrackCands[0] && !m_TrackCands[0]->empty() && m_TrackCands[0]->address(2) > 7 && - m_TrackCands[0]->address(2) < 10) - m_TrackCands[0]->reset(); - if (m_TrackCands[0] && !m_TrackCands[0]->empty() && m_TrackCands[0]->address(3) > 7 && - m_TrackCands[0]->address(3) < 10) - m_TrackCands[0]->reset(); - if (m_TrackCands[0] && !m_TrackCands[0]->empty() && m_TrackCands[0]->address(4) > 7 && - m_TrackCands[0]->address(4) < 10) - m_TrackCands[0]->reset(); - - if (m_TracKCands[0] && !m_TracKCands[0]->empty() && m_TracKCands[0]->address(2) > 7 && - m_TracKCands[0]->address(2) < 10) - m_TracKCands[0]->reset(); - if (m_TracKCands[0] && !m_TracKCands[0]->empty() && m_TracKCands[0]->address(3) > 7 && - m_TracKCands[0]->address(3) < 10) - m_TracKCands[0]->reset(); - if (m_TracKCands[0] && !m_TracKCands[0]->empty() && m_TracKCands[0]->address(4) > 7 && - m_TracKCands[0]->address(4) < 10) - m_TracKCands[0]->reset(); - - if (m_TrackCands[1] && !m_TrackCands[1]->empty() && m_TrackCands[1]->address(2) > 7 && - m_TrackCands[1]->address(2) < 10) - m_TrackCands[1]->reset(); - if (m_TrackCands[1] && !m_TrackCands[1]->empty() && m_TrackCands[1]->address(3) > 7 && - m_TrackCands[1]->address(3) < 10) - m_TrackCands[1]->reset(); - if (m_TrackCands[1] && !m_TrackCands[1]->empty() && m_TrackCands[1]->address(4) > 7 && - m_TrackCands[1]->address(4) < 10) - m_TrackCands[1]->reset(); - - if (m_TracKCands[1] && !m_TracKCands[1]->empty() && m_TracKCands[1]->address(2) > 7 && - m_TracKCands[1]->address(2) < 10) - m_TracKCands[1]->reset(); - if (m_TracKCands[1] && !m_TracKCands[1]->empty() && m_TracKCands[1]->address(3) > 7 && - m_TracKCands[1]->address(3) < 10) - m_TracKCands[1]->reset(); - if (m_TracKCands[1] && !m_TracKCands[1]->empty() && m_TracKCands[1]->address(4) > 7 && - m_TracKCands[1]->address(4) < 10) - m_TracKCands[1]->reset(); + if (!m_TrackCands[0].empty() && m_TrackCands[0].address(2) > 3 && m_TrackCands[0].address(2) < 6) + m_TrackCands[0].reset(); + if (!m_TrackCands[0].empty() && m_TrackCands[0].address(3) > 3 && m_TrackCands[0].address(3) < 6) + m_TrackCands[0].reset(); + if (!m_TrackCands[0].empty() && m_TrackCands[0].address(4) > 3 && m_TrackCands[0].address(4) < 6) + m_TrackCands[0].reset(); + + if (!m_TracKCands[0].empty() && m_TracKCands[0].address(2) > 3 && m_TracKCands[0].address(2) < 6) + m_TracKCands[0].reset(); + if (!m_TracKCands[0].empty() && m_TracKCands[0].address(3) > 3 && m_TracKCands[0].address(3) < 6) + m_TracKCands[0].reset(); + if (!m_TracKCands[0].empty() && m_TracKCands[0].address(4) > 3 && m_TracKCands[0].address(4) < 6) + m_TracKCands[0].reset(); + + if (!m_TrackCands[1].empty() && m_TrackCands[1].address(2) > 3 && m_TrackCands[1].address(2) < 6) + m_TrackCands[1].reset(); + if (!m_TrackCands[1].empty() && m_TrackCands[1].address(3) > 3 && m_TrackCands[1].address(3) < 6) + m_TrackCands[1].reset(); + if (!m_TrackCands[1].empty() && m_TrackCands[1].address(4) > 3 && m_TrackCands[1].address(4) < 6) + m_TrackCands[1].reset(); + + if (!m_TracKCands[1].empty() && m_TracKCands[1].address(2) > 3 && m_TracKCands[1].address(2) < 6) + m_TracKCands[1].reset(); + if (!m_TracKCands[1].empty() && m_TracKCands[1].address(3) > 3 && m_TracKCands[1].address(3) < 6) + m_TracKCands[1].reset(); + if (!m_TracKCands[1].empty() && m_TracKCands[1].address(4) > 3 && m_TracKCands[1].address(4) < 6) + m_TracKCands[1].reset(); + + if (!m_TrackCands[0].empty() && m_TrackCands[0].address(2) > 7 && m_TrackCands[0].address(2) < 10) + m_TrackCands[0].reset(); + if (!m_TrackCands[0].empty() && m_TrackCands[0].address(3) > 7 && m_TrackCands[0].address(3) < 10) + m_TrackCands[0].reset(); + if (!m_TrackCands[0].empty() && m_TrackCands[0].address(4) > 7 && m_TrackCands[0].address(4) < 10) + m_TrackCands[0].reset(); + + if (!m_TracKCands[0].empty() && m_TracKCands[0].address(2) > 7 && m_TracKCands[0].address(2) < 10) + m_TracKCands[0].reset(); + if (!m_TracKCands[0].empty() && m_TracKCands[0].address(3) > 7 && m_TracKCands[0].address(3) < 10) + m_TracKCands[0].reset(); + if (!m_TracKCands[0].empty() && m_TracKCands[0].address(4) > 7 && m_TracKCands[0].address(4) < 10) + m_TracKCands[0].reset(); + + if (!m_TrackCands[1].empty() && m_TrackCands[1].address(2) > 7 && m_TrackCands[1].address(2) < 10) + m_TrackCands[1].reset(); + if (!m_TrackCands[1].empty() && m_TrackCands[1].address(3) > 7 && m_TrackCands[1].address(3) < 10) + m_TrackCands[1].reset(); + if (!m_TrackCands[1].empty() && m_TrackCands[1].address(4) > 7 && m_TrackCands[1].address(4) < 10) + m_TrackCands[1].reset(); + + if (!m_TracKCands[1].empty() && m_TracKCands[1].address(2) > 7 && m_TracKCands[1].address(2) < 10) + m_TracKCands[1].reset(); + if (!m_TracKCands[1].empty() && m_TracKCands[1].address(3) > 7 && m_TracKCands[1].address(3) < 10) + m_TracKCands[1].reset(); + if (!m_TracKCands[1].empty() && m_TracKCands[1].address(4) > 7 && m_TracKCands[1].address(4) < 10) + m_TracKCands[1].reset(); } } @@ -228,26 +175,16 @@ void L1MuDTSectorProcessor::run(int bx, const edm::Event& e, const edm::EventSet // reset Sector Processor // void L1MuDTSectorProcessor::reset() { - if (m_SectorReceiver) - m_SectorReceiver->reset(); - if (m_DataBuffer) - m_DataBuffer->reset(); - if (m_EU) - m_EU->reset(); - if (m_TA) - m_TA->reset(); - if (m_AUs[0]) - m_AUs[0]->reset(); - if (m_AUs[1]) - m_AUs[1]->reset(); - if (m_TrackCands[0]) - m_TrackCands[0]->reset(); - if (m_TrackCands[1]) - m_TrackCands[1]->reset(); - if (m_TracKCands[0]) - m_TracKCands[0]->reset(); - if (m_TracKCands[1]) - m_TracKCands[1]->reset(); + m_SectorReceiver.reset(); + m_DataBuffer.reset(); + m_EU.reset(); + m_TA.reset(); + m_AUs[0].reset(); + m_AUs[1].reset(); + m_TrackCands[0].reset(); + m_TrackCands[1].reset(); + m_TracKCands[0].reset(); + m_TracKCands[1].reset(); } // @@ -256,10 +193,9 @@ void L1MuDTSectorProcessor::reset() { void L1MuDTSectorProcessor::print() const { if (anyTrack()) { cout << "Muon candidates found in " << m_spid << " : " << endl; - vector::const_iterator iter = m_TrackCands.begin(); + auto iter = m_TrackCands.cbegin(); while (iter != m_TrackCands.end()) { - if (*iter) - (*iter)->print(); + iter->print(); iter++; } } @@ -289,9 +225,9 @@ const L1MuDTSectorProcessor* L1MuDTSectorProcessor::neighbour() const { // are there any muon candidates? // bool L1MuDTSectorProcessor::anyTrack() const { - if (m_TrackCands[0] && !m_TrackCands[0]->empty()) + if (!m_TrackCands[0].empty()) return true; - if (m_TrackCands[1] && !m_TrackCands[1]->empty()) + if (!m_TrackCands[1].empty()) return true; return false; diff --git a/L1Trigger/DTTrackFinder/src/L1MuDTSectorProcessor.h b/L1Trigger/DTTrackFinder/src/L1MuDTSectorProcessor.h index 560790bda1c6c..c5302b28adb9b 100644 --- a/L1Trigger/DTTrackFinder/src/L1MuDTSectorProcessor.h +++ b/L1Trigger/DTTrackFinder/src/L1MuDTSectorProcessor.h @@ -25,6 +25,7 @@ //--------------- #include +#include //---------------------- // Base Class Headers -- @@ -38,13 +39,15 @@ #include "FWCore/Framework/interface/ConsumesCollector.h" #include "FWCore/Framework/interface/Event.h" -class L1MuDTSectorReceiver; -class L1MuDTDataBuffer; -class L1MuDTExtrapolationUnit; -class L1MuDTTrackAssembler; -class L1MuDTAssignmentUnit; + +#include "L1Trigger/DTTrackFinder/src/L1MuDTSectorReceiver.h" +#include "L1Trigger/DTTrackFinder/src/L1MuDTDataBuffer.h" +#include "L1Trigger/DTTrackFinder/src/L1MuDTExtrapolationUnit.h" +#include "L1Trigger/DTTrackFinder/src/L1MuDTTrackAssembler.h" + +#include "L1Trigger/DTTrackFinder/src/L1MuDTAssignmentUnit.h" +#include "L1Trigger/DTTrackFinder/interface/L1MuDTTrack.h" class L1MuDTTrackFinder; -class L1MuDTTrack; // --------------------- // -- Class Interface -- @@ -53,7 +56,7 @@ class L1MuDTTrack; class L1MuDTSectorProcessor { public: /// constructor - L1MuDTSectorProcessor(const L1MuDTTrackFinder&, const L1MuDTSecProcId&, edm::ConsumesCollector&&); + L1MuDTSectorProcessor(const L1MuDTTrackFinder&, const L1MuDTSecProcId&, edm::ConsumesCollector); /// destructor virtual ~L1MuDTSectorProcessor(); @@ -83,23 +86,25 @@ class L1MuDTSectorProcessor { inline bool ovl() const { return m_spid.ovl(); } /// return pointer to Data Buffer - inline const L1MuDTDataBuffer* data() const { return m_DataBuffer; } - inline L1MuDTDataBuffer* data() { return m_DataBuffer; } + inline const L1MuDTDataBuffer* data() const { return &m_DataBuffer; } + inline L1MuDTDataBuffer* data() { return &m_DataBuffer; } /// return pointer to Extrapolation Unit - inline const L1MuDTExtrapolationUnit* EU() const { return m_EU; } + inline const L1MuDTExtrapolationUnit* EU() const { return &m_EU; } /// return pointer to Track Assembler - inline const L1MuDTTrackAssembler* TA() const { return m_TA; } + inline const L1MuDTTrackAssembler* TA() const { return &m_TA; } /// return pointer to Assignment Unit, index [0,1] - inline const L1MuDTAssignmentUnit* AU(int id) const { return m_AUs[id]; } + inline const L1MuDTAssignmentUnit* AU(int id) const { return &m_AUs[id]; } /// return pointer to muon candidate, index [0,1] - inline L1MuDTTrack* track(int id) const { return m_TrackCands[id]; } + inline const L1MuDTTrack* track(int id) const { return &m_TrackCands[id]; } + inline L1MuDTTrack* track(int id) { return &m_TrackCands[id]; } /// return pointer to muon candidate, index [0,1] - inline L1MuDTTrack* tracK(int id) const { return m_TracKCands[id]; } + inline const L1MuDTTrack* tracK(int id) const { return &m_TracKCands[id]; } + inline L1MuDTTrack* tracK(int id) { return &m_TracKCands[id]; } private: /// are there any non-empty muon candidates? @@ -109,14 +114,14 @@ class L1MuDTSectorProcessor { const L1MuDTTrackFinder& m_tf; L1MuDTSecProcId m_spid; - L1MuDTSectorReceiver* m_SectorReceiver; - L1MuDTDataBuffer* m_DataBuffer; - L1MuDTExtrapolationUnit* m_EU; - L1MuDTTrackAssembler* m_TA; - std::vector m_AUs; + L1MuDTSectorReceiver m_SectorReceiver; + L1MuDTDataBuffer m_DataBuffer; + L1MuDTExtrapolationUnit m_EU; + L1MuDTTrackAssembler m_TA; + std::array m_AUs; - std::vector m_TrackCands; - std::vector m_TracKCands; + std::array m_TrackCands; + std::array m_TracKCands; }; #endif diff --git a/L1Trigger/DTTrackFinder/src/L1MuDTSectorReceiver.cc b/L1Trigger/DTTrackFinder/src/L1MuDTSectorReceiver.cc index 7b977e3747603..d3839715cc2cc 100644 --- a/L1Trigger/DTTrackFinder/src/L1MuDTSectorReceiver.cc +++ b/L1Trigger/DTTrackFinder/src/L1MuDTSectorReceiver.cc @@ -53,10 +53,12 @@ using namespace std; //---------------- // Constructors -- //---------------- -L1MuDTSectorReceiver::L1MuDTSectorReceiver(L1MuDTSectorProcessor& sp, edm::ConsumesCollector&& iC) +L1MuDTSectorReceiver::L1MuDTSectorReceiver(L1MuDTSectorProcessor& sp, edm::ConsumesCollector iC) : m_sp(sp), m_DTDigiToken(iC.consumes(m_sp.tf().config()->getDTDigiInputTag())), - m_CSCTrSToken(iC.mayConsume >(m_sp.tf().config()->getCSCTrSInputTag())) {} + m_CSCTrSToken(iC.mayConsume >(m_sp.tf().config()->getCSCTrSInputTag())), + m_parsToken(iC.esConsumes()), + m_msksToken(iC.esConsumes()) {} //-------------- // Destructor -- @@ -73,8 +75,8 @@ L1MuDTSectorReceiver::~L1MuDTSectorReceiver() { // receive track segment data from the DTBX and CSC chamber triggers // void L1MuDTSectorReceiver::run(int bx, const edm::Event& e, const edm::EventSetup& c) { - c.get().get(pars); - c.get().get(msks); + pars = c.getHandle(m_parsToken); + msks = c.getHandle(m_msksToken); // get track segments from DTBX chamber trigger receiveDTBXData(bx, e, c); diff --git a/L1Trigger/DTTrackFinder/src/L1MuDTSectorReceiver.h b/L1Trigger/DTTrackFinder/src/L1MuDTSectorReceiver.h index c041da93b2ca4..99ea92bca2d68 100644 --- a/L1Trigger/DTTrackFinder/src/L1MuDTSectorReceiver.h +++ b/L1Trigger/DTTrackFinder/src/L1MuDTSectorReceiver.h @@ -41,6 +41,8 @@ class L1MuDTChambPhContainer; class L1MuDTSectorProcessor; class L1MuDTTFParameters; class L1MuDTTFMasks; +class L1MuDTTFParametersRcd; +class L1MuDTTFMasksRcd; template class CSCTriggerContainer; namespace csctf { @@ -54,7 +56,7 @@ namespace csctf { class L1MuDTSectorReceiver { public: /// constructor - L1MuDTSectorReceiver(L1MuDTSectorProcessor&, edm::ConsumesCollector&& iC); + L1MuDTSectorReceiver(L1MuDTSectorProcessor&, edm::ConsumesCollector iC); /// destructor virtual ~L1MuDTSectorReceiver(); @@ -83,6 +85,8 @@ class L1MuDTSectorReceiver { edm::EDGetTokenT m_DTDigiToken; edm::EDGetTokenT > m_CSCTrSToken; + edm::ESGetToken m_parsToken; + edm::ESGetToken m_msksToken; edm::ESHandle pars; edm::ESHandle msks; }; diff --git a/L1Trigger/DTTrackFinder/src/L1MuDTTrackAssembler.h b/L1Trigger/DTTrackFinder/src/L1MuDTTrackAssembler.h index 4c1972bdbd947..46e64ea02bb57 100644 --- a/L1Trigger/DTTrackFinder/src/L1MuDTTrackAssembler.h +++ b/L1Trigger/DTTrackFinder/src/L1MuDTTrackAssembler.h @@ -32,8 +32,6 @@ // Base Class Headers -- //---------------------- -#include "L1Trigger/DTTrackFinder/interface/L1AbstractProcessor.h" - //------------------------------------ // Collaborating Class Declarations -- //------------------------------------ @@ -46,19 +44,19 @@ class L1MuDTSectorProcessor; // -- Class Interface -- // --------------------- -class L1MuDTTrackAssembler : public L1AbstractProcessor { +class L1MuDTTrackAssembler { public: /// constructor L1MuDTTrackAssembler(const L1MuDTSectorProcessor&); /// destructor - ~L1MuDTTrackAssembler() override; + ~L1MuDTTrackAssembler(); /// run Track Assembler - void run() override; + void run(); /// reset Track Assembler - void reset() override; + void reset(); /// print result of Track Assembler void print() const; diff --git a/L1Trigger/DTTrackFinder/src/L1MuDTWedgeSorter.h b/L1Trigger/DTTrackFinder/src/L1MuDTWedgeSorter.h index 2dc333841c8b4..1bf1c9bc08bb7 100644 --- a/L1Trigger/DTTrackFinder/src/L1MuDTWedgeSorter.h +++ b/L1Trigger/DTTrackFinder/src/L1MuDTWedgeSorter.h @@ -28,8 +28,6 @@ // Base Class Headers -- //---------------------- -#include "L1Trigger/DTTrackFinder/interface/L1AbstractProcessor.h" - //------------------------------------ // Collaborating Class Declarations -- //------------------------------------ @@ -42,22 +40,22 @@ class L1MuDTSecProcId; // -- Class Interface -- // --------------------- -class L1MuDTWedgeSorter : public L1AbstractProcessor { +class L1MuDTWedgeSorter { public: /// constructor L1MuDTWedgeSorter(const L1MuDTTrackFinder&, int id); /// destructor - ~L1MuDTWedgeSorter() override; + ~L1MuDTWedgeSorter(); /// return Wedge Sorter identifier (0-11) inline int id() const { return m_wsid; } /// run Wedge Sorter - void run() override; + void run(); /// reset Wedge Sorter - void reset() override; + void reset(); /// print results after sorting void print() const;