CMS 3D CMS Logo

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

#include <L1MuBMTrackFinder.h>

Public Types

typedef l1t::RegionalMuonCandBxCollection::const_iterator TFtracks_const_iter
 container for muon candidates More...
 
typedef l1t::RegionalMuonCandBxCollection::iterator TFtracks_iter
 

Public Member Functions

TFtracks_const_iter begin (int bx)
 
void clear ()
 
TFtracks_const_iter end (int bx)
 
const L1MuBMEtaProcessorep (int id) const
 get a pointer to an Eta Processor, index [0-11] More...
 
l1t::RegionalMuonCandBxCollectiongetcache ()
 
l1t::RegionalMuonCandBxCollectiongetcache0 ()
 
 L1MuBMTrackFinder (const edm::ParameterSet &ps, edm::ConsumesCollector &&iC)
 constructor More...
 
const L1MuBMMuonSorterms () const
 get a pointer to the BM Muon Sorter More...
 
int numberOfTracks ()
 get number of muon candidates found by the barrel MTTF More...
 
int numberOfTracks (int bx)
 get number of muon candidates found by the barrel MTTF at a given bx More...
 
void reset ()
 reset the barrel MTTF More...
 
void run (const edm::Event &e, const edm::EventSetup &c)
 run the barrel MTTF More...
 
int setAdd (int ust, int rel_add)
 
void setup (edm::ConsumesCollector &&)
 build the structure of the barrel MTTF More...
 
const L1MuBMSectorProcessorsp (const L1MuBMSecProcId &) const
 get a pointer to a Sector Processor More...
 
const L1MuBMWedgeSorterws (int id) const
 get a pointer to a Wedge Sorter, index [0-11] More...
 
virtual ~L1MuBMTrackFinder ()
 destructor More...
 

Static Public Member Functions

static const L1MuBMTFConfigconfig ()
 return configuration More...
 

Private Member Functions

virtual void reconstruct (const edm::Event &e, const edm::EventSetup &c)
 run Track Finder and store candidates in cache More...
 

Private Attributes

l1t::RegionalMuonCandBxCollection _cache
 
l1t::RegionalMuonCandBxCollection _cache0
 
edm::EDGetTokenT< L1MuDTChambPhContainerm_DTDigiToken
 
std::vector< L1MuBMEtaProcessor * > m_epvec
 Eta Processors. More...
 
L1MuBMMuonSorterm_ms
 BM Muon Sorter. More...
 
L1MuBMSecProcMapm_spmap
 Sector Processors. More...
 
std::vector< L1MuBMWedgeSorter * > m_wsvec
 Wedge Sorters. More...
 

Static Private Attributes

static L1MuBMTFConfigm_config = 0
 Track Finder configuration. More...
 

Detailed Description

L1 barrel Muon Trigger Track Finder (MTTF)

The barrel MTTF consists of:

N. Neumeister CERN EP J. Troconiz UAM Madrid modification: G.Karathanasis UoAthens

Definition at line 63 of file L1MuBMTrackFinder.h.

Member Typedef Documentation

container for muon candidates

Definition at line 68 of file L1MuBMTrackFinder.h.

Definition at line 69 of file L1MuBMTrackFinder.h.

Constructor & Destructor Documentation

L1MuBMTrackFinder::L1MuBMTrackFinder ( const edm::ParameterSet ps,
edm::ConsumesCollector &&  iC 
)

constructor

Definition at line 59 of file L1MuBMTrackFinder.cc.

References gather_cfg::cout, L1MuBMTFConfig::Debug(), L1MuBMTFConfig::getBMDigiInputTag(), m_config, m_DTDigiToken, m_epvec, m_ms, m_spmap, and m_wsvec.

59  :
60 _cache0(144,-9,8),_cache(36, -9, 8) {
61  // set configuration parameters
62  if ( m_config == 0 ) m_config = new L1MuBMTFConfig(ps);
63 
64  if ( L1MuBMTFConfig::Debug(1) ) cout << endl;
65  if ( L1MuBMTFConfig::Debug(1) ) cout << "**** entering L1MuBMTrackFinder ****" << endl;
66  if ( L1MuBMTFConfig::Debug(1) ) cout << endl;
67 
68  m_spmap = new L1MuBMSecProcMap();
69  m_epvec.reserve(12);
70  m_wsvec.reserve(12);
71  m_ms = 0;
72 
74 }
EDGetTokenT< ProductType > consumes(edm::InputTag const &tag)
edm::EDGetTokenT< L1MuDTChambPhContainer > m_DTDigiToken
L1MuBMMuonSorter * m_ms
BM Muon Sorter.
static edm::InputTag getBMDigiInputTag()
std::vector< L1MuBMWedgeSorter * > m_wsvec
Wedge Sorters.
static L1MuBMTFConfig * m_config
Track Finder configuration.
l1t::RegionalMuonCandBxCollection _cache0
std::vector< L1MuBMEtaProcessor * > m_epvec
Eta Processors.
static bool Debug()
l1t::RegionalMuonCandBxCollection _cache
L1MuBMSecProcMap * m_spmap
Sector Processors.
L1MuBMTrackFinder::~L1MuBMTrackFinder ( )
virtual

