CMS 3D CMS Logo

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

#include <L1MuGMTPSB.h>

Public Member Functions

const L1MuRegionalCandCSCMuon (int index) const
 get CSC muon More...
 
const L1MuRegionalCandDTBXMuon (int index) const
 get DTBX muon More...
 
bool empty () const
 are there any data in the PSB More...
 
const L1MuGMTMatrix< bool > & isolBits () const
 return isolation bits More...
 
 L1MuGMTPSB (const L1MuGlobalMuonTrigger &gmt, edm::ConsumesCollector &&iC)
 constructor More...
 
const L1MuGMTMatrix< bool > & mipBits () const
 return minimum ionizing bits More...
 
int numberCSC () const
 return number of non-empty CSC muons More...
 
int numberDTBX () const
 return number of non-empty DTBX muons More...
 
int numberRPC () const
 return number of non-empty RPC muons More...
 
void print () const
 print PSB More...
 
void receiveData (edm::Event &e, int bx)
 receive muon candidates More...
 
void reset ()
 clear PSB More...
 
const L1MuRegionalCandRPCMuon (int index) const
 get RPC muon More...
 
virtual ~L1MuGMTPSB ()
 destructor More...
 

Private Member Functions

void getCalo (edm::Event &e)
 get Calorimeter Trigger data More...
 
void getCSC (std::vector< L1MuRegionalCand > const *data, int bx)
 get muons from endcap Muon Trigger Track Finder More...
 
void getDTBX (std::vector< L1MuRegionalCand > const *data, int bx)
 get muons from barrel Muon Trigger Track Finder More...
 
void getRPCb (std::vector< L1MuRegionalCand > const *data, int bx)
 get muons from RPCb Trigger More...
 
void getRPCf (std::vector< L1MuRegionalCand > const *data, int bx)
 get muons from RPCf Trigger More...
 
void printCSC () const
 print CSC muons More...
 
void printDTBX () const
 print DTBX muons More...
 
void printRPCbarrel () const
 print barrel RPC muons More...
 
void printRPCendcap () const
 print endcap RPC muons More...
 

Private Attributes

std::vector< L1MuRegionalCandm_CscMuons
 
std::vector< L1MuRegionalCandm_DtbxMuons
 
const L1MuGlobalMuonTriggerm_gmt
 
L1MuGMTMatrix< bool > m_Isol
 
L1MuGMTMatrix< bool > m_Mip
 
std::vector< L1MuRegionalCandm_RpcMuons
 

Detailed Description

L1 Global Muon Trigger Pipelined Synchronising Buffer module.

          the PSB receives muon candidates
          from the barrel track finder, the endcap track finder
          and from the RPC trigger. In addition it gets
          isolation and mip bits from the 
          regional Calorimeter Trigger

Definition at line 49 of file L1MuGMTPSB.h.

Constructor & Destructor Documentation

L1MuGMTPSB::L1MuGMTPSB ( const L1MuGlobalMuonTrigger gmt,
edm::ConsumesCollector &&  iC 
)

constructor

Definition at line 52 of file L1MuGMTPSB.cc.

References L1MuGMTConfig::getCSCInputTag(), L1MuGMTConfig::getDTInputTag(), L1MuGMTConfig::getMipIsoInputTag(), L1MuGMTConfig::getRPCbInputTag(), L1MuGMTConfig::getRPCfInputTag(), L1MuGMTMatrix< T >::init(), m_CscMuons, m_DtbxMuons, m_Isol, m_Mip, m_RpcMuons, L1MuGMTConfig::MAXCSC, L1MuGMTConfig::MAXDTBX, and L1MuGMTConfig::MAXRPC.

52  :
53  m_gmt(gmt),
57  m_Isol(14,18), m_Mip(14,18) {
58 
62  m_Isol.init(false);
63  m_Mip.init(false);
64  iC.consumes<std::vector<L1MuRegionalCand> >(L1MuGMTConfig::getDTInputTag());
65  iC.consumes<std::vector<L1MuRegionalCand> >(L1MuGMTConfig::getCSCInputTag());
66  iC.consumes<std::vector<L1MuRegionalCand> >(L1MuGMTConfig::getRPCbInputTag());
67  iC.consumes<std::vector<L1MuRegionalCand> >(L1MuGMTConfig::getRPCfInputTag());
69 }
EDGetTokenT< ProductType > consumes(edm::InputTag const &tag)
static edm::InputTag getRPCfInputTag()
static edm::InputTag getRPCbInputTag()
void init(T v=0)
initialize matrix
const L1MuGlobalMuonTrigger & m_gmt
Definition: L1MuGMTPSB.h:126
static const unsigned int MAXCSC
Definition: L1MuGMTConfig.h:89
static const unsigned int MAXDTBX
Definition: L1MuGMTConfig.h:89
std::vector< L1MuRegionalCand > m_CscMuons
Definition: L1MuGMTPSB.h:130
L1MuGMTMatrix< bool > m_Isol
Definition: L1MuGMTPSB.h:132
static edm::InputTag getMipIsoInputTag()
L1MuGMTMatrix< bool > m_Mip
Definition: L1MuGMTPSB.h:133
std::vector< L1CaloRegion > L1CaloRegionCollection
std::vector< L1MuRegionalCand > m_RpcMuons
Definition: L1MuGMTPSB.h:128
std::vector< L1MuRegionalCand > m_DtbxMuons
Definition: L1MuGMTPSB.h:129
static edm::InputTag getDTInputTag()
Definition: L1MuGMTConfig.h:99
static const unsigned int MAXRPC
Definition: L1MuGMTConfig.h:88
static edm::InputTag getCSCInputTag()
L1MuGMTPSB::~L1MuGMTPSB ( )
virtual

