CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
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)
 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 50 of file L1MuGMTPSB.h.

Constructor & Destructor Documentation

L1MuGMTPSB::L1MuGMTPSB ( const L1MuGlobalMuonTrigger gmt)

constructor

Definition at line 54 of file L1MuGMTPSB.cc.

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

54  :
55  m_gmt(gmt),
59  m_Isol(14,18), m_Mip(14,18) {
60 
64  m_Isol.init(false);
65  m_Mip.init(false);
66 
67 }
void init(T v=0)
initialize matrix
const L1MuGlobalMuonTrigger & m_gmt
Definition: L1MuGMTPSB.h:127
static const unsigned int MAXCSC
Definition: L1MuGMTConfig.h:91
static const unsigned int MAXDTBX
Definition: L1MuGMTConfig.h:91
std::vector< L1MuRegionalCand > m_CscMuons
Definition: L1MuGMTPSB.h:131
L1MuGMTMatrix< bool > m_Isol
Definition: L1MuGMTPSB.h:133
L1MuGMTMatrix< bool > m_Mip
Definition: L1MuGMTPSB.h:134
std::vector< L1MuRegionalCand > m_RpcMuons
Definition: L1MuGMTPSB.h:129
std::vector< L1MuRegionalCand > m_DtbxMuons
Definition: L1MuGMTPSB.h:130
static const unsigned int MAXRPC
Definition: L1MuGMTConfig.h:90
L1MuGMTPSB::~L1MuGMTPSB ( )
virtual

destructor

Definition at line 72 of file L1MuGMTPSB.cc.

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

72  {
73 
74  reset();
75  m_RpcMuons.clear();
76  m_DtbxMuons.clear();
77  m_CscMuons.clear();
78 
79 }
void reset()
clear PSB
Definition: L1MuGMTPSB.cc:196
std::vector< L1MuRegionalCand > m_CscMuons
Definition: L1MuGMTPSB.h:131
std::vector< L1MuRegionalCand > m_RpcMuons
Definition: L1MuGMTPSB.h:129
std::vector< L1MuRegionalCand > m_DtbxMuons
Definition: L1MuGMTPSB.h:130

Member Function Documentation

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

get CSC muon

Definition at line 252 of file L1MuGMTPSB.cc.

References getHLTprescales::index, m_CscMuons, and L1MuGMTConfig::MAXCSC.

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

252  {
253 
254  return ( index < (int)L1MuGMTConfig::MAXCSC && index >= 0 ) ? &(m_CscMuons[index]) : 0;
255 
256 }
static const unsigned int MAXCSC
Definition: L1MuGMTConfig.h:91
std::vector< L1MuRegionalCand > m_CscMuons
Definition: L1MuGMTPSB.h:131
const L1MuRegionalCand * L1MuGMTPSB::DTBXMuon ( int  index) const

get DTBX muon

Definition at line 242 of file L1MuGMTPSB.cc.

References getHLTprescales::index, m_DtbxMuons, and L1MuGMTConfig::MAXDTBX.

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

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

are there any data in the PSB

Definition at line 309 of file L1MuGMTPSB.cc.

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

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

309  {
310 
311  int number = numberRPC() + numberDTBX() + numberCSC();
312 
313  return ( number == 0 );
314 
315 }
int numberDTBX() const
return number of non-empty DTBX muons
Definition: L1MuGMTPSB.cc:277
int numberRPC() const
return number of non-empty RPC muons
Definition: L1MuGMTPSB.cc:261
int numberCSC() const
return number of non-empty CSC muons
Definition: L1MuGMTPSB.cc:293
void L1MuGMTPSB::getCalo ( edm::Event e)
private

get Calorimeter Trigger data

Definition at line 454 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 receiveData().

454  {
455 
458  if(calocoll_h.isValid())
459  {
460  L1CaloRegionCollection const* regions = calocoll_h.product();
461  L1CaloRegionCollection::const_iterator iter;
462 
463  // edm::LogVerbatim("GMT_PSB_info") << "MIP/QUIET bits rceived by the GMT :";
464 
465  for ( iter = regions->begin(); iter != regions->end(); iter++ ) {
466  if ( (*iter).id().ieta() < 4 || (*iter).id().ieta() > 17 || (*iter).id().iphi() > 17 ) continue;
467  m_Isol.set( (*iter).id().ieta()-4, (*iter).id().iphi(), (*iter).quiet() );
468  m_Mip.set( (*iter).id().ieta()-4, (*iter).id().iphi(), (*iter).mip() );
469 
470  if ( (*iter).quiet() )
471  m_gmt.currentReadoutRecord()->setQuietbit ((*iter).id().ieta()-4, (*iter).id().iphi());
472 
473  if ( (*iter).mip() )
474  m_gmt.currentReadoutRecord()->setMIPbit ((*iter).id().ieta()-4, (*iter).id().iphi());
475 
476  // edm::LogVerbatim("GMT_PSB_info") << (*iter).id().ieta()-4 << " "
477  // << (*iter).id().iphi() << " "
478  // << (*iter).quiet() << " "
479  // << (*iter).mip();
480  }
481  } else {
482  if( L1MuGMTConfig::Debug(1) ) {
483  edm::LogWarning("GlobalMuonTrigger")
484  << "\nWarning: GlobalMuonTrigger: input tag " << L1MuGMTConfig::getMipIsoInputTag()
485  << "\nrequested, but not found in the event." << std::endl;
486  }
487  }
488 
489 }
void set(int r, int c, T v)
set matrix element
const L1MuGlobalMuonTrigger & m_gmt
Definition: L1MuGMTPSB.h:127
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:76
bool getByLabel(InputTag const &tag, Handle< PROD > &result) const
Definition: Event.h:361
L1MuGMTMatrix< bool > m_Isol
Definition: L1MuGMTPSB.h:133
T const * product() const
Definition: Handle.h:74
static edm::InputTag getMipIsoInputTag()
L1MuGMTMatrix< bool > m_Mip
Definition: L1MuGMTPSB.h:134
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 380 of file L1MuGMTPSB.cc.

