CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
List of all members | Public Types | Public Member Functions | Static Public Member Functions | Private Member Functions | Private Attributes | Static Private Attributes
L1MuDTTrackFinder Class Reference

#include <L1MuDTTrackFinder.h>

Public Types

typedef std::vector
< L1MuRegionalCand >
::const_iterator 
TFtracks_const_iter
 container for muon candidates More...
 
typedef std::vector
< L1MuRegionalCand >::iterator 
TFtracks_iter
 

Public Member Functions

TFtracks_const_iter begin ()
 
void clear ()
 
TFtracks_const_iter end ()
 
const L1MuDTEtaProcessorep (int id) const
 get a pointer to an Eta Processor, index [0-11] More...
 
std::vector< L1MuRegionalCand > & getcache ()
 
std::vector< L1MuDTTrackCand > & getcache0 ()
 
 L1MuDTTrackFinder (const edm::ParameterSet &ps)
 constructor More...
 
const L1MuDTMuonSorterms () const
 get a pointer to the DT 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...
 
void setup ()
 build the structure of the barrel MTTF More...
 
const L1MuDTSectorProcessorsp (const L1MuDTSecProcId &) const
 get a pointer to a Sector Processor More...
 
const L1MuDTWedgeSorterws (int id) const
 get a pointer to a Wedge Sorter, index [0-11] More...
 
virtual ~L1MuDTTrackFinder ()
 destructor More...
 

Static Public Member Functions

static L1MuDTTFConfigconfig ()
 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

std::vector< L1MuRegionalCand_cache
 
std::vector< L1MuDTTrackCand_cache0
 
std::vector< L1MuDTEtaProcessor * > m_epvec
 Eta Processors. More...
 
L1MuDTMuonSorterm_ms
 DT Muon Sorter. More...
 
L1MuDTSecProcMapm_spmap
 Sector Processors. More...
 
std::vector< L1MuDTWedgeSorter * > m_wsvec
 Wedge Sorters. More...
 

Static Private Attributes

static L1MuDTTFConfigm_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

Definition at line 55 of file L1MuDTTrackFinder.h.

Member Typedef Documentation

typedef std::vector<L1MuRegionalCand>::const_iterator L1MuDTTrackFinder::TFtracks_const_iter

container for muon candidates

Definition at line 60 of file L1MuDTTrackFinder.h.

typedef std::vector<L1MuRegionalCand>::iterator L1MuDTTrackFinder::TFtracks_iter

Definition at line 61 of file L1MuDTTrackFinder.h.

Constructor & Destructor Documentation

L1MuDTTrackFinder::L1MuDTTrackFinder ( const edm::ParameterSet ps)

constructor

Definition at line 55 of file L1MuDTTrackFinder.cc.

References gather_cfg::cout, and L1MuDTTFConfig::Debug().

55  {
56 
57  // set configuration parameters
58  if ( m_config == 0 ) m_config = new L1MuDTTFConfig(ps);
59 
60  if ( L1MuDTTFConfig::Debug(1) ) cout << endl;
61  if ( L1MuDTTFConfig::Debug(1) ) cout << "**** entering L1MuDTTrackFinder ****" << endl;
62  if ( L1MuDTTFConfig::Debug(1) ) cout << endl;
63 
64  m_spmap = new L1MuDTSecProcMap();
65  m_epvec.reserve(12);
66  m_wsvec.reserve(12);
67  m_ms = 0;
68 
69  _cache.reserve(4*17);
70  _cache0.reserve(144*17);
71 
72 }
L1MuDTSecProcMap * m_spmap
Sector Processors.
L1MuDTMuonSorter * m_ms
DT Muon Sorter.
std::vector< L1MuDTTrackCand > _cache0
static bool Debug()
std::vector< L1MuRegionalCand > _cache
std::vector< L1MuDTEtaProcessor * > m_epvec
Eta Processors.
tuple cout
Definition: gather_cfg.py:121
static L1MuDTTFConfig * m_config
Track Finder configuration.
std::vector< L1MuDTWedgeSorter * > m_wsvec
Wedge Sorters.
L1MuDTTrackFinder::~L1MuDTTrackFinder ( )
virtual

destructor

Definition at line 79 of file L1MuDTTrackFinder.cc.