destructor

Definition at line 74 of file L1MuGMTPSB.cc.

References m_CscMuons, m_DtbxMuons, m_RpcMuons, and reset().

74  {
75 
76  reset();
77  m_RpcMuons.clear();
78  m_DtbxMuons.clear();
79  m_CscMuons.clear();
80 
81 }
void reset()
clear PSB
Definition: L1MuGMTPSB.cc:198
std::vector< L1MuRegionalCand > m_CscMuons
Definition: L1MuGMTPSB.h:130
std::vector< L1MuRegionalCand > m_RpcMuons
Definition: L1MuGMTPSB.h:128
std::vector< L1MuRegionalCand > m_DtbxMuons
Definition: L1MuGMTPSB.h:129

Member Function Documentation

const L1MuRegionalCand * L1MuGMTPSB::CSCMuon ( int  index) const

get CSC muon

Definition at line 254 of file L1MuGMTPSB.cc.

References m_CscMuons, and L1MuGMTConfig::MAXCSC.

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

254  {
255 
256  return ( index < (int)L1MuGMTConfig::MAXCSC && index >= 0 ) ? &(m_CscMuons[index]) : nullptr;
257 
258 }
static const unsigned int MAXCSC
Definition: L1MuGMTConfig.h:89
std::vector< L1MuRegionalCand > m_CscMuons
Definition: L1MuGMTPSB.h:130
const L1MuRegionalCand * L1MuGMTPSB::DTBXMuon ( int  index) const

get DTBX muon

Definition at line 244 of file L1MuGMTPSB.cc.

References m_DtbxMuons, and L1MuGMTConfig::MAXDTBX.

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

244  {
245 
246  return ( index < (int)L1MuGMTConfig::MAXDTBX && index >= 0 ) ? &(m_DtbxMuons[index]) : nullptr;
247 
248 }
static const unsigned int MAXDTBX
Definition: L1MuGMTConfig.h:89
std::vector< L1MuRegionalCand > m_DtbxMuons
Definition: L1MuGMTPSB.h:129
bool L1MuGMTPSB::empty ( void  ) const

are there any data in the PSB

Definition at line 311 of file L1MuGMTPSB.cc.

References numberCSC(), numberDTBX(), and numberRPC().

Referenced by printCSC(), printDTBX(), printRPCbarrel(), printRPCendcap(), L1MuGlobalMuonTrigger::produce(), and receiveData().

311  {
312 
313  int number = numberRPC() + numberDTBX() + numberCSC();
314 
315  return ( number == 0 );
316 
317 }
int numberDTBX() const
return number of non-empty DTBX muons
Definition: L1MuGMTPSB.cc:279
int numberRPC() const
return number of non-empty RPC muons
Definition: L1MuGMTPSB.cc:263
int numberCSC() const
return number of non-empty CSC muons
Definition: L1MuGMTPSB.cc:295
void L1MuGMTPSB::getCalo ( edm::Event e)
private

get Calorimeter Trigger data

Definition at line 456 of file L1MuGMTPSB.cc.

References L1MuGlobalMuonTrigger::currentReadoutRecord(), L1MuGMTConfig::Debug(), edm::Event::getByLabel(), L1MuGMTConfig::getMipIsoInputTag(), edm::HandleBase::isValid(), m_gmt, m_Isol, m_Mip, edm::Handle< T >::product(), L1MuGMTMatrix< T >::set(), L1MuGMTReadoutRecord::setMIPbit(), and L1MuGMTReadoutRecord::setQuietbit().

Referenced by mipBits(), and receiveData().

