CMS 3D CMS Logo

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

#include <L1MuGlobalMuonTrigger.h>

Inheritance diagram for L1MuGlobalMuonTrigger:
edm::one::EDProducer< edm::one::SharedResources > edm::one::EDProducerBase edm::ProducerBase edm::EDConsumerBase edm::ProductRegistryHelper

Public Member Functions

void beginJob () override
 
const L1MuGMTCancelOutUnitCancelOutUnit (int id) const
 return pointer to Cancel Out Unit More...
 
L1MuGMTReadoutRecordcurrentReadoutRecord () const
 return a reference to the current record in the ring buffer More...
 
const L1MuGMTPSBData () const
 return pointer to PSB More...
 
L1MuGMTDebugBlockDebugBlockForFill () const
 for debug: return the debug block (in order to fill it) More...
 
std::unique_ptr< L1MuGMTReadoutCollectiongetReadoutCollection ()
 
 L1MuGlobalMuonTrigger (const edm::ParameterSet &)
 
const L1MuGMTMatcherMatcher (int id) const
 return pointer to Matcher More...
 
const L1MuGMTMergerMerger (int id) const
 return pointer to Merger More...
 
const L1MuGMTMipIsoAUMipIsoAU (int id) const
 return pointer to MIP & ISO bit assignment unit More...
 
void produce (edm::Event &, const edm::EventSetup &) override
 
void reset ()
 
const L1MuGMTSorterSorter () const
 return pointer to Sorter More...
 
 ~L1MuGlobalMuonTrigger () override
 
- Public Member Functions inherited from edm::one::EDProducer< edm::one::SharedResources >
 EDProducer ()=default
 
SerialTaskQueueglobalLuminosityBlocksQueue () final
 
SerialTaskQueueglobalRunsQueue () final
 
bool hasAbilityToProduceInBeginLumis () const final
 
bool hasAbilityToProduceInBeginRuns () const final
 
bool hasAbilityToProduceInEndLumis () const final
 
bool hasAbilityToProduceInEndRuns () const final
 
bool wantsGlobalLuminosityBlocks () const final
 
bool wantsGlobalRuns () const final
 
- Public Member Functions inherited from edm::one::EDProducerBase
 EDProducerBase ()
 
ModuleDescription const & moduleDescription () const
 
bool wantsStreamLuminosityBlocks () const
 
bool wantsStreamRuns () const
 
 ~EDProducerBase () override
 
- Public Member Functions inherited from edm::ProducerBase
void callWhenNewProductsRegistered (std::function< void(BranchDescription const &)> const &func)
 
std::vector< edm::ProductResolverIndex > const & indiciesForPutProducts (BranchType iBranchType) const
 
 ProducerBase ()
 
std::vector< edm::ProductResolverIndex > const & putTokenIndexToProductResolverIndex () const
 
void registerProducts (ProducerBase *, ProductRegistry *, ModuleDescription const &)
 
std::function< void(BranchDescription const &)> registrationCallback () const
 used by the fwk to register list of products More...
 
void resolvePutIndicies (BranchType iBranchType, ModuleToResolverIndicies const &iIndicies, std::string const &moduleLabel)
 
 ~ProducerBase () noexcept(false) override
 
- Public Member Functions inherited from edm::EDConsumerBase
std::vector< ConsumesInfoconsumesInfo () const
 
void convertCurrentProcessAlias (std::string const &processName)
 Convert "@currentProcess" in InputTag process names to the actual current process name. More...
 
 EDConsumerBase ()
 
 EDConsumerBase (EDConsumerBase const &)=delete
 
 EDConsumerBase (EDConsumerBase &&)=default
 
ESProxyIndex const * esGetTokenIndices (edm::Transition iTrans) const
 
ProductResolverIndexAndSkipBit indexFrom (EDGetToken, BranchType, TypeID const &) const
 
void itemsMayGet (BranchType, std::vector< ProductResolverIndexAndSkipBit > &) const
 
void itemsToGet (BranchType, std::vector< ProductResolverIndexAndSkipBit > &) const
 
std::vector< ProductResolverIndexAndSkipBit > const & itemsToGetFrom (BranchType iType) const
 
void labelsForToken (EDGetToken iToken, Labels &oLabels) const
 
void modulesWhoseProductsAreConsumed (std::vector< ModuleDescription const * > &modules, ProductRegistry const &preg, std::map< std::string, ModuleDescription const * > const &labelsToDesc, std::string const &processName) const
 
EDConsumerBase const & operator= (EDConsumerBase const &)=delete
 
EDConsumerBaseoperator= (EDConsumerBase &&)=default
 
bool registeredToConsume (ProductResolverIndex, bool, BranchType) const
 
bool registeredToConsumeMany (TypeID const &, BranchType) const
 
ProductResolverIndexAndSkipBit uncheckedIndexFrom (EDGetToken) const
 
void updateLookup (BranchType iBranchType, ProductResolverIndexHelper const &, bool iPrefetchMayGet)
 
void updateLookup (eventsetup::ESRecordsToProxyIndices const &)
 
virtual ~EDConsumerBase () noexcept(false)
 

Private Attributes

L1MuGMTCancelOutUnitm_CancelOutUnit [4]
 
std::vector< L1MuGMTExtendedCandm_ExtendedCands
 
unsigned long long m_L1CaloGeometryCacheID
 
unsigned long long m_L1MuGMTChannelMaskCacheID
 
