CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
L1MuGMTConfig.cc
Go to the documentation of this file.
1 //-------------------------------------------------
2 //
3 // Class: L1MuGMTConfig
4 //
5 // Description: Configuration parameters for L1GlobalMuonTrigger
6 //
7 //
8 // $Date: 2012/02/10 14:19:28 $
9 // $Revision: 1.14 $
10 //
11 // Author :
12 // N. Neumeister CERN EP
13 //
14 // Migrated to CMSSW:
15 // I. Mikulec
16 //
17 //--------------------------------------------------
18 
19 //-----------------------
20 // This Class's Header --
21 //-----------------------
22 
24 
25 //---------------
26 // C++ Headers --
27 //---------------
28 
29 #include <iostream>
30 #include <fstream>
31 #include <string>
32 
33 //-------------------------------
34 // Collaborating Class Headers --
35 //-------------------------------
36 
63 
67 
69 
71 
72 // --------------------------------
73 // class L1MuGMTConfig
74 //---------------------------------
75 using namespace std;
76 
77 //----------------
78 // Constructors --
79 //----------------
80 
82 
83  m_ps = &ps;
84 
85  m_DTInputTag = m_ps->getParameter<edm::InputTag>("DTCandidates");
86  m_CSCInputTag = m_ps->getParameter<edm::InputTag>("CSCCandidates");
87  m_RPCbInputTag = m_ps->getParameter<edm::InputTag>("RPCbCandidates");
88  m_RPCfInputTag = m_ps->getParameter<edm::InputTag>("RPCfCandidates");
89  m_MipIsoInputTag = m_ps->getParameter<edm::InputTag>("MipIsoData");
90 
91  m_debug = true;
92  m_dbgLevel = m_ps->getUntrackedParameter<int>("Debug",0);
93 
94  // set min and max bunch crossing
95  m_BxMin = m_ps->getParameter<int>("BX_min");
96  m_BxMax = m_ps->getParameter<int>("BX_max");
97 
98  // set min and max bunch crossing for the readout
99  m_BxMinRo = m_ps->getParameter<int>("BX_min_readout");
100  m_BxMaxRo = m_ps->getParameter<int>("BX_max_readout");
101 
102 }
103 
104 //--------------
105 // Destructor --
106 //--------------
108 
109 
110 //--------------
111 // Operations --
112 //--------------
113 
114 
116 
117  // set weights for eta and phi
118  m_EtaWeight_barrel = m_GMTParams->getEtaWeight_barrel();
119  m_PhiWeight_barrel = m_GMTParams->getPhiWeight_barrel();
120  m_EtaPhiThreshold_barrel = m_GMTParams->getEtaPhiThreshold_barrel();
121 
122  m_EtaWeight_endcap = m_GMTParams->getEtaWeight_endcap();
123  m_PhiWeight_endcap = m_GMTParams->getPhiWeight_endcap();
124  m_EtaPhiThreshold_endcap = m_GMTParams->getEtaPhiThreshold_endcap();
125 
126  m_EtaWeight_COU = m_GMTParams->getEtaWeight_COU();
127  m_PhiWeight_COU = m_GMTParams->getPhiWeight_COU();
128  m_EtaPhiThreshold_COU = m_GMTParams->getEtaPhiThreshold_COU();
129 
130  m_CaloTrigger = m_GMTParams->getCaloTrigger();
131  m_IsolationCellSizeEta = m_GMTParams->getIsolationCellSizeEta();
132  m_IsolationCellSizePhi = m_GMTParams->getIsolationCellSizePhi();
133 
134  m_DoOvlRpcAnd = m_GMTParams->getDoOvlRpcAnd();
135 
136  m_PropagatePhi = m_GMTParams->getPropagatePhi();
137 
138  m_VersionSortRankEtaQLUT = m_GMTParams->getVersionSortRankEtaQLUT();
139  m_VersionLUTs = m_GMTParams->getVersionLUTs();
140 
141  if ( Debug(1) ) {
142  stringstream stdss;
143  stdss
144  << endl
145  << "*******************************************" << endl
146  << "**** L1 Global Muon Trigger settings : ****" << endl
147  << "*******************************************" << endl
148  << endl
149 
150  << "L1 Global Muon Trigger : DTCandidates : " << m_DTInputTag << endl
151  << "L1 Global Muon Trigger : CSCCandidates : " << m_CSCInputTag << endl
152  << "L1 Global Muon Trigger : RPCbCandidates : " << m_RPCbInputTag << endl
153  << "L1 Global Muon Trigger : RPCfCandidates : " << m_RPCfInputTag << endl
154  << "L1 Global Muon Trigger : debug level : " << m_dbgLevel << endl
155  << "L1 Global Muon Trigger : minimal bunch-crossing : " << m_BxMin << endl
156  << "L1 Global Muon Trigger : maximal bunch-crossing : " << m_BxMax << endl
157  << "L1 Global Muon Trigger : barrel eta weight : " << m_EtaWeight_barrel << endl
158  << "L1 Global Muon Trigger : barrel phi weight : " << m_PhiWeight_barrel << endl
159  << "L1 Global Muon Trigger : barrel eta-phi threshold : " << m_EtaPhiThreshold_barrel << endl
160  << "L1 Global Muon Trigger : endcap eta weight : " << m_EtaWeight_endcap << endl
161  << "L1 Global Muon Trigger : endcap phi weight : " << m_PhiWeight_endcap << endl
162  << "L1 Global Muon Trigger : endcap eta-phi threshold : " << m_EtaPhiThreshold_endcap << endl
163  << "L1 Global Muon Trigger : cancel out unit eta weight : " << m_EtaWeight_COU << endl
164  << "L1 Global Muon Trigger : cancel out unit phi weight : " << m_PhiWeight_COU << endl
165  << "L1 Global Muon Trigger : cancel out unit eta-phi threshold : " << m_EtaPhiThreshold_COU << endl
166  << "L1 Global Muon Trigger : calorimeter trigger : " << m_CaloTrigger << endl
167  << "L1 Global Muon Trigger : muon isolation cell size (eta) : " << m_IsolationCellSizeEta << endl
168  << "L1 Global Muon Trigger : muon isolation cell size (phi) : " << m_IsolationCellSizePhi << endl
169  << "L1 Global Muon Trigger : require confirmation by RPC in overlap region : " << m_DoOvlRpcAnd << endl
170  << "L1 Global Muon Trigger : propagate phi to vertex : " << m_PropagatePhi << endl
171  << "L1 Global Muon Trigger : version of low quality assignment LUT : " << m_VersionSortRankEtaQLUT << endl
172  << "L1 Global Muon Trigger : general LUTs version : " << m_VersionLUTs << endl;
173  edm::LogVerbatim("GMT_Config_info") << stdss.str();
174  }
175 }
176 
178 
179  // create Registers
180  m_RegCDLConfig = new L1MuGMTRegCDLConfig();
181  m_RegMMConfigPhi = new L1MuGMTRegMMConfigPhi();
182  m_RegMMConfigEta = new L1MuGMTRegMMConfigEta();
183  m_RegMMConfigPt = new L1MuGMTRegMMConfigPt();
184  m_RegMMConfigCharge = new L1MuGMTRegMMConfigCharge();
185  m_RegMMConfigMIP = new L1MuGMTRegMMConfigMIP();
186  m_RegMMConfigISO = new L1MuGMTRegMMConfigISO();
187  m_RegMMConfigSRK = new L1MuGMTRegMMConfigSRK();
188  m_RegSortRankOffset = new L1MuGMTRegSortRankOffset();
189 
190  // create LUTs
191  m_EtaLUT = new L1MuGMTEtaLUT();
192  m_LFCOUDeltaEtaLUT = new L1MuGMTLFCOUDeltaEtaLUT();
193  m_LFDeltaEtaLUT = new L1MuGMTLFDeltaEtaLUT();
194  m_LFDisableHotLUT = new L1MuGMTLFDisableHotLUT();
195  m_LFEtaConvLUT = new L1MuGMTLFEtaConvLUT();
196  m_LFMatchQualLUT = new L1MuGMTLFMatchQualLUT();
197  m_LFMergeRankCombineLUT = new L1MuGMTLFMergeRankCombineLUT();
198  m_LFMergeRankEtaPhiLUT = new L1MuGMTLFMergeRankEtaPhiLUT();
199  m_LFMergeRankEtaQLUT = new L1MuGMTLFMergeRankEtaQLUT();
200  m_LFMergeRankPtQLUT = new L1MuGMTLFMergeRankPtQLUT();
201  m_LFOvlEtaConvLUT = new L1MuGMTLFOvlEtaConvLUT();
202  m_LFPhiProEtaConvLUT = new L1MuGMTLFPhiProEtaConvLUT();
203  m_LFPhiProLUT = new L1MuGMTLFPhiProLUT();
204  m_LFPtMixLUT = new L1MuGMTLFPtMixLUT();
205  m_LFSortRankCombineLUT = new L1MuGMTLFSortRankCombineLUT();
206  m_LFSortRankEtaPhiLUT = new L1MuGMTLFSortRankEtaPhiLUT();
207  m_LFSortRankEtaQLUT = new L1MuGMTLFSortRankEtaQLUT();
208  m_LFSortRankPtQLUT = new L1MuGMTLFSortRankPtQLUT();
209  m_MIAUEtaConvLUT = new L1MuGMTMIAUEtaConvLUT();
210  m_MIAUEtaProLUT = new L1MuGMTMIAUEtaProLUT();
211  m_MIAUPhiPro1LUT = new L1MuGMTMIAUPhiPro1LUT();
212  m_MIAUPhiPro2LUT = new L1MuGMTMIAUPhiPro2LUT();
213  m_PhiLUT = new L1MuGMTPhiLUT();
214 
215 }
216 
218  // delete Registers
219  delete m_RegCDLConfig;
220  delete m_RegMMConfigPhi;
221  delete m_RegMMConfigEta;
222  delete m_RegMMConfigPt;
223  delete m_RegMMConfigCharge;
224  delete m_RegMMConfigMIP;
225  delete m_RegMMConfigISO;
226  delete m_RegMMConfigSRK;
227  delete m_RegSortRankOffset;
228 
229  // delete LUTs
230  delete m_EtaLUT;
231  delete m_LFCOUDeltaEtaLUT;
232  delete m_LFDeltaEtaLUT;
233  delete m_LFDisableHotLUT;
234  delete m_LFEtaConvLUT;
235  delete m_LFMatchQualLUT;
236  delete m_LFMergeRankCombineLUT;
237  delete m_LFMergeRankEtaPhiLUT;
238  delete m_LFMergeRankEtaQLUT;
239  delete m_LFMergeRankPtQLUT;
240  delete m_LFOvlEtaConvLUT;
241  delete m_LFPhiProEtaConvLUT;
242  delete m_LFPhiProLUT;
243  delete m_LFPtMixLUT;
244  delete m_LFSortRankCombineLUT;
245  delete m_LFSortRankEtaPhiLUT;
246  delete m_LFSortRankEtaQLUT;
247  delete m_LFSortRankPtQLUT;
248  delete m_MIAUEtaConvLUT;
249  delete m_MIAUEtaProLUT;
250  delete m_MIAUPhiPro1LUT;
251  delete m_MIAUPhiPro2LUT;
252  delete m_PhiLUT;
253 }
254 
256  std::vector<L1MuGMTLUT*> theLUTs;
257 
258  theLUTs.push_back( m_LFSortRankEtaQLUT );
259  theLUTs.push_back( m_LFSortRankPtQLUT );
260  theLUTs.push_back( m_LFSortRankEtaPhiLUT );
261  theLUTs.push_back( m_LFSortRankCombineLUT );
262 
263  theLUTs.push_back( m_LFDisableHotLUT );
264 
265  theLUTs.push_back( m_LFMergeRankEtaQLUT );
266  theLUTs.push_back( m_LFMergeRankPtQLUT );
267  theLUTs.push_back( m_LFMergeRankEtaPhiLUT );
268  theLUTs.push_back( m_LFMergeRankCombineLUT );
269 
270  theLUTs.push_back( m_LFDeltaEtaLUT );
271  theLUTs.push_back( m_LFMatchQualLUT );
272  theLUTs.push_back( m_LFOvlEtaConvLUT );
273  theLUTs.push_back( m_LFCOUDeltaEtaLUT );
274 
275  theLUTs.push_back( m_LFEtaConvLUT );
276 
277  theLUTs.push_back( m_LFPtMixLUT );
278  theLUTs.push_back( m_LFPhiProLUT );
279  theLUTs.push_back( m_LFPhiProEtaConvLUT );
280 
281  theLUTs.push_back( m_MIAUEtaConvLUT );
282  theLUTs.push_back( m_MIAUPhiPro1LUT );
283  theLUTs.push_back( m_MIAUPhiPro2LUT );
284  theLUTs.push_back( m_MIAUEtaProLUT );
285 
286  std::vector<L1MuGMTLUT*>::iterator it = theLUTs.begin();
287  for (;it != theLUTs.end(); it++) {
288  edm::LogVerbatim("GMT_LUTGen_info")
289  << "**** Generating " << (*it)->Name() << " LUT ****" << endl
290  << "saving" << endl;
291  std::string fn = dir + "/" + (*it)->Name() + ".lut";
292  (*it)->Save(fn.c_str());
293  }
294 
295  edm::LogVerbatim("GMT_LUTGen_info")
296  << "Successfully created all GMT look-up tables in directory './" << dir << "'" << endl << endl;
297 
298 }
299 
301  std::vector<L1MuGMTReg*> theRegs;
302 
303  theRegs.push_back( m_RegCDLConfig );
304  theRegs.push_back( m_RegMMConfigPhi );
305  theRegs.push_back( m_RegMMConfigEta );
306  theRegs.push_back( m_RegMMConfigPt );
307  theRegs.push_back( m_RegMMConfigCharge );
308  theRegs.push_back( m_RegMMConfigSRK );
309  theRegs.push_back( m_RegMMConfigMIP );
310  theRegs.push_back( m_RegMMConfigISO );
311  theRegs.push_back( m_RegSortRankOffset );
312 
313 
314  ofstream of( (dir + "/LogicFPGARegs.cfg").c_str() );
315 
316  std::vector<L1MuGMTReg*>::iterator it = theRegs.begin();
317  for (;it != theRegs.end(); it++) {
318 
319  for (unsigned int i=0; i<(*it)->getNumberOfInstances(); i++)
320  of << (*it)->getName() << "[" << i << "] = " << (*it)->getValue(i) << endl;
321 
322  }
323 
324 }
325 
326 // static data members
327 
329 
336 bool L1MuGMTConfig::m_debug = false;
337 int L1MuGMTConfig::m_BxMin = -4;
338 int L1MuGMTConfig::m_BxMax = 4;
339 int L1MuGMTConfig::m_BxMinRo = -2;
347 float L1MuGMTConfig::m_EtaWeight_COU = 0.316;
350 bool L1MuGMTConfig::m_CaloTrigger = true;
353 bool L1MuGMTConfig::m_DoOvlRpcAnd = false;
354 
355 bool L1MuGMTConfig::m_PropagatePhi = false;
357 unsigned L1MuGMTConfig::m_VersionLUTs = 0;
358 
368 
392 
398 
static L1MuGMTLFSortRankEtaPhiLUT * m_LFSortRankEtaPhiLUT
static edm::InputTag m_CSCInputTag
static L1MuGMTLFDeltaEtaLUT * m_LFDeltaEtaLUT
static float m_EtaPhiThreshold_COU
T getParameter(std::string const &) const
static L1MuGMTRegMMConfigCharge * m_RegMMConfigCharge
int i
Definition: DBlmapReader.cc:9
static L1MuGMTMIAUPhiPro2LUT * m_MIAUPhiPro2LUT
static edm::InputTag m_RPCbInputTag
static int m_BxMax
static bool m_DoOvlRpcAnd
static int m_IsolationCellSizePhi
GMT Merge Method Config Register Phi.
Definition: L1MuGMTReg.h:140
static L1MuGMTLFSortRankCombineLUT * m_LFSortRankCombineLUT
static const L1MuTriggerScales * m_TriggerScales
void dumpRegs(std::string dir)
static L1MuGMTEtaLUT * m_EtaLUT
static bool m_CaloTrigger
static int m_dbgLevel
static float m_PhiWeight_barrel
static L1MuGMTPhiLUT * m_PhiLUT
static int m_IsolationCellSizeEta
static L1MuGMTLFMergeRankEtaQLUT * m_LFMergeRankEtaQLUT
static L1MuGMTLFMatchQualLUT * m_LFMatchQualLUT
static L1MuGMTRegMMConfigISO * m_RegMMConfigISO
GMT Merge Method Config Register Charge.
Definition: L1MuGMTReg.h:170
static L1MuGMTMIAUEtaConvLUT * m_MIAUEtaConvLUT
GMT Merge Method Config Register ISO.
Definition: L1MuGMTReg.h:228
virtual ~L1MuGMTConfig()
destructor
static L1MuGMTLFDisableHotLUT * m_LFDisableHotLUT
static const L1MuTriggerPtScale * m_TriggerPtScale
static L1MuGMTRegMMConfigPhi * m_RegMMConfigPhi
static float m_EtaWeight_endcap
static const L1MuGMTChannelMask * m_GMTChanMask
static unsigned m_VersionSortRankEtaQLUT
static float m_PhiWeight_COU
static L1MuGMTLFMergeRankPtQLUT * m_LFMergeRankPtQLUT
static L1MuGMTLFMergeRankCombineLUT * m_LFMergeRankCombineLUT
static L1MuGMTRegSortRankOffset * m_RegSortRankOffset
static int m_BxMinRo
GMT Register that implements Rank offset for merged cands.
Definition: L1MuGMTReg.h:271
static L1MuGMTLFSortRankEtaQLUT * m_LFSortRankEtaQLUT
static unsigned m_VersionLUTs
static L1MuGMTRegMMConfigEta * m_RegMMConfigEta
GMT Register that implements Configuration of Cancel Decisison Logic.
Definition: L1MuGMTReg.h:300
void dumpLUTs(std::string dir)
static edm::InputTag m_MipIsoInputTag
static float m_EtaPhiThreshold_endcap
static L1MuGMTMIAUEtaProLUT * m_MIAUEtaProLUT
static float m_PhiWeight_endcap
static edm::InputTag m_RPCfInputTag
static L1MuGMTLFMergeRankEtaPhiLUT * m_LFMergeRankEtaPhiLUT
static float m_EtaWeight_barrel
GMT Register that implements additional Halo Overwrites Matched bit.
Definition: L1MuGMTReg.h:239
static const L1MuGMTScales * m_GMTScales
GMT Merge Method Config Register Eta.
Definition: L1MuGMTReg.h:150
L1MuGMTConfig(const edm::ParameterSet &ps)
constructor
static float m_EtaWeight_COU
static L1MuGMTRegMMConfigPt * m_RegMMConfigPt
static L1MuGMTLFPhiProLUT * m_LFPhiProLUT
static bool m_PropagatePhi
static const L1MuGMTParameters * m_GMTParams
static L1MuGMTRegMMConfigMIP * m_RegMMConfigMIP
static L1MuGMTLFEtaConvLUT * m_LFEtaConvLUT
static L1MuGMTLFSortRankPtQLUT * m_LFSortRankPtQLUT
void clearLUTsRegs()
GMT Merge Method Config Register Pt.
Definition: L1MuGMTReg.h:160
static L1MuGMTMIAUPhiPro1LUT * m_MIAUPhiPro1LUT
static L1MuGMTLFOvlEtaConvLUT * m_LFOvlEtaConvLUT
static float m_EtaPhiThreshold_barrel
static int m_BxMin
static const L1CaloGeometry * m_caloGeom
GMT Merge Method Config Register MIP.
Definition: L1MuGMTReg.h:218
static int m_BxMaxRo
static L1MuGMTLFCOUDeltaEtaLUT * m_LFCOUDeltaEtaLUT
void createLUTsRegs()
static const edm::ParameterSet * m_ps
static L1MuGMTLFPtMixLUT * m_LFPtMixLUT
dbl *** dir
Definition: mlp_gen.cc:35
static L1MuGMTLFPhiProEtaConvLUT * m_LFPhiProEtaConvLUT
static L1MuGMTRegCDLConfig * m_RegCDLConfig
const bool Debug
static edm::InputTag m_DTInputTag
static L1MuGMTRegMMConfigSRK * m_RegMMConfigSRK
static bool m_debug