456  {
457 
460  if(calocoll_h.isValid())
461  {
462  L1CaloRegionCollection const* regions = calocoll_h.product();
463  L1CaloRegionCollection::const_iterator iter;
464 
465  // edm::LogVerbatim("GMT_PSB_info") << "MIP/QUIET bits rceived by the GMT :";
466 
467  for ( iter = regions->begin(); iter != regions->end(); iter++ ) {
468  if ( (*iter).id().ieta() < 4 || (*iter).id().ieta() > 17 || (*iter).id().iphi() > 17 ) continue;
469  m_Isol.set( (*iter).id().ieta()-4, (*iter).id().iphi(), (*iter).quiet() );
470  m_Mip.set( (*iter).id().ieta()-4, (*iter).id().iphi(), (*iter).mip() );
471 
472  if ( (*iter).quiet() )
473  m_gmt.currentReadoutRecord()->setQuietbit ((*iter).id().ieta()-4, (*iter).id().iphi());
474 
475  if ( (*iter).mip() )
476  m_gmt.currentReadoutRecord()->setMIPbit ((*iter).id().ieta()-4, (*iter).id().iphi());
477 
478  // edm::LogVerbatim("GMT_PSB_info") << (*iter).id().ieta()-4 << " "
479  // << (*iter).id().iphi() << " "
480  // << (*iter).quiet() << " "
481  // << (*iter).mip();
482  }
483  } else {
484  if( L1MuGMTConfig::Debug(1) ) {
485  edm::LogWarning("GlobalMuonTrigger")
486  << "\nWarning: GlobalMuonTrigger: input tag " << L1MuGMTConfig::getMipIsoInputTag()
487  << "\nrequested, but not found in the event." << std::endl;
488  }
489  }
490 
491 }
void set(int r, int c, T v)
set matrix element
const L1MuGlobalMuonTrigger & m_gmt
Definition: L1MuGMTPSB.h:126
void setQuietbit(int eta, int phi)
set Quiet bit
void setMIPbit(int eta, int phi)
set MIP bit
static bool Debug()
bool isValid() const
Definition: HandleBase.h:74
bool getByLabel(InputTag const &tag, Handle< PROD > &result) const
Definition: Event.h:480
L1MuGMTMatrix< bool > m_Isol
Definition: L1MuGMTPSB.h:132
T const * product() const
Definition: Handle.h:74
static edm::InputTag getMipIsoInputTag()
L1MuGMTMatrix< bool > m_Mip
Definition: L1MuGMTPSB.h:133
std::vector< L1CaloRegion > L1CaloRegionCollection
L1MuGMTReadoutRecord * currentReadoutRecord() const
return a reference to the current record in the ring buffer
void L1MuGMTPSB::getCSC ( std::vector< L1MuRegionalCand > const *  data,
int  bx 
)
private

get muons from endcap Muon Trigger Track Finder

Definition at line 382 of file L1MuGMTPSB.cc.

References m_CscMuons, and L1MuGMTConfig::MAXCSC.

Referenced by mipBits(), and receiveData().

382  {
383 
384  int icsc = 0;
385  std::vector<L1MuRegionalCand>::const_iterator iter;
386  for ( iter = data->begin(); iter != data->end(); iter++ ) {
387  if ( (*iter).bx() != bx ) continue;
388  if ( icsc < (int)L1MuGMTConfig::MAXCSC ) {
389  m_CscMuons[icsc] = (*iter);
390  icsc++;
391  }
392  }
393 
394 }
static const unsigned int MAXCSC
Definition: L1MuGMTConfig.h:89
std::vector< L1MuRegionalCand > m_CscMuons
Definition: L1MuGMTPSB.h:130
char data[epos_bytes_allocation]
Definition: EPOS_Wrapper.h:82
void L1MuGMTPSB::getDTBX ( std::vector< L1MuRegionalCand > const *  data,
int  bx 
)
private

get muons from barrel Muon Trigger Track Finder

Definition at line 359 of file L1MuGMTPSB.cc.

References L1MuGMTConfig::Debug(), m_DtbxMuons, and L1MuGMTConfig::MAXDTBX.

Referenced by mipBits(), and receiveData().

359  {
360 
361  // temporary hack with bxoffset - to be removed, trigger bx should be 0
362  int bxoffset = 0;
363  int idtbx = 0;
364  std::vector<L1MuRegionalCand>::const_iterator iter;
365  for ( iter = data->begin(); iter != data->end(); iter++ ) {
366  if ( L1MuGMTConfig::Debug(2) ) edm::LogVerbatim("") << "DTTF BX: " << (*iter).bx() << " my bx: " << bx;
367  if ( (*iter).bx() > 10) bxoffset=16;
368  if ( (*iter).bx() != bx+bxoffset ) continue;
369  if ( idtbx < (int)L1MuGMTConfig::MAXDTBX ) {
370  m_DtbxMuons[idtbx] = (*iter);
371  m_DtbxMuons[idtbx].setBx(bx);
372  idtbx++;
373  }
374  }
375 
376 }
static bool Debug()
static const unsigned int MAXDTBX
Definition: L1MuGMTConfig.h:89
char data[epos_bytes_allocation]
Definition: EPOS_Wrapper.h:82
std::vector< L1MuRegionalCand > m_DtbxMuons
Definition: L1MuGMTPSB.h:129
void L1MuGMTPSB::getRPCb ( std::vector< L1MuRegionalCand > const *  data,
int  bx 
)
private