unsigned long long m_L1MuGMTParametersCacheID
 
unsigned long long m_L1MuGMTScalesCacheID
 
unsigned long long m_L1MuTriggerPtScaleCacheID
 
unsigned long long m_L1MuTriggerScalesCacheID
 
L1MuGMTMatcherm_Matcher [2]
 
L1MuGMTMergerm_Merger [2]
 
L1MuGMTMipIsoAUm_MipIsoAU [2]
 
L1MuGMTPSBm_PSB
 
std::vector< L1MuGMTReadoutRecord * > m_ReadoutRingbuffer
 
bool m_sendMipIso
 
L1MuGMTSorterm_Sorter
 
bool m_writeLUTsAndRegs
 

Static Private Attributes

static L1MuGMTConfigm_config = 0
 
static L1MuGMTDebugBlockm_db = 0
 

Additional Inherited Members

- Public Types inherited from edm::one::EDProducerBase
typedef EDProducerBase ModuleType
 
- Public Types inherited from edm::ProducerBase
using ModuleToResolverIndicies = std::unordered_multimap< std::string, std::tuple< edm::TypeID const *, const char *, edm::ProductResolverIndex >>
 
typedef ProductRegistryHelper::TypeLabelList TypeLabelList
 
- Public Types inherited from edm::EDConsumerBase
typedef ProductLabels Labels
 
- Static Public Member Functions inherited from edm::one::EDProducerBase
static const std::string & baseType ()
 
static void fillDescriptions (ConfigurationDescriptions &descriptions)
 
static void prevalidate (ConfigurationDescriptions &descriptions)
 
- Protected Member Functions inherited from edm::ProducerBase
ProducesCollector producesCollector ()
 
- Protected Member Functions inherited from edm::EDConsumerBase
template<typename ProductType , BranchType B = InEvent>
EDGetTokenT< ProductType > consumes (edm::InputTag const &tag)
 
EDGetToken consumes (const TypeToGet &id, edm::InputTag const &tag)
 
template<BranchType B>
EDGetToken consumes (TypeToGet const &id, edm::InputTag const &tag)
 
ConsumesCollector consumesCollector ()
 Use a ConsumesCollector to gather consumes information from helper functions. More...
 
template<typename ProductType , BranchType B = InEvent>
void consumesMany ()
 
void consumesMany (const TypeToGet &id)
 
template<BranchType B>
void consumesMany (const TypeToGet &id)
 
template<typename ESProduct , typename ESRecord , Transition Tr = Transition::Event>
auto esConsumes ()
 
template<typename ESProduct , typename ESRecord , Transition Tr = Transition::Event>
auto esConsumes (ESInputTag const &tag)
 
template<typename ProductType , BranchType B = InEvent>
EDGetTokenT< ProductType > mayConsume (edm::InputTag const &tag)
 
EDGetToken mayConsume (const TypeToGet &id, edm::InputTag const &tag)
 
template<BranchType B>
EDGetToken mayConsume (const TypeToGet &id, edm::InputTag const &tag)
 

Detailed Description

Definition at line 50 of file L1MuGlobalMuonTrigger.h.

Constructor & Destructor Documentation

L1MuGlobalMuonTrigger::L1MuGlobalMuonTrigger ( const edm::ParameterSet ps)
explicit

Definition at line 69 of file L1MuGlobalMuonTrigger.cc.

References edm::EDConsumerBase::consumesCollector(), L1MuGMTConfig::Debug(), L1MuGMTConfig::getBxMax(), L1MuGMTConfig::getBxMin(), edm::ParameterSet::getUntrackedParameter(), m_CancelOutUnit, m_config, m_db, m_ExtendedCands, m_L1CaloGeometryCacheID, m_L1MuGMTChannelMaskCacheID, m_L1MuGMTParametersCacheID, m_L1MuGMTScalesCacheID, m_L1MuTriggerPtScaleCacheID, m_L1MuTriggerScalesCacheID, m_Matcher, m_Merger, m_MipIsoAU, m_PSB, m_sendMipIso, m_Sorter, and m_writeLUTsAndRegs.

