CMS 3D CMS Logo

List of all members | Public Member Functions | Static Public Member Functions | Private Member Functions | Static Private Member Functions | Private Attributes
L1TMuonProducer Class Reference

#include <L1Trigger/L1TMuon/src/L1TMuonProducer.cc>

Inheritance diagram for L1TMuonProducer:
edm::stream::EDProducer<>

Public Member Functions

 L1TMuonProducer (const edm::ParameterSet &)
 
 ~L1TMuonProducer () override
 
- Public Member Functions inherited from edm::stream::EDProducer<>
 EDProducer ()=default
 
 EDProducer (const EDProducer &)=delete
 
bool hasAbilityToProduceInBeginLumis () const final
 
bool hasAbilityToProduceInBeginProcessBlocks () const final
 
bool hasAbilityToProduceInBeginRuns () const final
 
bool hasAbilityToProduceInEndLumis () const final
 
bool hasAbilityToProduceInEndProcessBlocks () const final
 
bool hasAbilityToProduceInEndRuns () const final
 
const EDProduceroperator= (const EDProducer &)=delete
 

Static Public Member Functions

static void fillDescriptions (edm::ConfigurationDescriptions &descriptions)
 

Private Member Functions

void addMuonsToCollections (MicroGMTConfiguration::InterMuonList &coll, MicroGMTConfiguration::InterMuonList &interout, std::unique_ptr< MuonBxCollection > &out, int bx) const
 
void beginLuminosityBlock (edm::LuminosityBlock const &, edm::EventSetup const &) override
 
void beginRun (edm::Run const &, edm::EventSetup const &) override
 
void calculateRank (MicroGMTConfiguration::InterMuonList &muons) const
 
int computeMuonIdx (const RegionalMuonCand &mu, int currentLink, int muIdxAuto) const
 
void convertMuons (edm::Handle< MicroGMTConfiguration::InputCollection > const &in, MicroGMTConfiguration::InterMuonList &out, GMTInternalWedges &wedges, int bx) const
 
void endLuminosityBlock (edm::LuminosityBlock const &, edm::EventSetup const &) override
 
void endRun (edm::Run const &, edm::EventSetup const &) override
 
void produce (edm::Event &, const edm::EventSetup &) override
 
void sortMuons (MicroGMTConfiguration::InterMuonList &, unsigned) const
 
void splitAndConvertMuons (edm::Handle< MicroGMTConfiguration::InputCollection > const &in, MicroGMTConfiguration::InterMuonList &out_pos, MicroGMTConfiguration::InterMuonList &out_neg, GMTInternalWedges &wedges_pos, GMTInternalWedges &wedges_neg, int bx) const
 

Static Private Member Functions

static bool compareMuons (const std::shared_ptr< MicroGMTConfiguration::InterMuon > &mu1, const std::shared_ptr< MicroGMTConfiguration::InterMuon > &mu2)
 

Private Attributes

bool m_autoBxRange
 
bool m_autoCancelMode
 
edm::InputTag m_barrelTfInputTag
 
edm::EDGetTokenT< MicroGMTConfiguration::InputCollectionm_barrelTfInputToken
 
l1t::cancelmode m_bmtfCancelMode
 
std::bitset< 12 > m_bmtfInputsToDisable
 
int m_bxMax
 
int m_bxMin
 
std::bitset< 28 > m_caloInputsToDisable
 
edm::EDGetTokenT< MicroGMTConfiguration::CaloInputCollectionm_caloTowerInputToken
 
MicroGMTCancelOutUnit m_cancelOutUnit
 
std::ofstream m_debugOut
 
l1t::cancelmode m_emtfCancelMode
 
std::bitset< 12 > m_emtfInputsToDisable
 
edm::InputTag m_endcapTfInputTag
 
edm::EDGetTokenT< MicroGMTConfiguration::InputCollectionm_endcapTfInputToken
 
std::bitset< 72 > m_inputsToDisable
 
MicroGMTIsolationUnit m_isolationUnit
 
std::bitset< 12 > m_maskedBmtfInputs
 
std::bitset< 28 > m_maskedCaloInputs
 
std::bitset< 12 > m_maskedEmtfInputs
 
std::bitset< 72 > m_maskedInputs
 
std::bitset< 12 > m_maskedOmtfInputs
 
edm::ESGetToken< L1TMuonGlobalParams, L1TMuonGlobalParamsRcdm_microGMTParamsToken
 
edm::ESGetToken< L1TMuonGlobalParams, L1TMuonGlobalParamsO2ORcdm_o2oProtoToken
 
std::bitset< 12 > m_omtfInputsToDisable
 
edm::InputTag m_overlapTfInputTag
 
edm::EDGetTokenT< MicroGMTConfiguration::InputCollectionm_overlapTfInputToken
 
std::shared_ptr< MicroGMTRankPtQualLUTm_rankPtQualityLUT
 
edm::InputTag m_trigTowerTag
 
std::unique_ptr< L1TMuonGlobalParamsHelpermicroGMTParamsHelper
 

Additional Inherited Members

- Public Types inherited from edm::stream::EDProducer<>
using CacheTypes = CacheContexts< T... >
 
using GlobalCache = typename CacheTypes::GlobalCache
 
using HasAbility = AbilityChecker< T... >
 
using InputProcessBlockCache = typename CacheTypes::InputProcessBlockCache
 
using LuminosityBlockCache = typename CacheTypes::LuminosityBlockCache
 
using LuminosityBlockContext = LuminosityBlockContextT< LuminosityBlockCache, RunCache, GlobalCache >
 
using LuminosityBlockSummaryCache = typename CacheTypes::LuminosityBlockSummaryCache
 
using RunCache = typename CacheTypes::RunCache
 
using RunContext = RunContextT< RunCache, GlobalCache >
 
using RunSummaryCache = typename CacheTypes::RunSummaryCache
 

Detailed Description

Description: Takes txt-file input and produces barrel- / overlap- / forward TF muons

Implementation: [Notes on implementation]

Definition at line 59 of file L1TMuonProducer.cc.

Constructor & Destructor Documentation

◆ L1TMuonProducer()

L1TMuonProducer::L1TMuonProducer ( const edm::ParameterSet iConfig)
explicit

Definition at line 146 of file L1TMuonProducer.cc.