get muons from RPCb Trigger

Definition at line 323 of file L1MuGMTPSB.cc.

References m_RpcMuons, and L1MuGMTConfig::MAXRPCbarrel.

Referenced by mipBits(), and receiveData().

323  {
324 
325  int irpcb = 0;
326  std::vector<L1MuRegionalCand>::const_iterator iter;
327  for ( iter = data->begin(); iter != data->end(); iter++ ) {
328  if ( (*iter).bx() != bx ) continue;
329  if ( irpcb < (int)L1MuGMTConfig::MAXRPCbarrel ) {
330  if(!(*iter).empty()) m_RpcMuons[irpcb] = (*iter);
331  irpcb++;
332  }
333  }
334 
335 }
char data[epos_bytes_allocation]
Definition: EPOS_Wrapper.h:82
static const unsigned int MAXRPCbarrel
Definition: L1MuGMTConfig.h:88
std::vector< L1MuRegionalCand > m_RpcMuons
Definition: L1MuGMTPSB.h:128
void L1MuGMTPSB::getRPCf ( std::vector< L1MuRegionalCand > const *  data,
int  bx 
)
private

get muons from RPCf Trigger

Definition at line 341 of file L1MuGMTPSB.cc.

References m_RpcMuons, and L1MuGMTConfig::MAXRPCendcap.

Referenced by mipBits(), and receiveData().

341  {
342 
343  int irpcf = 0;
344  std::vector<L1MuRegionalCand>::const_iterator iter;
345  for ( iter = data->begin(); iter != data->end(); iter++ ) {
346  if ( (*iter).bx() != bx ) continue;
347  if ( irpcf < (int)L1MuGMTConfig::MAXRPCendcap ) {
348  if(!(*iter).empty()) m_RpcMuons[irpcf+4] = (*iter);
349  irpcf++;
350  }
351  }
352 
353 }
static const unsigned int MAXRPCendcap
Definition: L1MuGMTConfig.h:88
char data[epos_bytes_allocation]
Definition: EPOS_Wrapper.h:82
std::vector< L1MuRegionalCand > m_RpcMuons
Definition: L1MuGMTPSB.h:128
const L1MuGMTMatrix<bool>& L1MuGMTPSB::isolBits ( ) const
inline

return isolation bits

Definition at line 90 of file L1MuGMTPSB.h.

References m_Isol.

Referenced by L1MuGMTMipIsoAU::assignISO().

90 { return m_Isol; }
L1MuGMTMatrix< bool > m_Isol
Definition: L1MuGMTPSB.h:132
const L1MuGMTMatrix<bool>& L1MuGMTPSB::mipBits ( ) const
inline

return minimum ionizing bits

Definition at line 93 of file L1MuGMTPSB.h.

References data, getCalo(), getCSC(), getDTBX(), getRPCb(), getRPCf(), m_Mip, printCSC(), printDTBX(), printRPCbarrel(), and printRPCendcap().

Referenced by L1MuGMTMipIsoAU::assignMIP().

93 { return m_Mip; }
L1MuGMTMatrix< bool > m_Mip
Definition: L1MuGMTPSB.h:133
int L1MuGMTPSB::numberCSC ( ) const

return number of non-empty CSC muons

Definition at line 295 of file L1MuGMTPSB.cc.

References KineDebug3::count(), and m_CscMuons.

Referenced by empty().

295  {
296 
297  int count = 0;
298  std::vector<L1MuRegionalCand>::const_iterator iter = m_CscMuons.begin();
299  while ( iter != m_CscMuons.end() ) {
300  if ( !(*iter).empty() ) count++;
301  iter++;
302  }
303  return count;
304 
305 }
std::vector< L1MuRegionalCand > m_CscMuons
Definition: L1MuGMTPSB.h:130
int L1MuGMTPSB::numberDTBX ( ) const

return number of non-empty DTBX muons

Definition at line 279 of file L1MuGMTPSB.cc.

References KineDebug3::count(), and m_DtbxMuons.

Referenced by empty().

279  {
280 
281  int count = 0;
282  std::vector<L1MuRegionalCand>::const_iterator iter = m_DtbxMuons.begin();
283  while ( iter != m_DtbxMuons.end() ) {
284  if ( !(*iter).empty() ) count++;
285  iter++;
286  }
287  return count;
288 
289 }
std::vector< L1MuRegionalCand > m_DtbxMuons
Definition: L1MuGMTPSB.h:129
int L1MuGMTPSB::numberRPC ( ) const