destructor

Definition at line 81 of file L1MuBMTrackFinder.cc.

References m_config, m_epvec, m_ms, m_spmap, and m_wsvec.

81  {
82 
83  delete m_spmap;
84 
85  vector<L1MuBMEtaProcessor*>::iterator it_ep = m_epvec.begin();
86  while ( it_ep != m_epvec.end() ) {
87  delete (*it_ep);
88  it_ep++;
89  }
90  m_epvec.clear();
91 
92  vector<L1MuBMWedgeSorter*>::iterator it_ws = m_wsvec.begin();
93  while ( it_ws != m_wsvec.end() ) {
94  delete (*it_ws);
95  it_ws++;
96  }
97  m_wsvec.clear();
98 
99  delete m_ms;
100 
101  if ( m_config ) delete m_config;
102  m_config = 0;
103 
104 }
L1MuBMMuonSorter * m_ms
BM Muon Sorter.
std::vector< L1MuBMWedgeSorter * > m_wsvec
Wedge Sorters.
static L1MuBMTFConfig * m_config
Track Finder configuration.
std::vector< L1MuBMEtaProcessor * > m_epvec
Eta Processors.
L1MuBMSecProcMap * m_spmap
Sector Processors.

Member Function Documentation

L1MuBMTrackFinder::TFtracks_const_iter L1MuBMTrackFinder::begin ( int  bx)

Definition at line 404 of file L1MuBMTrackFinder.cc.

References _cache, and BXVector< T >::begin().

Referenced by ms().

404  {
405 
406  return _cache.begin(bx);
407 
408 }
l1t::RegionalMuonCandBxCollection _cache
const_iterator begin(int bx) const
void L1MuBMTrackFinder::clear ( void  )

Definition at line 418 of file L1MuBMTrackFinder.cc.

References _cache, _cache0, and BXVector< T >::clear().

Referenced by ms(), and L1TMuonBarrelTrackProducer::produce().

418  {
419 
420  _cache.clear();
421  _cache0.clear();
422 
423 }
l1t::RegionalMuonCandBxCollection _cache0
void clear()
l1t::RegionalMuonCandBxCollection _cache
static const L1MuBMTFConfig* L1MuBMTrackFinder::config ( void  )
inlinestatic

return configuration

Definition at line 113 of file L1MuBMTrackFinder.h.

References m_config.

113 { return m_config; }
static L1MuBMTFConfig * m_config
Track Finder configuration.
L1MuBMTrackFinder::TFtracks_const_iter L1MuBMTrackFinder::end ( int  bx)

Definition at line 411 of file L1MuBMTrackFinder.cc.

References _cache, and BXVector< T >::end().

Referenced by ms().

411  {
412 
413  return _cache.end(bx);
414 
415 }
const_iterator end(int bx) const
l1t::RegionalMuonCandBxCollection _cache
const L1MuBMEtaProcessor* L1MuBMTrackFinder::ep ( int  id) const
inline

get a pointer to an Eta Processor, index [0-11]

Definition at line 92 of file L1MuBMTrackFinder.h.

References hcalTTPDigis_cfi::id, and m_epvec.

Referenced by setup().

92 { return m_epvec[id]; }
std::vector< L1MuBMEtaProcessor * > m_epvec
Eta Processors.
l1t::RegionalMuonCandBxCollection& L1MuBMTrackFinder::getcache ( )
inline

Definition at line 117 of file L1MuBMTrackFinder.h.

References _cache.

Referenced by L1TMuonBarrelTrackProducer::produce().

117 { return _cache; }
l1t::RegionalMuonCandBxCollection _cache
l1t::RegionalMuonCandBxCollection& L1MuBMTrackFinder::getcache0 ( )
inline

Definition at line 118 of file L1MuBMTrackFinder.h.