References edm::ParameterSet::getParameter(), l1t::kftracks, m_autoBxRange, m_autoCancelMode, m_barrelTfInputTag, m_barrelTfInputToken, m_bmtfCancelMode, m_bxMax, m_bxMin, m_caloTowerInputToken, m_emtfCancelMode, m_endcapTfInputTag, m_endcapTfInputToken, m_microGMTParamsToken, m_o2oProtoToken, m_overlapTfInputTag, m_overlapTfInputToken, m_trigTowerTag, AlCaHLTBitMon_QueryRunRegistry::string, and tracks.

147  : m_debugOut("test/debug/iso_debug.dat"),
150  // edm::InputTag barrelTfInputTag = iConfig.getParameter<edm::InputTag>("barrelTFInput");
151  // edm::InputTag overlapTfInputTag = iConfig.getParameter<edm::InputTag>("overlapTFInput");
152  // edm::InputTag forwardTfInputTag = iConfig.getParameter<edm::InputTag>("forwardTFInput");
153 
154  m_barrelTfInputTag = iConfig.getParameter<edm::InputTag>("barrelTFInput");
155  m_overlapTfInputTag = iConfig.getParameter<edm::InputTag>("overlapTFInput");
156  m_endcapTfInputTag = iConfig.getParameter<edm::InputTag>("forwardTFInput");
157  m_trigTowerTag = iConfig.getParameter<edm::InputTag>("triggerTowerInput");
158 
159  m_autoBxRange = iConfig.getParameter<bool>("autoBxRange");
160  m_bxMin = iConfig.getParameter<int>("bxMin");
161  m_bxMax = iConfig.getParameter<int>("bxMax");
162 
163  m_autoCancelMode = iConfig.getParameter<bool>("autoCancelMode");
164  if (!m_autoCancelMode) {
165  if (iConfig.getParameter<std::string>("bmtfCancelMode").find("kftracks") == 0) {
167  }
168  if (iConfig.getParameter<std::string>("emtfCancelMode").find("tracks") == 0) {
170  }
171  }
172 
173  m_barrelTfInputToken = consumes<MicroGMTConfiguration::InputCollection>(m_barrelTfInputTag);
174  m_overlapTfInputToken = consumes<MicroGMTConfiguration::InputCollection>(m_overlapTfInputTag);
175  m_endcapTfInputToken = consumes<MicroGMTConfiguration::InputCollection>(m_endcapTfInputTag);
176  m_caloTowerInputToken = consumes<MicroGMTConfiguration::CaloInputCollection>(m_trigTowerTag);
177  m_microGMTParamsToken = esConsumes<L1TMuonGlobalParams, L1TMuonGlobalParamsRcd, edm::Transition::BeginRun>();
178  m_o2oProtoToken = esConsumes<L1TMuonGlobalParams, L1TMuonGlobalParamsO2ORcd, edm::Transition::BeginRun>();
179 
180  //register your products
181  produces<MuonBxCollection>();
182  produces<MuonBxCollection>("imdMuonsBMTF");
183  produces<MuonBxCollection>("imdMuonsEMTFPos");
184  produces<MuonBxCollection>("imdMuonsEMTFNeg");
185  produces<MuonBxCollection>("imdMuonsOMTFPos");
186  produces<MuonBxCollection>("imdMuonsOMTFNeg");
187 }
T getParameter(std::string const &) const
Definition: ParameterSet.h:303
std::ofstream m_debugOut
edm::EDGetTokenT< MicroGMTConfiguration::InputCollection > m_endcapTfInputToken
edm::EDGetTokenT< MicroGMTConfiguration::InputCollection > m_overlapTfInputToken
edm::EDGetTokenT< MicroGMTConfiguration::CaloInputCollection > m_caloTowerInputToken
l1t::cancelmode m_emtfCancelMode
edm::ESGetToken< L1TMuonGlobalParams, L1TMuonGlobalParamsO2ORcd > m_o2oProtoToken
edm::InputTag m_overlapTfInputTag
edm::InputTag m_barrelTfInputTag
edm::InputTag m_endcapTfInputTag
auto const & tracks
cannot be loose
edm::ESGetToken< L1TMuonGlobalParams, L1TMuonGlobalParamsRcd > m_microGMTParamsToken
edm::EDGetTokenT< MicroGMTConfiguration::InputCollection > m_barrelTfInputToken
l1t::cancelmode m_bmtfCancelMode
edm::InputTag m_trigTowerTag

◆ ~L1TMuonProducer()

L1TMuonProducer::~L1TMuonProducer ( )
override

Definition at line 189 of file L1TMuonProducer.cc.

References m_debugOut.

189 { m_debugOut.close(); }
std::ofstream m_debugOut

Member Function Documentation

◆ addMuonsToCollections()

void L1TMuonProducer::addMuonsToCollections ( MicroGMTConfiguration::InterMuonList coll,
MicroGMTConfiguration::InterMuonList interout,
std::unique_ptr< MuonBxCollection > &  out,
int  bx 
) const
private

Definition at line 435 of file L1TMuonProducer.cc.

References simKBmtfDigis_cfi::bx, amptDefaultParameters_cff::mu, and MillePedeFileConverter_cfg::out.

Referenced by produce().

438  {
439  for (auto& mu : coll) {
440  interout.push_back(mu);
441  math::PtEtaPhiMLorentzVector vec{(mu->hwPt() - 1) * 0.5, mu->hwEta() * 0.010875, mu->hwGlobalPhi() * 0.010908, 0.0};
442  int outMuQual = MicroGMTConfiguration::setOutputMuonQuality(mu->hwQual(), mu->trackFinderType(), mu->hwHF());
443  // set tfMuonIndex and iso to 0 like in the FW
444  Muon outMu{vec,
445  mu->hwPt(),
446  mu->hwEta(),
447  mu->hwGlobalPhi(),
448  outMuQual,
449  mu->hwSign(),
450  mu->hwSignValid(),
451  0,
452  0,
453  0,
454  true,
455  0,
456  mu->hwDPhi(),
457  mu->hwDEta(),
458  mu->hwRank()};
459 
460  int hwPtUnconstrained{mu->hwPtUnconstrained()};
461  outMu.setPtUnconstrained(hwPtUnconstrained == 0
462  ? 0
463  : (hwPtUnconstrained - 1)); // Don't want negative pT, unconstr. pT has LSB of 1 GeV.
464  outMu.setHwPtUnconstrained(hwPtUnconstrained);
465  outMu.setHwDXY(mu->hwDXY());
466 
467  if (mu->hwSignValid()) {
468  outMu.setCharge(1 - 2 * mu->hwSign());
469  } else {
470  outMu.setCharge(0);
471  }
472 
473  out->push_back(bx, outMu);
474  }
475 }
PtEtaPhiMLorentzVectorD PtEtaPhiMLorentzVector
Lorentz vector with cartesian internal representation.
Definition: LorentzVector.h:25
Definition: Muon.py:1