return number of non-empty RPC muons

Definition at line 263 of file L1MuGMTPSB.cc.

References KineDebug3::count(), and m_RpcMuons.

Referenced by empty().

263  {
264 
265  int count = 0;
266  std::vector<L1MuRegionalCand>::const_iterator iter = m_RpcMuons.begin();
267  while ( iter != m_RpcMuons.end() ) {
268  if ( !(*iter).empty() ) count++;
269  iter++;
270  }
271  return count;
272 
273 }
std::vector< L1MuRegionalCand > m_RpcMuons
Definition: L1MuGMTPSB.h:128
void L1MuGMTPSB::print ( void  ) const

print PSB

Definition at line 219 of file L1MuGMTPSB.cc.

References printCSC(), printDTBX(), printRPCbarrel(), and printRPCendcap().

Referenced by L1MuGlobalMuonTrigger::produce().

219  {
220 
221  edm::LogVerbatim("GMT_PSB_info") << " ";
222  printDTBX();
223  printRPCbarrel();
224  printCSC();
225  printRPCendcap();
226  edm::LogVerbatim("GMT_PSB_info") << " ";
227 
228 }
void printDTBX() const
print DTBX muons
Definition: L1MuGMTPSB.cc:428
void printRPCbarrel() const
print barrel RPC muons
Definition: L1MuGMTPSB.cc:400
void printCSC() const
print CSC muons
Definition: L1MuGMTPSB.cc:442
void printRPCendcap() const
print endcap RPC muons
Definition: L1MuGMTPSB.cc:414
void L1MuGMTPSB::printCSC ( ) const
private

print CSC muons

Definition at line 442 of file L1MuGMTPSB.cc.

References empty(), mps_fire::i, m_CscMuons, and L1MuGMTConfig::MAXCSC.

Referenced by mipBits(), and print().

442  {
443 
444  edm::LogVerbatim("GMT_PSB_info") << "CSC muons received by the GMT :";
445 
446  for ( unsigned i = 0; i < L1MuGMTConfig::MAXCSC; i++ ) {
447  if (!m_CscMuons[i].empty()) m_CscMuons[i].print();
448  }
449 
450 }
bool empty() const
are there any data in the PSB
Definition: L1MuGMTPSB.cc:311
static const unsigned int MAXCSC
Definition: L1MuGMTConfig.h:89
std::vector< L1MuRegionalCand > m_CscMuons
Definition: L1MuGMTPSB.h:130
void L1MuGMTPSB::printDTBX ( ) const
private

print DTBX muons

Definition at line 428 of file L1MuGMTPSB.cc.

References empty(), mps_fire::i, m_DtbxMuons, and L1MuGMTConfig::MAXDTBX.

Referenced by mipBits(), and print().

428  {
429 
430  edm::LogVerbatim("GMT_PSB_info") << "DTBX muons received by the GMT :";
431 
432  for ( unsigned i = 0; i < L1MuGMTConfig::MAXDTBX; i++ ) {
433  if (!m_DtbxMuons[i].empty()) m_DtbxMuons[i].print();
434  }
435 
436 }
bool empty() const
are there any data in the PSB
Definition: L1MuGMTPSB.cc:311
static const unsigned int MAXDTBX
Definition: L1MuGMTConfig.h:89
std::vector< L1MuRegionalCand > m_DtbxMuons
Definition: L1MuGMTPSB.h:129
void L1MuGMTPSB::printRPCbarrel ( ) const
private

print barrel RPC muons

Definition at line 400 of file L1MuGMTPSB.cc.

References empty(), mps_fire::i, m_RpcMuons, and L1MuGMTConfig::MAXRPCbarrel.

Referenced by mipBits(), and print().

400  {
401 
402  edm::LogVerbatim("GMT_PSB_info") << "RPC barrel muons received by the GMT :";
403 
404  for ( unsigned i = 0; i < L1MuGMTConfig::MAXRPCbarrel; i++ ) {
405  if (!m_RpcMuons[i].empty()) m_RpcMuons[i].print();
406  }
407 
408 }
bool empty() const
are there any data in the PSB
Definition: L1MuGMTPSB.cc:311
static const unsigned int MAXRPCbarrel
Definition: L1MuGMTConfig.h:88
std::vector< L1MuRegionalCand > m_RpcMuons
Definition: L1MuGMTPSB.h:128
void L1MuGMTPSB::printRPCendcap ( ) const
private

print endcap RPC muons

Definition at line 414 of file L1MuGMTPSB.cc.

References empty(), mps_fire::i, m_RpcMuons, and L1MuGMTConfig::MAXRPCendcap.

Referenced by mipBits(), and print().