References _cache0.

Referenced by L1TMuonBarrelTrackProducer::produce().

118 { return _cache0; }
l1t::RegionalMuonCandBxCollection _cache0
const L1MuBMMuonSorter* L1MuBMTrackFinder::ms ( ) const
inline

get a pointer to the BM Muon Sorter

Definition at line 98 of file L1MuBMTrackFinder.h.

References begin(), clear(), end(), m_ms, and numberOfTracks().

98 { return m_ms; }
L1MuBMMuonSorter * m_ms
BM Muon Sorter.
int L1MuBMTrackFinder::numberOfTracks ( )

get number of muon candidates found by the barrel MTTF

Definition at line 395 of file L1MuBMTrackFinder.cc.

References _cache, BXVector< T >::getFirstBX(), BXVector< T >::getLastBX(), pileupDistInMC::num, and BXVector< T >::size().

Referenced by ms(), and L1TMuonBarrelTrackProducer::produce().

395  {
396  int num = 0;
397  for (int bx = _cache.getFirstBX(); bx < _cache.getLastBX(); ++bx) {
398  num += _cache.size(bx);
399  }
400  return num;
401 }
unsigned size(int bx) const
int getFirstBX() const
l1t::RegionalMuonCandBxCollection _cache
int getLastBX() const
int L1MuBMTrackFinder::numberOfTracks ( int  bx)

get number of muon candidates found by the barrel MTTF at a given bx

Definition at line 429 of file L1MuBMTrackFinder.cc.

References _cache, and BXVector< T >::size().

429  {
430  return _cache.size(0);
431 }
unsigned size(int bx) const
l1t::RegionalMuonCandBxCollection _cache
virtual void L1MuBMTrackFinder::reconstruct ( const edm::Event e,
const edm::EventSetup c 
)
inlineprivatevirtual

run Track Finder and store candidates in cache

Definition at line 123 of file L1MuBMTrackFinder.h.

References reset(), and run().

123 { reset(); run(e,c); }
void run(const edm::Event &e, const edm::EventSetup &c)
run the barrel MTTF
void reset()
reset the barrel MTTF
void L1MuBMTrackFinder::reset ( void  )

reset the barrel MTTF

Definition at line 357 of file L1MuBMTrackFinder.cc.

References L1MuBMSecProcMap::begin(), L1MuBMSecProcMap::end(), m_epvec, m_ms, m_spmap, m_wsvec, and L1MuBMMuonSorter::reset().

Referenced by reconstruct(), and run().

357  {
358 
360  while ( it_sp != m_spmap->end() ) {
361  if ( (*it_sp).second ) (*it_sp).second->reset();
362  it_sp++;
363  }
364 
365  vector<L1MuBMEtaProcessor*>::iterator it_ep = m_epvec.begin();
366  while ( it_ep != m_epvec.end() ) {
367  if ( *it_ep ) (*it_ep)->reset();
368  it_ep++;
369  }
370 
371  vector<L1MuBMWedgeSorter*>::iterator it_ws = m_wsvec.begin();
372  while ( it_ws != m_wsvec.end() ) {
373  if ( *it_ws ) (*it_ws)->reset();
374  it_ws++;
375  }
376 
377  if ( m_ms ) m_ms->reset();
378 
379 }
L1MuBMMuonSorter * m_ms
BM Muon Sorter.
SPmap::iterator SPmap_iter
virtual void reset()
reset Muon Sorter
std::vector< L1MuBMWedgeSorter * > m_wsvec
Wedge Sorters.
SPmap_iter begin()
return iterator which points to the first entry of the container
std::vector< L1MuBMEtaProcessor * > m_epvec
Eta Processors.
SPmap_iter end()
return iterator which points to the one-past-last entry of the container
L1MuBMSecProcMap * m_spmap
Sector Processors.
void L1MuBMTrackFinder::run ( const edm::Event e,
const edm::EventSetup c 
)

run the barrel MTTF

Definition at line 153 of file L1MuBMTrackFinder.cc.

