64 m_tf(tf), m_epid(id), m_foundPattern(0), m_tseta(15) {
105 vector<const L1MuDTTrackSegEta*>::iterator iter =
m_tseta.begin();
106 while ( iter !=
m_tseta.end() ) {
116 for (
int i = 0;
i < 12;
i++ ) {
138 for (
int i = 0;
i < 15;
i++ ) {
143 for (
int i = 0;
i < 12;
i++ ) {
147 if ( !empty1 || !empty2 ) {
148 cout <<
"Eta processor " <<
m_epid <<
" : " << endl;
152 cout <<
"Local pattern : " << endl;
153 for (
int i = 0;
i < 15;
i++ ) {
157 for (
int j = 6;
j >= 0;
j-- ) {
161 if ( (
i+1)%5 == 0 )
cout << endl;
163 cout <<
"Found patterns :" << endl;
164 vector<int>::const_iterator iter;
168 cout <<
"ID = " << setw(4) << p.
id() <<
" "
169 <<
"eta = " << setw(3) << p.
eta() <<
" "
170 <<
"quality = " << setw(2) << qualitycode <<
" ("
171 <<
quality(qualitycode,1) <<
" "
172 <<
quality(qualitycode,2) <<
" "
173 <<
quality(qualitycode,3) <<
")";
174 for (
int i = 0;
i < 12;
i++ ) {
181 cout <<
"Received addresses : " << endl;
186 cout <<
"Matched patterns : " << endl;
187 for (
int i = 0;
i < 12;
i++ ) {
190 int fineeta = p.
eta();
192 cout <<
"Index = " << setw(2) << i <<
", "
193 <<
"address = " << setw(2) <<
m_address[
i] <<
" --> "
194 <<
"pattern = " << setw(4) <<
m_pattern[
i] <<
" "
195 <<
"eta (coarse) = " << setw(3) << coarseeta <<
" "
196 <<
"eta (fine) = " << setw(3) << fineeta <<
" "
197 <<
"quality = " << setw(2) << p.
quality() << endl;
202 cout <<
"Eta values and fine bits : " << endl;
203 for (
int i = 0;
i < 12;
i++ )
cout << setw(3) <<
m_eta[
i] <<
" ";
205 for (
int i = 0;
i < 12;
i++ )
cout << setw(3) <<
m_fine[
i] <<
" ";
230 for (
int stat = 1; stat <= 3; stat++ ) {
231 for (
int wheel = -2; wheel <= 2; wheel++ ) {
236 int lwheel = wheel+1;
237 if ( wheel < 0 ) lwheel = wheel-1;
240 if ( stat == 1 ) masked =
msks->get_etsoc_chdis_st1(lwheel, sector);
241 if ( stat == 2 ) masked =
msks->get_etsoc_chdis_st2(lwheel, sector);
242 if ( stat == 3 ) masked =
msks->get_etsoc_chdis_st3(lwheel, sector);
244 if ( !masked )
m_mask =
false;
246 if ( tseta && !masked ) {
248 if ( wheel == -2 || wheel == -1 ||
249 ( wheel == 0 && (sector == 0 || sector == 3 || sector == 4 || sector == 7 || sector == 8 || sector == 11) ) ) {
250 for (
int i = 0;
i < 7;
i++ ) {
255 for (
int i = 0;
i < 7;
i++ ) {
281 for (
int wheel = -3; wheel <= 3; wheel++ ) {
282 if ( wheel == 0 )
continue;
284 for (
int number = 0; number < 2; number++ ) {
289 if ( !cand->
empty() ) {
310 for (
int i = 0;
i < 15;
i++ ) {
322 int qualitycode = pattern.
quality();
330 if ( bin == 0 )
continue;
334 good &= pos.test(bin-1);
336 if ( q == 2 ) good &= qual.test(bin-1);
356 for (
int i = 0;
i < 12;
i++ ) {
359 if ( adr == 0 )
continue;
372 const vector<short>& qualifiedPatterns =
theQualPatternLUT->getQualifiedPatterns(sp,adr);
373 vector<short>::const_iterator iter;
374 vector<int>::const_iterator f_iter;
375 for ( iter = qualifiedPatterns.begin(); iter != qualifiedPatterns.end(); iter++ ) {
397 for (
int i = 0;
i < 6;
i++ ) {
402 if ( adr1 == 0 || adr2 == 0 )
continue;
403 if ( adr1 == adr2 && !
m_mask ) {
428 for (
int i = 0;
i < 12;
i++ ) {
430 if (
m_eta[i] != 99 ) {
442 vector<const L1MuDTTrackSegEta*> TSeta;
444 for (
int stat = 0; stat < 3; stat++ ) {
445 int wh = p.
wheel(stat+1);
447 if ( pos == 0 )
continue;
474 const int qualcode[27][3] = { {0,0,0},{1,0,0},{0,1,0},{0,0,1},{2,0,0},
475 {0,2,0},{0,0,2},{1,1,0},{1,0,1},{0,1,1},
476 {2,1,0},{1,2,0},{2,0,1},{1,0,2},{0,2,1},
477 {0,1,2},{2,2,0},{2,0,2},{0,2,2},{1,1,1},
478 {2,1,1},{1,2,1},{1,1,2},{2,2,1},{2,1,2},
481 return qualcode[
id][stat-1];
void setFineEtaBit()
set fine eta bit
void runEtaTrackFinder(const edm::EventSetup &c)
run Eta Track Finder (ETF)
LUT::const_iterator ETFLut_iter
edm::ESHandle< L1MuDTEtaPatternLut > theEtaPatternLUT
const L1MuDTTrackFinder & m_tf
virtual ~L1MuDTEtaProcessor()
destructor
int quality() const
return quality
L1MuDTTrack * m_TracKCand[12]
void assign()
assign eta and etaFineBit
edm::ESHandle< L1MuDTQualPatternLut > theQualPatternLUT
L1MuDTTrack * tracK(int id) const
return pointer to muon candidate, index [0,1]
L1MuDTAddressArray address() const
get address-array for this muon candidate
int trackAddressCode() const
get track address code (for eta track finder)
static int quality(int id, int stat)
get quality code; id [0,26], stat [1,3]
const L1MuDTSectorProcessor * sp(const L1MuDTSecProcId &) const
get a pointer to a Sector Processor
int position(int station) const
return position in station [1,3]
void find(edm::Handle< EcalRecHitCollection > &hits, DetId thisDet, std::vector< EcalRecHitCollection::const_iterator > &hit, bool debug=false)
int quality(const int i) const
static int position[TOTALCHAMBERS][3]
int position(const int i) const
void setEta(int eta)
set eta-code of muon candidate
int eta() const
return eta
virtual void run(int bx, const edm::Event &e, const edm::EventSetup &c)
run the Eta Processor
void setTSeta(const std::vector< const L1MuDTTrackSegEta * > &tsList)
set eta track segments used to form the muon candidate
std::vector< const L1MuDTTrackSegEta * > m_tseta
bool empty() const
is it an empty muon candidate?
void receiveAddresses()
receive addresses (from 6 Sector Processors)
bool getByLabel(InputTag const &tag, Handle< PROD > &result) const
int id() const
return Eta Processor identifier (0-11)
void runEtaMatchingUnit(const edm::EventSetup &c)
run Eta Matching Unit (EMU)
std::vector< int > m_foundPattern
void receiveData(int bx, const edm::Event &e, const edm::EventSetup &c)
receive data (eta trigger primitives)
static edm::InputTag getDTDigiInputTag()
virtual void reset()
reset the Eta Processor
int wheel(int station) const
return wheel number in station [1,3]
L1MuDTTrack * m_TrackCand[12]
L1MuDTTrack * track(int id) const
return pointer to muon candidate, index [0,1]
L1MuDTEtaProcessor(const L1MuDTTrackFinder &, int id)
constructor
void print() const
print muon candidates found by the Eta Processor
edm::ESHandle< L1MuDTTFMasks > msks