CMS 3D CMS Logo

L1MuGMTPhiProjectionUnit.cc
Go to the documentation of this file.
1 //-------------------------------------------------
2 //
3 // Class: L1MuGMTPhiProjectionUnit
4 //
5 // Description: GMT Phi Projection Unit
6 //
7 //
8 //
9 // Author :
10 // H. Sakulin CERN EP
11 //
12 // Migrated to CMSSW:
13 // I. Mikulec
14 //
15 //--------------------------------------------------
16 
17 //-----------------------
18 // This Class's Header --
19 //-----------------------
20 
22 
23 //---------------
24 // C++ Headers --
25 //---------------
26 
27 #include <iostream>
28 #include <vector>
29 #include <cmath>
30 
31 //-------------------------------
32 // Collaborating Class Headers --
33 //-------------------------------
34 
37 
39 
44 
46 
47 // --------------------------------
48 // class L1MuGMTPhiProjectionUnit
49 //---------------------------------
50 
51 //----------------
52 // Constructors --
53 //----------------
55  : m_MIAU(miau), m_id(id), m_mu(nullptr) {}
56 
57 //--------------
58 // Destructor --
59 //--------------
61 
62 //--------------
63 // Operations --
64 //--------------
65 
66 //
67 // run phi projection unit
68 //
70  load();
71  if (m_mu && (!m_mu->empty())) {
72  int lut_id = m_id / 4;
73 
74  // obtain inputs as coded in HW
75  unsigned pt = m_mu->pt_packed();
76  unsigned charge = m_mu->charge_packed();
77  unsigned eta = m_mu->eta_packed();
78  unsigned phi = m_mu->phi_packed();
79 
80  // split phi in fine and coarse
81  unsigned phi_fine = phi & ((1 << 3) - 1); // lower 3 bits
82  unsigned phi_coarse = phi >> 3; // upper 5 bits
83 
84  // eta conversion lookup
86  unsigned eta4bit = etaconv_lut->SpecificLookup_eta_out(lut_id, eta);
87 
88  // phi projection 1 lookups
90  unsigned cphi_fine = phipro1_lut->SpecificLookup_cphi_fine(lut_id, phi_fine, eta4bit, pt, charge);
91  unsigned cphi_ofs = phipro1_lut->SpecificLookup_cphi_ofs(lut_id, phi_fine, eta4bit, pt, charge);
92 
93  // phi projection 2 lookup
95  unsigned phi_sel_bits = phipro2_lut->SpecificLookup_phi_sel(lut_id, phi_coarse, cphi_fine, cphi_ofs, charge);
96 
97  // convert to bit array
98  //
99  // see comments in L1MuGMTMIAUEtaProLUT.cc
100  //
101  m_phi_select = (unsigned)0;
102 
103  // shift by 9 bits //FIXME: fix when calo delivers the MIP bits correctly!
104  for (unsigned int i = 0; i < 9; i++)
105  if ((phi_sel_bits & (1 << i)) == (unsigned)(1 << i))
106  m_phi_select[i + 9] = true;
107 
108  for (unsigned int i = 9; i < 18; i++)
109  if ((phi_sel_bits & (1 << i)) == (unsigned)(1 << i))
110  m_phi_select[i - 9] = true;
111 
113  }
114 }
115 
116 //
117 // reset phi projection unit
118 //
120  m_mu = nullptr;
121  m_iphi = 0;
122  m_fphi = 0.;
123  m_phi_select = (unsigned int)0;
124 }
125 
126 //
127 // print results of phi projection
128 //
130  edm::LogVerbatim("GMT_PhiProjection_info") << "Phi select bits: ";
131  for (int i = 0; i < 18; i++) {
132  edm::LogVerbatim("GMT_PhiProjection_info") << m_phi_select[i] << " ";
133  }
134  edm::LogVerbatim("GMT_PhiProjection_info") << " ";
135 }
136 
137 //
138 // load 1 muon into phi projection unit
139 //
141  // retrieve muon from MIP & ISO bit assignment unit
142  m_mu = m_MIAU.muon(m_id % 8);
143 }
mps_fire.i
i
Definition: mps_fire.py:428
L1MuGMTConfig::getMIAUEtaConvLUT
static L1MuGMTMIAUEtaConvLUT * getMIAUEtaConvLUT()
Definition: L1MuGMTConfig.h:165
MessageLogger.h
L1MuGMTPhiProjectionUnit::L1MuGMTPhiProjectionUnit
L1MuGMTPhiProjectionUnit(const L1MuGMTMipIsoAU &miau, int id)
constructor
Definition: L1MuGMTPhiProjectionUnit.cc:54
L1MuGMTPhiProjectionUnit::reset
void reset()
clear phi projection unit
Definition: L1MuGMTPhiProjectionUnit.cc:119
DiDispStaMuonMonitor_cfi.pt
pt
Definition: DiDispStaMuonMonitor_cfi.py:39
L1MuRegionalCand::phi_packed
unsigned phi_packed() const
return phi packed as in hardware
Definition: L1MuRegionalCand.h:86
L1MuGMTMIAUPhiPro1LUT::SpecificLookup_cphi_ofs
unsigned SpecificLookup_cphi_ofs(int idx, unsigned phi_fine, unsigned eta, unsigned pt, unsigned charge) const
specific lookup function for cphi_ofs
Definition: L1MuGMTMIAUPhiPro1LUT.h:67
L1MuGMTMIAUPhiPro2LUT::SpecificLookup_phi_sel
unsigned SpecificLookup_phi_sel(int idx, unsigned cphi_start, unsigned cphi_fine, unsigned cphi_ofs, unsigned charge) const
specific lookup function for phi_sel
Definition: L1MuGMTMIAUPhiPro2LUT.h:57
L1MuGMTPhiProjectionUnit::m_phi_select
TPhiBits m_phi_select
Definition: L1MuGMTPhiProjectionUnit.h:89
L1MuGlobalMuonTrigger::DebugBlockForFill
L1MuGMTDebugBlock * DebugBlockForFill() const
for debug: return the debug block (in order to fill it)
Definition: L1MuGlobalMuonTrigger.h:101
L1MuGMTMIAUPhiPro2LUT.h
L1MuGMTPhiProjectionUnit::m_fphi
float m_fphi
Definition: L1MuGMTPhiProjectionUnit.h:87
L1MuGMTMipIsoAU::GMT
const L1MuGlobalMuonTrigger & GMT() const
Definition: L1MuGMTMipIsoAU.h:80
L1MuGMTMipIsoAU
Definition: L1MuGMTMipIsoAU.h:51
L1MuGMTPhiProjectionUnit::m_id
int m_id
Definition: L1MuGMTPhiProjectionUnit.h:82
L1MuGMTMipIsoAU::muon
const L1MuRegionalCand * muon(int idx) const
return input muon (idx: 0..3: DT/CSC, 4..7: RPC)
Definition: L1MuGMTMipIsoAU.h:72
L1MuGMTMIAUEtaConvLUT
Definition: L1MuGMTMIAUEtaConvLUT.h:38
L1MuGMTMipIsoAU.h
L1MuRegionalCand::empty
virtual bool empty() const
return empty flag
Definition: L1MuRegionalCand.h:50
PVValHelper::eta
Definition: PVValidationHelpers.h:69
L1MuGMTMIAUEtaConvLUT.h
L1MuGMTPhiProjectionUnit::print
void print() const
print results after phi projection
Definition: L1MuGMTPhiProjectionUnit.cc:129
L1MuGMTConfig.h
L1MuGMTPhiProjectionUnit::m_iphi
int m_iphi
Definition: L1MuGMTPhiProjectionUnit.h:86
ALCARECOTkAlJpsiMuMu_cff.charge
charge
Definition: ALCARECOTkAlJpsiMuMu_cff.py:47
L1MuGMTMIAUPhiPro1LUT.h
L1MuGMTConfig::getMIAUPhiPro2LUT
static L1MuGMTMIAUPhiPro2LUT * getMIAUPhiPro2LUT()
Definition: L1MuGMTConfig.h:168
L1MuGMTPhiProjectionUnit::~L1MuGMTPhiProjectionUnit
virtual ~L1MuGMTPhiProjectionUnit()
destructor
Definition: L1MuGMTPhiProjectionUnit.cc:60
createfilelist.int
int
Definition: createfilelist.py:10
L1MuGMTPhiProjectionUnit.h
L1MuGMTDebugBlock.h
L1MuGMTDebugBlock::SetPhiSelBits
void SetPhiSelBits(int idx, unsigned phisel)
Set phi select bits for current bx.
Definition: L1MuGMTDebugBlock.h:75
DDAxes::phi
L1MuGMTPhiProjectionUnit::load
void load()
Definition: L1MuGMTPhiProjectionUnit.cc:140
edm::LogVerbatim
Log< level::Info, true > LogVerbatim
Definition: MessageLogger.h:128
triggerObjects_cff.id
id
Definition: triggerObjects_cff.py:31
L1MuGMTMIAUPhiPro1LUT
Definition: L1MuGMTMIAUPhiPro1LUT.h:38
L1MuGMTPhiProjectionUnit::m_mu
const L1MuRegionalCand * m_mu
Definition: L1MuGMTPhiProjectionUnit.h:84
L1MuGMTMIAUPhiPro1LUT::SpecificLookup_cphi_fine
unsigned SpecificLookup_cphi_fine(int idx, unsigned phi_fine, unsigned eta, unsigned pt, unsigned charge) const
specific lookup function for cphi_fine
Definition: L1MuGMTMIAUPhiPro1LUT.h:57
L1MuRegionalCand::eta_packed
unsigned eta_packed() const
return eta packed as in hardware
Definition: L1MuRegionalCand.h:95
L1MuGMTPhiProjectionUnit::run
void run()
run phi projection unit
Definition: L1MuGMTPhiProjectionUnit.cc:69
L1MuRegionalCand::pt_packed
unsigned pt_packed() const
return pt packed as in hardware
Definition: L1MuRegionalCand.h:89
L1MuGMTMIAUPhiPro2LUT
Definition: L1MuGMTMIAUPhiPro2LUT.h:38
L1MuGlobalMuonTrigger.h
L1MuGMTMIAUEtaConvLUT::SpecificLookup_eta_out
unsigned SpecificLookup_eta_out(int idx, unsigned eta_in) const
specific lookup function for eta_out
Definition: L1MuGMTMIAUEtaConvLUT.h:57
L1MuGMTConfig::getMIAUPhiPro1LUT
static L1MuGMTMIAUPhiPro1LUT * getMIAUPhiPro1LUT()
Definition: L1MuGMTConfig.h:167
L1MuRegionalCand::charge_packed
unsigned charge_packed() const
return charge packed as in hardware (0=pos, 1=neg)
Definition: L1MuRegionalCand.h:101
L1MuGMTPhiProjectionUnit::m_MIAU
const L1MuGMTMipIsoAU & m_MIAU
Definition: L1MuGMTPhiProjectionUnit.h:79