References _cache, _cache0, funct::abs(), L1MuBMTrack::address(), L1MuBMSecProcMap::begin(), l1t::bmtf, L1MuBMTrack::bx(), L1MuDTChambPhContainer::bxEmpty(), gather_cfg::cout, L1MuBMTFConfig::Debug(), L1MuBMTrack::empty(), L1MuBMSecProcMap::end(), L1MuBMTFConfig::getBxMax(), L1MuBMTFConfig::getBxMin(), edm::Event::getByToken(), L1MuDTChambPhContainer::getContainer(), l1t::RegionalMuonCand::hwEta(), l1t::RegionalMuonCand::hwHF(), l1t::RegionalMuonCand::hwPhi(), l1t::RegionalMuonCand::hwQual(), l1t::RegionalMuonCand::hwSign(), l1t::RegionalMuonCand::hwSignValid(), l1t::RegionalMuonCand::kSegSelStat1, l1t::RegionalMuonCand::kSegSelStat2, l1t::RegionalMuonCand::kSegSelStat3, l1t::RegionalMuonCand::kSegSelStat4, l1t::RegionalMuonCand::kStat1, l1t::RegionalMuonCand::kStat2, l1t::RegionalMuonCand::kStat3, l1t::RegionalMuonCand::kStat4, l1t::RegionalMuonCand::kWheelNum, l1t::RegionalMuonCand::kWheelSide, m_config, m_DTDigiToken, m_epvec, m_spmap, m_wsvec, L1MuBMTrack::pt(), BXVector< T >::push_back(), reset(), L1MuBMSecProcId::sector(), setAdd(), BXVector< T >::setBXRange(), L1MuBMTFConfig::setDefaultsES(), l1t::RegionalMuonCand::setHwEta(), l1t::RegionalMuonCand::setHwHF(), l1t::RegionalMuonCand::setHwPhi(), l1t::RegionalMuonCand::setHwPt(), l1t::RegionalMuonCand::setHwQual(), l1t::RegionalMuonCand::setHwSign(), l1t::RegionalMuonCand::setHwSignValid(), l1t::RegionalMuonCand::setTFIdentifiers(), l1t::RegionalMuonCand::setTrackSubAddress(), L1MuBMTrack::spid(), and L1MuBMSecProcId::wheel().

Referenced by L1TMuonBarrelTrackProducer::produce(), and reconstruct().

