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:

Date:
2008/02/18 17:38:02
Revision:
1.4

N. Neumeister CERN EP J. Troconiz UAM Madrid

Definition at line 57 of file L1MuDTTrackFinder.h.

Member Typedef Documentation

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

container for muon candidates

Definition at line 62 of file L1MuDTTrackFinder.h.

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

Definition at line 63 of file L1MuDTTrackFinder.h.

Constructor & Destructor Documentation

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

constructor

Definition at line 57 of file L1MuDTTrackFinder.cc.

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

57  {
58 
59  // set configuration parameters
60  if ( m_config == 0 ) m_config = new L1MuDTTFConfig(ps);
61 
62  if ( L1MuDTTFConfig::Debug(1) ) cout << endl;
63  if ( L1MuDTTFConfig::Debug(1) ) cout << "**** entering L1MuDTTrackFinder ****" << endl;
64  if ( L1MuDTTFConfig::Debug(1) ) cout << endl;
65 
66  m_spmap = new L1MuDTSecProcMap();
67  m_epvec.reserve(12);
68  m_wsvec.reserve(12);
69  m_ms = 0;
70 
71  _cache.reserve(4*17);
72  _cache0.reserve(144*17);
73 
74 }
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 81 of file L1MuDTTrackFinder.cc.

81  {
82 
83  delete m_spmap;
84 
85  vector<L1MuDTEtaProcessor*>::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<L1MuDTWedgeSorter*>::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 }
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 288 of file L1MuDTTrackFinder.cc.

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

Definition at line 302 of file L1MuDTTrackFinder.cc.

Referenced by DTTrackFinder::produce().

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

return configuration

Definition at line 105 of file L1MuDTTrackFinder.h.

References m_config.

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

Definition at line 295 of file L1MuDTTrackFinder.cc.

295  {
296 
297  return _cache.end();
298 
299 }
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 84 of file L1MuDTTrackFinder.h.

References errorMatrix2Lands_multiChannel::id, and m_epvec.

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

Definition at line 109 of file L1MuDTTrackFinder.h.

References _cache.

Referenced by DTTrackFinder::produce().

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

Definition at line 107 of file L1MuDTTrackFinder.h.

References _cache0.

Referenced by DTTrackFinder::produce().

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

get a pointer to the DT Muon Sorter

Definition at line 90 of file L1MuDTTrackFinder.h.

References m_ms.