69  {
70  produces<std::vector<L1MuGMTCand> >();
71  produces<L1MuGMTReadoutCollection>();
72  m_sendMipIso = ps.getUntrackedParameter<bool>("SendMipIso", false);
73  if (m_sendMipIso) {
74  produces<std::vector<unsigned> >();
75  }
76 
83 
84  m_ExtendedCands.reserve(20);
85 
86  // set configuration parameters
87  if (!m_config)
88  m_config = new L1MuGMTConfig(ps);
89  m_writeLUTsAndRegs = ps.getUntrackedParameter<bool>("WriteLUTsAndRegs", false);
90 
91  // build GMT
92  if (L1MuGMTConfig::Debug(1))
93  edm::LogVerbatim("GMT_info");
94  if (L1MuGMTConfig::Debug(1))
95  edm::LogVerbatim("GMT_info") << "**** L1GlobalMuonTrigger building ****";
96  if (L1MuGMTConfig::Debug(1))
97  edm::LogVerbatim("GMT_info");
98 
99  // create new PSB
100  if (L1MuGMTConfig::Debug(2))
101  edm::LogVerbatim("GMT_info") << "creating GMT PSB";
102  m_PSB = new L1MuGMTPSB(*this, consumesCollector());
103 
104  // create new matcher
105  if (L1MuGMTConfig::Debug(2))
106  edm::LogVerbatim("GMT_info") << "creating GMT Matcher (0,1)";
107  m_Matcher[0] = new L1MuGMTMatcher(*this, 0); // barrel
108  m_Matcher[1] = new L1MuGMTMatcher(*this, 1); // endcap
109 
110  // create new cancel-out units
111  if (L1MuGMTConfig::Debug(2))
112  edm::LogVerbatim("GMT_info") << "creating GMT Cancel Out Unit (0,1,2,3)";
113  m_CancelOutUnit[0] = new L1MuGMTCancelOutUnit(*this, 0); // barrel
114  m_CancelOutUnit[1] = new L1MuGMTCancelOutUnit(*this, 1); // endcap
115  m_CancelOutUnit[2] = new L1MuGMTCancelOutUnit(*this, 2); // CSC/bRPC
116  m_CancelOutUnit[3] = new L1MuGMTCancelOutUnit(*this, 3); // DT/fRPC
117 
118  // create new MIP & ISO bit assignment units
119  if (L1MuGMTConfig::Debug(2))
120  edm::LogVerbatim("GMT_info") << "creating GMT MIP & ISO bit Assigment Unit (0,1)";
121  m_MipIsoAU[0] = new L1MuGMTMipIsoAU(*this, 0); // barrel
122  m_MipIsoAU[1] = new L1MuGMTMipIsoAU(*this, 1); // endcap
123 
124  // create new Merger
125  if (L1MuGMTConfig::Debug(2))
126  edm::LogVerbatim("GMT_info") << "creating GMT Merger (0,1)";
127  m_Merger[0] = new L1MuGMTMerger(*this, 0); // barrel
128  m_Merger[1] = new L1MuGMTMerger(*this, 1); // endcap
129 
130  // create new sorter
131  if (L1MuGMTConfig::Debug(2))
132  edm::LogVerbatim("GMT_info") << "creating GMT Sorter";
133  m_Sorter = new L1MuGMTSorter(*this); // barrel
134 
135  if (!m_db)
137  usesResource("L1MuGlobalMuonTrigger");
138 }
T getUntrackedParameter(std::string const &, T const &) const
unsigned long long m_L1MuTriggerScalesCacheID
unsigned long long m_L1MuGMTChannelMaskCacheID
std::vector< L1MuGMTExtendedCand > m_ExtendedCands
unsigned long long m_L1CaloGeometryCacheID
unsigned long long m_L1MuTriggerPtScaleCacheID
static bool Debug()
L1MuGMTMipIsoAU * m_MipIsoAU[2]
ConsumesCollector consumesCollector()
Use a ConsumesCollector to gather consumes information from helper functions.
L1MuGMTMatcher * m_Matcher[2]
L1MuGMTMerger * m_Merger[2]
unsigned long long m_L1MuGMTScalesCacheID
static int getBxMin()
L1MuGMTCancelOutUnit * m_CancelOutUnit[4]
static L1MuGMTConfig * m_config
unsigned long long m_L1MuGMTParametersCacheID
static int getBxMax()
static L1MuGMTDebugBlock * m_db
L1MuGlobalMuonTrigger::~L1MuGlobalMuonTrigger ( )
override

Definition at line 143 of file L1MuGlobalMuonTrigger.cc.

References m_CancelOutUnit, m_config, m_db, m_Matcher, m_Merger, m_MipIsoAU, m_PSB, m_ReadoutRingbuffer, and m_Sorter.

143  {
144  if (m_db)
145  delete m_db;
146  m_db = nullptr;
147 
148  delete m_Sorter;
149  delete m_Merger[1]; // endcap Merger
150  delete m_Merger[0]; // barrel Merger
151  delete m_MipIsoAU[1]; // barrel MIP & ISO bit assignment unit
152  delete m_MipIsoAU[0]; // barrel MIP & ISO bit assignment unit
153  delete m_CancelOutUnit[3]; // DT/fRPC cancel-out unit (in endcap chip)
154  delete m_CancelOutUnit[2]; // CSC/bRPC cancel-out unit (in barrel chip)
155  delete m_CancelOutUnit[1]; // endcap DT/CSC cancel out unit
156  delete m_CancelOutUnit[0]; // barrel DT/CSC cancel out unit
157  delete m_Matcher[1]; // endcap matcher
158  delete m_Matcher[0]; // barrel matcher
159  delete m_PSB;
160 
161  if (m_config)
162  delete m_config;
163  m_config = nullptr;
164 
165  // copied from produce() by Jim B, 7 Aug 2007
166  std::vector<L1MuGMTReadoutRecord*>::iterator irr = m_ReadoutRingbuffer.begin();
167  for (; irr != m_ReadoutRingbuffer.end(); irr++)
168  delete (*irr);
169  m_ReadoutRingbuffer.clear();
170  // end Jim B edit
171 }
std::vector< L1MuGMTReadoutRecord * > m_ReadoutRingbuffer
L1MuGMTMipIsoAU * m_MipIsoAU[2]
L1MuGMTMatcher * m_Matcher[2]
L1MuGMTMerger * m_Merger[2]
L1MuGMTCancelOutUnit * m_CancelOutUnit[4]
static L1MuGMTConfig * m_config
static L1MuGMTDebugBlock * m_db

Member Function Documentation

void L1MuGlobalMuonTrigger::beginJob ( void  )
overridevirtual

Reimplemented from edm::one::EDProducerBase.