153  {
154 
156  int bx_min = L1MuBMTFConfig::getBxMin();
157  int bx_max = L1MuBMTFConfig::getBxMax();
158 
159  //Resize the bx range according to the config file
160  _cache0.setBXRange(bx_min,bx_max);
161  _cache.setBXRange(bx_min,bx_max);
162 
163 
164 
165 // run the barrel Muon Trigger Track Finder
167  e.getByToken(m_DTDigiToken,dttrig);
168  if ( dttrig->getContainer()->size() == 0 ) return;
169 
170  if ( L1MuBMTFConfig::Debug(2) ) cout << endl;
171  if ( L1MuBMTFConfig::Debug(2) ) cout << "**** L1MuBMTrackFinder processing ------****" << endl;
172  if ( L1MuBMTFConfig::Debug(2) ) cout << endl;
173 
174  for ( int bx = bx_min; bx <= bx_max; bx++ ) {
175  if ( dttrig->bxEmpty(bx) ) continue;
176 
177  if ( L1MuBMTFConfig::Debug(2) ) cout << "L1MuBMTrackFinder processing bunch-crossing : " << bx << endl;
178 
179  // reset MTTF
180  reset();
181 
182  // run sector processors
184  while ( it_sp != m_spmap->end() ) {
185  if ( L1MuBMTFConfig::Debug(2) ) cout << "running "
186  << (*it_sp).second->id() << endl;
187  if ( (*it_sp).second ) (*it_sp).second->run(bx,e,c);
188  if ( L1MuBMTFConfig::Debug(2) && (*it_sp).second ) (*it_sp).second->print();
189  it_sp++;
190  }
191 
192  // run eta processors
193  vector<L1MuBMEtaProcessor*>::iterator it_ep = m_epvec.begin();
194  while ( it_ep != m_epvec.end() ) {
195  if ( L1MuBMTFConfig::Debug(2) ) cout << "running Eta Processor "
196  << (*it_ep)->id() << endl;
197  if ( *it_ep ) (*it_ep)->run(bx,e,c);
198  if ( L1MuBMTFConfig::Debug(2) && *it_ep ) (*it_ep)->print();
199  it_ep++;
200  }
201 
202  // read sector processors
203  it_sp = m_spmap->begin();
204  while ( it_sp != m_spmap->end() ) {
205  if ( L1MuBMTFConfig::Debug(2) ) cout << "reading "
206  << (*it_sp).second->id() << endl;
207  for ( int number = 0; number < 2; number++ ) {
208  const L1MuBMTrack* cand = (*it_sp).second->tracK(number);
209 
210  if ( cand && !cand->empty() ) {
211 
213 
214  // max value in LUTs is 117
215  if(cand->hwEta()>-117 || cand->hwEta()<117 )
216  rmc.setHwEta(cand->hwEta());
217  else
218  rmc.setHwEta(-1000);
219 
220  rmc.setHwPt(cand->pt());
221  int abs_add_1 = setAdd(1,cand->address(1));
222  int abs_add_2 = setAdd(2,cand->address(2));
223  int abs_add_3 = setAdd(3,cand->address(3));
224  int abs_add_4 = setAdd(4,cand->address(4));
225 
226  rmc.setTrackSubAddress(l1t::RegionalMuonCand::kWheelSide, cand->spid().wheel() < 0); // this has to be set!
227  rmc.setTrackSubAddress(l1t::RegionalMuonCand::kWheelNum, abs(cand->spid().wheel()) - 1); // this has to be set!
236  rmc.setHwHF(cand->hwHF());
237 
238  rmc.setHwPhi(cand->hwPhi());
239  rmc.setHwSign(cand->hwSign() == 1 ? 0 : 1 );
240  rmc.setHwSignValid(cand->hwSignValid());
241  rmc.setHwQual(cand->hwQual());
243 
244  _cache0.push_back(cand->bx(), rmc);
245 
246  }
247  }
248  it_sp++;
249  }
250 
251  // run wedge sorters
252  vector<L1MuBMWedgeSorter*>::iterator it_ws = m_wsvec.begin();
253  while ( it_ws != m_wsvec.end() ) {
254  if ( L1MuBMTFConfig::Debug(2) ) cout << "running Wedge Sorter "
255  << (*it_ws)->id() << endl;
256  if ( *it_ws ) (*it_ws)->run();
257  if ( L1MuBMTFConfig::Debug(2) && *it_ws ) (*it_ws)->print();
258 
259  // store found track candidates in container (cache)
260  if ( (*it_ws)->anyMuonCands() ) {
261  const vector<const L1MuBMTrack*>& mttf_cont = (*it_ws)->tracks();
262 
263  vector<const L1MuBMTrack*>::const_iterator iter;
264  for ( iter = mttf_cont.begin(); iter != mttf_cont.end(); iter++ ) {
265  if(!*iter) continue;
267  rmc.setHwPt((*iter)->hwPt());
268  int abs_add_1 = setAdd(1,(*iter)->address(1));
269  int abs_add_2 = setAdd(2,(*iter)->address(2));
270  int abs_add_3 = setAdd(3,(*iter)->address(3));
271  int abs_add_4 = setAdd(4,(*iter)->address(4));
272 
273  rmc.setTrackSubAddress(l1t::RegionalMuonCand::kWheelSide, (*iter)->spid().wheel() < 0); // this has to be set!
274  rmc.setTrackSubAddress(l1t::RegionalMuonCand::kWheelNum, abs((*iter)->spid().wheel()) - 1); // this has to be set!
283  rmc.setHwHF((*iter)->hwHF());
284 
285  rmc.setHwPhi((*iter)->hwPhi());
286  if((*iter)->hwEta()>-117 || (*iter)->hwEta()<117 )
287  // rmc.setHwEta(eta_map[(*iter)->hwEta()]);
288  rmc.setHwEta((*iter)->hwEta());
289  else
290  rmc.setHwEta(-1000);
291  rmc.setHwSign((*iter)->hwSign() == 1 ? 0 : 1);
292  rmc.setHwSignValid((*iter)->hwSignValid());
293  rmc.setHwQual((*iter)->hwQual());
294  rmc.setTFIdentifiers((*iter)->spid().sector(),l1t::tftype::bmtf);
295 
296  if ( *iter ){ _cache.push_back((*iter)->bx(), rmc);}
297  }
298  }
299 
300  it_ws++;
301 
302  }//end wedge sorting
303 
304  /* // run muon sorter
305  if ( L1MuBMTFConfig::Debug(2) ) cout << "running BM Muon Sorter" << endl;
306  if ( m_ms ) m_ms->run();
307  if ( L1MuBMTFConfig::Debug(2) && m_ms ) m_ms->print();
308 
309 
310  // store found track candidates in container (cache)
311  if ( m_ms->numberOfTracks() > 0 ) {
312  const vector<const L1MuBMTrack*>& mttf_cont = m_ms->tracks();
313  vector<const L1MuBMTrack*>::const_iterator iter;
314  for ( iter = mttf_cont.begin(); iter != mttf_cont.end(); iter++ ) {
315 
316  l1t::RegionalMuonCand rmc;
317  rmc.setHwPt((*iter)->hwPt());
318  int abs_add_1 = setAdd(1,(*iter)->address(1));
319  int abs_add_2 = setAdd(2,(*iter)->address(2));
320  int abs_add_3 = setAdd(3,(*iter)->address(3));
321  int abs_add_4 = setAdd(4,(*iter)->address(4));
322 
323  rmc.setTrackSubAddress(l1t::RegionalMuonCand::kWheelSide, (*iter)->spid().wheel() < 0); // this has to be set!
324  rmc.setTrackSubAddress(l1t::RegionalMuonCand::kWheelNum, abs((*iter)->spid().wheel()) - 1); // this has to be set!
325  rmc.setTrackSubAddress(l1t::RegionalMuonCand::kStat1, abs_add_1);
326  rmc.setTrackSubAddress(l1t::RegionalMuonCand::kStat2, abs_add_2);
327  rmc.setTrackSubAddress(l1t::RegionalMuonCand::kStat3, abs_add_3);
328  rmc.setTrackSubAddress(l1t::RegionalMuonCand::kStat4, abs_add_4);
329  rmc.setTrackSubAddress(l1t::RegionalMuonCand::kSegSelStat1, 0);
330  rmc.setTrackSubAddress(l1t::RegionalMuonCand::kSegSelStat2, 0);
331  rmc.setTrackSubAddress(l1t::RegionalMuonCand::kSegSelStat3, 0);
332  rmc.setTrackSubAddress(l1t::RegionalMuonCand::kSegSelStat4, 0);
333 
334 
335  rmc.setHwPhi((*iter)->hwPhi());
336  if((*iter)->hwEta()>-33 || (*iter)->hwEta()<32 )
337  rmc.setHwEta(eta_map[(*iter)->hwEta()]);
338  else
339  rmc.setHwEta(-1000);
340  rmc.setHwSign((*iter)->hwSign() == 1 ? 0 : 1);
341  rmc.setHwSignValid((*iter)->hwSignValid());
342  rmc.setHwQual((*iter)->hwQual());
343  rmc.setTFIdentifiers((*iter)->spid().sector(),l1t::tftype::bmtf);
344 
345  if ( *iter ){ _cache.push_back((*iter)->bx(), rmc);}
346  }
347  }
348  */
349 
350  }//end of bx loop
351 }
static int getBxMax()
edm::EDGetTokenT< L1MuDTChambPhContainer > m_DTDigiToken
unsigned int pt() const
get pt-code (5 bits)
Definition: L1MuBMTrack.h:76
void setHwPhi(int bits)
Set compressed relative phi as transmitted by hardware LSB = 2*pi/576 (8 bits)
const int hwSignValid() const
Get charge sign valid bit (0 - not valid (high pT muon); 1 - valid)
bool getByToken(EDGetToken token, Handle< PROD > &result) const
Definition: Event.h:460
L1MuBMAddressArray address() const
get address-array for this muon candidate
Definition: L1MuBMTrack.h:103
bool bxEmpty(int step) const
const L1MuBMSecProcId & spid() const
return Sector Processor in which the muon candidate was found
Definition: L1MuBMTrack.h:100
SPmap::iterator SPmap_iter
int sector() const
return sector number
const int hwQual() const
Get quality code.
void setTFIdentifiers(int processor, tftype trackFinder)
Set the processor ID, track-finder type. From these two, the link is set.
static int getBxMin()
std::vector< L1MuBMWedgeSorter * > m_wsvec
Wedge Sorters.
void setTrackSubAddress(bmtfAddress subAddress, int value)
Set a part of the muon candidates track address; specialised for BMTF.
Abs< T >::type abs(const T &t)
Definition: Abs.h:22
const int hwHF() const
Get HF (halo / fine eta) bit (EMTF: halo -> 1; BMTF: fine eta -> 1)
void setHwHF(bool bit)
Set HF (halo / fine eta) bit (EMTF: halo -> 1; BMTF: fine eta -> 1)
const int hwEta() const
Get compressed eta (returned int * 0.010875 = eta)
SPmap_iter begin()
return iterator which points to the first entry of the container
const int hwPhi() const
Get compressed local phi (returned int * 2*pi/576 = local phi in rad)
int bx() const
get the bunch crossing for this muon candidate
Definition: L1MuBMTrack.h:109
static L1MuBMTFConfig * m_config
Track Finder configuration.
void setHwQual(int bits)
Set compressed quality code as transmitted by hardware (4 bits)
void setHwPt(int bits)
Set compressed pT as transmitted by hardware LSB = 0.5 (9 bits)
l1t::RegionalMuonCandBxCollection _cache0
void setHwEta(int bits)
Set compressed eta as transmitted by hardware LSB = 0.010875 (9 bits)
std::vector< L1MuBMEtaProcessor * > m_epvec
Eta Processors.
void setDefaultsES(const edm::EventSetup &c)
Phi_Container const * getContainer() const
void setBXRange(int bxFirst, int bxLast)
static bool Debug()
l1t::RegionalMuonCandBxCollection _cache
int setAdd(int ust, int rel_add)
const int hwSign() const
Get charge sign bit (charge = (-1)^(sign))
void setHwSignValid(int bits)
Set whether charge measurement is valid (0 for high pT muons)
SPmap_iter end()
return iterator which points to the one-past-last entry of the container
bool empty() const
is it an empty muon candidate?
Definition: L1MuBMTrack.h:97
L1MuBMSecProcMap * m_spmap
Sector Processors.
void push_back(int bx, T object)
void setHwSign(int bits)
Set charge sign bit (charge = (-1)^(sign))
void reset()
reset the barrel MTTF
int wheel() const
return wheel number
int L1MuBMTrackFinder::setAdd ( int  ust,
int  rel_add 
)
inline