90 { 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 281 of file L1MuDTTrackFinder.cc.

Referenced by DTTrackFinder::produce().

281  {
282 
283  return _cache.size();
284 
285 }
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 313 of file L1MuDTTrackFinder.cc.

313  {
314 
315  int number = 0;
316  for ( TFtracks_const_iter it = _cache.begin(); it != _cache.end(); it++ ) {
317  if ( (*it).bx() == bx ) number++;
318  }
319 
320  return number;
321 
322 }
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 114 of file L1MuDTTrackFinder.h.

References reset(), and run().

114 { 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 243 of file L1MuDTTrackFinder.cc.

Referenced by reconstruct().

243  {
244 
246  while ( it_sp != m_spmap->end() ) {
247  if ( (*it_sp).second ) (*it_sp).second->reset();
248  it_sp++;
249  }
250 
251  vector<L1MuDTEtaProcessor*>::iterator it_ep = m_epvec.begin();
252  while ( it_ep != m_epvec.end() ) {
253  if ( *it_ep ) (*it_ep)->reset();
254  it_ep++;
255  }
256 
257  vector<L1MuDTWedgeSorter*>::iterator it_ws = m_wsvec.begin();
258  while ( it_ws != m_wsvec.end() ) {
259  if ( *it_ws ) (*it_ws)->reset();
260  it_ws++;
261  }
262 
263  if ( m_ms ) m_ms->reset();
264 
265 }
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 153 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().

153  {
154 
155  // run the barrel Muon Trigger Track Finder
156 
159  if ( dttrig->getContainer()->size() == 0 ) return;
160 
161  if ( L1MuDTTFConfig::Debug(2) ) cout << endl;
162  if ( L1MuDTTFConfig::Debug(2) ) cout << "**** L1MuDTTrackFinder processing ****" << endl;
163  if ( L1MuDTTFConfig::Debug(2) ) cout << endl;
164 
165  int bx_min = L1MuDTTFConfig::getBxMin();
166  int bx_max = L1MuDTTFConfig::getBxMax();
167 
168  for ( int bx = bx_min; bx <= bx_max; bx++ ) {
169 
170  if ( dttrig->bxEmpty(bx) ) continue;
171 
172  if ( L1MuDTTFConfig::Debug(2) ) cout << "L1MuDTTrackFinder processing bunch-crossing : " << bx << endl;
173 
174  // reset MTTF
175  reset();
176 
177  // run sector processors
179  while ( it_sp != m_spmap->end() ) {
180  if ( L1MuDTTFConfig::Debug(2) ) cout << "running "
181  << (*it_sp).second->id() << endl;
182  if ( (*it_sp).second ) (*it_sp).second->run(bx,e,c);
183  if ( L1MuDTTFConfig::Debug(2) && (*it_sp).second ) (*it_sp).second->print();
184  it_sp++;
185  }
186 
187  // run eta processors
188  vector<L1MuDTEtaProcessor*>::iterator it_ep = m_epvec.begin();
189  while ( it_ep != m_epvec.end() ) {
190  if ( L1MuDTTFConfig::Debug(2) ) cout << "running Eta Processor "
191  << (*it_ep)->id() << endl;
192  if ( *it_ep ) (*it_ep)->run(bx,e,c);
193  if ( L1MuDTTFConfig::Debug(2) && *it_ep ) (*it_ep)->print();
194  it_ep++;
195  }
196 
197  // read sector processors
198  it_sp = m_spmap->begin();
199  while ( it_sp != m_spmap->end() ) {
200  if ( L1MuDTTFConfig::Debug(2) ) cout << "reading "
201  << (*it_sp).second->id() << endl;
202  for ( int number = 0; number < 2; number++ ) {
203  const L1MuDTTrack* cand = (*it_sp).second->tracK(number);
204  if ( cand && !cand->empty() ) _cache0.push_back(L1MuDTTrackCand(cand->getDataWord(),cand->bx(),
205  cand->spid().wheel(),cand->spid().sector(),number,cand->address(1),
206  cand->address(2),cand->address(3),cand->address(4),cand->tc()));
207  }
208  it_sp++;
209  }
210 
211  // run wedge sorters
212  vector<L1MuDTWedgeSorter*>::iterator it_ws = m_wsvec.begin();
213  while ( it_ws != m_wsvec.end() ) {
214  if ( L1MuDTTFConfig::Debug(2) ) cout << "running Wedge Sorter "
215  << (*it_ws)->id() << endl;
216  if ( *it_ws ) (*it_ws)->run();
217  if ( L1MuDTTFConfig::Debug(2) && *it_ws ) (*it_ws)->print();
218  it_ws++;
219  }
220 
221  // run muon sorter
222  if ( L1MuDTTFConfig::Debug(2) ) cout << "running DT Muon Sorter" << endl;
223  if ( m_ms ) m_ms->run();
224  if ( L1MuDTTFConfig::Debug(2) && m_ms ) m_ms->print();
225 
226  // store found track candidates in container (cache)
227  if ( m_ms->numberOfTracks() > 0 ) {
228  const vector<const L1MuDTTrack*>& mttf_cont = m_ms->tracks();
229  vector<const L1MuDTTrack*>::const_iterator iter;
230  for ( iter = mttf_cont.begin(); iter != mttf_cont.end(); iter++ ) {
231  if ( *iter ) _cache.push_back(L1MuRegionalCand((*iter)->getDataWord(),(*iter)->bx()));
232  }
233  }
234 
235  }
236 
237 }
static int getBxMax()
L1MuDTAddressArray address() const
get address-array for this muon candidate
Definition: L1MuDTTrack.h:98
L1MuDTSecProcMap * m_spmap
Sector Processors.
TrackClass tc() const
get track-class
Definition: L1MuDTTrack.h:89
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:95
std::vector< L1MuRegionalCand > _cache
bool empty() const
is it an empty muon candidate?
Definition: L1MuDTTrack.h:92
std::vector< L1MuDTEtaProcessor * > m_epvec
Eta Processors.
bool getByLabel(InputTag const &tag, Handle< PROD > &result) const
Definition: Event.h:356
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 114 of file L1MuDTTrackFinder.cc.

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

Referenced by L1MuDTTFSetup::L1MuDTTFSetup().

114  {
115 
116  // build the barrel Muon Trigger Track Finder
117 
118  if ( L1MuDTTFConfig::Debug(1) ) cout << endl;
119  if ( L1MuDTTFConfig::Debug(1) ) cout << "**** L1MuDTTrackFinder building ****" << endl;
120  if ( L1MuDTTFConfig::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  L1MuDTSecProcId tmpspid(wh,sc);
127  L1MuDTSectorProcessor* sp = new L1MuDTSectorProcessor(*this,tmpspid);
128  if ( L1MuDTTFConfig::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++ ) {
135  L1MuDTEtaProcessor* ep = new L1MuDTEtaProcessor(*this,sc);
136  if ( L1MuDTTFConfig::Debug(2) ) cout << "creating Eta Processor " << sc << endl;
137  m_epvec.push_back(ep);
138  L1MuDTWedgeSorter* ws = new L1MuDTWedgeSorter(*this,sc);
139  if ( L1MuDTTFConfig::Debug(2) ) cout << "creating Wedge Sorter " << sc << endl;
140  m_wsvec.push_back(ws);
141  }
142 
143  // create new muon sorter
144  if ( L1MuDTTFConfig::Debug(2) ) cout << "creating DT Muon Sorter " << endl;
145  m_ms = new L1MuDTMuonSorter(*this);
146 
147 }
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 271 of file L1MuDTTrackFinder.cc.

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

271  {
272 
273  return m_spmap->sp(id);
274 
275 }
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 87 of file L1MuDTTrackFinder.h.

References errorMatrix2Lands_multiChannel::id, and m_wsvec.

Referenced by L1MuDTMuonSorter::run().

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

Member Data Documentation

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

Definition at line 119 of file L1MuDTTrackFinder.h.

Referenced by getcache().

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

Definition at line 118 of file L1MuDTTrackFinder.h.

Referenced by getcache0().

L1MuDTTFConfig * L1MuDTTrackFinder::m_config = 0
staticprivate

Track Finder configuration.

Definition at line 125 of file L1MuDTTrackFinder.h.

Referenced by config().

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

Eta Processors.

Definition at line 121 of file L1MuDTTrackFinder.h.

Referenced by ep().

L1MuDTMuonSorter* L1MuDTTrackFinder::m_ms
private

DT Muon Sorter.

Definition at line 123 of file L1MuDTTrackFinder.h.

Referenced by ms().

L1MuDTSecProcMap* L1MuDTTrackFinder::m_spmap
private

Sector Processors.

Definition at line 120 of file L1MuDTTrackFinder.h.

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

Wedge Sorters.

Definition at line 122 of file L1MuDTTrackFinder.h.

Referenced by ws().