79  {
80 
81  delete m_spmap;
82 
83  vector<L1MuDTEtaProcessor*>::iterator it_ep = m_epvec.begin();
84  while ( it_ep != m_epvec.end() ) {
85  delete (*it_ep);
86  it_ep++;
87  }
88  m_epvec.clear();
89 
90  vector<L1MuDTWedgeSorter*>::iterator it_ws = m_wsvec.begin();
91  while ( it_ws != m_wsvec.end() ) {
92  delete (*it_ws);
93  it_ws++;
94  }
95  m_wsvec.clear();
96 
97  delete m_ms;
98 
99  if ( m_config ) delete m_config;
100  m_config = 0;
101 
102 }
L1MuDTSecProcMap * m_spmap
Sector Processors.
L1MuDTMuonSorter * m_ms
DT Muon Sorter.
std::vector< L1MuDTEtaProcessor * > m_epvec
Eta Processors.
static L1MuDTTFConfig * m_config
Track Finder configuration.
std::vector< L1MuDTWedgeSorter * > m_wsvec
Wedge Sorters.

Member Function Documentation

L1MuDTTrackFinder::TFtracks_const_iter L1MuDTTrackFinder::begin ( void  )

Definition at line 286 of file L1MuDTTrackFinder.cc.

286  {
287 
288  return _cache.begin();
289 
290 }
std::vector< L1MuRegionalCand > _cache
void L1MuDTTrackFinder::clear ( void  )

Definition at line 300 of file L1MuDTTrackFinder.cc.

Referenced by DTTrackFinder::produce().

300  {
301 
302  _cache.clear();
303  _cache0.clear();
304 
305 }
std::vector< L1MuDTTrackCand > _cache0
std::vector< L1MuRegionalCand > _cache
static L1MuDTTFConfig* L1MuDTTrackFinder::config ( void  )
inlinestatic

return configuration

Definition at line 103 of file L1MuDTTrackFinder.h.

References m_config.

103 { return m_config; }
static L1MuDTTFConfig * m_config
Track Finder configuration.
L1MuDTTrackFinder::TFtracks_const_iter L1MuDTTrackFinder::end ( void  )

Definition at line 293 of file L1MuDTTrackFinder.cc.

293  {
294 
295  return _cache.end();
296 
297 }
std::vector< L1MuRegionalCand > _cache
const L1MuDTEtaProcessor* L1MuDTTrackFinder::ep ( int  id) const
inline

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

Definition at line 82 of file L1MuDTTrackFinder.h.

References m_epvec.

82 { return m_epvec[id]; }
std::vector< L1MuDTEtaProcessor * > m_epvec
Eta Processors.
std::vector<L1MuRegionalCand>& L1MuDTTrackFinder::getcache ( )
inline

Definition at line 107 of file L1MuDTTrackFinder.h.

References _cache.

Referenced by DTTrackFinder::produce().

107 { return _cache; }
std::vector< L1MuRegionalCand > _cache
std::vector<L1MuDTTrackCand>& L1MuDTTrackFinder::getcache0 ( )
inline

Definition at line 105 of file L1MuDTTrackFinder.h.

References _cache0.

Referenced by DTTrackFinder::produce().

105 { return _cache0; }
std::vector< L1MuDTTrackCand > _cache0
const L1MuDTMuonSorter* L1MuDTTrackFinder::ms ( ) const
inline

get a pointer to the DT Muon Sorter

Definition at line 88 of file L1MuDTTrackFinder.h.

References m_ms.

88 { return m_ms; }
L1MuDTMuonSorter * m_ms
DT Muon Sorter.
int L1MuDTTrackFinder::numberOfTracks ( )

get number of muon candidates found by the barrel MTTF

Definition at line 279 of file L1MuDTTrackFinder.cc.

Referenced by DTTrackFinder::produce().

279  {
280 
281  return _cache.size();
282 
283 }
std::vector< L1MuRegionalCand > _cache
int L1MuDTTrackFinder::numberOfTracks ( int  bx)

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

Definition at line 311 of file L1MuDTTrackFinder.cc.

311  {
312 
313  int number = 0;
314  for ( TFtracks_const_iter it = _cache.begin(); it != _cache.end(); it++ ) {
315  if ( (*it).bx() == bx ) number++;
316  }
317 
318  return number;
319 
320 }
std::vector< L1MuRegionalCand > _cache
std::vector< L1MuRegionalCand >::const_iterator TFtracks_const_iter
container for muon candidates
virtual void L1MuDTTrackFinder::reconstruct ( const edm::Event e,
const edm::EventSetup c 
)
inlineprivatevirtual

run Track Finder and store candidates in cache

Definition at line 112 of file L1MuDTTrackFinder.h.