Definition at line 438 of file L1MuBMTrackFinder.cc.

References m_config.

Referenced by run().

438  {
439  unsigned int uadd = rel_add;
440 
441  switch (uadd) {
442  case 0: { rel_add = 8; break; }
443  case 1: { rel_add = 9; break; }
444  case 2: { rel_add = 0; break; }
445  case 3: { rel_add = 1; break; }
446  case 8: { rel_add = 10; break; }
447  case 9: { rel_add = 11; break; }
448  case 10: { rel_add = 2; break; }
449  case 11: { rel_add = 3; break; }
450  case 4: { rel_add = 12; break; }
451  case 5: { rel_add = 13; break; }
452  case 6: { rel_add = 4; break; }
453  case 7: { rel_add = 5; break; }
454  case 15: { rel_add = 15; break; }
455  default: { rel_add = 15; break; }
456  }
457 
458  if (ust!=1) return rel_add;
459 
460  switch (uadd) {
461  case 0: { rel_add = 2; break; }
462  case 1: { rel_add = 1; break; }
463  case 15: { rel_add = 3; break; }
464  default: { rel_add = 3; break; }
465  }
466  return rel_add;
467 }
void L1MuBMTrackFinder::setup ( edm::ConsumesCollector &&  iC)

build the structure of the barrel MTTF