◆ beginLuminosityBlock()

void L1TMuonProducer::beginLuminosityBlock ( edm::LuminosityBlock const &  ,
edm::EventSetup const &   
)
overrideprivate

Definition at line 626 of file L1TMuonProducer.cc.

626 {}

◆ beginRun()

void L1TMuonProducer::beginRun ( edm::Run const &  run,
edm::EventSetup const &  iSetup 
)
overrideprivate

Definition at line 577 of file L1TMuonProducer.cc.

References cast_to_L1TMuonGlobalParams(), cast_to_L1TMuonGlobalParams_PUBLIC(), l1t::MicroGMTRankPtQualLUTFactory::create(), edm::EventSetup::getHandle(), l1t::MicroGMTCancelOutUnit::initialise(), l1t::MicroGMTIsolationUnit::initialise(), l1t::kftracks, m_autoCancelMode, m_bmtfCancelMode, m_bmtfInputsToDisable, m_caloInputsToDisable, m_cancelOutUnit, m_emtfInputsToDisable, m_inputsToDisable, m_isolationUnit, m_maskedBmtfInputs, m_maskedCaloInputs, m_maskedEmtfInputs, m_maskedInputs, m_maskedOmtfInputs, m_microGMTParamsToken, m_o2oProtoToken, m_omtfInputsToDisable, m_rankPtQualityLUT, microGMTParamsHelper, and edm::ESHandle< T >::product().