414  {
415 
416  edm::LogVerbatim("GMT_PSB_info") << "RPC endcap muons received by the GMT :";
417 
418  for ( unsigned i = 0; i < L1MuGMTConfig::MAXRPCendcap; i++ ) {
419  if (!m_RpcMuons[i+4].empty()) m_RpcMuons[i+4].print();
420  }
421 
422 }
bool empty() const
are there any data in the PSB
Definition: L1MuGMTPSB.cc:311
static const unsigned int MAXRPCendcap
Definition: L1MuGMTConfig.h:88
std::vector< L1MuRegionalCand > m_RpcMuons
Definition: L1MuGMTPSB.h:128
void L1MuGMTPSB::receiveData ( edm::Event e,
int  bx 
)

receive muon candidates

Definition at line 90 of file L1MuGMTPSB.cc.

References L1MuGlobalMuonTrigger::currentReadoutRecord(), L1MuGMTConfig::Debug(), empty(), L1MuRegionalCand::eta_packed(), edm::Event::getByLabel(), getCalo(), L1MuGMTConfig::getCaloTrigger(), getCSC(), L1MuGMTConfig::getCSCInputTag(), getDTBX(), L1MuGMTConfig::getDTInputTag(), L1MuGMTConfig::getGMTChanMask(), L1MuScale::getLowEdge(), L1MuTriggerScales::getPhiScale(), L1MuTriggerPtScale::getPtScale(), L1MuTriggerScales::getRegionalEtaScale(), getRPCb(), L1MuGMTConfig::getRPCbInputTag(), getRPCf(), L1MuGMTConfig::getRPCfInputTag(), L1MuGMTChannelMask::getSubsystemMask(), L1MuGMTConfig::getTriggerPtScale(), L1MuGMTConfig::getTriggerScales(), mps_fire::i, edm::HandleBase::isValid(), label, m_CscMuons, m_DtbxMuons, m_gmt, m_RpcMuons, RecoTauDiscriminantConfiguration::mask, L1MuRegionalCand::phi_packed(), edm::Handle< T >::product(), L1MuRegionalCand::pt_packed(), L1MuRegionalCand::setEtaValue(), L1MuGMTReadoutRecord::setInputCand(), L1MuRegionalCand::setPhiValue(), L1MuRegionalCand::setPtValue(), and L1MuRegionalCand::type_idx().

Referenced by L1MuGlobalMuonTrigger::produce().