Definition at line 177 of file L1MuGlobalMuonTrigger.cc.

177 {}
const L1MuGMTCancelOutUnit* L1MuGlobalMuonTrigger::CancelOutUnit ( int  id) const
inline

return pointer to Cancel Out Unit

Definition at line 67 of file L1MuGlobalMuonTrigger.h.

References triggerObjects_cff::id, and m_CancelOutUnit.

Referenced by L1MuGMTMerger::merge().

67 { return m_CancelOutUnit[id]; }
L1MuGMTCancelOutUnit * m_CancelOutUnit[4]
L1MuGMTReadoutRecord* L1MuGlobalMuonTrigger::currentReadoutRecord ( ) const
inline

return a reference to the current record in the ring buffer

Definition at line 84 of file L1MuGlobalMuonTrigger.h.

References m_ReadoutRingbuffer.

Referenced by L1MuGMTPSB::getCalo(), L1MuGMTPSB::receiveData(), and L1MuGMTSorter::run().

84 { return m_ReadoutRingbuffer.back(); };
std::vector< L1MuGMTReadoutRecord * > m_ReadoutRingbuffer
const L1MuGMTPSB* L1MuGlobalMuonTrigger::Data ( ) const
inline

return pointer to PSB

Definition at line 61 of file L1MuGlobalMuonTrigger.h.

References m_PSB.

Referenced by L1MuGMTMipIsoAU::assignISO(), L1MuGMTMipIsoAU::assignMIP(), L1MuGMTMatcher::load(), L1MuGMTMerger::load(), and L1MuGMTMipIsoAU::load().

61 { return m_PSB; }
L1MuGMTDebugBlock* L1MuGlobalMuonTrigger::DebugBlockForFill ( ) const
inline
std::unique_ptr< L1MuGMTReadoutCollection > L1MuGlobalMuonTrigger::getReadoutCollection ( )

get the GMT readout data for the triggered bx readout data contains input and output muons as well as MIP and Quiet bits for 3 or 5 bx around the triggered bx

Definition at line 444 of file L1MuGlobalMuonTrigger.cc.

References l1GtPatternGenerator_cfi::bx, L1MuGMTConfig::getBxMaxRo(), L1MuGMTConfig::getBxMinRo(), m_config, m_db, and m_ReadoutRingbuffer.

Referenced by produce(), and Sorter().

444  {
445  int bx_min_ro = L1MuGMTConfig::getBxMinRo();
446  int bx_max_ro = L1MuGMTConfig::getBxMaxRo();
447  int bx_size = bx_max_ro - bx_min_ro + 1;
448 
449  std::unique_ptr<L1MuGMTReadoutCollection> rrc(new L1MuGMTReadoutCollection(bx_size));
450 
451  for (int bx = bx_min_ro; bx <= bx_max_ro; bx++) {
452  std::vector<L1MuGMTReadoutRecord*>::const_iterator iter = m_ReadoutRingbuffer.begin();
453 
454  for (; iter != m_ReadoutRingbuffer.end(); iter++) {
455  if ((*iter)->getBxInEvent() == bx) {
456  rrc->addRecord(**iter);
457  break;
458  }
459  }
460  }
461 
462  return rrc;
463 }
std::vector< L1MuGMTReadoutRecord * > m_ReadoutRingbuffer
static int getBxMaxRo()
static int getBxMinRo()
const L1MuGMTMatcher* L1MuGlobalMuonTrigger::Matcher ( int  id) const
inline

return pointer to Matcher

Definition at line 64 of file L1MuGlobalMuonTrigger.h.

References triggerObjects_cff::id, and m_Matcher.

Referenced by L1MuGMTCancelOutUnit::decide(), and L1MuGMTMerger::merge().

64 { return m_Matcher[id]; }
L1MuGMTMatcher * m_Matcher[2]
const L1MuGMTMerger* L1MuGlobalMuonTrigger::Merger ( int  id) const
inline

return pointer to Merger

Definition at line 73 of file L1MuGlobalMuonTrigger.h.

References triggerObjects_cff::id, and m_Merger.

Referenced by L1MuGMTSorter::run().

const L1MuGMTMipIsoAU* L1MuGlobalMuonTrigger::MipIsoAU ( int  id) const
inline

return pointer to MIP & ISO bit assignment unit

Definition at line 70 of file L1MuGlobalMuonTrigger.h.

References triggerObjects_cff::id, and m_MipIsoAU.

Referenced by L1MuGMTMerger::createDTCSCCand(), L1MuGMTMerger::createMergedCand(), and L1MuGMTMerger::createRPCCand().

70 { return m_MipIsoAU[id]; }
L1MuGMTMipIsoAU * m_MipIsoAU[2]
void L1MuGlobalMuonTrigger::produce ( edm::Event e,
const edm::EventSetup es 
)
override

Definition at line 179 of file L1MuGlobalMuonTrigger.cc.