References m_CscMuons, and L1MuGMTConfig::MAXCSC.

Referenced by receiveData().

380  {
381 
382  int icsc = 0;
383  std::vector<L1MuRegionalCand>::const_iterator iter;
384  for ( iter = data->begin(); iter != data->end(); iter++ ) {
385  if ( (*iter).bx() != bx ) continue;
386  if ( icsc < (int)L1MuGMTConfig::MAXCSC ) {
387  m_CscMuons[icsc] = (*iter);
388  icsc++;
389  }
390  }
391 
392 }
static const unsigned int MAXCSC
Definition: L1MuGMTConfig.h:91
std::vector< L1MuRegionalCand > m_CscMuons
Definition: L1MuGMTPSB.h:131
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 357 of file L1MuGMTPSB.cc.

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

Referenced by receiveData().

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

get muons from RPCb Trigger

Definition at line 321 of file L1MuGMTPSB.cc.

References m_RpcMuons, and L1MuGMTConfig::MAXRPCbarrel.

Referenced by receiveData().

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

get muons from RPCf Trigger

Definition at line 339 of file L1MuGMTPSB.cc.

References m_RpcMuons, and L1MuGMTConfig::MAXRPCendcap.

Referenced by receiveData().

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

return isolation bits

Definition at line 91 of file L1MuGMTPSB.h.

References m_Isol.

Referenced by L1MuGMTMipIsoAU::assignISO().

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

return minimum ionizing bits

Definition at line 94 of file L1MuGMTPSB.h.

References m_Mip.

Referenced by L1MuGMTMipIsoAU::assignMIP().

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

return number of non-empty CSC muons

Definition at line 293 of file L1MuGMTPSB.cc.

References prof2calltree::count, and m_CscMuons.

Referenced by empty().

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

return number of non-empty DTBX muons

Definition at line 277 of file L1MuGMTPSB.cc.

References prof2calltree::count, and m_DtbxMuons.

Referenced by empty().

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

return number of non-empty RPC muons

Definition at line 261 of file L1MuGMTPSB.cc.

References prof2calltree::count, and m_RpcMuons.

Referenced by empty().

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

print PSB

Definition at line 217 of file L1MuGMTPSB.cc.

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

Referenced by L1MuGlobalMuonTrigger::produce().

217  {
218 
219  edm::LogVerbatim("GMT_PSB_info") << " ";
220  printDTBX();
221  printRPCbarrel();
222  printCSC();
223  printRPCendcap();
224  edm::LogVerbatim("GMT_PSB_info") << " ";
225 
226 }
void printDTBX() const
print DTBX muons
Definition: L1MuGMTPSB.cc:426
void printRPCbarrel() const
print barrel RPC muons
Definition: L1MuGMTPSB.cc:398
void printCSC() const
print CSC muons
Definition: L1MuGMTPSB.cc:440
void printRPCendcap() const
print endcap RPC muons
Definition: L1MuGMTPSB.cc:412
void L1MuGMTPSB::printCSC ( ) const
private

print CSC muons

Definition at line 440 of file L1MuGMTPSB.cc.

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

Referenced by print().

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

print DTBX muons

Definition at line 426 of file L1MuGMTPSB.cc.

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

Referenced by print().

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

print barrel RPC muons

Definition at line 398 of file L1MuGMTPSB.cc.

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

Referenced by print().

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

print endcap RPC muons

Definition at line 412 of file L1MuGMTPSB.cc.

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

Referenced by print().

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

receive muon candidates

Definition at line 88 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(), i, edm::HandleBase::isValid(), diffTwoXMLs::label, m_CscMuons, m_DtbxMuons, m_gmt, m_RpcMuons, 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().

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

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

get RPC muon

Definition at line 232 of file L1MuGMTPSB.cc.

References getHLTprescales::index, m_RpcMuons, and L1MuGMTConfig::MAXRPC.

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

232  {
233 
234  return ( index < (int)L1MuGMTConfig::MAXRPC && index >= 0 ) ? &(m_RpcMuons[index]) : 0;
235 
236 }
std::vector< L1MuRegionalCand > m_RpcMuons
Definition: L1MuGMTPSB.h:129
static const unsigned int MAXRPC
Definition: L1MuGMTConfig.h:90

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 127 of file L1MuGMTPSB.h.

Referenced by getCalo(), and receiveData().

L1MuGMTMatrix<bool> L1MuGMTPSB::m_Isol
private

Definition at line 133 of file L1MuGMTPSB.h.

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

L1MuGMTMatrix<bool> L1MuGMTPSB::m_Mip
private

Definition at line 134 of file L1MuGMTPSB.h.

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

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