Definition at line 114 of file L1MuBMTrackFinder.cc.

References gather_cfg::cout, L1MuBMTFConfig::Debug(), ep(), L1MuBMSecProcMap::insert(), m_epvec, m_ms, m_spmap, m_wsvec, eostools::move(), SimDataFormats::CaloAnalysis::sc, and ws().

Referenced by L1MuBMTFSetup::L1MuBMTFSetup().

114  {
115 
116  // build the barrel Muon Trigger Track Finder
117 
118  if ( L1MuBMTFConfig::Debug(1) ) cout << endl;
119  if ( L1MuBMTFConfig::Debug(1) ) cout << "**** L1MuBMTrackFinder building ****" << endl;
120  if ( L1MuBMTFConfig::Debug(1) ) cout << endl;
121 
122  // create new sector processors
123  for ( int wh = -3; wh <= 3; wh++ ) {
124  if ( wh == 0 ) continue;
125  for ( int sc = 0; sc < 12; sc++ ) {
126  L1MuBMSecProcId tmpspid(wh,sc);
127  L1MuBMSectorProcessor* sp = new L1MuBMSectorProcessor(*this,tmpspid,std::move(iC));
128  if ( L1MuBMTFConfig::Debug(2) ) cout << "creating " << tmpspid << endl;
129  m_spmap->insert(tmpspid,sp);
130  }
131  }
132 
133  // create new eta processors and wedge sorters
134  for ( int sc = 0; sc < 12; sc++ ) {
136  if ( L1MuBMTFConfig::Debug(2) ) cout << "creating Eta Processor " << sc << endl;
137  m_epvec.push_back(ep);
139  if ( L1MuBMTFConfig::Debug(2) ) cout << "creating Wedge Sorter " << sc << endl;
140  m_wsvec.push_back(ws);
141  }
142 
143  // create new muon sorter
144  if ( L1MuBMTFConfig::Debug(2) ) cout << "creating BM Muon Sorter " << endl;
145  m_ms = new L1MuBMMuonSorter(*this);
146 
147 }
L1MuBMMuonSorter * m_ms
BM Muon Sorter.
const L1MuBMWedgeSorter * ws(int id) const
get a pointer to a Wedge Sorter, index [0-11]
std::vector< L1MuBMWedgeSorter * > m_wsvec
Wedge Sorters.
void insert(const L1MuBMSecProcId &, L1MuBMSectorProcessor *sp)
insert a Sector Processor into the container
std::vector< L1MuBMEtaProcessor * > m_epvec
Eta Processors.
static bool Debug()
Definition: sp.h:21
const L1MuBMEtaProcessor * ep(int id) const
get a pointer to an Eta Processor, index [0-11]
L1MuBMSecProcMap * m_spmap
Sector Processors.
def move(src, dest)
Definition: eostools.py:510
const L1MuBMSectorProcessor * L1MuBMTrackFinder::sp ( const L1MuBMSecProcId id) const