577  {
578  edm::ESHandle<L1TMuonGlobalParams> microGMTParamsHandle = iSetup.getHandle(m_microGMTParamsToken);
579 
580  std::unique_ptr<L1TMuonGlobalParams_PUBLIC> microGMTParams(
582  if (microGMTParams->pnodes_.empty()) {
583  edm::ESHandle<L1TMuonGlobalParams> o2oProtoHandle = iSetup.getHandle(m_o2oProtoToken);
584  microGMTParamsHelper = std::make_unique<L1TMuonGlobalParamsHelper>(*o2oProtoHandle.product());
585  } else
587  std::make_unique<L1TMuonGlobalParamsHelper>(cast_to_L1TMuonGlobalParams(*microGMTParams.get()));
588 
589  //microGMTParamsHelper->print(std::cout);
590  m_inputsToDisable = microGMTParamsHelper->inputsToDisable();
591  edm::LogVerbatim("L1TMuonProducer")
592  << "uGMT inputsToDisable: " << m_inputsToDisable
593  << "\n EMTF-|OMTF-| BMTF |OMTF+|EMTF+| CALO | res 0";
594  m_caloInputsToDisable = microGMTParamsHelper->caloInputsToDisable();
595  m_bmtfInputsToDisable = microGMTParamsHelper->bmtfInputsToDisable();
596  m_omtfInputsToDisable = microGMTParamsHelper->omtfInputsToDisable();
597  m_emtfInputsToDisable = microGMTParamsHelper->emtfInputsToDisable();
598  m_maskedInputs = microGMTParamsHelper->maskedInputs();
599  edm::LogVerbatim("L1TMuonProducer")
600  << "uGMT maskedInputs: " << m_maskedInputs
601  << "\n EMTF-|OMTF-| BMTF |OMTF+|EMTF+| CALO | res 0";
602  m_maskedCaloInputs = microGMTParamsHelper->maskedCaloInputs();
603  m_maskedBmtfInputs = microGMTParamsHelper->maskedBmtfInputs();
604  m_maskedOmtfInputs = microGMTParamsHelper->maskedOmtfInputs();
605  m_maskedEmtfInputs = microGMTParamsHelper->maskedEmtfInputs();
610 
611  if (m_autoCancelMode) {
612  if (microGMTParamsHelper->fwVersion() >= 0x6000000) {
614  }
615  // TODO: No decision yet on when to use EMTF track addresses for cancel-out.
616  // if (microGMTParamsHelper->fwVersion() > 0x5000000) {
617  // m_emtfCancelMode = cancelmode::tracks;
618  // }
619  }
620 }
const L1TMuonGlobalParams & cast_to_L1TMuonGlobalParams(const L1TMuonGlobalParams_PUBLIC &x)
Log< level::Info, true > LogVerbatim
void initialise(L1TMuonGlobalParamsHelper *)
Initialisation from ES record.
std::unique_ptr< L1TMuonGlobalParamsHelper > microGMTParamsHelper
std::bitset< 12 > m_bmtfInputsToDisable
MicroGMTIsolationUnit m_isolationUnit
edm::ESGetToken< L1TMuonGlobalParams, L1TMuonGlobalParamsO2ORcd > m_o2oProtoToken
std::shared_ptr< MicroGMTRankPtQualLUT > m_rankPtQualityLUT
static ReturnType create(const std::string &filename, const int fwVersion, const unsigned ptFactor, const unsigned qualFactor)
std::bitset< 12 > m_emtfInputsToDisable
T const * product() const
Definition: ESHandle.h:86
std::bitset< 12 > m_maskedBmtfInputs
edm::ESGetToken< L1TMuonGlobalParams, L1TMuonGlobalParamsRcd > m_microGMTParamsToken
std::bitset< 12 > m_maskedEmtfInputs
const L1TMuonGlobalParams_PUBLIC & cast_to_L1TMuonGlobalParams_PUBLIC(const L1TMuonGlobalParams &x)
l1t::cancelmode m_bmtfCancelMode
std::bitset< 72 > m_maskedInputs
std::bitset< 12 > m_maskedOmtfInputs
std::bitset< 72 > m_inputsToDisable
std::bitset< 28 > m_caloInputsToDisable
std::bitset< 12 > m_omtfInputsToDisable
MicroGMTCancelOutUnit m_cancelOutUnit
void initialise(L1TMuonGlobalParamsHelper *)
Initialisation from ES record.
std::bitset< 28 > m_maskedCaloInputs

◆ calculateRank()

void L1TMuonProducer::calculateRank ( MicroGMTConfiguration::InterMuonList muons) const
private

Definition at line 428 of file L1TMuonProducer.cc.

References m_rankPtQualityLUT, and PDWG_BPHSkim_cff::muons.

Referenced by produce().

428  {
429  for (auto& mu1 : muons) {
430  int rank = m_rankPtQualityLUT->lookup(mu1->hwPt(), mu1->hwQual());
431  mu1->setHwRank(rank);
432  }
433 }
std::shared_ptr< MicroGMTRankPtQualLUT > m_rankPtQualityLUT

◆ compareMuons()

bool L1TMuonProducer::compareMuons ( const std::shared_ptr< MicroGMTConfiguration::InterMuon > &  mu1,
const std::shared_ptr< MicroGMTConfiguration::InterMuon > &  mu2 
)
staticprivate

Definition at line 386 of file L1TMuonProducer.cc.

Referenced by sortMuons().

387  {
388  return (mu1->hwWins() >= mu2->hwWins());
389 }

◆ computeMuonIdx()

int L1TMuonProducer::computeMuonIdx ( const RegionalMuonCand mu,
int  currentLink,
int  muIdxAuto 
) const
private

Definition at line 567 of file L1TMuonProducer.cc.

References amptDefaultParameters_cff::mu.

Referenced by convertMuons(), and splitAndConvertMuons().

567  {
568  // If the muon index was set in the data format we should use that. Otherwise we use the value computed from the position in the vector.
569  if (mu.muIdx() != -1) {
570  return 3 * (currentLink - 36) + mu.muIdx();
571  } else {
572  return 3 * (currentLink - 36) + muIdxAuto;
573  }
574 }

◆ convertMuons()

void L1TMuonProducer::convertMuons ( edm::Handle< MicroGMTConfiguration::InputCollection > const &  in,
MicroGMTConfiguration::InterMuonList out,
GMTInternalWedges wedges,
int  bx 
) const
private

Definition at line 527 of file L1TMuonProducer.cc.

References simKBmtfDigis_cfi::bx, computeMuonIdx(), mps_fire::i, recoMuon::in, MainPageGenerator::link, m_inputsToDisable, m_maskedInputs, MillePedeFileConverter_cfg::out, and findQualityFiles::size.

Referenced by produce().

530  {
531  // initialize the wedge collection:
532  for (int i = 0; i < 12; ++i) {
533  wedges[i] = std::vector<std::shared_ptr<GMTInternalMuon>>();
534  wedges[i].reserve(3);
535  }
536  if (bx < in->getFirstBX() || bx > in->getLastBX()) {
537  return;
538  }
539  int muIdxAuto = 0;
540  int currentLink = 0;
541  for (size_t i = 0; i < in->size(bx); ++i, ++muIdxAuto) {
542  if (in->at(bx, i).hwPt() > 0) {
543  int link = in->at(bx, i).link();
544  if (m_inputsToDisable.test(link) || m_maskedInputs.test(link)) {
545  continue; // only process if input link is enabled and not masked
546  }
547  if (currentLink != link) {
548  muIdxAuto = 0;
549  currentLink = link;
550  }
551  int gPhi = MicroGMTConfiguration::calcGlobalPhi(
552  in->at(bx, i).hwPhi(), in->at(bx, i).trackFinderType(), in->at(bx, i).processor());
553  int tfMuonIdx{computeMuonIdx(in->at(bx, i), currentLink, muIdxAuto)};
554  std::shared_ptr<GMTInternalMuon> outMu = std::make_shared<GMTInternalMuon>(in->at(bx, i), gPhi, tfMuonIdx);
555  out.emplace_back(outMu);
556  wedges[in->at(bx, i).processor()].push_back(outMu);
557  }
558  }
559  for (int i = 0; i < 12; ++i) {
560  if (wedges[i].size() > 3) {
561  edm::LogWarning("Input Mismatch") << " too many inputs per processor for barrel. Wedge " << i << ": Size "
562  << wedges[i].size() << std::endl;
563  }
564  }
565 }
size
Write out results.
int computeMuonIdx(const RegionalMuonCand &mu, int currentLink, int muIdxAuto) const
std::bitset< 72 > m_maskedInputs
std::bitset< 72 > m_inputsToDisable
Log< level::Warning, false > LogWarning

◆ endLuminosityBlock()

void L1TMuonProducer::endLuminosityBlock ( edm::LuminosityBlock const &  ,
edm::EventSetup const &   
)
overrideprivate

Definition at line 629 of file L1TMuonProducer.cc.

629 {}

◆ endRun()

void L1TMuonProducer::endRun ( edm::Run const &  ,
edm::EventSetup const &   
)
overrideprivate

Definition at line 623 of file L1TMuonProducer.cc.

623 {}

◆ fillDescriptions()

void L1TMuonProducer::fillDescriptions ( edm::ConfigurationDescriptions descriptions)
static

Definition at line 632 of file L1TMuonProducer.cc.

References edm::ConfigurationDescriptions::addDefault(), and submitPVResolutionJobs::desc.

632  {
633  //The following says we do not know what parameters are allowed so do no validation
634  // Please change this to state exactly what you do use, even if it is no parameters
636  desc.setUnknown();
637  descriptions.addDefault(desc);
638 }
void addDefault(ParameterSetDescription const &psetDescription)

◆ produce()

void L1TMuonProducer::produce ( edm::Event iEvent,
const edm::EventSetup iSetup 
)
overrideprivate

Definition at line 196 of file L1TMuonProducer.cc.

References addMuonsToCollections(), l1t::bmtf, simKBmtfDigis_cfi::bx, l1tstage1emulator_dqm_sourceclient-live_cfg::bxMax, l1tstage1emulator_dqm_sourceclient-live_cfg::bxMin, calculateRank(), convertMuons(), l1t::emtf_neg, l1t::emtf_pos, l1t::MicroGMTIsolationUnit::extrapolateMuons(), BXVector< T >::getFirstBX(), BXVector< T >::getLastBX(), iEvent, l1t::MicroGMTIsolationUnit::isolatePreSummed(), m_autoBxRange, m_barrelTfInputToken, m_bmtfCancelMode, m_bmtfInputsToDisable, m_bxMax, m_bxMin, m_caloInputsToDisable, m_caloTowerInputToken, m_cancelOutUnit, m_debugOut, m_emtfCancelMode, m_emtfInputsToDisable, m_endcapTfInputToken, m_isolationUnit, m_maskedBmtfInputs, m_maskedCaloInputs, m_maskedEmtfInputs, m_maskedOmtfInputs, m_omtfInputsToDisable, m_overlapTfInputToken, SiStripPI::max, SiStripPI::min, eostools::move(), amptDefaultParameters_cff::mu, l1t::omtf_neg, l1t::omtf_pos, l1t::MicroGMTCancelOutUnit::setCancelOutBits(), l1t::MicroGMTCancelOutUnit::setCancelOutBitsOverlapBarrel(), l1t::MicroGMTCancelOutUnit::setCancelOutBitsOverlapEndcap(), l1t::MicroGMTIsolationUnit::setTowerSums(), sortMuons(), and splitAndConvertMuons().

196  {
197  using namespace edm;
198  std::unique_ptr<MuonBxCollection> outMuons(new MuonBxCollection());
199  std::unique_ptr<MuonBxCollection> imdMuonsBMTF(new MuonBxCollection());
200  std::unique_ptr<MuonBxCollection> imdMuonsEMTFPos(new MuonBxCollection());
201  std::unique_ptr<MuonBxCollection> imdMuonsEMTFNeg(new MuonBxCollection());
202  std::unique_ptr<MuonBxCollection> imdMuonsOMTFPos(new MuonBxCollection());
203  std::unique_ptr<MuonBxCollection> imdMuonsOMTFNeg(new MuonBxCollection());
204 
209 
210  iEvent.getByToken(m_barrelTfInputToken, bmtfMuons);
211  iEvent.getByToken(m_endcapTfInputToken, emtfMuons);
212  iEvent.getByToken(m_overlapTfInputToken, omtfMuons);
213  iEvent.getByToken(m_caloTowerInputToken, trigTowers);
214 
215  // find out the BX range from the inputs
216  // the smallest BX window defines the output BX window
217  if (m_autoBxRange) {
218  int bxMin = -1000;
219  int bxMax = 1000;
220  if (!(m_caloInputsToDisable.all() || m_maskedCaloInputs.all())) {
221  bxMin = std::max(bxMin, trigTowers->getFirstBX());
222  bxMax = std::min(bxMax, trigTowers->getLastBX());
223  }
224  if (!(m_bmtfInputsToDisable.all() || m_maskedBmtfInputs.all())) {
225  bxMin = std::max(bxMin, bmtfMuons->getFirstBX());
226  bxMax = std::min(bxMax, bmtfMuons->getLastBX());
227  }
228  if (!(m_omtfInputsToDisable.all() || m_maskedOmtfInputs.all())) {
229  bxMin = std::max(bxMin, omtfMuons->getFirstBX());
230  bxMax = std::min(bxMax, omtfMuons->getLastBX());
231  }
232  if (!(m_emtfInputsToDisable.all() || m_maskedEmtfInputs.all())) {
233  bxMin = std::max(bxMin, emtfMuons->getFirstBX());
234  bxMax = std::min(bxMax, emtfMuons->getLastBX());
235  }
236  if (bxMin > 0) {
237  bxMin = 0;
238  }
239  if (bxMax < 0) {
240  bxMax = 0;
241  }
242  if (bxMin > -1000) {
243  m_bxMin = bxMin;
244  } else {
245  m_bxMin = 0;
246  }
247  if (bxMax < 1000) {
248  m_bxMax = bxMax;
249  } else {
250  m_bxMax = 0;
251  }
252  }
253 
254  // set BX range for outputs
255  outMuons->setBXRange(m_bxMin, m_bxMax);
256  imdMuonsBMTF->setBXRange(m_bxMin, m_bxMax);
257  imdMuonsEMTFPos->setBXRange(m_bxMin, m_bxMax);
258  imdMuonsEMTFNeg->setBXRange(m_bxMin, m_bxMax);
259  imdMuonsOMTFPos->setBXRange(m_bxMin, m_bxMax);
260  imdMuonsOMTFNeg->setBXRange(m_bxMin, m_bxMax);
261 
262  for (int bx = m_bxMin; bx <= m_bxMax; ++bx) {
263  m_isolationUnit.setTowerSums(*trigTowers, bx);
264  MicroGMTConfiguration::InterMuonList internMuonsBmtf;
265  MicroGMTConfiguration::InterMuonList internMuonsEmtfPos;
266  MicroGMTConfiguration::InterMuonList internMuonsEmtfNeg;
267  MicroGMTConfiguration::InterMuonList internMuonsOmtfPos;
268  MicroGMTConfiguration::InterMuonList internMuonsOmtfNeg;
269 
270  // These wedges contain shared pointers to the ones in the InterMuonList
271  GMTInternalWedges omtfNegWedges;
272  GMTInternalWedges bmtfWedges;
273  GMTInternalWedges emtfPosWedges;
274  GMTInternalWedges emtfNegWedges;
275  GMTInternalWedges omtfPosWedges;
276 
277  // this converts the InputMuon type to the InternalMuon type and splits them into
278  // positive / negative eta collections necessary as LUTs may differ for pos / neg.
279  convertMuons(bmtfMuons, internMuonsBmtf, bmtfWedges, bx);
280  splitAndConvertMuons(emtfMuons, internMuonsEmtfPos, internMuonsEmtfNeg, emtfPosWedges, emtfNegWedges, bx);
281  splitAndConvertMuons(omtfMuons, internMuonsOmtfPos, internMuonsOmtfNeg, omtfPosWedges, omtfNegWedges, bx);
282 
283  // cancel out within the track finders:
289 
290  // cancel out between track finder acceptance overlaps:
295 
296  m_isolationUnit.extrapolateMuons(internMuonsBmtf);
297  m_isolationUnit.extrapolateMuons(internMuonsEmtfNeg);
298  m_isolationUnit.extrapolateMuons(internMuonsEmtfPos);
299  m_isolationUnit.extrapolateMuons(internMuonsOmtfNeg);
300  m_isolationUnit.extrapolateMuons(internMuonsOmtfPos);
301 
302  // the rank calculated here is used in the sort below
303  calculateRank(internMuonsBmtf);
304  calculateRank(internMuonsEmtfNeg);
305  calculateRank(internMuonsEmtfPos);
306  calculateRank(internMuonsOmtfNeg);
307  calculateRank(internMuonsOmtfPos);
308 
309  // The sort function both sorts and removes all but best "nSurvivors"
310  sortMuons(internMuonsBmtf, 8);
311  sortMuons(internMuonsOmtfPos, 4);
312  sortMuons(internMuonsOmtfNeg, 4);
313  sortMuons(internMuonsEmtfPos, 4);
314  sortMuons(internMuonsEmtfNeg, 4);
315 
316  // This combines the 5 streams into one InternalMuon collection for
317  // the final global sort.
319  addMuonsToCollections(internMuonsEmtfPos, internalMuons, imdMuonsEMTFPos, bx);
320  addMuonsToCollections(internMuonsOmtfPos, internalMuons, imdMuonsOMTFPos, bx);
321  addMuonsToCollections(internMuonsBmtf, internalMuons, imdMuonsBMTF, bx);
322  addMuonsToCollections(internMuonsOmtfNeg, internalMuons, imdMuonsOMTFNeg, bx);
323  addMuonsToCollections(internMuonsEmtfNeg, internalMuons, imdMuonsEMTFNeg, bx);
324 
325  // sort internal muons and delete all but best 8
326  sortMuons(internalMuons, 8);
327 
328  m_isolationUnit.isolatePreSummed(internalMuons);
329  // copy muons to output collection...
330  for (const auto& mu : internalMuons) {
331  if (mu->hwPt() > 0) {
333  (mu->hwPt() - 1) * 0.5, mu->hwEta() * 0.010875, mu->hwGlobalPhi() * 0.010908, 0.0};
334  int iso = mu->hwAbsIso() + (mu->hwRelIso() << 1);
335  int outMuQual = MicroGMTConfiguration::setOutputMuonQuality(mu->hwQual(), mu->trackFinderType(), mu->hwHF());
336  Muon outMu{vec,
337  mu->hwPt(),
338  mu->hwEta(),
339  mu->hwGlobalPhi(),
340  outMuQual,
341  mu->hwSign(),
342  mu->hwSignValid(),
343  iso,
344  mu->tfMuonIndex(),
345  0,
346  true,
347  mu->hwIsoSum(),
348  mu->hwDPhi(),
349  mu->hwDEta(),
350  mu->hwRank()};
351 
352  // Set coordinates at the vertex
353  outMu.setHwEtaAtVtx(MicroGMTConfiguration::calcMuonHwEtaExtra(outMu));
354  outMu.setHwPhiAtVtx(MicroGMTConfiguration::calcMuonHwPhiExtra(outMu));
355  outMu.setEtaAtVtx(MicroGMTConfiguration::calcMuonEtaExtra(outMu));
356  outMu.setPhiAtVtx(MicroGMTConfiguration::calcMuonPhiExtra(outMu));
357 
358  // Set displacement information
359  int hwPtUnconstrained{mu->hwPtUnconstrained()};
360  outMu.setPtUnconstrained(
361  hwPtUnconstrained == 0
362  ? 0
363  : (hwPtUnconstrained - 1)); // Don't want negative pT, unconstr. pT has LSB of 1 GeV.
364  outMu.setHwPtUnconstrained(hwPtUnconstrained);
365  outMu.setHwDXY(mu->hwDXY());
366 
367  if (mu->hwSignValid()) {
368  outMu.setCharge(1 - 2 * mu->hwSign());
369  } else {
370  outMu.setCharge(0);
371  }
372  m_debugOut << mu->hwCaloPhi() << " " << mu->hwCaloEta() << std::endl;
373  outMuons->push_back(bx, outMu);
374  }
375  }
376  }
377 
378  iEvent.put(std::move(outMuons));
379  iEvent.put(std::move(imdMuonsBMTF), "imdMuonsBMTF");
380  iEvent.put(std::move(imdMuonsEMTFPos), "imdMuonsEMTFPos");
381  iEvent.put(std::move(imdMuonsEMTFNeg), "imdMuonsEMTFNeg");
382  iEvent.put(std::move(imdMuonsOMTFPos), "imdMuonsOMTFPos");
383  iEvent.put(std::move(imdMuonsOMTFNeg), "imdMuonsOMTFNeg");
384 }
int getLastBX() const
void setCancelOutBitsOverlapEndcap(GMTInternalWedges &, GMTInternalWedges &, cancelmode)
Cancel-out between overlap and endcap track finders.
int getFirstBX() const
void extrapolateMuons(MicroGMTConfiguration::InterMuonList &) const
std::ofstream m_debugOut
void setCancelOutBitsOverlapBarrel(GMTInternalWedges &, GMTInternalWedges &, cancelmode)
Cancel-out between overlap and barrel track finders.
edm::EDGetTokenT< MicroGMTConfiguration::InputCollection > m_endcapTfInputToken
std::bitset< 12 > m_bmtfInputsToDisable
void convertMuons(edm::Handle< MicroGMTConfiguration::InputCollection > const &in, MicroGMTConfiguration::InterMuonList &out, GMTInternalWedges &wedges, int bx) const
void setTowerSums(const MicroGMTConfiguration::CaloInputCollection &inputs, int bx)
edm::EDGetTokenT< MicroGMTConfiguration::InputCollection > m_overlapTfInputToken
edm::EDGetTokenT< MicroGMTConfiguration::CaloInputCollection > m_caloTowerInputToken
MicroGMTIsolationUnit m_isolationUnit
l1t::cancelmode m_emtfCancelMode
void calculateRank(MicroGMTConfiguration::InterMuonList &muons) const
void isolatePreSummed(MicroGMTConfiguration::InterMuonList &muons) const
void sortMuons(MicroGMTConfiguration::InterMuonList &, unsigned) const
PtEtaPhiMLorentzVectorD PtEtaPhiMLorentzVector
Lorentz vector with cartesian internal representation.
Definition: LorentzVector.h:25
std::bitset< 12 > m_emtfInputsToDisable
int iEvent
Definition: GenABIO.cc:224
Definition: Muon.py:1
void addMuonsToCollections(MicroGMTConfiguration::InterMuonList &coll, MicroGMTConfiguration::InterMuonList &interout, std::unique_ptr< MuonBxCollection > &out, int bx) const
void splitAndConvertMuons(edm::Handle< MicroGMTConfiguration::InputCollection > const &in, MicroGMTConfiguration::InterMuonList &out_pos, MicroGMTConfiguration::InterMuonList &out_neg, GMTInternalWedges &wedges_pos, GMTInternalWedges &wedges_neg, int bx) const
GMTInternalMuonList InterMuonList
std::bitset< 12 > m_maskedBmtfInputs
BXVector< Muon > MuonBxCollection
Definition: Muon.h:11
void setCancelOutBits(GMTInternalWedges &, tftype, cancelmode)
Cancel out between sectors/wedges in one track finder.
edm::EDGetTokenT< MicroGMTConfiguration::InputCollection > m_barrelTfInputToken
HLT enums.
std::bitset< 12 > m_maskedEmtfInputs
l1t::cancelmode m_bmtfCancelMode
std::map< int, std::vector< std::shared_ptr< GMTInternalMuon > > > GMTInternalWedges
std::bitset< 12 > m_maskedOmtfInputs
std::bitset< 28 > m_caloInputsToDisable
std::bitset< 12 > m_omtfInputsToDisable
MicroGMTCancelOutUnit m_cancelOutUnit
def move(src, dest)
Definition: eostools.py:511
std::bitset< 28 > m_maskedCaloInputs