References l1GtPatternGenerator_cfi::bx, L1MuGMTSorter::Cands(), L1MuGMTConfig::clearLUTsRegs(), L1MuGMTConfig::createLUTsRegs(), L1MuGMTConfig::Debug(), TauDecayModes::dec, DeadROC_duringRun::dir, L1MuGMTConfig::dumpLUTs(), L1MuGMTConfig::dumpRegs(), L1MuGMTPSB::empty(), edm::EventSetup::get(), L1MuGMTConfig::getBxMax(), L1MuGMTConfig::getBxMin(), L1MuGMTConfig::getGMTChanMask(), getReadoutCollection(), L1MuGMTChannelMask::getSubsystemMask(), mps_fire::i, L1MuGMTDebugBlock::IsMIPISO(), m_CancelOutUnit, m_config, m_db, m_ExtendedCands, m_L1CaloGeometryCacheID, m_L1MuGMTChannelMaskCacheID, m_L1MuGMTParametersCacheID, m_L1MuGMTScalesCacheID, m_L1MuTriggerPtScaleCacheID, m_L1MuTriggerScalesCacheID, m_Matcher, m_Merger, m_MipIsoAU, m_PSB, m_ReadoutRingbuffer, m_sendMipIso, m_Sorter, m_writeLUTsAndRegs, eostools::mkdir(), eostools::move(), L1MuGMTSorter::numberOfCands(), L1MuGMTSorter::print(), L1MuGMTMatcher::print(), L1MuGMTPSB::print(), L1MuGMTMipIsoAU::print(), L1MuGMTMerger::print(), L1MuGMTCancelOutUnit::print(), edm::ESHandle< T >::product(), edm::Event::put(), L1MuGMTPSB::receiveData(), L1MuGMTDebugBlock::reset(), reset(), L1MuGMTSorter::run(), L1MuGMTMatcher::run(), L1MuGMTMipIsoAU::run(), L1MuGMTMerger::run(), L1MuGMTCancelOutUnit::run(), L1MuGMTDebugBlock::SetBX(), L1MuGMTConfig::setCaloGeom(), L1MuGMTConfig::setDefaults(), L1MuGMTConfig::setGMTChanMask(), L1MuGMTConfig::setGMTParams(), L1MuGMTConfig::setGMTScales(), L1MuGMTConfig::setTriggerPtScale(), L1MuGMTConfig::setTriggerScales(), and AlCaHLTBitMon_QueryRunRegistry::string.