get a pointer to a Sector Processor

Definition at line 385 of file L1MuBMTrackFinder.cc.

References m_spmap, and L1MuBMSecProcMap::sp().

Referenced by L1MuBMSectorProcessor::neighbour(), L1MuBMEtaProcessor::receiveAddresses(), and L1MuBMWedgeSorter::run().

385  {
386 
387  return m_spmap->sp(id);
388 
389 }
L1MuBMSectorProcessor * sp(const L1MuBMSecProcId &) const
return pointer to Sector Processor
L1MuBMSecProcMap * m_spmap
Sector Processors.
const L1MuBMWedgeSorter* L1MuBMTrackFinder::ws ( int  id) const
inline

get a pointer to a Wedge Sorter, index [0-11]

Definition at line 95 of file L1MuBMTrackFinder.h.

References hcalTTPDigis_cfi::id, and m_wsvec.

Referenced by L1MuBMMuonSorter::run(), and setup().

95 { return m_wsvec[id]; }
std::vector< L1MuBMWedgeSorter * > m_wsvec
Wedge Sorters.

Member Data Documentation

l1t::RegionalMuonCandBxCollection L1MuBMTrackFinder::_cache
private

Definition at line 128 of file L1MuBMTrackFinder.h.

Referenced by begin(), clear(), end(), getcache(), numberOfTracks(), and run().

l1t::RegionalMuonCandBxCollection L1MuBMTrackFinder::_cache0
private

Definition at line 127 of file L1MuBMTrackFinder.h.

Referenced by clear(), getcache0(), and run().

L1MuBMTFConfig * L1MuBMTrackFinder::m_config = 0
staticprivate

Track Finder configuration.

Definition at line 134 of file L1MuBMTrackFinder.h.

Referenced by config(), L1MuBMTrackFinder(), run(), setAdd(), and ~L1MuBMTrackFinder().

edm::EDGetTokenT<L1MuDTChambPhContainer> L1MuBMTrackFinder::m_DTDigiToken
private

Definition at line 138 of file L1MuBMTrackFinder.h.

Referenced by L1MuBMTrackFinder(), and run().

std::vector<L1MuBMEtaProcessor*> L1MuBMTrackFinder::m_epvec
private

Eta Processors.

Definition at line 130 of file L1MuBMTrackFinder.h.

Referenced by ep(), L1MuBMTrackFinder(), reset(), run(), setup(), and ~L1MuBMTrackFinder().

L1MuBMMuonSorter* L1MuBMTrackFinder::m_ms
private

BM Muon Sorter.

Definition at line 132 of file L1MuBMTrackFinder.h.

Referenced by L1MuBMTrackFinder(), ms(), reset(), setup(), and ~L1MuBMTrackFinder().

L1MuBMSecProcMap* L1MuBMTrackFinder::m_spmap
private

Sector Processors.

Definition at line 129 of file L1MuBMTrackFinder.h.

Referenced by L1MuBMTrackFinder(), reset(), run(), setup(), sp(), and ~L1MuBMTrackFinder().

std::vector<L1MuBMWedgeSorter*> L1MuBMTrackFinder::m_wsvec
private

Wedge Sorters.

Definition at line 131 of file L1MuBMTrackFinder.h.

Referenced by L1MuBMTrackFinder(), reset(), run(), setup(), ws(), and ~L1MuBMTrackFinder().