◆ sortMuons()

void L1TMuonProducer::sortMuons ( MicroGMTConfiguration::InterMuonList muons,
unsigned  nSurvivors 
) const
private

Definition at line 391 of file L1TMuonProducer.cc.

References compareMuons(), and PDWG_BPHSkim_cff::muons.

Referenced by produce().

391  {
392  MicroGMTConfiguration::InterMuonList::iterator mu1;
393  // reset from previous sort stage
394  for (mu1 = muons.begin(); mu1 != muons.end(); ++mu1) {
395  (*mu1)->setHwWins(0);
396  }
397 
398  int nCancelled = 0;
399  for (mu1 = muons.begin(); mu1 != muons.end(); ++mu1) {
400  int mu1CancelBit = (*mu1)->hwCancelBit();
401  nCancelled += mu1CancelBit;
402  auto mu2 = mu1;
403  mu2++;
404  for (; mu2 != muons.end(); ++mu2) {
405  if (mu1CancelBit != 1 && (*mu2)->hwCancelBit() != 1) {
406  if ((*mu1)->hwRank() >= (*mu2)->hwRank()) {
407  (*mu1)->increaseWins();
408  } else {
409  (*mu2)->increaseWins();
410  }
411  } else if (mu1CancelBit != 1) {
412  (*mu1)->increaseWins();
413  } else if ((*mu2)->hwCancelBit() != 1) {
414  (*mu2)->increaseWins();
415  }
416  }
417  }
418 
419  size_t nMuonsBefore = muons.size();
420  int minWins = nMuonsBefore - nSurvivors;
421 
422  // remove all muons that were cancelled or that do not have sufficient rank
423  // (reduces the container size to nSurvivors)
424  muons.remove_if([&minWins](auto muon) { return ((muon->hwWins() < minWins) || (muon->hwCancelBit() == 1)); });
426 }
static bool compareMuons(const std::shared_ptr< MicroGMTConfiguration::InterMuon > &mu1, const std::shared_ptr< MicroGMTConfiguration::InterMuon > &mu2)