179  {
180  // configure from the event setup
181 
182  unsigned long long L1MuGMTScalesCacheID = es.get<L1MuGMTScalesRcd>().cacheIdentifier();
183  if (L1MuGMTScalesCacheID != m_L1MuGMTScalesCacheID) {
184  edm::ESHandle<L1MuGMTScales> gmtscales_h;
185  es.get<L1MuGMTScalesRcd>().get(gmtscales_h);
186  m_config->setGMTScales(gmtscales_h.product());
187  }
188 
189  unsigned long long L1MuTriggerScalesCacheID = es.get<L1MuTriggerScalesRcd>().cacheIdentifier();
190  if (L1MuTriggerScalesCacheID != m_L1MuTriggerScalesCacheID) {
192  es.get<L1MuTriggerScalesRcd>().get(trigscales_h);
193  m_config->setTriggerScales(trigscales_h.product());
194  }
195 
196  unsigned long long L1MuTriggerPtScaleCacheID = es.get<L1MuTriggerPtScaleRcd>().cacheIdentifier();
197  if (L1MuTriggerPtScaleCacheID != m_L1MuTriggerPtScaleCacheID) {
198  edm::ESHandle<L1MuTriggerPtScale> trigptscale_h;
199  es.get<L1MuTriggerPtScaleRcd>().get(trigptscale_h);
200  m_config->setTriggerPtScale(trigptscale_h.product());
201  }
202 
203  unsigned long long L1MuGMTParametersCacheID = es.get<L1MuGMTParametersRcd>().cacheIdentifier();
204  if (L1MuGMTParametersCacheID != m_L1MuGMTParametersCacheID) {
206  es.get<L1MuGMTParametersRcd>().get(gmtparams_h);
207  m_config->setGMTParams(gmtparams_h.product());
209  }
210 
211  unsigned long long L1MuGMTChannelMaskCacheID = es.get<L1MuGMTChannelMaskRcd>().cacheIdentifier();
212  if (L1MuGMTChannelMaskCacheID != m_L1MuGMTChannelMaskCacheID) {
213  edm::ESHandle<L1MuGMTChannelMask> gmtchanmask_h;
214  es.get<L1MuGMTChannelMaskRcd>().get(gmtchanmask_h);
215  m_config->setGMTChanMask(gmtchanmask_h.product());
216  if (L1MuGMTConfig::Debug(1)) {
217  std::string onoff;
218  const L1MuGMTChannelMask* theChannelMask = L1MuGMTConfig::getGMTChanMask();
219  unsigned mask = theChannelMask->getSubsystemMask();
220 
221  edm::LogVerbatim("GMT_info");
222  edm::LogVerbatim("GMT_info") << " GMT input Channel Mask:" << std::hex << mask << std::dec;
223  onoff = mask & 1 ? "OFF" : "ON";
224  edm::LogVerbatim("GMT_info") << " DT input " << onoff;
225  onoff = mask & 2 ? "OFF" : "ON";
226  edm::LogVerbatim("GMT_info") << " RPCb input " << onoff;
227  onoff = mask & 4 ? "OFF" : "ON";
228  edm::LogVerbatim("GMT_info") << " CSC input " << onoff;
229  onoff = mask & 8 ? "OFF" : "ON";
230  edm::LogVerbatim("GMT_info") << " RPCf input " << onoff;
231  edm::LogVerbatim("GMT_info");
232  }
233  }
234 
235  unsigned long long L1CaloGeometryCacheID = es.get<L1CaloGeometryRecord>().cacheIdentifier();
236  if (L1CaloGeometryCacheID != m_L1CaloGeometryCacheID) {
238  es.get<L1CaloGeometryRecord>().get(caloGeom_h);
239  m_config->setCaloGeom(caloGeom_h.product());
240  }
241 
243 
244  // write LUTs and Regs if required
245 
246  if (m_writeLUTsAndRegs) {
247  std::string dir = "gmtconfig";
248 
249  mkdir(dir.c_str(), S_ISUID | S_ISGID | S_ISVTX | S_IRUSR | S_IWUSR | S_IXUSR);
250 
251  m_config->dumpLUTs(dir);
252  m_config->dumpRegs(dir);
253  }
254 
255  // process the event
256  if (L1MuGMTConfig::Debug(2))
257  edm::LogVerbatim("GMT_info");
258  if (L1MuGMTConfig::Debug(2))
259  edm::LogVerbatim("GMT_info") << "**** L1GlobalMuonTrigger processing ****";
260  if (L1MuGMTConfig::Debug(2))
261  edm::LogVerbatim("GMT_info");
262 
263  int bx_min = L1MuGMTConfig::getBxMin();
264  int bx_max = L1MuGMTConfig::getBxMax();
265 
266  m_ExtendedCands.clear();
267 
268  // clear readout ring buffer
269  std::vector<L1MuGMTReadoutRecord*>::iterator irr = m_ReadoutRingbuffer.begin();
270  for (; irr != m_ReadoutRingbuffer.end(); irr++)
271  delete (*irr);
272  m_ReadoutRingbuffer.clear();
273 
274  if (m_db)
275  m_db->reset(); // reset debug block
276 
277  for (int bx = bx_min; bx <= bx_max; bx++) {
278  m_db->SetBX(bx);
279 
280  // create new element in readout ring buffer
282 
283  if (L1MuGMTConfig::Debug(2))
284  edm::LogVerbatim("GMT_info") << "L1GlobalMuonTrigger processing bunch-crossing : " << bx;
285 
286  // get data into the data buffer
287  if (L1MuGMTConfig::Debug(2))
288  edm::LogVerbatim("GMT_info") << "running GMT PSB";
289  if (m_PSB) {
290  m_PSB->receiveData(e, bx);
291  if (L1MuGMTConfig::Debug(4))
292  m_PSB->print();
293  }
294 
295  if (m_PSB && !m_PSB->empty()) {
296  // run matcher
297  if (L1MuGMTConfig::Debug(2))
298  edm::LogVerbatim("GMT_info") << "running GMT barrel Matcher";
299  if (m_Matcher[0])
300  m_Matcher[0]->run();
301  if (L1MuGMTConfig::Debug(3) && m_Matcher[0])
302  m_Matcher[0]->print();
303  if (L1MuGMTConfig::Debug(2))
304  edm::LogVerbatim("GMT_info") << "running GMT endcap Matcher";
305  if (m_Matcher[1])
306  m_Matcher[1]->run();
307  if (L1MuGMTConfig::Debug(3) && m_Matcher[1])
308  m_Matcher[1]->print();
309 
310  // run cancel-out units
311  if (L1MuGMTConfig::Debug(2))
312  edm::LogVerbatim("GMT_info") << "running GMT barrel Cancel Out Unit";
313  if (m_CancelOutUnit[0])
314  m_CancelOutUnit[0]->run();
316  m_CancelOutUnit[0]->print();
317 
318  if (L1MuGMTConfig::Debug(2))
319  edm::LogVerbatim("GMT_info") << "running GMT endcap Cancel Out Unit";
320  if (m_CancelOutUnit[1])
321  m_CancelOutUnit[1]->run();
323  m_CancelOutUnit[1]->print();
324 
325  if (L1MuGMTConfig::Debug(2))
326  edm::LogVerbatim("GMT_info") << "running GMT CSC/fRPC Cancel Out Unit";
327  if (m_CancelOutUnit[2])
328  m_CancelOutUnit[2]->run();
330  m_CancelOutUnit[2]->print();
331 
332  if (L1MuGMTConfig::Debug(2))
333  edm::LogVerbatim("GMT_info") << "running GMT DT/bRPC Cancel Out Unit";
334  if (m_CancelOutUnit[3])
335  m_CancelOutUnit[3]->run();
337  m_CancelOutUnit[3]->print();
338 
339  // run MIP & ISO bit assignment units
340  if (L1MuGMTConfig::Debug(2))
341  edm::LogVerbatim("GMT_info") << "running GMT barrel MIP & ISO bit Assignment Unit";
342  if (m_MipIsoAU[0])
343  m_MipIsoAU[0]->run();
344  if (L1MuGMTConfig::Debug(3) && m_MipIsoAU[0])
345  m_MipIsoAU[0]->print();
346  if (L1MuGMTConfig::Debug(2))
347  edm::LogVerbatim("GMT_info") << "running GMT endcap MIP & ISO bit Assignment Unit";
348  if (m_MipIsoAU[1])
349  m_MipIsoAU[1]->run();
350  if (L1MuGMTConfig::Debug(3) && m_MipIsoAU[1])
351  m_MipIsoAU[1]->print();
352 
353  // run Merger
354  if (L1MuGMTConfig::Debug(2))
355  edm::LogVerbatim("GMT_info") << "running GMT barrel Merger";
356  if (m_Merger[0])
357  m_Merger[0]->run();
358  if (L1MuGMTConfig::Debug(3) && m_Merger[0])
359  m_Merger[0]->print();
360  if (L1MuGMTConfig::Debug(2))
361  edm::LogVerbatim("GMT_info") << "running GMT endcap Merger";
362  if (m_Merger[1])
363  m_Merger[1]->run();
364  if (L1MuGMTConfig::Debug(3) && m_Merger[1])
365  m_Merger[1]->print();
366 
367  // run sorter
368  if (L1MuGMTConfig::Debug(2))
369  edm::LogVerbatim("GMT_info") << "running GMT Sorter";
370  if (m_Sorter)
371  m_Sorter->run();
372  if (L1MuGMTConfig::Debug(1) && m_Sorter)
373  m_Sorter->print();
374 
375  // store found track candidates in a container
376  if (m_Sorter->numberOfCands() > 0) {
377  const std::vector<const L1MuGMTExtendedCand*>& gmt_cont = m_Sorter->Cands();
378  std::vector<const L1MuGMTExtendedCand*>::const_iterator iexc;
379  for (iexc = gmt_cont.begin(); iexc != gmt_cont.end(); iexc++) {
380  if (*iexc)
381  m_ExtendedCands.push_back(**iexc);
382  }
383  }
384 
385  // reset GMT
386  reset();
387  }
388  }
389 
390  // produce the output
391  std::unique_ptr<std::vector<L1MuGMTCand> > GMTCands(new std::vector<L1MuGMTCand>);
392  std::vector<L1MuGMTExtendedCand>::const_iterator iexc;
393  for (iexc = m_ExtendedCands.begin(); iexc != m_ExtendedCands.end(); iexc++) {
394  GMTCands->push_back(*iexc);
395  }
396  e.put(std::move(GMTCands));
397 
398  std::unique_ptr<L1MuGMTReadoutCollection> GMTRRC(getReadoutCollection());
399  e.put(std::move(GMTRRC));
400 
401  if (m_sendMipIso) {
402  std::unique_ptr<std::vector<unsigned> > mipiso(new std::vector<unsigned>);
403  for (int i = 0; i < 32; i++) {
404  mipiso->push_back(m_db->IsMIPISO(0, i));
405  }
406  e.put(std::move(mipiso));
407  }
408 
409  // delete registers and LUTs
411 }
void setGMTChanMask(const L1MuGMTChannelMask *gmtchanmask)
unsigned long long m_L1MuTriggerScalesCacheID
std::vector< L1MuGMTReadoutRecord * > m_ReadoutRingbuffer
OrphanHandle< PROD > put(std::unique_ptr< PROD > product)
Put a new product.
Definition: Event.h:131
unsigned long long m_L1MuGMTChannelMaskCacheID
void print() const
print PSB
Definition: L1MuGMTPSB.cc:212
void SetBX(int bx)
Set the current bunch crossing.
void setTriggerPtScale(const L1MuTriggerPtScale *trigptscale)
void dumpRegs(std::string dir)
std::vector< L1MuGMTExtendedCand > m_ExtendedCands
void print() const
print results after MIP & ISO bit assignment
void print()
print cancel-out bits
bool empty() const
are there any data in the PSB
Definition: L1MuGMTPSB.cc:287
unsigned getSubsystemMask() const
void run()
run Matcher
void print()
print matching results
const std::vector< const L1MuGMTExtendedCand * > & Cands() const
return std::vector with all muon candidates
Definition: L1MuGMTSorter.h:60
unsigned long long m_L1CaloGeometryCacheID
virtual void run()
run Sorter
void run()
run GMT MIP & ISO bit assignment unit
void setGMTScales(const L1MuGMTScales *gmtscales)
unsigned long long m_L1MuTriggerPtScaleCacheID
static bool Debug()
L1MuGMTMipIsoAU * m_MipIsoAU[2]
static const L1MuGMTChannelMask * getGMTChanMask()
std::unique_ptr< L1MuGMTReadoutCollection > getReadoutCollection()
unsigned IsMIPISO(int bx, int idx)
Get stored MIP/ISO select bits.
L1MuGMTMatcher * m_Matcher[2]
void dumpLUTs(std::string dir)
L1MuGMTMerger * m_Merger[2]
void setCaloGeom(const L1CaloGeometry *caloGeom)
void print() const
print results after selection
unsigned long long m_L1MuGMTScalesCacheID
static int getBxMin()
void print()
print results after sorting
L1MuGMTCancelOutUnit * m_CancelOutUnit[4]
void run()
run GMT Merger
void setGMTParams(const L1MuGMTParameters *gmtparams)
def mkdir(path)
Definition: eostools.py:251
void clearLUTsRegs()
void receiveData(edm::Event &e, int bx)
receive muon candidates
Definition: L1MuGMTPSB.cc:86
T get() const
Definition: EventSetup.h:73
void reset()
Reset the debug block.
static L1MuGMTConfig * m_config
unsigned long long m_L1MuGMTParametersCacheID
void createLUTsRegs()
static int getBxMax()
static L1MuGMTDebugBlock * m_db
void setTriggerScales(const L1MuTriggerScales *trigscales)
void run()
run cancel-out unit
T const * product() const
Definition: ESHandle.h:86
int numberOfCands() const
return number of found muon candidates after sorter
Definition: L1MuGMTSorter.h:57
def move(src, dest)
Definition: eostools.py:511
void L1MuGlobalMuonTrigger::reset ( void  )

