70 _cache0.reserve(144*17);
84 vector<L1MuDTEtaProcessor*>::iterator it_ep = m_epvec.begin();
85 while ( it_ep != m_epvec.end() ) {
91 vector<L1MuDTWedgeSorter*>::iterator it_ws = m_wsvec.begin();
92 while ( it_ws != m_wsvec.end() ) {
100 if ( m_config )
delete m_config;
122 for (
int wh = -3; wh <= 3; wh++ ) {
123 if ( wh == 0 )
continue;
124 for (
int sc = 0;
sc < 12;
sc++ ) {
128 m_spmap->insert(tmpspid,sp);
133 for (
int sc = 0;
sc < 12;
sc++ ) {
136 m_epvec.push_back(ep);
139 m_wsvec.push_back(ws);
167 for (
int bx = bx_min; bx <= bx_max; bx++ ) {
169 if ( dttrig->
bxEmpty(bx) )
continue;
178 while ( it_sp != m_spmap->end() ) {
180 << (*it_sp).second->id() << endl;
181 if ( (*it_sp).second ) (*it_sp).second->run(bx,e,c);
187 vector<L1MuDTEtaProcessor*>::iterator it_ep = m_epvec.begin();
188 while ( it_ep != m_epvec.end() ) {
190 << (*it_ep)->id() << endl;
191 if ( *it_ep ) (*it_ep)->run(bx,e,c);
197 it_sp = m_spmap->begin();
198 while ( it_sp != m_spmap->end() ) {
200 << (*it_sp).second->id() << endl;
201 for (
int number = 0; number < 2; number++ ) {
211 vector<L1MuDTWedgeSorter*>::iterator it_ws = m_wsvec.begin();
212 while ( it_ws != m_wsvec.end() ) {
214 << (*it_ws)->id() << endl;
215 if ( *it_ws ) (*it_ws)->run();
222 if ( m_ms ) m_ms->run();
226 if ( m_ms->numberOfTracks() > 0 ) {
227 const vector<const L1MuDTTrack*>& mttf_cont = m_ms->tracks();
228 vector<const L1MuDTTrack*>::const_iterator iter;
229 for ( iter = mttf_cont.begin(); iter != mttf_cont.end(); iter++ ) {
230 if ( *iter ) _cache.push_back(
L1MuRegionalCand((*iter)->getDataWord(),(*iter)->bx()));
245 while ( it_sp != m_spmap->end() ) {
246 if ( (*it_sp).second ) (*it_sp).second->reset();
250 vector<L1MuDTEtaProcessor*>::iterator it_ep = m_epvec.begin();
251 while ( it_ep != m_epvec.end() ) {
252 if ( *it_ep ) (*it_ep)->reset();
256 vector<L1MuDTWedgeSorter*>::iterator it_ws = m_wsvec.begin();
257 while ( it_ws != m_wsvec.end() ) {
258 if ( *it_ws ) (*it_ws)->reset();
262 if ( m_ms ) m_ms->reset();
272 return m_spmap->sp(
id);
282 return _cache.size();
289 return _cache.begin();
316 if ( (*it).bx() == bx ) number++;
TFtracks_const_iter begin()
L1MuDTAddressArray address() const
get address-array for this muon candidate
bool getByToken(EDGetToken token, Handle< PROD > &result) const
TrackClass tc() const
get track-class
TFtracks_const_iter end()
bool bxEmpty(int step) const
void run(const edm::Event &e, const edm::EventSetup &c)
run the barrel MTTF
void setup(edm::ConsumesCollector &&iC)
build the structure of the barrel MTTF
const L1MuDTSectorProcessor * sp(const L1MuDTSecProcId &) const
get a pointer to a Sector Processor
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
L1MuDTTrackFinder(const edm::ParameterSet &ps, edm::ConsumesCollector &&iC)
constructor
const L1MuDTSecProcId & spid() const
return Sector Processor in which the muon candidate was found
bool empty() const
is it an empty muon candidate?
SPmap::iterator SPmap_iter
std::vector< L1MuRegionalCand >::const_iterator TFtracks_const_iter
container for muon candidates
Phi_Container const * getContainer() const
static edm::InputTag getDTDigiInputTag()
int bx() const
return bunch crossing identifier
int wheel() const
return wheel number
static L1MuDTTFConfig * m_config
Track Finder configuration.
void reset(double vett[256])