◆ splitAndConvertMuons()

void L1TMuonProducer::splitAndConvertMuons ( edm::Handle< MicroGMTConfiguration::InputCollection > const &  in,
MicroGMTConfiguration::InterMuonList out_pos,
MicroGMTConfiguration::InterMuonList out_neg,
GMTInternalWedges wedges_pos,
GMTInternalWedges wedges_neg,
int  bx 
) const
private

Definition at line 477 of file L1TMuonProducer.cc.

References simKBmtfDigis_cfi::bx, computeMuonIdx(), mps_fire::i, recoMuon::in, MainPageGenerator::link, m_inputsToDisable, m_maskedInputs, MillePedeFileConverter_cfg::out, and findQualityFiles::size.

Referenced by produce().

482  {
483  // initialize the wedge collections:
484  for (int i = 0; i < 6; ++i) {
485  wedges_pos[i] = std::vector<std::shared_ptr<GMTInternalMuon>>();
486  wedges_pos[i].reserve(3);
487  wedges_neg[i] = std::vector<std::shared_ptr<GMTInternalMuon>>();
488  wedges_neg[i].reserve(3);
489  }
490  if (bx < in->getFirstBX() || bx > in->getLastBX())
491  return;
492  int muIdxAuto = 0;
493  int currentLink = 0;
494  for (size_t i = 0; i < in->size(bx); ++i, ++muIdxAuto) {
495  if (in->at(bx, i).hwPt() > 0) {
496  int link = in->at(bx, i).link();
497  if (m_inputsToDisable.test(link) || m_maskedInputs.test(link)) {
498  continue; // only process if input link is enabled and not masked
499  }
500  if (currentLink != link) {
501  muIdxAuto = 0;
502  currentLink = link;
503  }
504  int gPhi = MicroGMTConfiguration::calcGlobalPhi(
505  in->at(bx, i).hwPhi(), in->at(bx, i).trackFinderType(), in->at(bx, i).processor());
506  int tfMuonIdx{computeMuonIdx(in->at(bx, i), currentLink, muIdxAuto)};
507  std::shared_ptr<GMTInternalMuon> out = std::make_shared<GMTInternalMuon>(in->at(bx, i), gPhi, tfMuonIdx);
508  if (in->at(bx, i).hwEta() > 0) {
509  out_pos.push_back(out);
510  wedges_pos[in->at(bx, i).processor()].push_back(out);
511  } else {
512  out_neg.emplace_back(out);
513  wedges_neg[in->at(bx, i).processor()].push_back(out);
514  }
515  }
516  }
517  for (int i = 0; i < 6; ++i) {
518  if (wedges_pos[i].size() > 3)
519  edm::LogWarning("Input Mismatch") << " too many inputs per processor for emtf+ / omtf+. Wedge " << i << ": Size "
520  << wedges_pos[i].size() << std::endl;
521  if (wedges_neg[i].size() > 3)
522  edm::LogWarning("Input Mismatch") << " too many inputs per processor for emtf- / omtf-. Wedge " << i << ": Size "
523  << wedges_neg[i].size() << std::endl;
524  }
525 }
size
Write out results.
int computeMuonIdx(const RegionalMuonCand &mu, int currentLink, int muIdxAuto) const
std::bitset< 72 > m_maskedInputs
std::bitset< 72 > m_inputsToDisable
Log< level::Warning, false > LogWarning

