CMS 3D CMS Logo

MicroGMTConfiguration.cc
Go to the documentation of this file.
2 
3 unsigned l1t::MicroGMTConfiguration::getTwosComp(const int signed_int, const int width) {
4  if (signed_int >= 0) {
5  return (unsigned)signed_int;
6  }
7  int all_one = (1 << width) - 1;
8  return ((-signed_int) ^ all_one) + 1;
9 }
10 
12  int globPhi = 0;
13  if (t == bmtf) {
14  // each BMTF processor corresponds to a 30 degree wedge = 48 in int-scale
15  globPhi = (proc)*48 + locPhi;
16  // first processor starts at CMS phi = -15 degrees...
17  globPhi += 576 - 24;
18  // handle wrap-around (since we add the 576-24, the value will never be negative!)
19  globPhi = globPhi % 576;
20  } else {
21  // all others correspond to 60 degree sectors = 96 in int-scale
22  globPhi = (proc)*96 + locPhi;
23  // first processor starts at CMS phi = 15 degrees (24 in int)... Handle wrap-around with %. Add 576 to make sure the number is positive
24  globPhi = (globPhi + 600) % 576;
25  }
26  return globPhi;
27 }
28 
30  // use only the two MSBs for the muon to the uGT
31  int outQual = muQual & 0xC;
32  if (haloBit == 1 && (type == tftype::emtf_neg || type == tftype::emtf_pos)) {
33  // set quality to 0xF if the halo bit is set
34  outQual = 0xF;
35  }
36  return outQual;
37 }
38 
39 int l1t::MicroGMTConfiguration::calcMuonHwEtaExtra(const l1t::Muon& mu) { return mu.hwEta() + mu.hwDEtaExtra(); }
40 
42  auto hwPhiExtra = mu.hwPhi() + mu.hwDPhiExtra();
43  while (hwPhiExtra < 0) {
44  hwPhiExtra += 576;
45  }
46  while (hwPhiExtra > 575) {
47  hwPhiExtra -= 576;
48  }
49  return hwPhiExtra;
50 }
51 
52 double l1t::MicroGMTConfiguration::calcMuonEtaExtra(const l1t::Muon& mu) { return calcMuonHwEtaExtra(mu) * 0.010875; }
53 
55  //use the LorentzVector to get phi in the range -pi to +pi exactly as in the emulator
56  math::PtEtaPhiMLorentzVector vec{0., 0., calcMuonHwPhiExtra(mu) * 0.010908, 0.};
57  return vec.phi();
58 }
l1t::bmtf
Definition: RegionalMuonCandFwd.h:8
l1t::emtf_neg
Definition: RegionalMuonCandFwd.h:8
ApeEstimator_cff.width
width
Definition: ApeEstimator_cff.py:24
l1t::tftype
tftype
Definition: RegionalMuonCandFwd.h:8
amptDefaultParameters_cff.mu
mu
Definition: amptDefaultParameters_cff.py:16
l1t::MicroGMTConfiguration::calcGlobalPhi
static int calcGlobalPhi(int locPhi, tftype t, int proc)
Definition: MicroGMTConfiguration.cc:11
MicroGMTConfiguration.h
l1t::MicroGMTConfiguration::calcMuonPhiExtra
static double calcMuonPhiExtra(const l1t::Muon &mu)
Definition: MicroGMTConfiguration.cc:54
OrderedSet.t
t
Definition: OrderedSet.py:90
l1t::MicroGMTConfiguration::setOutputMuonQuality
static int setOutputMuonQuality(int muQual, tftype type, int haloBit)
Definition: MicroGMTConfiguration.cc:29
ValidateTausOnZEEFastSim_cff.proc
proc
Definition: ValidateTausOnZEEFastSim_cff.py:6
l1t::MicroGMTConfiguration::getTwosComp
static unsigned getTwosComp(const int signedInt, const int width)
Definition: MicroGMTConfiguration.cc:3
type
type
Definition: HCALResponse.h:21
l1t::emtf_pos
Definition: RegionalMuonCandFwd.h:8
l1t::MicroGMTConfiguration::calcMuonHwEtaExtra
static int calcMuonHwEtaExtra(const l1t::Muon &mu)
Definition: MicroGMTConfiguration.cc:39
math::PtEtaPhiMLorentzVector
PtEtaPhiMLorentzVectorD PtEtaPhiMLorentzVector
Lorentz vector with cartesian internal representation.
Definition: LorentzVector.h:25
l1t::MicroGMTConfiguration::calcMuonHwPhiExtra
static int calcMuonHwPhiExtra(const l1t::Muon &mu)
Definition: MicroGMTConfiguration.cc:41
l1t::Muon
Definition: Muon.h:21
l1t::MicroGMTConfiguration::calcMuonEtaExtra
static double calcMuonEtaExtra(const l1t::Muon &mu)
Definition: MicroGMTConfiguration.cc:52