Definition at line 416 of file L1MuGlobalMuonTrigger.cc.

References m_CancelOutUnit, m_Matcher, m_Merger, m_MipIsoAU, m_PSB, m_Sorter, L1MuGMTSorter::reset(), L1MuGMTMatcher::reset(), L1MuGMTPSB::reset(), L1MuGMTMipIsoAU::reset(), L1MuGMTMerger::reset(), and L1MuGMTCancelOutUnit::reset().

Referenced by produce().

416  {
417  if (m_PSB)
418  m_PSB->reset();
419  if (m_Matcher[0])
420  m_Matcher[0]->reset();
421  if (m_Matcher[1])
422  m_Matcher[1]->reset();
423  if (m_CancelOutUnit[0])
424  m_CancelOutUnit[0]->reset();
425  if (m_CancelOutUnit[1])
426  m_CancelOutUnit[1]->reset();
427  if (m_CancelOutUnit[2])
428  m_CancelOutUnit[2]->reset();
429  if (m_CancelOutUnit[3])
430  m_CancelOutUnit[3]->reset();
431  if (m_MipIsoAU[0])
432  m_MipIsoAU[0]->reset();
433  if (m_MipIsoAU[1])
434  m_MipIsoAU[1]->reset();
435  if (m_Merger[0])
436  m_Merger[0]->reset();
437  if (m_Merger[1])
438  m_Merger[1]->reset();
439  if (m_Sorter)
440  m_Sorter->reset();
441 }
void reset()
clear cancel-out unit
virtual void reset()
reset Sorter
void reset()
clear MIP & ISO bit assignment unit
void reset()
clear PSB
Definition: L1MuGMTPSB.cc:191
L1MuGMTMipIsoAU * m_MipIsoAU[2]
L1MuGMTMatcher * m_Matcher[2]
L1MuGMTMerger * m_Merger[2]
void reset()
clear Merger
L1MuGMTCancelOutUnit * m_CancelOutUnit[4]
void reset()
clear Matcher
const L1MuGMTSorter* L1MuGlobalMuonTrigger::Sorter ( ) const
inline