Member Data Documentation

◆ m_autoBxRange

bool L1TMuonProducer::m_autoBxRange
private

Definition at line 101 of file L1TMuonProducer.cc.

Referenced by L1TMuonProducer(), and produce().

◆ m_autoCancelMode

bool L1TMuonProducer::m_autoCancelMode
private

Definition at line 104 of file L1TMuonProducer.cc.

Referenced by beginRun(), and L1TMuonProducer().

◆ m_barrelTfInputTag

edm::InputTag L1TMuonProducer::m_barrelTfInputTag
private

Definition at line 116 of file L1TMuonProducer.cc.

Referenced by L1TMuonProducer().

◆ m_barrelTfInputToken

edm::EDGetTokenT<MicroGMTConfiguration::InputCollection> L1TMuonProducer::m_barrelTfInputToken
private

Definition at line 127 of file L1TMuonProducer.cc.

Referenced by L1TMuonProducer(), and produce().

◆ m_bmtfCancelMode

l1t::cancelmode L1TMuonProducer::m_bmtfCancelMode
private

Definition at line 124 of file L1TMuonProducer.cc.

Referenced by beginRun(), L1TMuonProducer(), and produce().

◆ m_bmtfInputsToDisable

std::bitset<12> L1TMuonProducer::m_bmtfInputsToDisable
private