90  {
91 
93 
95 
96  const L1MuGMTChannelMask* theChannelMask = L1MuGMTConfig::getGMTChanMask();
97  unsigned mask = theChannelMask->getSubsystemMask();
98 
99  if((L1MuGMTConfig::getDTInputTag()).label() != "none" && !(mask&1) ) {
101  if(rc_handle.isValid()) {
102  getDTBX(rc_handle.product(),bx);
103  } else {
104  if( L1MuGMTConfig::Debug(1) ) {
105  edm::LogWarning("GlobalMuonTrigger")
106  << "\nWarning: GlobalMuonTrigger: input tag " << L1MuGMTConfig::getDTInputTag()
107  << "\nrequested, but not found in the event." << std::endl;
108  }
109  }
110  }
111  if((L1MuGMTConfig::getCSCInputTag()).label() != "none" && !(mask&4) ) {
113  if(rc_handle.isValid()) {
114  getCSC(rc_handle.product(),bx);
115  } else {
116  if( L1MuGMTConfig::Debug(1) ) {
117  edm::LogWarning("GlobalMuonTrigger")
118  << "\nWarning: GlobalMuonTrigger: input tag " << L1MuGMTConfig::getCSCInputTag()
119  << "\nrequested, but not found in the event." << std::endl;
120  }
121  }
122  }
123  if((L1MuGMTConfig::getRPCbInputTag()).label() != "none" && !(mask&2) ) {
125  if(rc_handle.isValid()) {
126  getRPCb(rc_handle.product(),bx);
127  } else {
128  if( L1MuGMTConfig::Debug(1) ) {
129  edm::LogWarning("GlobalMuonTrigger")
130  << "\nWarning: GlobalMuonTrigger: input tag " << L1MuGMTConfig::getRPCbInputTag()
131  << "\nrequested, but not found in the event." << std::endl;
132  }
133  }
134  }
135  if((L1MuGMTConfig::getRPCfInputTag()).label() != "none" && !(mask&8) ) {
137  if(rc_handle.isValid()) {
138  getRPCf(rc_handle.product(),bx);
139  } else {
140  if( L1MuGMTConfig::Debug(1) ) {
141  edm::LogWarning("GlobalMuonTrigger")
142  << "\nWarning: GlobalMuonTrigger: input tag " << L1MuGMTConfig::getRPCfInputTag()
143  << "\nrequested, but not found in the event." << std::endl;
144  }
145  }
146  }
147 
149 
150  const L1MuTriggerScales* theTriggerScales = L1MuGMTConfig::getTriggerScales();
151  const L1MuTriggerPtScale* theTriggerPtScale = L1MuGMTConfig::getTriggerPtScale();
152 
153  // store data in readout record
154  for (int i=0; i<4; i++) {
156  cand->setPhiValue( theTriggerScales->getPhiScale()->getLowEdge(cand->phi_packed()) );
157  cand->setEtaValue( theTriggerScales->getRegionalEtaScale(cand->type_idx())->getCenter(cand->eta_packed()) );
158  cand->setPtValue( theTriggerPtScale->getPtScale()->getLowEdge(cand->pt_packed()) );
159  // cand->setPtValue( theTriggerScales->getPtScale()->getLowEdge(cand->pt_packed()) );
161  }
162  for (int i=0; i<4; i++) {
163  L1MuRegionalCand* cand = &(m_RpcMuons[i]);
164  cand->setPhiValue( theTriggerScales->getPhiScale()->getLowEdge(cand->phi_packed()) );
165  cand->setEtaValue( theTriggerScales->getRegionalEtaScale(cand->type_idx())->getCenter(cand->eta_packed()) );
166  cand->setPtValue( theTriggerPtScale->getPtScale()->getLowEdge(cand->pt_packed()) );
167  // cand->setPtValue( theTriggerScales->getPtScale()->getLowEdge(cand->pt_packed()) );
168  m_gmt.currentReadoutRecord()->setInputCand ( i+4, *cand );
169  }
170  for (int i=0; i<4; i++) {
171  L1MuRegionalCand* cand = &(m_CscMuons[i]);
172  cand->setPhiValue( theTriggerScales->getPhiScale()->getLowEdge(cand->phi_packed()) );
173  cand->setEtaValue( theTriggerScales->getRegionalEtaScale(cand->type_idx())->getCenter(cand->eta_packed()) );
174  cand->setPtValue( theTriggerPtScale->getPtScale()->getLowEdge(cand->pt_packed()) );
175  // cand->setPtValue( theTriggerScales->getPtScale()->getLowEdge(cand->pt_packed()) );
176  m_gmt.currentReadoutRecord()->setInputCand ( i+8, *cand );
177  }
178  for (int i=0; i<4; i++) {
179  L1MuRegionalCand* cand = &(m_RpcMuons[i+4]);
180  cand->setPhiValue( theTriggerScales->getPhiScale()->getLowEdge(cand->phi_packed()) );
181  cand->setEtaValue( theTriggerScales->getRegionalEtaScale(cand->type_idx())->getCenter(cand->eta_packed()) );
182  cand->setPtValue( theTriggerPtScale->getPtScale()->getLowEdge(cand->pt_packed()) );
183  // cand->setPtValue( theTriggerScales->getPtScale()->getLowEdge(cand->pt_packed()) );
184  m_gmt.currentReadoutRecord()->setInputCand ( i+12, *cand );
185  }
186 
187 
188  // if there is at least one muon start the calorimeter trigger
189 
190  if ( L1MuGMTConfig::getCaloTrigger() && !empty() ) getCalo(e);
191 
192 }
void getRPCf(std::vector< L1MuRegionalCand > const *data, int bx)
get muons from RPCf Trigger
Definition: L1MuGMTPSB.cc:341
void getCSC(std::vector< L1MuRegionalCand > const *data, int bx)
get muons from endcap Muon Trigger Track Finder
Definition: L1MuGMTPSB.cc:382
static edm::InputTag getRPCfInputTag()
static edm::InputTag getRPCbInputTag()
const L1MuScale * getPtScale() const
get the Pt scale
static bool getCaloTrigger()
bool empty() const
are there any data in the PSB
Definition: L1MuGMTPSB.cc:311
void setInputCand(int nr, unsigned data)
set Input muon
unsigned getSubsystemMask() const
void getCalo(edm::Event &e)
get Calorimeter Trigger data
Definition: L1MuGMTPSB.cc:456
const L1MuGlobalMuonTrigger & m_gmt
Definition: L1MuGMTPSB.h:126
void setPtValue(float ptVal)
Set Pt Value.
char const * label
static bool Debug()
void setPhiValue(float phiVal)
Set Phi Value.
const L1MuScale * getPhiScale() const
get the phi scale
static const L1MuGMTChannelMask * getGMTChanMask()
void setEtaValue(float etaVal)
Set Eta Value (need to set type, first)
unsigned eta_packed() const
return eta packed as in hardware
bool isValid() const
Definition: HandleBase.h:74
std::vector< L1MuRegionalCand > m_CscMuons
Definition: L1MuGMTPSB.h:130
bool getByLabel(InputTag const &tag, Handle< PROD > &result) const
Definition: Event.h:480
static const L1MuTriggerPtScale * getTriggerPtScale()
T const * product() const
Definition: Handle.h:74
static const L1MuTriggerScales * getTriggerScales()
void getRPCb(std::vector< L1MuRegionalCand > const *data, int bx)
get muons from RPCb Trigger
Definition: L1MuGMTPSB.cc:323
const L1MuScale * getRegionalEtaScale(int isys) const
get the regioanl muon trigger eta scale, isys = 0(DT), 1(bRPC), 2(CSC), 3(fwdRPC) ...
virtual float getLowEdge(unsigned packed) const =0
get the low edge of bin represented by packed
void getDTBX(std::vector< L1MuRegionalCand > const *data, int bx)
get muons from barrel Muon Trigger Track Finder
Definition: L1MuGMTPSB.cc:359
std::vector< L1MuRegionalCand > m_RpcMuons
Definition: L1MuGMTPSB.h:128
unsigned pt_packed() const
return pt packed as in hardware
std::vector< L1MuRegionalCand > m_DtbxMuons
Definition: L1MuGMTPSB.h:129
static edm::InputTag getDTInputTag()
Definition: L1MuGMTConfig.h:99
unsigned type_idx() const
return type: 0 DT, 1 bRPC, 2 CSC, 3 fRPC
L1MuGMTReadoutRecord * currentReadoutRecord() const
return a reference to the current record in the ring buffer
unsigned phi_packed() const
return phi packed as in hardware
static edm::InputTag getCSCInputTag()
void L1MuGMTPSB::reset ( void  )

