70 _cache0.reserve(144*17);
83 vector<L1MuDTEtaProcessor*>::iterator it_ep = m_epvec.begin();
84 while ( it_ep != m_epvec.end() ) {
90 vector<L1MuDTWedgeSorter*>::iterator it_ws = m_wsvec.begin();
91 while ( it_ws != m_wsvec.end() ) {
99 if ( m_config )
delete m_config;
121 for (
int wh = -3; wh <= 3; wh++ ) {
122 if ( wh == 0 )
continue;
123 for (
int sc = 0; sc < 12; sc++ ) {
127 m_spmap->insert(tmpspid,sp);
132 for (
int sc = 0; sc < 12; sc++ ) {
135 m_epvec.push_back(ep);
138 m_wsvec.push_back(ws);
157 if ( dttrig->getContainer()->size() == 0 )
return;
166 for (
int bx = bx_min; bx <= bx_max; bx++ ) {
168 if ( dttrig->bxEmpty(bx) )
continue;
177 while ( it_sp != m_spmap->end() ) {
179 << (*it_sp).second->id() << endl;
180 if ( (*it_sp).second ) (*it_sp).second->run(bx,e,c);
186 vector<L1MuDTEtaProcessor*>::iterator it_ep = m_epvec.begin();
187 while ( it_ep != m_epvec.end() ) {
189 << (*it_ep)->id() << endl;
190 if ( *it_ep ) (*it_ep)->run(bx,e,c);
196 it_sp = m_spmap->begin();
197 while ( it_sp != m_spmap->end() ) {
199 << (*it_sp).second->id() << endl;
200 for (
int number = 0; number < 2; number++ ) {
201 const L1MuDTTrack* cand = (*it_sp).second->tracK(number);
210 vector<L1MuDTWedgeSorter*>::iterator it_ws = m_wsvec.begin();
211 while ( it_ws != m_wsvec.end() ) {
213 << (*it_ws)->id() << endl;
214 if ( *it_ws ) (*it_ws)->run();
221 if ( m_ms ) m_ms->run();
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()));
244 while ( it_sp != m_spmap->end() ) {
245 if ( (*it_sp).second ) (*it_sp).second->reset();
249 vector<L1MuDTEtaProcessor*>::iterator it_ep = m_epvec.begin();
250 while ( it_ep != m_epvec.end() ) {
251 if ( *it_ep ) (*it_ep)->reset();
255 vector<L1MuDTWedgeSorter*>::iterator it_ws = m_wsvec.begin();
256 while ( it_ws != m_wsvec.end() ) {
257 if ( *it_ws ) (*it_ws)->reset();
261 if ( m_ms ) m_ms->reset();
271 return m_spmap->sp(
id);
281 return _cache.size();
288 return _cache.begin();
315 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])