References reset(), and run().

112 { 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 L1MuDTTrackFinder::reset ( void  )

reset the barrel MTTF

Definition at line 241 of file L1MuDTTrackFinder.cc.

Referenced by reconstruct().

241  {
242 
244  while ( it_sp != m_spmap->end() ) {
245  if ( (*it_sp).second ) (*it_sp).second->reset();
246  it_sp++;
247  }
248 
249  vector<L1MuDTEtaProcessor*>::iterator it_ep = m_epvec.begin();
250  while ( it_ep != m_epvec.end() ) {
251  if ( *it_ep ) (*it_ep)->reset();
252  it_ep++;
253  }
254 
255  vector<L1MuDTWedgeSorter*>::iterator it_ws = m_wsvec.begin();
256  while ( it_ws != m_wsvec.end() ) {
257  if ( *it_ws ) (*it_ws)->reset();
258  it_ws++;
259  }
260 
261  if ( m_ms ) m_ms->reset();
262 
263 }
virtual void reset()
reset Muon Sorter
L1MuDTSecProcMap * m_spmap
Sector Processors.
L1MuDTMuonSorter * m_ms
DT Muon Sorter.
SPmap_iter end()
return iterator which points to the one-past-last entry of the container
std::vector< L1MuDTEtaProcessor * > m_epvec
Eta Processors.
SPmap::iterator SPmap_iter
SPmap_iter begin()
return iterator which points to the first entry of the container
std::vector< L1MuDTWedgeSorter * > m_wsvec
Wedge Sorters.
void L1MuDTTrackFinder::run ( const edm::Event e,
const edm::EventSetup c 
)

run the barrel MTTF

Definition at line 151 of file L1MuDTTrackFinder.cc.

References L1MuDTTrack::address(), L1MuRegionalCand::bx(), gather_cfg::cout, L1MuDTTFConfig::Debug(), L1MuDTTrack::empty(), L1MuDTTFConfig::getBxMax(), L1MuDTTFConfig::getBxMin(), edm::Event::getByLabel(), L1MuRegionalCand::getDataWord(), L1MuDTTFConfig::getDTDigiInputTag(), reset(), L1MuDTSecProcId::sector(), L1MuDTTrack::spid(), L1MuDTTrack::tc(), and L1MuDTSecProcId::wheel().

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

151  {
152 
153  // run the barrel Muon Trigger Track Finder
154 
157  if ( dttrig->getContainer()->size() == 0 ) return;
158 
159  if ( L1MuDTTFConfig::Debug(2) ) cout << endl;
160  if ( L1MuDTTFConfig::Debug(2) ) cout << "**** L1MuDTTrackFinder processing ****" << endl;
161  if ( L1MuDTTFConfig::Debug(2) ) cout << endl;
162 
163  int bx_min = L1MuDTTFConfig::getBxMin();
164  int bx_max = L1MuDTTFConfig::getBxMax();
165 
166  for ( int bx = bx_min; bx <= bx_max; bx++ ) {
167 
168  if ( dttrig->bxEmpty(bx) ) continue;
169 
170  if ( L1MuDTTFConfig::Debug(2) ) cout << "L1MuDTTrackFinder processing bunch-crossing : " << bx << endl;
171 
172  // reset MTTF
173  reset();
174 
175  // run sector processors
177  while ( it_sp != m_spmap->end() ) {
178  if ( L1MuDTTFConfig::Debug(2) ) cout << "running "
179  << (*it_sp).second->id() << endl;
180  if ( (*it_sp).second ) (*it_sp).second->run(bx,e,c);
181  if ( L1MuDTTFConfig::Debug(2) && (*it_sp).second ) (*it_sp).second->print();
182  it_sp++;
183  }
184 
185  // run eta processors
186  vector<L1MuDTEtaProcessor*>::iterator it_ep = m_epvec.begin();
187  while ( it_ep != m_epvec.end() ) {
188  if ( L1MuDTTFConfig::Debug(2) ) cout << "running Eta Processor "
189  << (*it_ep)->id() << endl;
190  if ( *it_ep ) (*it_ep)->run(bx,e,c);
191  if ( L1MuDTTFConfig::Debug(2) && *it_ep ) (*it_ep)->print();
192  it_ep++;
193  }
194 
195  // read sector processors
196  it_sp = m_spmap->begin();
197  while ( it_sp != m_spmap->end() ) {
198  if ( L1MuDTTFConfig::Debug(2) ) cout << "reading "
199  << (*it_sp).second->id() << endl;
200  for ( int number = 0; number < 2; number++ ) {
201  const L1MuDTTrack* cand = (*it_sp).second->tracK(number);
202  if ( cand && !cand->empty() ) _cache0.push_back(L1MuDTTrackCand(cand->getDataWord(),cand->bx(),
203  cand->spid().wheel(),cand->spid().sector(),number,cand->address(1),
204  cand->address(2),cand->address(3),cand->address(4),cand->tc()));
205  }
206  it_sp++;
207  }
208 
209  // run wedge sorters
210  vector<L1MuDTWedgeSorter*>::iterator it_ws = m_wsvec.begin();
211  while ( it_ws != m_wsvec.end() ) {
212  if ( L1MuDTTFConfig::Debug(2) ) cout << "running Wedge Sorter "
213  << (*it_ws)->id() << endl;
214  if ( *it_ws ) (*it_ws)->run();
215  if ( L1MuDTTFConfig::Debug(2) && *it_ws ) (*it_ws)->print();
216  it_ws++;
217  }
218 
219  // run muon sorter
220  if ( L1MuDTTFConfig::Debug(2) ) cout << "running DT Muon Sorter" << endl;
221  if ( m_ms ) m_ms->run();
222  if ( L1MuDTTFConfig::Debug(2) && m_ms ) m_ms->print();
223 
224  // store found track candidates in container (cache)
225  if ( m_ms->numberOfTracks() > 0 ) {
226  const vector<const L1MuDTTrack*>& mttf_cont = m_ms->tracks();
227  vector<const L1MuDTTrack*>::const_iterator iter;
228  for ( iter = mttf_cont.begin(); iter != mttf_cont.end(); iter++ ) {
229  if ( *iter ) _cache.push_back(L1MuRegionalCand((*iter)->getDataWord(),(*iter)->bx()));
230  }
231  }
232 
233  }
234 
235 }
static int getBxMax()
L1MuDTAddressArray address() const
get address-array for this muon candidate
Definition: L1MuDTTrack.h:96
L1MuDTSecProcMap * m_spmap
Sector Processors.
TrackClass tc() const
get track-class
Definition: L1MuDTTrack.h:87
L1MuDTMuonSorter * m_ms
DT Muon Sorter.
void print() const
print results after sorting
std::vector< L1MuDTTrackCand > _cache0
int sector() const
return sector number
void reset()
reset the barrel MTTF
unsigned getDataWord() const
return data word
static int getBxMin()
static bool Debug()
SPmap_iter end()
return iterator which points to the one-past-last entry of the container
const L1MuDTSecProcId & spid() const
return Sector Processor in which the muon candidate was found
Definition: L1MuDTTrack.h:93
std::vector< L1MuRegionalCand > _cache
bool empty() const
is it an empty muon candidate?
Definition: L1MuDTTrack.h:90
std::vector< L1MuDTEtaProcessor * > m_epvec
Eta Processors.
bool getByLabel(InputTag const &tag, Handle< PROD > &result) const
Definition: Event.h:390
int numberOfTracks() const
return number of found muon candidates after sorter
SPmap::iterator SPmap_iter
const std::vector< const L1MuDTTrack * > & tracks() const
return vector of muon candidates
static edm::InputTag getDTDigiInputTag()
int bx() const
return bunch crossing identifier
virtual void run()
run Muon Sorter
int wheel() const
return wheel number
tuple cout
Definition: gather_cfg.py:121
SPmap_iter begin()
return iterator which points to the first entry of the container
std::vector< L1MuDTWedgeSorter * > m_wsvec
Wedge Sorters.
void L1MuDTTrackFinder::setup ( void  )

build the structure of the barrel MTTF

Definition at line 112 of file L1MuDTTrackFinder.cc.

References gather_cfg::cout, and L1MuDTTFConfig::Debug().

Referenced by L1MuDTTFSetup::L1MuDTTFSetup().

112  {
113 
114  // build the barrel Muon Trigger Track Finder
115 
116  if ( L1MuDTTFConfig::Debug(1) ) cout << endl;
117  if ( L1MuDTTFConfig::Debug(1) ) cout << "**** L1MuDTTrackFinder building ****" << endl;
118  if ( L1MuDTTFConfig::Debug(1) ) cout << endl;
119 
120  // create new sector processors
121  for ( int wh = -3; wh <= 3; wh++ ) {
122  if ( wh == 0 ) continue;
123  for ( int sc = 0; sc < 12; sc++ ) {
124  L1MuDTSecProcId tmpspid(wh,sc);
125  L1MuDTSectorProcessor* sp = new L1MuDTSectorProcessor(*this,tmpspid);
126  if ( L1MuDTTFConfig::Debug(2) ) cout << "creating " << tmpspid << endl;
127  m_spmap->insert(tmpspid,sp);
128  }
129  }
130 
131  // create new eta processors and wedge sorters
132  for ( int sc = 0; sc < 12; sc++ ) {
133  L1MuDTEtaProcessor* ep = new L1MuDTEtaProcessor(*this,sc);
134  if ( L1MuDTTFConfig::Debug(2) ) cout << "creating Eta Processor " << sc << endl;
135  m_epvec.push_back(ep);
136  L1MuDTWedgeSorter* ws = new L1MuDTWedgeSorter(*this,sc);
137  if ( L1MuDTTFConfig::Debug(2) ) cout << "creating Wedge Sorter " << sc << endl;
138  m_wsvec.push_back(ws);
139  }
140 
141  // create new muon sorter
142  if ( L1MuDTTFConfig::Debug(2) ) cout << "creating DT Muon Sorter " << endl;
143  m_ms = new L1MuDTMuonSorter(*this);
144 
145 }
L1MuDTSecProcMap * m_spmap
Sector Processors.
L1MuDTMuonSorter * m_ms
DT Muon Sorter.
const L1MuDTSectorProcessor * sp(const L1MuDTSecProcId &) const
get a pointer to a Sector Processor
const L1MuDTEtaProcessor * ep(int id) const
get a pointer to an Eta Processor, index [0-11]
static bool Debug()
std::vector< L1MuDTEtaProcessor * > m_epvec
Eta Processors.
void insert(const L1MuDTSecProcId &, L1MuDTSectorProcessor *sp)
insert a Sector Processor into the container
const L1MuDTWedgeSorter * ws(int id) const
get a pointer to a Wedge Sorter, index [0-11]
tuple cout
Definition: gather_cfg.py:121
std::vector< L1MuDTWedgeSorter * > m_wsvec
Wedge Sorters.
const L1MuDTSectorProcessor * L1MuDTTrackFinder::sp ( const L1MuDTSecProcId id) const

get a pointer to a Sector Processor

Definition at line 269 of file L1MuDTTrackFinder.cc.

Referenced by L1MuDTSectorProcessor::neighbour(), L1MuDTEtaProcessor::receiveAddresses(), and L1MuDTWedgeSorter::run().

269  {
270 
271  return m_spmap->sp(id);
272 
273 }
L1MuDTSecProcMap * m_spmap
Sector Processors.
L1MuDTSectorProcessor * sp(const L1MuDTSecProcId &) const
return pointer to Sector Processor
const L1MuDTWedgeSorter* L1MuDTTrackFinder::ws ( int  id) const
inline

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

Definition at line 85 of file L1MuDTTrackFinder.h.

References m_wsvec.

Referenced by L1MuDTMuonSorter::run().

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

Member Data Documentation

std::vector<L1MuRegionalCand> L1MuDTTrackFinder::_cache
private

Definition at line 117 of file L1MuDTTrackFinder.h.

Referenced by getcache().

std::vector<L1MuDTTrackCand> L1MuDTTrackFinder::_cache0
private

Definition at line 116 of file L1MuDTTrackFinder.h.

Referenced by getcache0().

L1MuDTTFConfig * L1MuDTTrackFinder::m_config = 0
staticprivate

Track Finder configuration.

Definition at line 123 of file L1MuDTTrackFinder.h.

Referenced by config().

std::vector<L1MuDTEtaProcessor*> L1MuDTTrackFinder::m_epvec
private

Eta Processors.

Definition at line 119 of file L1MuDTTrackFinder.h.

Referenced by ep().

L1MuDTMuonSorter* L1MuDTTrackFinder::m_ms
private

DT Muon Sorter.

Definition at line 121 of file L1MuDTTrackFinder.h.

Referenced by ms().

L1MuDTSecProcMap* L1MuDTTrackFinder::m_spmap
private

Sector Processors.

Definition at line 118 of file L1MuDTTrackFinder.h.

std::vector<L1MuDTWedgeSorter*> L1MuDTTrackFinder::m_wsvec
private

Wedge Sorters.

Definition at line 120 of file L1MuDTTrackFinder.h.

Referenced by ws().