Definition at line 107 of file L1TMuonProducer.cc.

Referenced by beginRun(), and produce().

◆ m_bxMax

int L1TMuonProducer::m_bxMax
private

Definition at line 103 of file L1TMuonProducer.cc.

Referenced by L1TMuonProducer(), and produce().

◆ m_bxMin

int L1TMuonProducer::m_bxMin
private

Definition at line 102 of file L1TMuonProducer.cc.

Referenced by L1TMuonProducer(), and produce().

◆ m_caloInputsToDisable

std::bitset<28> L1TMuonProducer::m_caloInputsToDisable
private

Definition at line 106 of file L1TMuonProducer.cc.

Referenced by beginRun(), and produce().

◆ m_caloTowerInputToken

edm::EDGetTokenT<MicroGMTConfiguration::CaloInputCollection> L1TMuonProducer::m_caloTowerInputToken
private

Definition at line 130 of file L1TMuonProducer.cc.

Referenced by L1TMuonProducer(), and produce().

◆ m_cancelOutUnit

MicroGMTCancelOutUnit L1TMuonProducer::m_cancelOutUnit
private

Definition at line 122 of file L1TMuonProducer.cc.

Referenced by beginRun(), and produce().

◆ m_debugOut

std::ofstream L1TMuonProducer::m_debugOut
private

Definition at line 123 of file L1TMuonProducer.cc.

Referenced by produce(), and ~L1TMuonProducer().

◆ m_emtfCancelMode

l1t::cancelmode L1TMuonProducer::m_emtfCancelMode
private

Definition at line 125 of file L1TMuonProducer.cc.

Referenced by L1TMuonProducer(), and produce().

◆ m_emtfInputsToDisable

std::bitset<12> L1TMuonProducer::m_emtfInputsToDisable
private

Definition at line 109 of file L1TMuonProducer.cc.

Referenced by beginRun(), and produce().

◆ m_endcapTfInputTag

edm::InputTag L1TMuonProducer::m_endcapTfInputTag
private

Definition at line 118 of file L1TMuonProducer.cc.

Referenced by L1TMuonProducer().

◆ m_endcapTfInputToken

edm::EDGetTokenT<MicroGMTConfiguration::InputCollection> L1TMuonProducer::m_endcapTfInputToken
private

Definition at line 129 of file L1TMuonProducer.cc.

Referenced by L1TMuonProducer(), and produce().

◆ m_inputsToDisable

std::bitset<72> L1TMuonProducer::m_inputsToDisable
private

Definition at line 105 of file L1TMuonProducer.cc.

Referenced by beginRun(), convertMuons(), and splitAndConvertMuons().

◆ m_isolationUnit

MicroGMTIsolationUnit L1TMuonProducer::m_isolationUnit
private

Definition at line 121 of file L1TMuonProducer.cc.

Referenced by beginRun(), and produce().

◆ m_maskedBmtfInputs

std::bitset<12> L1TMuonProducer::m_maskedBmtfInputs
private

Definition at line 112 of file L1TMuonProducer.cc.

Referenced by beginRun(), and produce().

◆ m_maskedCaloInputs

std::bitset<28> L1TMuonProducer::m_maskedCaloInputs
private

Definition at line 111 of file L1TMuonProducer.cc.

Referenced by beginRun(), and produce().

◆ m_maskedEmtfInputs

std::bitset<12> L1TMuonProducer::m_maskedEmtfInputs
private

Definition at line 114 of file L1TMuonProducer.cc.

Referenced by beginRun(), and produce().

◆ m_maskedInputs

std::bitset<72> L1TMuonProducer::m_maskedInputs
private

Definition at line 110 of file L1TMuonProducer.cc.

Referenced by beginRun(), convertMuons(), and splitAndConvertMuons().

◆ m_maskedOmtfInputs

std::bitset<12> L1TMuonProducer::m_maskedOmtfInputs
private

Definition at line 113 of file L1TMuonProducer.cc.

Referenced by beginRun(), and produce().

◆ m_microGMTParamsToken

edm::ESGetToken<L1TMuonGlobalParams, L1TMuonGlobalParamsRcd> L1TMuonProducer::m_microGMTParamsToken
private

Definition at line 131 of file L1TMuonProducer.cc.

Referenced by beginRun(), and L1TMuonProducer().

◆ m_o2oProtoToken

edm::ESGetToken<L1TMuonGlobalParams, L1TMuonGlobalParamsO2ORcd> L1TMuonProducer::m_o2oProtoToken
private

Definition at line 132 of file L1TMuonProducer.cc.

Referenced by beginRun(), and L1TMuonProducer().

◆ m_omtfInputsToDisable

std::bitset<12> L1TMuonProducer::m_omtfInputsToDisable
private

Definition at line 108 of file L1TMuonProducer.cc.

Referenced by beginRun(), and produce().

◆ m_overlapTfInputTag

edm::InputTag L1TMuonProducer::m_overlapTfInputTag
private

Definition at line 117 of file L1TMuonProducer.cc.

Referenced by L1TMuonProducer().

◆ m_overlapTfInputToken

edm::EDGetTokenT<MicroGMTConfiguration::InputCollection> L1TMuonProducer::m_overlapTfInputToken
private

Definition at line 128 of file L1TMuonProducer.cc.

Referenced by L1TMuonProducer(), and produce().

◆ m_rankPtQualityLUT

std::shared_ptr<MicroGMTRankPtQualLUT> L1TMuonProducer::m_rankPtQualityLUT
private

Definition at line 120 of file L1TMuonProducer.cc.

Referenced by beginRun(), and calculateRank().

◆ m_trigTowerTag

edm::InputTag L1TMuonProducer::m_trigTowerTag
private

Definition at line 119 of file L1TMuonProducer.cc.

Referenced by L1TMuonProducer().

◆ microGMTParamsHelper

std::unique_ptr<L1TMuonGlobalParamsHelper> L1TMuonProducer::microGMTParamsHelper
private

Definition at line 115 of file L1TMuonProducer.cc.

Referenced by beginRun().