72 _cache0.reserve(144*17);
85 vector<L1MuDTEtaProcessor*>::iterator it_ep = m_epvec.begin();
86 while ( it_ep != m_epvec.end() ) {
92 vector<L1MuDTWedgeSorter*>::iterator it_ws = m_wsvec.begin();
93 while ( it_ws != m_wsvec.end() ) {
101 if ( m_config )
delete m_config;
123 for (
int wh = -3; wh <= 3; wh++ ) {
124 if ( wh == 0 )
continue;
125 for (
int sc = 0; sc < 12; sc++ ) {
129 m_spmap->insert(tmpspid,sp);
134 for (
int sc = 0; sc < 12; sc++ ) {
137 m_epvec.push_back(ep);
140 m_wsvec.push_back(ws);
159 if ( dttrig->getContainer()->size() == 0 )
return;
168 for (
int bx = bx_min; bx <= bx_max; bx++ ) {
170 if ( dttrig->bxEmpty(bx) )
continue;
179 while ( it_sp != m_spmap->end() ) {
181 << (*it_sp).second->id() << endl;
182 if ( (*it_sp).second ) (*it_sp).second->run(bx,e,c);
188 vector<L1MuDTEtaProcessor*>::iterator it_ep = m_epvec.begin();
189 while ( it_ep != m_epvec.end() ) {
191 << (*it_ep)->id() << endl;
192 if ( *it_ep ) (*it_ep)->run(bx,e,c);
198 it_sp = m_spmap->begin();
199 while ( it_sp != m_spmap->end() ) {
201 << (*it_sp).second->id() << endl;
202 for (
int number = 0; number < 2; number++ ) {
203 const L1MuDTTrack* cand = (*it_sp).second->tracK(number);
212 vector<L1MuDTWedgeSorter*>::iterator it_ws = m_wsvec.begin();
213 while ( it_ws != m_wsvec.end() ) {
215 << (*it_ws)->id() << endl;
216 if ( *it_ws ) (*it_ws)->run();
223 if ( m_ms ) m_ms->run();
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()));
246 while ( it_sp != m_spmap->end() ) {
247 if ( (*it_sp).second ) (*it_sp).second->reset();
251 vector<L1MuDTEtaProcessor*>::iterator it_ep = m_epvec.begin();
252 while ( it_ep != m_epvec.end() ) {
253 if ( *it_ep ) (*it_ep)->reset();
257 vector<L1MuDTWedgeSorter*>::iterator it_ws = m_wsvec.begin();
258 while ( it_ws != m_wsvec.end() ) {
259 if ( *it_ws ) (*it_ws)->reset();
263 if ( m_ms ) m_ms->reset();
273 return m_spmap->sp(
id);
283 return _cache.size();
290 return _cache.begin();
317 if ( (*it).bx() == bx ) number++;
TFtracks_const_iter begin()
L1MuDTAddressArray address() const
get address-array for this muon candidate
TrackClass tc() const
get track-class
TFtracks_const_iter end()
void run(const edm::Event &e, const edm::EventSetup &c)
run the barrel MTTF
const L1MuDTSectorProcessor * sp(const L1MuDTSecProcId &) const
get a pointer to a Sector Processor
L1MuDTTrackFinder(const edm::ParameterSet &ps)
constructor
int sector() const
return sector number
virtual ~L1MuDTTrackFinder()
destructor
void reset()
reset the barrel MTTF
int numberOfTracks()
get number of muon candidates found by the barrel MTTF
unsigned getDataWord() const
return data word
const L1MuDTSecProcId & spid() const
return Sector Processor in which the muon candidate was found
bool empty() const
is it an empty muon candidate?
bool getByLabel(InputTag const &tag, Handle< PROD > &result) const
SPmap::iterator SPmap_iter
std::vector< L1MuRegionalCand >::const_iterator TFtracks_const_iter
container for muon candidates
static edm::InputTag getDTDigiInputTag()
int bx() const
return bunch crossing identifier
void setup()
build the structure of the barrel MTTF
int wheel() const
return wheel number
static L1MuDTTFConfig * m_config
Track Finder configuration.
void reset(double vett[256])