return pointer to Sorter

Definition at line 76 of file L1MuGlobalMuonTrigger.h.

References getReadoutCollection(), and m_Sorter.

76 { return m_Sorter; }

Member Data Documentation

L1MuGMTCancelOutUnit* L1MuGlobalMuonTrigger::m_CancelOutUnit[4]
private
L1MuGMTConfig * L1MuGlobalMuonTrigger::m_config = 0
staticprivate
L1MuGMTDebugBlock * L1MuGlobalMuonTrigger::m_db = 0
staticprivate
std::vector<L1MuGMTExtendedCand> L1MuGlobalMuonTrigger::m_ExtendedCands
private

Definition at line 97 of file L1MuGlobalMuonTrigger.h.

Referenced by L1MuGlobalMuonTrigger(), and produce().

unsigned long long L1MuGlobalMuonTrigger::m_L1CaloGeometryCacheID
private

Definition at line 112 of file L1MuGlobalMuonTrigger.h.

Referenced by L1MuGlobalMuonTrigger(), and produce().

unsigned long long L1MuGlobalMuonTrigger::m_L1MuGMTChannelMaskCacheID
private

Definition at line 111 of file L1MuGlobalMuonTrigger.h.

Referenced by L1MuGlobalMuonTrigger(), and produce().

unsigned long long L1MuGlobalMuonTrigger::m_L1MuGMTParametersCacheID
private

Definition at line 110 of file L1MuGlobalMuonTrigger.h.

Referenced by L1MuGlobalMuonTrigger(), and produce().

unsigned long long L1MuGlobalMuonTrigger::m_L1MuGMTScalesCacheID
private

Definition at line 107 of file L1MuGlobalMuonTrigger.h.

Referenced by L1MuGlobalMuonTrigger(), and produce().

unsigned long long L1MuGlobalMuonTrigger::m_L1MuTriggerPtScaleCacheID
private

Definition at line 109 of file L1MuGlobalMuonTrigger.h.

Referenced by L1MuGlobalMuonTrigger(), and produce().

unsigned long long L1MuGlobalMuonTrigger::m_L1MuTriggerScalesCacheID
private

Definition at line 108 of file L1MuGlobalMuonTrigger.h.

Referenced by L1MuGlobalMuonTrigger(), and produce().

L1MuGMTMatcher* L1MuGlobalMuonTrigger::m_Matcher[2]
private
L1MuGMTMerger* L1MuGlobalMuonTrigger::m_Merger[2]
private
L1MuGMTMipIsoAU* L1MuGlobalMuonTrigger::m_MipIsoAU[2]
private
L1MuGMTPSB* L1MuGlobalMuonTrigger::m_PSB
private
std::vector<L1MuGMTReadoutRecord*> L1MuGlobalMuonTrigger::m_ReadoutRingbuffer
private
bool L1MuGlobalMuonTrigger::m_sendMipIso
private

Definition at line 101 of file L1MuGlobalMuonTrigger.h.

Referenced by L1MuGlobalMuonTrigger(), and produce().

L1MuGMTSorter* L1MuGlobalMuonTrigger::m_Sorter
private
bool L1MuGlobalMuonTrigger::m_writeLUTsAndRegs
private

Definition at line 100 of file L1MuGlobalMuonTrigger.h.

Referenced by L1MuGlobalMuonTrigger(), and produce().