CMS 3D CMS Logo

L1MuBMAssignmentUnit.cc
Go to the documentation of this file.
1 //-------------------------------------------------
2 //
3 // Class: L1MuBMAssignmentUnit
4 //
5 // Description: Assignment Unit
6 //
7 //
8 //
9 // Author :
10 // N. Neumeister CERN EP
11 // J. Troconiz UAM Madrid
12 // Modifications:
13 // G. Flouris U. Ioannina
14 // G Karathanasis U. Athens
15 //--------------------------------------------------
16 
17 //-----------------------
18 // This Class's Header --
19 //-----------------------
20 
22 
23 //---------------
24 // C++ Headers --
25 //---------------
26 
27 #include <iostream>
28 #include <cmath>
29 #include <cassert>
30 
31 //-------------------------------
32 // Collaborating Class Headers --
33 //-------------------------------
34 
42 
43 #include <iostream>
44 #include <iomanip>
45 
46 using namespace std;
47 // --------------------------------
48 // class L1MuBMAssignmentUnit
49 //---------------------------------
50 
51 //----------------
52 // Constructors --
53 //----------------
54 
56  : m_sp(sp), m_id(id), m_addArray(), m_TSphi(), m_ptAssMethod(L1MuBMLUTHandler::NODEF) {
57  m_TSphi.reserve(4); // a track candidate can consist of max 4 TS
58  reset();
59  setPrecision();
60 }
61 
62 //--------------
63 // Destructor --
64 //--------------
65 
67 
68 //--------------
69 // Operations --
70 //--------------
71 
72 //
73 // run Assignment Unit
74 //
76  // enable track candidate
77  m_sp.track(m_id)->enable();
78  m_sp.tracK(m_id)->enable();
79 
80  // set track class
81  TrackClass tc = m_sp.TA()->trackClass(m_id);
82  m_sp.track(m_id)->setTC(tc);
83  m_sp.tracK(m_id)->setTC(tc);
84 
85  // get relative addresses of matching track segments
89 
90  // get track segments (track segment router)
91  TSR();
94 
95  // set bunch-crossing (use first track segment)
96  vector<const L1MuBMTrackSegPhi*>::const_iterator iter = m_TSphi.begin();
97  int bx = (*iter)->bx();
98  m_sp.track(m_id)->setBx(bx);
99  m_sp.tracK(m_id)->setBx(bx);
100 
101  // assign phi
102  PhiAU(c);
103 
104  // assign pt and charge
105  PtAU(c);
106 
107  // assign quality
108  QuaAU();
109 }
110 
111 //
112 // reset Assignment Unit
113 //
115  m_addArray.reset();
116  m_TSphi.clear();
118 }
119 
120 //
121 // assign phi with 8 bit precision
122 //
124  const L1TMuonBarrelParamsRcd& bmtfParamsRcd = c.get<L1TMuonBarrelParamsRcd>();
125  bmtfParamsRcd.get(bmtfParamsHandle);
126  const L1TMuonBarrelParams& bmtfParams = *bmtfParamsHandle.product();
127  thePhiLUTs = new L1MuBMLUTHandler(bmtfParams);
128  //thePhiLUTs->print();
129  // calculate phi at station 2 using 8 bits (precision = 0.625 degrees)
130  int sh_phi = 12 - L1MuBMTFConfig::getNbitsPhiPhi();
131  int sh_phib = 10 - L1MuBMTFConfig::getNbitsPhiPhib();
132 
133  const L1MuBMTrackSegPhi* second = getTSphi(2); // track segment at station 2
134  const L1MuBMTrackSegPhi* first = getTSphi(1); // track segment at station 1
135  const L1MuBMTrackSegPhi* forth = getTSphi(4); // track segment at station 4
136 
137  int phi2 = 0; // phi-value at station 2
138  int sector = 0;
139  if (second) {
140  phi2 = second->phi() >> sh_phi;
141  sector = second->sector();
142  } else if (second == nullptr && first) {
143  phi2 = first->phi() >> sh_phi;
144  sector = first->sector();
145  } else if (second == nullptr && forth) {
146  phi2 = forth->phi() >> sh_phi;
147  sector = forth->sector();
148  }
149 
150  int sector0 = m_sp.id().sector();
151 
152  // convert sector difference to values in the range -6 to +5
153 
154  int sectordiff = (sector - sector0) % 12;
155  if (sectordiff >= 6)
156  sectordiff -= 12;
157  if (sectordiff < -6)
158  sectordiff += 12;
159 
160  // convert phi to 0.625 degree precision
161  int phi_precision = 4096 >> sh_phi;
162  const double k = 57.2958 / 0.625 / static_cast<float>(phi_precision);
163  double phi_f = static_cast<double>(phi2);
164  int bit_div_phi = static_cast<int>(phi2) % 4;
165  if (bit_div_phi < 0)
166  bit_div_phi += 4;
167  phi_f = phi_f - std::abs(bit_div_phi);
168  int phi_8 = static_cast<int>(floor(phi_f * k));
169 
170  if (second == nullptr && first) {
171  int bend_angle = (first->phib() >> sh_phib) << sh_phib;
172  phi_8 = phi_8 + thePhiLUTs->getDeltaPhi(0, bend_angle);
173  //phi_8 = phi_8 + getDeltaPhi(0, bend_angle, bmtfParams->phi_lut());
174  } else if (second == nullptr && forth) {
175  int bend_angle = (forth->phib() >> sh_phib) << sh_phib;
176  phi_8 = phi_8 + thePhiLUTs->getDeltaPhi(1, bend_angle);
177  //phi_8 = phi_8 + getDeltaPhi(1, bend_angle, bmtfParams->phi_lut());
178  }
179 
180  //If muon is found at the neighbour sector - second station
181  //a shift is needed by 48
182  phi_8 += sectordiff * 48;
183 
184  int phi = phi_8 + 24;
185  // 78 phi bins (-8 to 69) correspond 30 degree sector plus
186  // additional lower and higher bins for neighboring sectors.
187  if (phi > 69)
188  phi = 69;
189  if (phi < -8)
190  phi = -8;
191 
192  m_sp.track(m_id)->setPhi(phi); // Regional
193  m_sp.tracK(m_id)->setPhi(phi);
194 
195  delete thePhiLUTs;
196 }
197 
198 //
199 // assign pt with 5 bit precision
200 //
202  const L1TMuonBarrelParamsRcd& bmtfParamsRcd = c.get<L1TMuonBarrelParamsRcd>();
203  bmtfParamsRcd.get(bmtfParamsHandle);
204  const L1TMuonBarrelParams& bmtfParams1 = *bmtfParamsHandle.product();
205  const L1TMuonBarrelParamsAllPublic& bmtfParams = L1TMuonBarrelParamsAllPublic(bmtfParams1);
206  thePtaLUTs = new L1MuBMLUTHandler(bmtfParams);
207  //thePtaLUTs->print();
208  // get pt-assignment method as function of track class and TS phib values
209  //m_ptAssMethod = getPtMethod(bmtfParams);
211  // get input address for look-up table
212  int bend_angle = getPtAddress(m_ptAssMethod);
213  int bend_carga = getPtAddress(m_ptAssMethod, 1);
214 
215  // retrieve pt value from look-up table
216  int lut_idx = m_ptAssMethod;
217  int pt = thePtaLUTs->getPt(lut_idx, bend_angle);
218  //int pt = getPt(lut_idx, bend_angle, bmtfParams->pta_lut());
219 
220  if (!bmtfParams.get_DisableNewAlgo()) {
221  if (Quality() < 4) {
222  int ptj = pt;
225  if (jj1 != L1MuBMLUTHandler::NODEF) {
226  lut_idx = jj1;
227  bend_angle = getPt1Address(m_ptAssMethod);
228  if (abs(bend_angle) < 512)
229  ptj = thePtaLUTs->getPt(lut_idx, bend_angle);
230  } else if (jj2 != L1MuBMLUTHandler::NODEF) {
231  lut_idx = jj2;
232  bend_angle = getPt2Address(m_ptAssMethod);
233  if (abs(bend_angle) < 512)
234  ptj = thePtaLUTs->getPt(lut_idx, bend_angle);
235  }
236  if (ptj < pt)
237  pt = ptj;
238  }
239  }
240 
241  m_sp.track(m_id)->setPt(pt);
242  m_sp.tracK(m_id)->setPt(pt);
243 
244  // assign charge
245  int chsign = getCharge(m_ptAssMethod);
246  int charge = (bend_carga >= 0) ? chsign : -1 * chsign;
249  delete thePtaLUTs;
250 }
251 
252 //
253 // assign 4 bit quality code
254 //
256  unsigned int quality = 0;
257 
258  const TrackClass tc = m_sp.TA()->trackClass(m_id);
259 
261  switch (tc) {
262  case T1234: {
263  quality = 3;
264  break;
265  }
266  case T123: {
267  quality = 2;
268  break;
269  }
270  case T124: {
271  quality = 2;
272  break;
273  }
274  case T134: {
275  quality = 2;
276  break;
277  }
278  case T234: {
279  quality = 2;
280  break;
281  }
282  case T12: {
283  quality = 1;
284  break;
285  }
286  case T13: {
287  quality = 1;
288  break;
289  }
290  case T14: {
291  quality = 1;
292  break;
293  }
294  case T23: {
295  quality = 0;
296  break;
297  }
298  case T24: {
299  quality = 0;
300  break;
301  }
302  case T34: {
303  quality = 0;
304  break;
305  }
306  default: {
307  quality = 0;
308  break;
309  }
310  }
311 
313  quality += 12;
314 
317 }
318 
319 //
320 // assign 3 bit quality code
321 //
323  unsigned int quality = 0;
324 
325  const TrackClass tc = m_sp.TA()->trackClass(m_id);
326 
327  switch (tc) {
328  case T1234: {
329  quality = 7;
330  break;
331  }
332  case T123: {
333  quality = 6;
334  break;
335  }
336  case T124: {
337  quality = 6;
338  break;
339  }
340  case T134: {
341  quality = 5;
342  break;
343  }
344  case T234: {
345  quality = 4;
346  break;
347  }
348  case T12: {
349  quality = 3;
350  break;
351  }
352  case T13: {
353  quality = 3;
354  break;
355  }
356  case T14: {
357  quality = 3;
358  break;
359  }
360  case T23: {
361  quality = 2;
362  break;
363  }
364  case T24: {
365  quality = 2;
366  break;
367  }
368  case T34: {
369  quality = 1;
370  break;
371  }
372  default: {
373  quality = 0;
374  }
375  }
376 
377  return quality;
378 }
379 
380 //
381 // Track Segment Router (TSR)
382 //
384  // get the track segments from the data buffer
385  const L1MuBMTrackSegPhi* ts = nullptr;
386  for (int stat = 1; stat <= 4; stat++) {
387  int adr = m_addArray.station(stat);
388  if (adr != 15) {
389  ts = m_sp.data()->getTSphi(stat, adr);
390  if (ts != nullptr)
391  m_TSphi.push_back(ts);
392  }
393  }
394 }
395 
396 //
397 // get track segment from a given station
398 //
400  vector<const L1MuBMTrackSegPhi*>::const_iterator iter;
401  for (iter = m_TSphi.begin(); iter != m_TSphi.end(); iter++) {
402  int stat = (*iter)->station();
403  if (station == stat) {
404  return (*iter);
405  break;
406  }
407  }
408 
409  return nullptr;
410 }
411 
412 //
413 // convert sector Id to a precision of 2.5 degrees using 8 bits (= sector center)
414 //
416  // assert( sector >=0 && sector < 12 );
417  const int sectorvalues[12] = {0, 12, 24, 36, 48, 60, 72, 84, 96, 108, 120, 132};
418 
419  return sectorvalues[sector];
420 }
421 
422 //
423 // determine charge
424 //
426  int chargesign = 0;
427  switch (method) {
429  chargesign = -1;
430  break;
431  }
433  chargesign = -1;
434  break;
435  }
437  chargesign = -1;
438  break;
439  }
441  chargesign = -1;
442  break;
443  }
445  chargesign = -1;
446  break;
447  }
449  chargesign = -1;
450  break;
451  }
453  chargesign = -1;
454  break;
455  }
457  chargesign = -1;
458  break;
459  }
461  chargesign = -1;
462  break;
463  }
465  chargesign = -1;
466  break;
467  }
469  chargesign = 1;
470  break;
471  }
473  chargesign = 1;
474  break;
475  }
476 
478  chargesign = 0;
479  // cerr << "AssignmentUnit::getCharge : undefined PtAssMethod!"
480  // << endl;
481  break;
482  }
483  default: {
484  chargesign = 0;
485  }
486  }
487 
488  return chargesign;
489 }
490 
491 //
492 // determine pt-assignment method
493 //
494 //PtAssMethod L1MuBMAssignmentUnit::getPtMethod(L1TMuonBarrelParams *l1tbmparams) const {
496  // determine which pt-assignment method should be used as a function
497  // of the track class and
498  // of the phib values of the track segments making up this track candidate.
499 
500  // get bitmap of track candidate
501  const bitset<4> s = m_sp.TA()->trackBitMap(m_id);
502 
503  int method = -1;
504 
505  if (s.test(0) && s.test(3))
506  method = 2; // stations 1 and 4
507  if (s.test(0) && s.test(2))
508  method = 1; // stations 1 and 3
509  if (s.test(0) && s.test(1))
510  method = 0; // stations 1 and 2
511  if (!s.test(0) && s.test(1) && s.test(3))
512  method = 4; // stations 2 and 4
513  if (!s.test(0) && s.test(1) && s.test(2))
514  method = 3; // stations 2 and 3
515  if (!s.test(0) && !s.test(1) && s.test(2) && s.test(3))
516  method = 5; // stations 3 and 4
518 
519  // phib values of track segments from stations 1, 2 and 4
520  int phib1 = (getTSphi(1) != nullptr) ? getTSphi(1)->phib() : 0;
521  int phib2 = (getTSphi(2) != nullptr) ? getTSphi(2)->phib() : 0;
522  int phib4 = (getTSphi(4) != nullptr) ? getTSphi(4)->phib() : 0;
523 
525 
526  switch (method) {
527  case 0: {
529  break;
530  }
531  case 1: {
533  break;
534  }
535  case 2: {
537  break;
538  }
539  case 3: {
541  break;
542  }
543  case 4: {
545  break;
546  }
547  case 5: {
549  break;
550  }
551  default:;
552  //cout << "L1MuBMAssignmentUnit : Error in PT ass method evaluation" << endl;
553  }
554 
555  return pam;
556 }
557 
558 //
559 // calculate bend angle
560 //
562  // calculate bend angle as difference of two azimuthal positions
563 
564  int bendangle = 0;
565  switch (method) {
567  bendangle = phiDiff(1, 2);
568  break;
569  }
571  bendangle = phiDiff(1, 2);
572  break;
573  }
575  bendangle = phiDiff(1, 3);
576  break;
577  }
579  bendangle = phiDiff(1, 3);
580  break;
581  }
583  bendangle = phiDiff(1, 4);
584  break;
585  }
587  bendangle = phiDiff(1, 4);
588  break;
589  }
591  bendangle = phiDiff(2, 3);
592  break;
593  }
595  bendangle = phiDiff(2, 3);
596  break;
597  }
599  bendangle = phiDiff(2, 4);
600  break;
601  }
603  bendangle = phiDiff(2, 4);
604  break;
605  }
607  bendangle = phiDiff(4, 3);
608  break;
609  }
611  bendangle = phiDiff(4, 3);
612  break;
613  }
615  bendangle = 0;
616  // cerr << "AssignmentUnit::getPtAddress : undefined PtAssMethod" << endl;
617  break;
618  }
619  default: {
620  bendangle = 0;
621  }
622  }
623 
624  int signo = 1;
625  bendangle = (bendangle + 8192) % 4096;
626  if (bendangle > 2047)
627  bendangle -= 4096;
628  if (bendangle < 0)
629  signo = -1;
630 
631  if (bendcharge)
632  return signo;
633 
634  bendangle = (bendangle + 2048) % 1024;
635  if (bendangle > 511)
636  bendangle -= 1024;
637 
638  return bendangle;
639 }
640 
641 //
642 // build difference of two phi values
643 //
644 int L1MuBMAssignmentUnit::phiDiff(int stat1, int stat2) const {
645  // calculate bit shift
646 
647  int sh_phi = 12 - nbit_phi;
648 
649  // get 2 phi values and add offset (30 degrees ) for adjacent sector
650  int sector1 = getTSphi(stat1)->sector();
651  int sector2 = getTSphi(stat2)->sector();
652  int phi1 = getTSphi(stat1)->phi() >> sh_phi;
653  int phi2 = getTSphi(stat2)->phi() >> sh_phi;
654 
655  // convert sector difference to values in the range -6 to +5
656 
657  int sectordiff = (sector2 - sector1) % 12;
658  if (sectordiff >= 6)
659  sectordiff -= 12;
660  if (sectordiff < -6)
661  sectordiff += 12;
662 
663  // assert( abs(sectordiff) <= 1 );
664 
665  int offset = (2144 >> sh_phi) * sectordiff;
666  int bendangle = (phi2 - phi1 + offset) << sh_phi;
667 
668  return bendangle;
669 }
670 
671 //
672 // determine pt-assignment method
673 //
675  // quality values of track segments from stations 1, 2 and 4
676  int qual1 = (getTSphi(1) != nullptr) ? getTSphi(1)->quality() : 0;
677  int qual2 = (getTSphi(2) != nullptr) ? getTSphi(2)->quality() : 0;
678  int qual4 = (getTSphi(4) != nullptr) ? getTSphi(4)->quality() : 0;
679 
681 
682  switch (method) {
684  if (qual1 > 3)
686  break;
687  }
689  if (qual1 > 3)
691  break;
692  }
694  if (qual1 > 3)
696  break;
697  }
699  if (qual2 > 3)
701  break;
702  }
704  if (qual2 > 3)
706  break;
707  }
709  if (qual4 > 3)
711  break;
712  }
715  break;
716  }
717  default: {
719  }
720  }
721 
722  return pam;
723 }
724 
725 //
726 // determine pt-assignment method
727 //
729  // quality values of track segments from stations 2 and 4
730  int qual2 = (getTSphi(2) != nullptr) ? getTSphi(2)->quality() : 0;
731  // int qual4 = ( getTSphi(4) != 0 ) ? getTSphi(4)->quality() : 0;
732 
734 
735  switch (method) {
737  if (qual2 > 3)
739  break;
740  }
741  // case PT14H : { if (qual4 > 3) pam = PB34H; break; }
742  // case PT24H : { if (qual4 > 3) pam = PB34H; break; }
743  //case PT12HO : { if (qual2 > 3) pam = PB21HO; break; }
744  // case PT14HO : { if (qual4 > 3) pam = PB34HO; break; }
745  // case PT24HO : { if (qual4 > 3) pam = PB34HO; break; }
748  break;
749  }
750  default: {
752  }
753  }
754 
755  return pam;
756 }
757 
758 //
759 // calculate bend angle
760 //
762  // phib values of track segments from stations 1, 2 and 4
763  int phib1 = (getTSphi(1) != nullptr) ? getTSphi(1)->phib() : -999;
764  int phib2 = (getTSphi(2) != nullptr) ? getTSphi(2)->phib() : -999;
765  int phib4 = (getTSphi(4) != nullptr) ? getTSphi(4)->phib() : -999;
766 
767  int bendangle = -999;
768  switch (method) {
770  bendangle = phib1;
771  break;
772  }
774  bendangle = phib1;
775  break;
776  }
778  bendangle = phib1;
779  break;
780  }
782  bendangle = phib2;
783  break;
784  }
786  bendangle = phib2;
787  break;
788  }
790  bendangle = phib4;
791  break;
792  }
794  bendangle = -999;
795  break;
796  }
797  default: {
798  bendangle = -999;
799  }
800  }
801 
802  return bendangle;
803 }
804 
805 //
806 // calculate bend angle
807 //
809  // phib values of track segments from stations 1, 2 and 4
810  int phib2 = (getTSphi(2) != nullptr) ? getTSphi(2)->phib() : -999;
811  int phib4 = (getTSphi(4) != nullptr) ? getTSphi(4)->phib() : -999;
812 
813  int bendangle = -999;
814  switch (method) {
816  bendangle = phib2;
817  break;
818  }
820  bendangle = phib4;
821  break;
822  }
824  bendangle = phib4;
825  break;
826  }
827  //case L1MuBMLUTHandler::PT12HO : { bendangle = phib2; break; }
828  //case L1MuBMLUTHandler::PT14HO : { bendangle = phib4; break; }
829  //case L1MuBMLUTHandler::PT24HO : { bendangle = phib4; break; }
831  bendangle = -999;
832  break;
833  }
834  default: {
835  bendangle = -999;
836  }
837  }
838 
839  return bendangle;
840 }
841 
842 //
843 // set precision for pt-assignment of phi and phib
844 // default is 12 bits for phi and 10 bits for phib
845 //
849 }
850 
851 // static data members
852 
853 unsigned short int L1MuBMAssignmentUnit::nbit_phi = 12;
854 unsigned short int L1MuBMAssignmentUnit::nbit_phib = 10;
edm::ESHandle::product
T const * product() const
Definition: ESHandle.h:86
L1MuBMLUTHandler::PT34L
Definition: L1MuBMLUTHandler.h:88
L1MuBMTrackAssembler::address
int address(int id, int stat) const
get address of a single station of selected track candidate
Definition: L1MuBMTrackAssembler.h:76
L1MuBMDataBuffer::getTSphi
const TSPhivector & getTSphi() const
get all track segments from the buffer
Definition: L1MuBMDataBuffer.h:56
L1MuBMLUTHandler::PB21H
Definition: L1MuBMLUTHandler.h:93
L1MuBMAssignmentUnit::thePtaLUTs
L1MuBMLUTHandler * thePtaLUTs
pt-assignment look-up tables
Definition: L1MuBMAssignmentUnit.h:114
L1MuBMTrackAssParam.h
L1MuBMAssignmentUnit::QuaAU
void QuaAU()
assign quality
Definition: L1MuBMAssignmentUnit.cc:255
L1MuBMTrackSegPhi
Definition: L1MuBMTrackSegPhi.h:41
L1MuBMLUTHandler::PB34H
Definition: L1MuBMLUTHandler.h:96
L1MuBMAssignmentUnit::nbit_phib
static unsigned short nbit_phib
Definition: L1MuBMAssignmentUnit.h:117
L1MuBMLUTHandler::PB14H
Definition: L1MuBMLUTHandler.h:92
L1MuBMLUTHandler::PT23H
Definition: L1MuBMLUTHandler.h:85
L1MuBMAssignmentUnit::getPt1Method
L1MuBMLUTHandler::PtAssMethod getPt1Method(L1MuBMLUTHandler::PtAssMethod) const
Definition: L1MuBMAssignmentUnit.cc:674
L1MuBMAssignmentUnit::phiDiff
int phiDiff(int stat1, int stat2) const
build difference of two phi values
Definition: L1MuBMAssignmentUnit.cc:644
L1MuBMTrack::setTC
void setTC(TrackClass tc)
set track-class of muon candidate
Definition: L1MuBMTrack.h:142
L1MuBMLUTHandler::PT12L
Definition: L1MuBMLUTHandler.h:78
T14
Definition: L1MuBMTrackAssParam.h:21
L1MuBMTFConfig::getNbitsPtaPhib
static int getNbitsPtaPhib()
Definition: L1MuBMTFConfig.h:69
DiDispStaMuonMonitor_cfi.pt
pt
Definition: DiDispStaMuonMonitor_cfi.py:39
L1MuBMTrack::setPt
void setPt(int pt)
set pt-code of muon candidate
Definition: L1MuBMTrack.h:154
L1MuBMLUTHandler::getPt
int getPt(int pta_ind, int address) const
get pt-value for a given address
Definition: L1MuBMLUTHandler.cc:131
relativeConstraints.station
station
Definition: relativeConstraints.py:67
hgcalTopologyTester_cfi.sector1
sector1
Definition: hgcalTopologyTester_cfi.py:9
L1MuBMLUTHandler::PB13H
Definition: L1MuBMLUTHandler.h:91
L1MuBMAssignmentUnit::PhiAU
void PhiAU(const edm::EventSetup &c)
assign phi
Definition: L1MuBMAssignmentUnit.cc:123
L1MuBMTrack::setAddresses
void setAddresses(const L1MuBMAddressArray &addr)
set relative addresses of muon candidate
Definition: L1MuBMTrack.h:166
L1MuBMAssignmentUnit::getTSphi
const L1MuBMTrackSegPhi * getTSphi(int station) const
get track segment from a given station
Definition: L1MuBMAssignmentUnit.cc:399
AlcaSiPixelAliHarvester0T_cff.method
method
Definition: AlcaSiPixelAliHarvester0T_cff.py:41
T123
Definition: L1MuBMTrackAssParam.h:21
l1GtPatternGenerator_cfi.bx
bx
Definition: l1GtPatternGenerator_cfi.py:18
L1MuBMAssignmentUnit::m_id
int m_id
Definition: L1MuBMAssignmentUnit.h:107
L1MuBMLUTHandler::PtAssMethod
PtAssMethod
Definition: L1MuBMLUTHandler.h:77
L1MuBMAddressArray::station
unsigned short station(int stat) const
get address of a given station [1-4]
Definition: L1MuBMAddressArray.h:80
L1MuBMTrackSegPhi.h
edm::second
U second(std::pair< T, U > const &p)
Definition: ParameterSet.cc:222
L1MuBMLUTHandler
Definition: L1MuBMLUTHandler.h:26
T12
Definition: L1MuBMTrackAssParam.h:21
L1MuBMAssignmentUnit::getPtMethod
L1MuBMLUTHandler::PtAssMethod getPtMethod() const
determine pt assignment method
Definition: L1MuBMAssignmentUnit.cc:495
T134
Definition: L1MuBMTrackAssParam.h:21
L1MuBMTrack::setPhi
void setPhi(int phi)
set phi-code of muon candidate
Definition: L1MuBMTrack.h:145
L1MuBMAssignmentUnit::bmtfParamsHandle
edm::ESHandle< L1TMuonBarrelParams > bmtfParamsHandle
Definition: L1MuBMAssignmentUnit.h:113
L1MuBMAssignmentUnit::nbit_phi
static unsigned short nbit_phi
Definition: L1MuBMAssignmentUnit.h:116
L1TMuonBarrelParamsAllPublic::get_DisableNewAlgo
bool get_DisableNewAlgo() const
Definition: L1TMuonBarrelParamsAllPublic.h:73
L1MuBMTrack::enable
void enable()
enable muon candidate
Definition: L1MuBMTrack.h:130
L1MuBMSectorProcessor
Definition: L1MuBMSectorProcessor.h:54
L1MuBMSecProcId::sector
int sector() const
return sector number
Definition: L1MuBMSecProcId.h:58
L1MuBMLUTHandler::getDeltaPhi
int getDeltaPhi(int idx, int address) const
get delta-phi for a given address (bend-angle)
Definition: L1MuBMLUTHandler.cc:161
L1MuBMLUTHandler::getPtLutThreshold
int getPtLutThreshold(int pta_ind) const
get pt-assignment LUT threshold
Definition: L1MuBMLUTHandler.cc:148
L1MuBMTFConfig::getNbitsPhiPhib
static int getNbitsPhiPhib()
Definition: L1MuBMTFConfig.h:71
L1MuBMAddressArray::reset
void reset()
reset address array
Definition: L1MuBMAddressArray.cc:100
L1MuBMTFConfig::getNbitsPtaPhi
static int getNbitsPtaPhi()
Definition: L1MuBMTFConfig.h:68
L1MuBMAssignmentUnit::reset
void reset() override
reset Assignment Unit
Definition: L1MuBMAssignmentUnit.cc:114
quality
const uint32_t *__restrict__ Quality * quality
Definition: CAHitNtupletGeneratorKernelsImpl.h:122
L1MuBMTrackSegPhi::quality
int quality() const
return quality code
Definition: L1MuBMTrackSegPhi.h:103
L1MuBMTrack::setQuality
void setQuality(unsigned int quality)
set quality of muon candidate
Definition: L1MuBMTrack.h:163
alignCSCRings.s
s
Definition: alignCSCRings.py:92
L1MuBMTrackSegLoc.h
T234
Definition: L1MuBMTrackAssParam.h:21
L1MuBMAssignmentUnit::getCharge
static int getCharge(L1MuBMLUTHandler::PtAssMethod)
determine charge
Definition: L1MuBMAssignmentUnit.cc:425
L1MuBMAssignmentUnit::setPrecision
static void setPrecision()
set precision of phi and phib
Definition: L1MuBMAssignmentUnit.cc:846
NODEF
Definition: L1MuDTAssParam.h:52
L1MuBMTrackAssembler::trackBitMap
const std::bitset< 4 > & trackBitMap(int id) const
return bitmap of found track
Definition: L1MuBMTrackAssembler.h:70
L1MuBMTrack::setCharge
void setCharge(int charge)
set charge of muon candidate
Definition: L1MuBMTrack.h:157
L1MuBMAssignmentUnit::Quality
unsigned int Quality()
Definition: L1MuBMAssignmentUnit.cc:322
L1MuBMAssignmentUnit::getPt2Method
L1MuBMLUTHandler::PtAssMethod getPt2Method(L1MuBMLUTHandler::PtAssMethod) const
Definition: L1MuBMAssignmentUnit.cc:728
dqmdumpme.k
k
Definition: dqmdumpme.py:60
L1MuBMAssignmentUnit::thePhiLUTs
L1MuBMLUTHandler * thePhiLUTs
phi-assignment look-up tables
Definition: L1MuBMAssignmentUnit.h:115
L1MuBMLUTHandler::PT13L
Definition: L1MuBMLUTHandler.h:80
L1MuBMLUTHandler::PT24H
Definition: L1MuBMLUTHandler.h:87
first
auto first
Definition: CAHitNtupletGeneratorKernelsImpl.h:125
L1MuBMAssignmentUnit::getPtAddress
int getPtAddress(L1MuBMLUTHandler::PtAssMethod, int bendcharge=0) const
calculate bend angle
Definition: L1MuBMAssignmentUnit.cc:561
T13
Definition: L1MuBMTrackAssParam.h:21
L1MuBMAssignmentUnit::PtAU
void PtAU(const edm::EventSetup &c)
assign pt and charge
Definition: L1MuBMAssignmentUnit.cc:201
T34
Definition: L1MuBMTrackAssParam.h:21
ALCARECOTkAlJpsiMuMu_cff.charge
charge
Definition: ALCARECOTkAlJpsiMuMu_cff.py:47
L1MuBMAssignmentUnit::getPt1Address
int getPt1Address(L1MuBMLUTHandler::PtAssMethod) const
Definition: L1MuBMAssignmentUnit.cc:761
L1MuBMSectorProcessor::id
const L1MuBMSecProcId & id() const
return Sector Processor identifier
Definition: L1MuBMSectorProcessor.h:75
TrackClass
TrackClass
Definition: L1MuBMTrackAssParam.h:21
L1MuBMLUTHandler::PB12H
Definition: L1MuBMLUTHandler.h:90
L1MuBMAssignmentUnit::~L1MuBMAssignmentUnit
~L1MuBMAssignmentUnit() override
destructor
Definition: L1MuBMAssignmentUnit.cc:66
L1MuBMAssignmentUnit::m_TSphi
std::vector< const L1MuBMTrackSegPhi * > m_TSphi
Definition: L1MuBMAssignmentUnit.h:110
L1MuBMLUTHandler::PT34H
Definition: L1MuBMLUTHandler.h:89
L1MuBMLUTHandler::NODEF
Definition: L1MuBMLUTHandler.h:97
L1MuBMAssignmentUnit.h
L1MuBMAssignmentUnit::L1MuBMAssignmentUnit
L1MuBMAssignmentUnit(L1MuBMSectorProcessor &sp, int id)
constructor
Definition: L1MuBMAssignmentUnit.cc:55
L1MuBMTFConfig.h
L1MuBMLUTHandler::PT23L
Definition: L1MuBMLUTHandler.h:84
T124
Definition: L1MuBMTrackAssParam.h:21
L1AbstractProcessor::run
virtual void run()
run processor logic
Definition: L1AbstractProcessor.h:40
T1234
Definition: L1MuBMTrackAssParam.h:21
L1MuBMAssignmentUnit::TSR
void TSR()
Track Segment Router.
Definition: L1MuBMAssignmentUnit.cc:383
L1MuBMTrack::setTSphi
void setTSphi(const std::vector< const L1MuBMTrackSegPhi * > &tsList)
set phi track segments used to form the muon candidate
Definition: L1MuBMTrack.cc:147
edm::EventSetup
Definition: EventSetup.h:58
L1MuBMSectorProcessor::track
L1MuBMTrack * track(int id) const
return pointer to muon candidate, index [0,1]
Definition: L1MuBMSectorProcessor.h:100
L1MuBMTrackAssembler::trackClass
TrackClass trackClass(int id) const
return Track Class of found track
Definition: L1MuBMTrackAssembler.h:67
L1MuBMTrack::setBx
void setBx(int bx)
set charge of muon candidate
Definition: L1MuBMTrack.h:160
L1MuBMLUTHandler::PB23H
Definition: L1MuBMLUTHandler.h:94
L1MuBMAssignmentUnit::m_sp
L1MuBMSectorProcessor & m_sp
Definition: L1MuBMAssignmentUnit.h:106
L1MuBMTrackSegPhi::phib
int phib() const
return phib
Definition: L1MuBMTrackSegPhi.h:100
L1MuBMLUTHandler::PT14L
Definition: L1MuBMLUTHandler.h:82
DDAxes::phi
hgcalTopologyTester_cfi.sector2
sector2
Definition: hgcalTopologyTester_cfi.py:10
L1MuBMAssignmentUnit::convertSector
static int convertSector(int)
convert sector Id to 8 bit code (= sector center)
Definition: L1MuBMAssignmentUnit.cc:415
L1MuBMSectorProcessor::data
const L1MuBMDataBuffer * data() const
return pointer to Data Buffer
Definition: L1MuBMSectorProcessor.h:87
std
Definition: JetResolutionObject.h:76
L1MuBMLUTHandler::PT24L
Definition: L1MuBMLUTHandler.h:86
L1MuBMAssignmentUnit::m_addArray
L1MuBMAddressArray m_addArray
Definition: L1MuBMAssignmentUnit.h:109
T24
Definition: L1MuBMTrackAssParam.h:21
triggerObjects_cff.id
id
Definition: triggerObjects_cff.py:29
L1MuBMTrackAssembler.h
L1TMuonBarrelParamsAllPublic
Definition: L1TMuonBarrelParamsAllPublic.h:8
L1MuBMAssignmentUnit::getPt2Address
int getPt2Address(L1MuBMLUTHandler::PtAssMethod) const
Definition: L1MuBMAssignmentUnit.cc:808
L1MuBMDataBuffer.h
L1MuBMSectorProcessor::TA
const L1MuBMTrackAssembler * TA() const
return pointer to Track Assembler
Definition: L1MuBMSectorProcessor.h:94
T23
Definition: L1MuBMTrackAssParam.h:21
L1MuBMLUTHandler::PB24H
Definition: L1MuBMLUTHandler.h:95
L1MuBMLUTHandler::PT12H
Definition: L1MuBMLUTHandler.h:79
edm::eventsetup::EventSetupRecordImplementation::get
PRODUCT const & get(ESGetToken< PRODUCT, T > const &iToken) const
Definition: EventSetupRecordImplementation.h:74
L1TMuonBarrelParams
Definition: L1TMuonBarrelParams.h:23
L1MuBMTrackSegPhi::sector
int sector() const
return sector
Definition: L1MuBMTrackSegPhi.h:88
L1MuBMTrackSegPhi::phi
int phi() const
return phi
Definition: L1MuBMTrackSegPhi.h:97
funct::abs
Abs< T >::type abs(const T &t)
Definition: Abs.h:22
L1MuBMAssignmentUnit::m_ptAssMethod
L1MuBMLUTHandler::PtAssMethod m_ptAssMethod
Definition: L1MuBMAssignmentUnit.h:111
c
auto & c
Definition: CAHitNtupletGeneratorKernelsImpl.h:56
edm_modernize_messagelogger.stat
stat
Definition: edm_modernize_messagelogger.py:27
remoteMonitoring_LED_IterMethod_cfg.threshold
threshold
Definition: remoteMonitoring_LED_IterMethod_cfg.py:430
hltrates_dqm_sourceclient-live_cfg.offset
offset
Definition: hltrates_dqm_sourceclient-live_cfg.py:82
L1MuBMSectorProcessor::tracK
L1MuBMTrack * tracK(int id) const
return pointer to muon candidate, index [0,1]
Definition: L1MuBMSectorProcessor.h:103
L1MuBMLUTHandler::PT13H
Definition: L1MuBMLUTHandler.h:81
L1MuBMTFConfig::getNbitsPhiPhi
static int getNbitsPhiPhi()
Definition: L1MuBMTFConfig.h:70
L1TMuonBarrelParamsRcd
Definition: L1TMuonBarrelParamsRcd.h:14
L1MuBMSectorProcessor.h
L1MuBMLUTHandler::PT14H
Definition: L1MuBMLUTHandler.h:83