clear PSB

Definition at line 198 of file L1MuGMTPSB.cc.

References L1MuGMTMatrix< T >::init(), m_CscMuons, m_DtbxMuons, m_Isol, m_Mip, and m_RpcMuons.

Referenced by L1MuGlobalMuonTrigger::reset(), and ~L1MuGMTPSB().

198  {
199 
200  std::vector<L1MuRegionalCand>::iterator iter;
201  iter = m_RpcMuons.begin();
202  while ( iter != m_RpcMuons.end() ) (*(iter++)).reset();
203 
204  iter = m_DtbxMuons.begin();
205  while ( iter != m_DtbxMuons.end() )(*(iter++)).reset();
206 
207  iter = m_CscMuons.begin();
208  while ( iter != m_CscMuons.end() ) (*(iter++)).reset();
209 
210  m_Isol.init(false);
211  m_Mip.init(false);
212 
213 }
void init(T v=0)
initialize matrix
void reset()
clear PSB
Definition: L1MuGMTPSB.cc:198
std::vector< L1MuRegionalCand > m_CscMuons
Definition: L1MuGMTPSB.h:130
L1MuGMTMatrix< bool > m_Isol
Definition: L1MuGMTPSB.h:132
L1MuGMTMatrix< bool > m_Mip
Definition: L1MuGMTPSB.h:133
std::vector< L1MuRegionalCand > m_RpcMuons
Definition: L1MuGMTPSB.h:128
std::vector< L1MuRegionalCand > m_DtbxMuons
Definition: L1MuGMTPSB.h:129
const L1MuRegionalCand * L1MuGMTPSB::RPCMuon ( int  index) const

get RPC muon

Definition at line 234 of file L1MuGMTPSB.cc.

References m_RpcMuons, and L1MuGMTConfig::MAXRPC.

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

234  {
235 
236  return ( index < (int)L1MuGMTConfig::MAXRPC && index >= 0 ) ? &(m_RpcMuons[index]) : nullptr;
237 
238 }
std::vector< L1MuRegionalCand > m_RpcMuons
Definition: L1MuGMTPSB.h:128
static const unsigned int MAXRPC
Definition: L1MuGMTConfig.h:88

Member Data Documentation

std::vector<L1MuRegionalCand> L1MuGMTPSB::m_CscMuons
private
std::vector<L1MuRegionalCand> L1MuGMTPSB::m_DtbxMuons
private
const L1MuGlobalMuonTrigger& L1MuGMTPSB::m_gmt
private

Definition at line 126 of file L1MuGMTPSB.h.

Referenced by getCalo(), and receiveData().

L1MuGMTMatrix<bool> L1MuGMTPSB::m_Isol
private

Definition at line 132 of file L1MuGMTPSB.h.

Referenced by getCalo(), isolBits(), L1MuGMTPSB(), and reset().

L1MuGMTMatrix<bool> L1MuGMTPSB::m_Mip
private

Definition at line 133 of file L1MuGMTPSB.h.

Referenced by getCalo(), L1MuGMTPSB(), mipBits(), and reset().

std::vector<L1MuRegionalCand> L1MuGMTPSB::m_RpcMuons
private