CMS 3D CMS Logo

CSCTFSectorProcessor.cc
Go to the documentation of this file.
4 
6 
10 #include <cstdlib>
11 #include <sstream>
12 #include <strings.h>
13 
14 const std::string CSCTFSectorProcessor::FPGAs[5] = {"F1", "F2", "F3", "F4", "F5"};
15 
17  const unsigned& sector,
18  const edm::ParameterSet& pset,
19  bool tmb07,
20  const L1MuTriggerScales* scales,
21  const L1MuTriggerPtScale* ptScale) {
22  m_endcap = endcap;
23  m_sector = sector;
24  TMB07 = tmb07;
25 
26  // allows a configurable option to handle unganged ME1a
27  m_gangedME1a = pset.getUntrackedParameter<bool>("gangedME1a", true);
28 
29  // Parameter below should always present in ParameterSet:
30  m_latency = pset.getParameter<unsigned>("CoreLatency");
31  m_minBX = pset.getParameter<int>("MinBX");
32  m_maxBX = pset.getParameter<int>("MaxBX");
33  initializeFromPSet = pset.getParameter<bool>("initializeFromPSet");
34  if (m_maxBX - m_minBX >= 7)
35  edm::LogWarning("CSCTFTrackBuilder::ctor")
36  << " BX window width >= 7BX. Resetting m_maxBX=" << (m_maxBX = m_minBX + 6);
37 
38  // All following parameters may appear in either ParameterSet of in EventSetup; uninitialize:
39  m_bxa_depth = -1;
40  m_allowALCTonly = -1;
41  m_allowCLCTonly = -1;
42  m_preTrigger = -1;
43 
44  for (int index = 0; index < 7; index++)
45  m_etawin[index] = -1;
46  for (int index = 0; index < 8; index++)
47  m_etamin[index] = -1;
48  for (int index = 0; index < 8; index++)
49  m_etamax[index] = -1;
50 
51  m_mindphip = -1;
52  m_mindetap = -1;
53 
54  m_mindeta12_accp = -1;
55  m_maxdeta12_accp = -1;
56  m_maxdphi12_accp = -1;
57 
58  m_mindeta13_accp = -1;
59  m_maxdeta13_accp = -1;
60  m_maxdphi13_accp = -1;
61 
62  m_mindeta112_accp = -1;
63  m_maxdeta112_accp = -1;
64  m_maxdphi112_accp = -1;
65 
66  m_mindeta113_accp = -1;
67  m_maxdeta113_accp = -1;
68  m_maxdphi113_accp = -1;
69  m_mindphip_halo = -1;
70  m_mindetap_halo = -1;
71 
72  m_widePhi = -1;
73 
74  m_straightp = -1;
75  m_curvedp = -1;
76 
77  m_mbaPhiOff = -1;
78  m_mbbPhiOff = -1;
79 
80  kill_fiber = -1;
81  QualityEnableME1a = -1;
82  QualityEnableME1b = -1;
83  QualityEnableME1c = -1;
84  QualityEnableME1d = -1;
85  QualityEnableME1e = -1;
86  QualityEnableME1f = -1;
87  QualityEnableME2a = -1;
88  QualityEnableME2b = -1;
89  QualityEnableME2c = -1;
90  QualityEnableME3a = -1;
91  QualityEnableME3b = -1;
92  QualityEnableME3c = -1;
93  QualityEnableME4a = -1;
94  QualityEnableME4b = -1;
95  QualityEnableME4c = -1;
96 
97  run_core = -1;
98  trigger_on_ME1a = -1;
99  trigger_on_ME1b = -1;
100  trigger_on_ME2 = -1;
101  trigger_on_ME3 = -1;
102  trigger_on_ME4 = -1;
103  trigger_on_MB1a = -1;
104  trigger_on_MB1d = -1;
105 
106  singlesTrackOutput = 999;
107  rescaleSinglesPhi = -1;
108 
109  m_firmSP = -1;
110  m_firmFA = -1;
111  m_firmDD = -1;
112  m_firmVM = -1;
113 
114  initFail_ = false;
115 
116  isCoreVerbose = pset.getParameter<bool>("isCoreVerbose");
117 
118  if (initializeFromPSet)
120 
121  // Sector Receiver LUTs initialization
122  edm::ParameterSet srLUTset = pset.getParameter<edm::ParameterSet>("SRLUT");
123  for (int i = 1; i <= 4; ++i) {
124  if (i == 1)
125  for (int j = 0; j < 2; j++) {
126  srLUTs_[FPGAs[j]] = new CSCSectorReceiverLUT(endcap, sector, j + 1, i, srLUTset, TMB07);
127  }
128  else
129  srLUTs_[FPGAs[i]] = new CSCSectorReceiverLUT(endcap, sector, 0, i, srLUTset, TMB07);
130  }
131 
132  core_ = new CSCTFSPCoreLogic();
133 
134  // Pt LUTs initialization
135  if (initializeFromPSet) {
136  edm::ParameterSet ptLUTset = pset.getParameter<edm::ParameterSet>("PTLUT");
137  ptLUT_ = new CSCTFPtLUT(ptLUTset, scales, ptScale);
138  LogDebug("CSCTFSectorProcessor") << "Using stand-alone PT LUT for endcap=" << m_endcap << ", sector=" << m_sector;
139  } else {
140  ptLUT_ = nullptr;
141  LogDebug("CSCTFSectorProcessor") << "Looking for PT LUT in EventSetup for endcap=" << m_endcap
142  << ", sector=" << m_sector;
143  }
144 
145  // firmware map initialization
146  // all the information are based on the firmware releases
147  // documented at http://www.phys.ufl.edu/~uvarov/SP05/SP05.htm
148 
149  // map is <m_firmSP, core_version>
150  // it may happen that the same core is used for different firmware
151  // versions, e.g. change in the wrapper only
152 
153  // this mapping accounts for runs starting from 132440
154  // schema is year+month+day
155  firmSP_Map.insert(std::pair<int, int>(20100210, 20100122));
156  firmSP_Map.insert(std::pair<int, int>(20100617, 20100122));
157  firmSP_Map.insert(std::pair<int, int>(20100629, 20100122));
158 
159  firmSP_Map.insert(std::pair<int, int>(20100728, 20100728));
160 
161  firmSP_Map.insert(std::pair<int, int>(20100901, 20100901));
162 
163  //testing firmwares
164  firmSP_Map.insert(std::pair<int, int>(20101011, 20101011));
165  firmSP_Map.insert(std::pair<int, int>(20101210, 20101210));
166  firmSP_Map.insert(std::pair<int, int>(20110204, 20110118));
167  firmSP_Map.insert(std::pair<int, int>(20110322, 20110118));
168  // 2012 core with non linear dphi
169  firmSP_Map.insert(std::pair<int, int>(20120131, 20120131));
170  firmSP_Map.insert(std::pair<int, int>(20120227, 20120131));
171  //2012 core: 4 station track at |eta|>2.1 -> ME2-ME3-ME4
172  firmSP_Map.insert(std::pair<int, int>(20120313, 20120313));
173  firmSP_Map.insert(std::pair<int, int>(20120319, 20120313));
174  //2012 core: 4 station track at |eta|>2.1 -> ME1-ME2-ME3 test
175  firmSP_Map.insert(std::pair<int, int>(20120730, 20120730));
176  //2014 core: 4 station track at |eta|>2.1 -> ME1-ME2-ME3 test + correct F/R bit set
177  firmSP_Map.insert(std::pair<int, int>(20140424, 20140424));
178  //2014 core: 4 station track at |eta|>2.1 -> ME1-ME2-ME3 test + correct F/R bit set + bug fix
179  firmSP_Map.insert(std::pair<int, int>(20140515, 20140515));
180 }
181 
183  initFail_ = false;
184  if (!initializeFromPSet) {
185  // Only pT lut can be initialized from EventSetup, all front LUTs are initialized locally from their parametrizations
186  LogDebug("CSCTFSectorProcessor") << "Initializing endcap: " << m_endcap << " sector:" << m_sector
187  << "SP:" << (m_endcap - 1) * 6 + (m_sector - 1);
188  LogDebug("CSCTFSectorProcessor") << "Initializing pT LUT from EventSetup";
189 
190  ptLUT_ = new CSCTFPtLUT(c);
191 
192  // Extract from EventSetup alternative (to the one, used in constructor) ParameterSet
195  // And initialize only those parameters, which left uninitialized during construction
196  readParameters(config.product()->parameters((m_endcap - 1) * 6 + (m_sector - 1)));
197  }
198 
199  // ---------------------------------------------------------------------------
200  // This part is added per Vasile's request.
201  // It will help people understanding the emulator configuration
202  LogDebug("CSCTFSectorProcessor")
203  << "\n !!! CSCTF EMULATOR CONFIGURATION !!!"
204  << "\n\nCORE CONFIGURATION"
205  << "\n Coincidence Trigger? " << run_core << "\n Singles in ME1a? " << trigger_on_ME1a << "\n Singles in ME1b? "
206  << trigger_on_ME1b << "\n Singles in ME2? " << trigger_on_ME2 << "\n Singles in ME3? " << trigger_on_ME3
207  << "\n Singles in ME4? " << trigger_on_ME4 << "\n Singles in MB1a? " << trigger_on_MB1a << "\n Singles in MB1d? "
208  << trigger_on_MB1d
209 
210  << "\n BX Analyzer depth: assemble coinc. track with stubs in +/-" << m_bxa_depth << " Bxs"
211  << "\n Is Wide Phi Extrapolation (DeltaPhi valid up to ~15 degrees, otherwise ~7.67 degrees)? " << m_widePhi
212  << "\n PreTrigger=" << m_preTrigger
213 
214  << "\n CoreLatency=" << m_latency << "\n Is Phi for singles rescaled? " << rescaleSinglesPhi
215 
216  << "\n\nVARIOUS CONFIGURATION PARAMETERS"
217  << "\n Allow ALCT only? " << m_allowALCTonly << "\n Allow CLCT only? " << m_allowCLCTonly
218 
219  << "\nQualityEnableME1a (in general accept all LCT qualities, i.e. 0xFFFF is expected)=" << QualityEnableME1a
220  << "\nQualityEnableME1b (in general accept all LCT qualities, i.e. 0xFFFF is expected)=" << QualityEnableME1b
221  << "\nQualityEnableME1c (in general accept all LCT qualities, i.e. 0xFFFF is expected)=" << QualityEnableME1c
222  << "\nQualityEnableME1d (in general accept all LCT qualities, i.e. 0xFFFF is expected)=" << QualityEnableME1d
223  << "\nQualityEnableME1e (in general accept all LCT qualities, i.e. 0xFFFF is expected)=" << QualityEnableME1e
224  << "\nQualityEnableME1f (in general accept all LCT qualities, i.e. 0xFFFF is expected)=" << QualityEnableME1f
225  << "\nQualityEnableME2a (in general accept all LCT qualities, i.e. 0xFFFF is expected)=" << QualityEnableME2a
226  << "\nQualityEnableME2b (in general accept all LCT qualities, i.e. 0xFFFF is expected)=" << QualityEnableME2b
227  << "\nQualityEnableME2c (in general accept all LCT qualities, i.e. 0xFFFF is expected)=" << QualityEnableME2c
228  << "\nQualityEnableME3a (in general accept all LCT qualities, i.e. 0xFFFF is expected)=" << QualityEnableME3a
229  << "\nQualityEnableME3b (in general accept all LCT qualities, i.e. 0xFFFF is expected)=" << QualityEnableME3b
230  << "\nQualityEnableME3c (in general accept all LCT qualities, i.e. 0xFFFF is expected)=" << QualityEnableME3c
231  << "\nQualityEnableME4a (in general accept all LCT qualities, i.e. 0xFFFF is expected)=" << QualityEnableME4a
232  << "\nQualityEnableME4b (in general accept all LCT qualities, i.e. 0xFFFF is expected)=" << QualityEnableME4b
233  << "\nQualityEnableME4c (in general accept all LCT qualities, i.e. 0xFFFF is expected)=" << QualityEnableME4c
234 
235  << "\nkill_fiber=" << kill_fiber << "\nSingles Output Link="
237 
238  //the DAT_ETA registers meaning are explained at Table 2 of
239  //http://www.phys.ufl.edu/~uvarov/SP05/LU-SP_ReferenceGuide_090915_Update.pdf
240 
241  << "\n\nDAT_ETA REGISTERS"
242  << "\nMinimum eta difference for track cancellation logic=" << m_mindetap
243  << "\nMinimum eta difference for halo track cancellation logic=" << m_mindetap_halo
244 
245  << "\nMinimum eta for ME1-ME2 collision tracks=" << m_etamin[0]
246  << "\nMinimum eta for ME1-ME3 collision tracks=" << m_etamin[1]
247  << "\nMinimum eta for ME2-ME3 collision tracks=" << m_etamin[2]
248  << "\nMinimum eta for ME2-ME4 collision tracks=" << m_etamin[3]
249  << "\nMinimum eta for ME3-ME4 collision tracks=" << m_etamin[4]
250  << "\nMinimum eta for ME1-ME2 collision tracks in overlap region=" << m_etamin[5]
251  << "\nMinimum eta for ME2-MB1 collision tracks=" << m_etamin[6]
252  << "\nMinimum eta for ME1-ME4 collision tracks=" << m_etamin[7]
253 
254  << "\nMinimum eta difference for ME1-ME2 (except ME1/1) halo tracks=" << m_mindeta12_accp
255  << "\nMinimum eta difference for ME1-ME3 (except ME1/1) halo tracks=" << m_mindeta13_accp
256  << "\nMinimum eta difference for ME1/1-ME2 halo tracks=" << m_mindeta112_accp
257  << "\nMinimum eta difference for ME1/1-ME3 halo tracks=" << m_mindeta113_accp
258 
259  << "\nMaximum eta for ME1-ME2 collision tracks=" << m_etamax[0]
260  << "\nMaximum eta for ME1-ME3 collision tracks=" << m_etamax[1]
261  << "\nMaximum eta for ME2-ME3 collision tracks=" << m_etamax[2]
262  << "\nMaximum eta for ME2-ME4 collision tracks=" << m_etamax[3]
263  << "\nMaximum eta for ME3-ME4 collision tracks=" << m_etamax[4]
264  << "\nMaximum eta for ME1-ME2 collision tracks in overlap region=" << m_etamax[5]
265  << "\nMaximum eta for ME2-MB1 collision tracks=" << m_etamax[6]
266  << "\nMaximum eta for ME1-ME4 collision tracks=" << m_etamax[7]
267 
268  << "\nMaximum eta difference for ME1-ME2 (except ME1/1) halo tracks=" << m_maxdeta12_accp
269  << "\nMaximum eta difference for ME1-ME3 (except ME1/1) halo tracks=" << m_maxdeta13_accp
270  << "\nMaximum eta difference for ME1/1-ME2 halo tracks=" << m_maxdeta112_accp
271  << "\nMaximum eta difference for ME1/1-ME3 halo tracks=" << m_maxdeta113_accp
272 
273  << "\nEta window for ME1-ME2 collision tracks=" << m_etawin[0]
274  << "\nEta window for ME1-ME3 collision tracks=" << m_etawin[1]
275  << "\nEta window for ME2-ME3 collision tracks=" << m_etawin[2]
276  << "\nEta window for ME2-ME4 collision tracks=" << m_etawin[3]
277  << "\nEta window for ME3-ME4 collision tracks=" << m_etawin[4]
278  << "\nEta window for ME1-ME2 collision tracks in overlap region=" << m_etawin[5]
279  << "\nEta window for ME1-ME4 collision tracks=" << m_etawin[6]
280 
281  << "\nMaximum phi difference for ME1-ME2 (except ME1/1) halo tracks=" << m_maxdphi12_accp
282  << "\nMaximum phi difference for ME1-ME3 (except ME1/1) halo tracks=" << m_maxdphi13_accp
283  << "\nMaximum phi difference for ME1/1-ME2 halo tracks=" << m_maxdphi112_accp
284  << "\nMaximum phi difference for ME1/1-ME3 halo tracks=" << m_maxdphi113_accp
285 
286  << "\nMinimum phi difference for track cancellation logic=" << m_mindphip
287  << "\nMinimum phi difference for halo track cancellation logic=" << m_mindphip_halo
288 
289  << "\nParameter for the correction of misaligned 1-2-3-4 straight tracks =" << m_straightp
290  << "\nParameter for the correction of misaligned 1-2-3-4 curved tracks=" << m_curvedp
291  << "\nPhi Offset for MB1A=" << m_mbaPhiOff << "\nPhi Offset for MB1D=" << m_mbbPhiOff
292 
293  << "\nFirmware SP year+month+day:" << m_firmSP << "\nFirmware FA year+month+day:" << m_firmFA
294  << "\nFirmware DD year+month+day:" << m_firmDD << "\nFirmware VM year+month+day:" << m_firmVM;
295 
297 
298  // set core verbosity: for debugging only purpouses
299  // in general the output is handled to Alex Madorsky
301 
302  // Set the SP firmware
304 
305  // Set the firmware for the CORE
306  int firmVersCore = firmSP_Map.find(m_firmSP)->second;
307  core_->SetCoreFirmwareVersion(firmVersCore);
308  edm::LogInfo("CSCTFSectorProcessor") << "\nCore Firmware is set to " << core_->GetCoreFirmwareVersion();
309  // ---------------------------------------------------------------------------
310 
311  // Check if parameters were not initialized in both: constuctor (from .cf? file) and initialize method (from EventSetup)
312  if (m_bxa_depth < 0) {
313  initFail_ = true;
314  edm::LogError("CSCTFSectorProcessor")
315  << "BXAdepth parameter left uninitialized for endcap=" << m_endcap << ", sector=" << m_sector;
316  }
317  if (m_allowALCTonly < 0) {
318  initFail_ = true;
319  edm::LogError("CSCTFSectorProcessor")
320  << "AllowALCTonly parameter left uninitialized for endcap=" << m_endcap << ", sector=" << m_sector;
321  }
322  if (m_allowCLCTonly < 0) {
323  initFail_ = true;
324  edm::LogError("CSCTFSectorProcessor")
325  << "AllowCLCTonly parameter left uninitialized for endcap=" << m_endcap << ", sector=" << m_sector;
326  }
327  if (m_preTrigger < 0) {
328  initFail_ = true;
329  edm::LogError("CSCTFSectorProcessor")
330  << "PreTrigger parameter left uninitialized for endcap=" << m_endcap << ", sector=" << m_sector;
331  }
332  if (m_mindphip < 0) {
333  initFail_ = true;
334  edm::LogError("CSCTFSectorProcessor")
335  << "mindphip parameter left uninitialized for endcap=" << m_endcap << ", sector=" << m_sector;
336  }
337  if (m_mindetap < 0) {
338  initFail_ = true;
339  edm::LogError("CSCTFSectorProcessor")
340  << "mindeta parameter left uninitialized for endcap=" << m_endcap << ", sector=" << m_sector;
341  }
342  if (m_straightp < 0) {
343  initFail_ = true;
344  edm::LogError("CSCTFSectorProcessor")
345  << "straightp parameter left unitialized for endcap=" << m_endcap << ", sector=" << m_sector;
346  }
347  if (m_curvedp < 0) {
348  initFail_ = true;
349  edm::LogError("CSCTFSectorProcessor")
350  << "curvedp parameter left unitialized for endcap=" << m_endcap << ",sector=" << m_sector;
351  }
352  if (m_mbaPhiOff < 0) {
353  initFail_ = true;
354  edm::LogError("CSCTFSectorProcessor")
355  << "mbaPhiOff parameter left unitialized for endcap=" << m_endcap << ",sector=" << m_sector;
356  }
357  if (m_mbbPhiOff < 0) {
358  initFail_ = true;
359  edm::LogError("CSCTFSectorProcessor")
360  << "mbbPhiOff parameter left unitialized for endcap=" << m_endcap << ",sector=" << m_sector;
361  }
362  if (m_mindeta12_accp < 0) {
363  initFail_ = true;
364  edm::LogError("CSCTFSectorProcessor")
365  << "mindeta_accp12 parameter left uninitialized for endcap=" << m_endcap << ", sector=" << m_sector;
366  }
367  if (m_maxdeta12_accp < 0) {
368  initFail_ = true;
369  edm::LogError("CSCTFSectorProcessor")
370  << "maxdeta_accp12 parameter left uninitialized for endcap=" << m_endcap << ", sector=" << m_sector;
371  }
372  if (m_maxdphi12_accp < 0) {
373  initFail_ = true;
374  edm::LogError("CSCTFSectorProcessor")
375  << "maxdphi_accp12 parameter left uninitialized for endcap=" << m_endcap << ", sector=" << m_sector;
376  }
377  if (m_mindeta13_accp < 0) {
378  initFail_ = true;
379  edm::LogError("CSCTFSectorProcessor")
380  << "mindeta_accp13 parameter left uninitialized for endcap=" << m_endcap << ", sector=" << m_sector;
381  }
382  if (m_maxdeta13_accp < 0) {
383  initFail_ = true;
384  edm::LogError("CSCTFSectorProcessor")
385  << "maxdeta_accp13 parameter left uninitialized for endcap=" << m_endcap << ", sector=" << m_sector;
386  }
387  if (m_maxdphi13_accp < 0) {
388  initFail_ = true;
389  edm::LogError("CSCTFSectorProcessor")
390  << "maxdphi_accp13 parameter left uninitialized for endcap=" << m_endcap << ", sector=" << m_sector;
391  }
392  if (m_mindeta112_accp < 0) {
393  initFail_ = true;
394  edm::LogError("CSCTFSectorProcessor")
395  << "mindeta_accp112 parameter left uninitialized for endcap=" << m_endcap << ", sector=" << m_sector;
396  }
397  if (m_maxdeta112_accp < 0) {
398  initFail_ = true;
399  edm::LogError("CSCTFSectorProcessor")
400  << "maxdeta_accp112 parameter left uninitialized for endcap=" << m_endcap << ", sector=" << m_sector;
401  }
402  if (m_maxdphi112_accp < 0) {
403  initFail_ = true;
404  edm::LogError("CSCTFSectorProcessor")
405  << "maxdphi_accp112 parameter left uninitialized for endcap=" << m_endcap << ", sector=" << m_sector;
406  }
407  if (m_mindeta113_accp < 0) {
408  initFail_ = true;
409  edm::LogError("CSCTFSectorProcessor")
410  << "mindeta_accp113 parameter left uninitialized for endcap=" << m_endcap << ", sector=" << m_sector;
411  }
412  if (m_maxdeta113_accp < 0) {
413  initFail_ = true;
414  edm::LogError("CSCTFSectorProcessor")
415  << "maxdeta_accp113 parameter left uninitialized for endcap=" << m_endcap << ", sector=" << m_sector;
416  }
417  if (m_maxdphi113_accp < 0) {
418  initFail_ = true;
419  edm::LogError("CSCTFSectorProcessor")
420  << "maxdphi_accp113 parameter left uninitialized for endcap=" << m_endcap << ", sector=" << m_sector;
421  }
422  if (m_mindphip_halo < 0) {
423  initFail_ = true;
424  edm::LogError("CSCTFSectorProcessor")
425  << "mindphip_halo parameter left uninitialized for endcap=" << m_endcap << ", sector=" << m_sector;
426  }
427  if (m_mindetap_halo < 0) {
428  initFail_ = true;
429  edm::LogError("CSCTFSectorProcessor")
430  << "mindetep_halo parameter left uninitialized for endcap=" << m_endcap << ", sector=" << m_sector;
431  }
432 
433  if (m_widePhi < 0) {
434  initFail_ = true;
435  edm::LogError("CSCTFSectorProcessor")
436  << "widePhi parameter left unitialized for endcap=" << m_endcap << ", sector=" << m_sector;
437  }
438 
439  for (int index = 0; index < 8; index++)
440  if (m_etamax[index] < 0) {
441  initFail_ = true;
442  edm::LogError("CSCTFSectorProcessor")
443  << "Some (" << (8 - index) << ") of EtaMax parameters left uninitialized for endcap=" << m_endcap
444  << ", sector=" << m_sector;
445  }
446  for (int index = 0; index < 8; index++)
447  if (m_etamin[index] < 0) {
448  initFail_ = true;
449  edm::LogError("CSCTFSectorProcessor")
450  << "Some (" << (8 - index) << ") of EtaMin parameters left uninitialized for endcap=" << m_endcap
451  << ", sector=" << m_sector;
452  }
453  for (int index = 0; index < 7; index++)
454  if (m_etawin[index] < 0) {
455  initFail_ = true;
456  edm::LogError("CSCTFSectorProcessor")
457  << "Some (" << (6 - index) << ") of EtaWindows parameters left uninitialized for endcap=" << m_endcap
458  << ", sector=" << m_sector;
459  }
460  if (kill_fiber < 0) {
461  initFail_ = true;
462  edm::LogError("CSCTFTrackBuilder") << "kill_fiber parameter left uninitialized";
463  }
464  if (run_core < 0) {
465  initFail_ = true;
466  edm::LogError("CSCTFTrackBuilder") << "run_core parameter left uninitialized";
467  }
468  if (trigger_on_ME1a < 0) {
469  initFail_ = true;
470  edm::LogError("CSCTFTrackBuilder") << "trigger_on_ME1a parameter left uninitialized";
471  }
472  if (trigger_on_ME1b < 0) {
473  initFail_ = true;
474  edm::LogError("CSCTFTrackBuilder") << "trigger_on_ME1b parameter left uninitialized";
475  }
476  if (trigger_on_ME2 < 0) {
477  initFail_ = true;
478  edm::LogError("CSCTFTrackBuilder") << "trigger_on_ME2 parameter left uninitialized";
479  }
480  if (trigger_on_ME3 < 0) {
481  initFail_ = true;
482  edm::LogError("CSCTFTrackBuilder") << "trigger_on_ME3 parameter left uninitialized";
483  }
484  if (trigger_on_ME4 < 0) {
485  initFail_ = true;
486  edm::LogError("CSCTFTrackBuilder") << "trigger_on_ME4 parameter left uninitialized";
487  }
488  if (trigger_on_MB1a < 0) {
489  initFail_ = true;
490  edm::LogError("CSCTFTrackBuilder") << "trigger_on_MB1a parameter left uninitialized";
491  }
492  if (trigger_on_MB1d < 0) {
493  initFail_ = true;
494  edm::LogError("CSCTFTrackBuilder") << "trigger_on_MB1d parameter left uninitialized";
495  }
496  if (trigger_on_ME1a > 0 || trigger_on_ME1b > 0 || trigger_on_ME2 > 0 || trigger_on_ME3 > 0 || trigger_on_ME4 > 0 ||
497  trigger_on_MB1a > 0 || trigger_on_MB1d > 0) {
498  if (singlesTrackOutput == 999) {
499  initFail_ = true;
500  edm::LogError("CSCTFTrackBuilder") << "singlesTrackOutput parameter left uninitialized";
501  }
502  if (rescaleSinglesPhi < 0) {
503  initFail_ = true;
504  edm::LogError("CSCTFTrackBuilder") << "rescaleSinglesPhi parameter left uninitialized";
505  }
506  }
507  if (QualityEnableME1a < 0) {
508  initFail_ = true;
509  edm::LogError("CSCTFTrackBuilder") << "QualityEnableME1a parameter left uninitialized";
510  }
511  if (QualityEnableME1b < 0) {
512  initFail_ = true;
513  edm::LogError("CSCTFTrackBuilder") << "QualityEnableME1b parameter left uninitialized";
514  }
515  if (QualityEnableME1c < 0) {
516  initFail_ = true;
517  edm::LogError("CSCTFTrackBuilder") << "QualityEnableME1c parameter left uninitialized";
518  }
519  if (QualityEnableME1d < 0) {
520  initFail_ = true;
521  edm::LogError("CSCTFTrackBuilder") << "QualityEnableME1d parameter left uninitialized";
522  }
523  if (QualityEnableME1e < 0) {
524  initFail_ = true;
525  edm::LogError("CSCTFTrackBuilder") << "QualityEnableME1e parameter left uninitialized";
526  }
527  if (QualityEnableME1f < 0) {
528  initFail_ = true;
529  edm::LogError("CSCTFTrackBuilder") << "QualityEnableME1f parameter left uninitialized";
530  }
531  if (QualityEnableME2a < 0) {
532  initFail_ = true;
533  edm::LogError("CSCTFTrackBuilder") << "QualityEnableME2a parameter left uninitialized";
534  }
535  if (QualityEnableME2b < 0) {
536  initFail_ = true;
537  edm::LogError("CSCTFTrackBuilder") << "QualityEnableME2b parameter left uninitialized";
538  }
539  if (QualityEnableME2c < 0) {
540  initFail_ = true;
541  edm::LogError("CSCTFTrackBuilder") << "QualityEnableME2c parameter left uninitialized";
542  }
543  if (QualityEnableME3a < 0) {
544  initFail_ = true;
545  edm::LogError("CSCTFTrackBuilder") << "QualityEnableME3a parameter left uninitialized";
546  }
547  if (QualityEnableME3b < 0) {
548  initFail_ = true;
549  edm::LogError("CSCTFTrackBuilder") << "QualityEnableME3b parameter left uninitialized";
550  }
551  if (QualityEnableME3c < 0) {
552  initFail_ = true;
553  edm::LogError("CSCTFTrackBuilder") << "QualityEnableME3c parameter left uninitialized";
554  }
555  if (QualityEnableME4a < 0) {
556  initFail_ = true;
557  edm::LogError("CSCTFTrackBuilder") << "QualityEnableME4a parameter left uninitialized";
558  }
559  if (QualityEnableME4b < 0) {
560  initFail_ = true;
561  edm::LogError("CSCTFTrackBuilder") << "QualityEnableME4b parameter left uninitialized";
562  }
563  if (QualityEnableME4c < 0) {
564  initFail_ = true;
565  edm::LogError("CSCTFTrackBuilder") << "QualityEnableME4c parameter left uninitialized";
566  }
567 
568  if (m_firmSP < 1) {
569  initFail_ = true;
570  edm::LogError("CSCTFSectorProcessor") << " firmwareSP parameter left uninitialized!!!\n";
571  }
572  if (m_firmFA < 1) {
573  initFail_ = true;
574  edm::LogError("CSCTFSectorProcessor") << " firmwareFA parameter left uninitialized!!!\n";
575  }
576  if (m_firmDD < 1) {
577  initFail_ = true;
578  edm::LogError("CSCTFSectorProcessor") << " firmwareDD parameter left uninitialized!!!\n";
579  }
580  if (m_firmVM < 1) {
581  initFail_ = true;
582  edm::LogError("CSCTFSectorProcessor") << " firmwareVM parameter left uninitialized!!!\n";
583  }
584 
585  if ((m_firmFA != m_firmDD) || (m_firmFA != m_firmVM) || (m_firmDD != m_firmVM)) {
586  initFail_ = true;
587  edm::LogError("CSCTFSectorProcessor::initialize")
588  << " firmwareFA (=" << m_firmFA << "), "
589  << " firmwareDD (=" << m_firmDD << "), "
590  << " firmwareVM (=" << m_firmVM << ") are NOT identical: it shoultd NOT happen!\n";
591  }
592 }
593 
595  m_bxa_depth = pset.getParameter<unsigned>("BXAdepth");
596  m_allowALCTonly = (pset.getParameter<bool>("AllowALCTonly") ? 1 : 0);
597  m_allowCLCTonly = (pset.getParameter<bool>("AllowCLCTonly") ? 1 : 0);
598  m_preTrigger = pset.getParameter<unsigned>("PreTrigger");
599 
600  std::vector<unsigned>::const_iterator iter;
601  int index = 0;
602  std::vector<unsigned> etawins = pset.getParameter<std::vector<unsigned> >("EtaWindows");
603  for (iter = etawins.begin(), index = 0; iter != etawins.end() && index < 7; iter++, index++)
604  m_etawin[index] = *iter;
605  std::vector<unsigned> etamins = pset.getParameter<std::vector<unsigned> >("EtaMin");
606  for (iter = etamins.begin(), index = 0; iter != etamins.end() && index < 8; iter++, index++)
607  m_etamin[index] = *iter;
608  std::vector<unsigned> etamaxs = pset.getParameter<std::vector<unsigned> >("EtaMax");
609  for (iter = etamaxs.begin(), index = 0; iter != etamaxs.end() && index < 8; iter++, index++)
610  m_etamax[index] = *iter;
611 
612  m_mindphip = pset.getParameter<unsigned>("mindphip");
613  m_mindetap = pset.getParameter<unsigned>("mindetap");
614  m_straightp = pset.getParameter<unsigned>("straightp");
615  m_curvedp = pset.getParameter<unsigned>("curvedp");
616  m_mbaPhiOff = pset.getParameter<unsigned>("mbaPhiOff");
617  m_mbbPhiOff = pset.getParameter<unsigned>("mbbPhiOff");
618  m_widePhi = pset.getParameter<unsigned>("widePhi");
619  m_mindeta12_accp = pset.getParameter<unsigned>("mindeta12_accp");
620  m_maxdeta12_accp = pset.getParameter<unsigned>("maxdeta12_accp");
621  m_maxdphi12_accp = pset.getParameter<unsigned>("maxdphi12_accp");
622  m_mindeta13_accp = pset.getParameter<unsigned>("mindeta13_accp");
623  m_maxdeta13_accp = pset.getParameter<unsigned>("maxdeta13_accp");
624  m_maxdphi13_accp = pset.getParameter<unsigned>("maxdphi13_accp");
625  m_mindeta112_accp = pset.getParameter<unsigned>("mindeta112_accp");
626  m_maxdeta112_accp = pset.getParameter<unsigned>("maxdeta112_accp");
627  m_maxdphi112_accp = pset.getParameter<unsigned>("maxdphi112_accp");
628  m_mindeta113_accp = pset.getParameter<unsigned>("mindeta113_accp");
629  m_maxdeta113_accp = pset.getParameter<unsigned>("maxdeta113_accp");
630  m_maxdphi113_accp = pset.getParameter<unsigned>("maxdphi113_accp");
631  m_mindphip_halo = pset.getParameter<unsigned>("mindphip_halo");
632  m_mindetap_halo = pset.getParameter<unsigned>("mindetap_halo");
633  kill_fiber = pset.getParameter<unsigned>("kill_fiber");
634  run_core = pset.getParameter<bool>("run_core");
635  trigger_on_ME1a = pset.getParameter<bool>("trigger_on_ME1a");
636  trigger_on_ME1b = pset.getParameter<bool>("trigger_on_ME1b");
637  trigger_on_ME2 = pset.getParameter<bool>("trigger_on_ME2");
638  trigger_on_ME3 = pset.getParameter<bool>("trigger_on_ME3");
639  trigger_on_ME4 = pset.getParameter<bool>("trigger_on_ME4");
640  trigger_on_MB1a = pset.getParameter<bool>("trigger_on_MB1a");
641  trigger_on_MB1d = pset.getParameter<bool>("trigger_on_MB1d");
642 
643  singlesTrackOutput = pset.getParameter<unsigned int>("singlesTrackOutput");
644  rescaleSinglesPhi = pset.getParameter<bool>("rescaleSinglesPhi");
645  QualityEnableME1a = pset.getParameter<unsigned int>("QualityEnableME1a");
646  QualityEnableME1b = pset.getParameter<unsigned int>("QualityEnableME1b");
647  QualityEnableME1c = pset.getParameter<unsigned int>("QualityEnableME1c");
648  QualityEnableME1d = pset.getParameter<unsigned int>("QualityEnableME1d");
649  QualityEnableME1e = pset.getParameter<unsigned int>("QualityEnableME1e");
650  QualityEnableME1f = pset.getParameter<unsigned int>("QualityEnableME1f");
651  QualityEnableME2a = pset.getParameter<unsigned int>("QualityEnableME2a");
652  QualityEnableME2b = pset.getParameter<unsigned int>("QualityEnableME2b");
653  QualityEnableME2c = pset.getParameter<unsigned int>("QualityEnableME2c");
654  QualityEnableME3a = pset.getParameter<unsigned int>("QualityEnableME3a");
655  QualityEnableME3b = pset.getParameter<unsigned int>("QualityEnableME3b");
656  QualityEnableME3c = pset.getParameter<unsigned int>("QualityEnableME3c");
657  QualityEnableME4a = pset.getParameter<unsigned int>("QualityEnableME4a");
658  QualityEnableME4b = pset.getParameter<unsigned int>("QualityEnableME4b");
659  QualityEnableME4c = pset.getParameter<unsigned int>("QualityEnableME4c");
660 
661  m_firmSP = pset.getParameter<unsigned int>("firmwareSP");
662  m_firmFA = pset.getParameter<unsigned int>("firmwareFA");
663  m_firmDD = pset.getParameter<unsigned int>("firmwareDD");
664  m_firmVM = pset.getParameter<unsigned int>("firmwareVM");
665 }
666 
668  for (int i = 0; i < 5; ++i) {
669  if (srLUTs_[FPGAs[i]])
670  delete srLUTs_[FPGAs[i]]; // delete the pointer
671  srLUTs_[FPGAs[i]] = nullptr; // point it at a safe place
672  }
673 
674  delete core_;
675  core_ = nullptr;
676 
677  if (ptLUT_)
678  delete ptLUT_;
679  ptLUT_ = nullptr;
680 }
681 
682 //returns 0 for no tracks, 1 tracks found, and -1 for "exception" (what used to throw an exception)
683 // on -1, Producer should produce empty collections for event
685  if (initFail_)
686  return -1;
687 
688  if (!ptLUT_) {
689  edm::LogError("CSCTFSectorProcessor::run()")
690  << "No CSCTF PTLUTs: Initialize CSC TF LUTs first (missed call to CSCTFTrackProducer::beginJob?\n";
691  return -1;
692  }
693 
694  l1_tracks.clear();
695  dt_stubs.clear();
696  stub_vec_filtered.clear();
697 
698  std::vector<csctf::TrackStub> stub_vec = stubs.get();
699 
703  for (std::vector<csctf::TrackStub>::const_iterator itr = stub_vec.begin(); itr != stub_vec.end(); itr++)
704  switch (itr->station()) {
705  case 5:
706  stub_vec_filtered.push_back(*itr);
707  break; // DT stubs get filtered by the core controll register
708  case 4:
709  switch (itr->getMPCLink()) {
710  case 3:
711  if ((kill_fiber & 0x4000) == 0 && QualityEnableME4c & (1 << itr->getQuality()))
712  stub_vec_filtered.push_back(*itr);
713  break;
714  case 2:
715  if ((kill_fiber & 0x2000) == 0 && QualityEnableME4b & (1 << itr->getQuality()))
716  stub_vec_filtered.push_back(*itr);
717  break;
718  case 1:
719  if ((kill_fiber & 0x1000) == 0 && QualityEnableME4a & (1 << itr->getQuality()))
720  stub_vec_filtered.push_back(*itr);
721  break;
722  default:
723  edm::LogWarning("CSCTFSectorProcessor::run()")
724  << "No MPC sorting for LCT: link=" << itr->getMPCLink() << "\n";
725  }
726  break;
727  case 3:
728  switch (itr->getMPCLink()) {
729  case 3:
730  if ((kill_fiber & 0x0800) == 0 && QualityEnableME3c & (1 << itr->getQuality()))
731  stub_vec_filtered.push_back(*itr);
732  break;
733  case 2:
734  if ((kill_fiber & 0x0400) == 0 && QualityEnableME3b & (1 << itr->getQuality()))
735  stub_vec_filtered.push_back(*itr);
736  break;
737  case 1:
738  if ((kill_fiber & 0x0200) == 0 && QualityEnableME3a & (1 << itr->getQuality()))
739  stub_vec_filtered.push_back(*itr);
740  break;
741  default:
742  edm::LogWarning("CSCTFSectorProcessor::run()")
743  << "No MPC sorting for LCT: link=" << itr->getMPCLink() << "\n";
744  }
745  break;
746  case 2:
747  switch (itr->getMPCLink()) {
748  case 3:
749  if ((kill_fiber & 0x0100) == 0 && QualityEnableME2c & (1 << itr->getQuality()))
750  stub_vec_filtered.push_back(*itr);
751  break;
752  case 2:
753  if ((kill_fiber & 0x0080) == 0 && QualityEnableME2b & (1 << itr->getQuality()))
754  stub_vec_filtered.push_back(*itr);
755  break;
756  case 1:
757  if ((kill_fiber & 0x0040) == 0 && QualityEnableME2a & (1 << itr->getQuality()))
758  stub_vec_filtered.push_back(*itr);
759  break;
760  default:
761  edm::LogWarning("CSCTFSectorProcessor::run()")
762  << "No MPC sorting for LCT: link=" << itr->getMPCLink() << "\n";
763  }
764  break;
765  case 1:
766  switch (itr->getMPCLink() +
767  (3 * (CSCTriggerNumbering::triggerSubSectorFromLabels(CSCDetId(itr->getDetId().rawId())) - 1))) {
768  case 6:
769  if ((kill_fiber & 0x0020) == 0 && QualityEnableME1f & (1 << itr->getQuality()))
770  stub_vec_filtered.push_back(*itr);
771  break;
772  case 5:
773  if ((kill_fiber & 0x0010) == 0 && QualityEnableME1e & (1 << itr->getQuality()))
774  stub_vec_filtered.push_back(*itr);
775  break;
776  case 4:
777  if ((kill_fiber & 0x0008) == 0 && QualityEnableME1d & (1 << itr->getQuality()))
778  stub_vec_filtered.push_back(*itr);
779  break;
780  case 3:
781  if ((kill_fiber & 0x0004) == 0 && QualityEnableME1c & (1 << itr->getQuality()))
782  stub_vec_filtered.push_back(*itr);
783  break;
784  case 2:
785  if ((kill_fiber & 0x0002) == 0 && QualityEnableME1b & (1 << itr->getQuality()))
786  stub_vec_filtered.push_back(*itr);
787  break;
788  case 1:
789  if ((kill_fiber & 0x0001) == 0 && QualityEnableME1a & (1 << itr->getQuality()))
790  stub_vec_filtered.push_back(*itr);
791  break;
792  default:
793  edm::LogWarning("CSCTFSectorProcessor::run()")
794  << "No MPC sorting for LCT: link=" << itr->getMPCLink() << "\n";
795  }
796  break;
797  default:
798  edm::LogWarning("CSCTFSectorProcessor::run()") << "Invalid station # encountered: " << itr->station() << "\n";
799  }
800 
809  for (std::vector<csctf::TrackStub>::iterator itr = stub_vec_filtered.begin(); itr != stub_vec_filtered.end(); itr++) {
810  if (itr->station() != 5) {
811  CSCDetId id(itr->getDetId().rawId());
812  unsigned fpga = (id.station() == 1) ? CSCTriggerNumbering::triggerSubSectorFromLabels(id) - 1 : id.station();
813 
814  lclphidat lclPhi;
815  try {
816  lclPhi = srLUTs_[FPGAs[fpga]]->localPhi(
817  itr->getStrip(), itr->getPattern(), itr->getQuality(), itr->getBend(), m_gangedME1a);
818  } catch (cms::Exception& e) {
819  bzero(&lclPhi, sizeof(lclPhi));
820  edm::LogWarning("CSCTFSectorProcessor:run()")
821  << "Exception from LocalPhi LUT in " << FPGAs[fpga] << "(strip=" << itr->getStrip()
822  << ",pattern=" << itr->getPattern() << ",quality=" << itr->getQuality() << ",bend=" << itr->getBend() << ")"
823  << std::endl;
824  }
825 
826  gblphidat gblPhi;
827  try {
828  unsigned csc_id = itr->cscid();
829  if (!m_gangedME1a)
830  csc_id = itr->cscidSeparateME1a();
831  //std::cout << "station="<<id.station()<<" ring="<<id.ring()<<" strip="<<itr->getStrip()<<" WG="<<itr->getKeyWG()<<std::endl;
832  //std::cout << "csc_id=" << csc_id << std::endl;
833  gblPhi = srLUTs_[FPGAs[fpga]]->globalPhiME(lclPhi.phi_local, itr->getKeyWG(), csc_id, m_gangedME1a);
834 
835  } catch (cms::Exception& e) {
836  bzero(&gblPhi, sizeof(gblPhi));
837  edm::LogWarning("CSCTFSectorProcessor:run()")
838  << "Exception from GlobalPhi LUT in " << FPGAs[fpga] << "(phi_local=" << lclPhi.phi_local
839  << ",KeyWG=" << itr->getKeyWG() << ",csc=" << itr->cscid() << ")" << std::endl;
840  }
841 
842  gbletadat gblEta;
843  try {
844  unsigned csc_id = itr->cscid();
845  if (!m_gangedME1a)
846  csc_id = itr->cscidSeparateME1a();
847  gblEta = srLUTs_[FPGAs[fpga]]->globalEtaME(
848  lclPhi.phi_bend_local, lclPhi.phi_local, itr->getKeyWG(), csc_id, m_gangedME1a);
849  //gblEta = srLUTs_[FPGAs[fpga]]->globalEtaME(lclPhi.phi_bend_local, lclPhi.phi_local, itr->getKeyWG(), itr->cscid());
850  } catch (cms::Exception& e) {
851  bzero(&gblEta, sizeof(gblEta));
852  edm::LogWarning("CSCTFSectorProcessor:run()")
853  << "Exception from GlobalEta LUT in " << FPGAs[fpga] << "(phi_bend_local=" << lclPhi.phi_bend_local
854  << ",phi_local=" << lclPhi.phi_local << ",KeyWG=" << itr->getKeyWG() << ",csc=" << itr->cscid() << ")"
855  << std::endl;
856  }
857 
858  gblphidat gblPhiDT;
859  try {
860  gblPhiDT = srLUTs_[FPGAs[fpga]]->globalPhiMB(lclPhi.phi_local, itr->getKeyWG(), itr->cscid(), m_gangedME1a);
861  } catch (cms::Exception& e) {
862  bzero(&gblPhiDT, sizeof(gblPhiDT));
863  edm::LogWarning("CSCTFSectorProcessor:run()")
864  << "Exception from GlobalPhi DT LUT in " << FPGAs[fpga] << "(phi_local=" << lclPhi.phi_local
865  << ",KeyWG=" << itr->getKeyWG() << ",csc=" << itr->cscid() << ")" << std::endl;
866  }
867 
868  itr->setEtaPacked(gblEta.global_eta);
869 
870  if (itr->station() == 1) {
871  //&& itr->cscId() > 6) { //only ring 3
872  itr->setPhiPacked(gblPhiDT.global_phi); // convert the DT to convert
873  dt_stubs.push_back(*itr); // send stubs to DT
874  }
875 
876  //reconvert the ME1 LCT to the CSCTF units.
877  //the same iterator is used to fill two containers,
878  //the CSCTF one (stub_vec_filtered) and LCTs sent to DTTF (dt_stubs)
879  itr->setPhiPacked(gblPhi.global_phi);
880 
881  LogDebug("CSCTFSectorProcessor:run()")
882  << "LCT found, processed by FPGA: " << FPGAs[fpga] << std::endl
883  << " LCT now has (eta, phi) of: (" << itr->etaValue() << "," << itr->phiValue() << ")\n";
884  }
885  }
886 
888 
895  std::vector<csc::L1Track> tftks;
896 
897  if (run_core) {
899  // core_->loadData(processedStubs, m_endcap, m_sector, m_minBX, m_maxBX, true);
900  if (core_->run(m_endcap,
901  m_sector,
902  m_latency,
903  m_etamin[0],
904  m_etamin[1],
905  m_etamin[2],
906  m_etamin[3],
907  m_etamin[4],
908  m_etamin[5],
909  m_etamin[6],
910  m_etamin[7],
911  m_etamax[0],
912  m_etamax[1],
913  m_etamax[2],
914  m_etamax[3],
915  m_etamax[4],
916  m_etamax[5],
917  m_etamax[6],
918  m_etamax[7],
919  m_etawin[0],
920  m_etawin[1],
921  m_etawin[2],
922  m_etawin[3],
923  m_etawin[4],
924  m_etawin[5],
925  m_etawin[6],
926  m_mindphip,
927  m_mindetap,
942  m_straightp,
943  m_curvedp,
944  m_mbaPhiOff,
945  m_mbbPhiOff,
946  m_bxa_depth,
949  m_preTrigger,
950  m_widePhi,
951  m_minBX,
952  m_maxBX)) {
953  l1_tracks = core_->tracks();
954  }
955 
956  tftks = l1_tracks.get();
957 
963  std::vector<csc::L1Track>::iterator titr = tftks.begin();
964 
965  for (; titr != tftks.end(); titr++) {
966  ptadd thePtAddress(titr->ptLUTAddress());
967  ptdat thePtData = ptLUT_->Pt(thePtAddress);
968  if (thePtAddress.track_fr) {
969  titr->setRank(thePtData.front_rank);
970  titr->setChargeValidPacked(thePtData.charge_valid_front);
971  } else {
972  titr->setRank(thePtData.rear_rank);
973  titr->setChargeValidPacked(thePtData.charge_valid_rear);
974  }
975 
976  if (((titr->ptLUTAddress() >> 16) & 0xf) == 15) {
977  int unmodBx = titr->bx();
978  titr->setBx(unmodBx + 2);
979  }
980  }
981  } //end of if(run_core)
982 
983  l1_tracks = tftks;
984 
985  // Add-on for singles:
986  CSCTriggerContainer<csctf::TrackStub> myStubContainer[7]; //[BX]
987  // Loop over CSC LCTs if triggering on them:
990  for (std::vector<csctf::TrackStub>::iterator itr = stub_vec_filtered.begin(); itr != stub_vec_filtered.end();
991  itr++) {
992  int station = itr->station() - 1;
993  if (station != 4) {
994  int subSector = CSCTriggerNumbering::triggerSubSectorFromLabels(CSCDetId(itr->getDetId().rawId()));
995  int mpc = (subSector ? subSector - 1 : station + 1);
996  if ((mpc == 0 && trigger_on_ME1a) || (mpc == 1 && trigger_on_ME1b) || (mpc == 2 && trigger_on_ME2) ||
997  (mpc == 3 && trigger_on_ME3) || (mpc == 4 && trigger_on_ME4) ||
998  (mpc == 5 && ((trigger_on_MB1a && subSector % 2 == 1) || (trigger_on_MB1d && subSector % 2 == 0)))) {
999  int bx = itr->getBX() - m_minBX;
1000  if (bx < 0 || bx >= 7)
1001  edm::LogWarning("CSCTFTrackBuilder::buildTracks()")
1002  << " LCT BX is out of [" << m_minBX << "," << m_maxBX << ") range: " << itr->getBX();
1003  else if (itr->isValid())
1004  myStubContainer[bx].push_back(*itr);
1005  }
1006  }
1007  }
1008 
1009  // Core's input was loaded in a relative time window BX=[0-7)
1010  // To relate it to time window of tracks (centred at BX=0) we introduce a shift:
1011  int shift = (m_maxBX + m_minBX) / 2 - m_minBX;
1012 
1013  // Now we put tracks from singles in a certain bx
1014  // if there were no tracks from the core in this endcap/sector/bx
1015  CSCTriggerContainer<csc::L1Track> tracksFromSingles;
1016  for (int bx = 0; bx < 7; bx++)
1017  if (!myStubContainer[bx].get().empty()) { // VP in this bx
1018  bool coreTrackExists = false;
1019  // tracks are not ordered to be accessible by bx => loop them all
1020  std::vector<csc::L1Track> tracks = l1_tracks.get();
1021  for (std::vector<csc::L1Track>::iterator trk = tracks.begin(); trk < tracks.end(); trk++)
1022  if ((trk->BX() == bx - shift && trk->outputLink() == singlesTrackOutput) ||
1023  (((trk->ptLUTAddress() >> 16) & 0xf) == 15 && trk->BX() - 2 == bx - shift)) {
1024  coreTrackExists = true;
1025  break;
1026  }
1027  if (coreTrackExists == false) {
1028  csc::L1TrackId trackId(m_endcap, m_sector);
1029  csc::L1Track track(trackId);
1030  track.setBx(bx - shift);
1031  track.setOutputLink(singlesTrackOutput);
1032  //CSCCorrelatedLCTDigiCollection singles;
1033  std::vector<csctf::TrackStub> stubs = myStubContainer[bx].get();
1034  // Select best quality stub, and assign its eta/phi coordinates to the track
1035  int qualityME = 0, qualityMB = 0, ME = 100, MB = 100, linkME = 7;
1036  std::vector<csctf::TrackStub>::const_iterator bestStub = stubs.end();
1037  for (std::vector<csctf::TrackStub>::const_iterator st_iter = stubs.begin(); st_iter != stubs.end(); st_iter++) {
1038  int station = st_iter->station() - 1;
1039  int subSector = CSCTriggerNumbering::triggerSubSectorFromLabels(CSCDetId(st_iter->getDetId().rawId()));
1040  int mpc = (subSector ? subSector - 1 : station + 1);
1041  // Sort MB stubs first (priority: quality OR MB1a > MB1b for the same quality)
1042  if (mpc == 5 &&
1043  (st_iter->getQuality() > qualityMB || (st_iter->getQuality() == qualityMB && subSector < MB))) {
1044  qualityMB = st_iter->getQuality();
1045  MB = subSector;
1046  if (ME > 4)
1047  bestStub = st_iter; // do not select this stub if ME already had any candidate
1048  }
1049  // Sort ME stubs (priority: quality OR ME1a > ME1b > ME2 > ME3 > ME4 for the same quality)
1050  if (mpc < 5 && (st_iter->getQuality() > qualityME || (st_iter->getQuality() == qualityME && mpc < ME) ||
1051  (st_iter->getQuality() == qualityME && mpc == ME && st_iter->getMPCLink() < linkME))) {
1052  qualityME = st_iter->getQuality();
1053  ME = mpc;
1054  linkME = st_iter->getMPCLink();
1055  bestStub = st_iter;
1056  }
1057  }
1058  unsigned rescaled_phi = 999;
1059  if (m_firmSP <= 20100210) {
1060  // buggy implementation of the phi for singles in the wrapper...
1061  // at the end data/emulator have to agree: e.g. wrong in the same way
1062  // BUG: getting the lowest 7 bits instead the 7 most significant ones.
1063  rescaled_phi = unsigned(24 * (bestStub->phiPacked() & 0x7f) / 128.);
1064  } else {
1065  // correct implementation :-)
1066  rescaled_phi = unsigned(24 * (bestStub->phiPacked() >> 5) / 128.);
1067  }
1068 
1069  unsigned unscaled_phi = bestStub->phiPacked() >> 7;
1070  track.setLocalPhi(rescaleSinglesPhi ? rescaled_phi : unscaled_phi);
1071  track.setEtaPacked((bestStub->etaPacked() >> 2) & 0x1f);
1072  switch (bestStub->station()) {
1073  case 1:
1074  track.setStationIds(bestStub->getMPCLink(), 0, 0, 0, 0);
1075  break;
1076  case 2:
1077  track.setStationIds(0, bestStub->getMPCLink(), 0, 0, 0);
1078  break;
1079  case 3:
1080  track.setStationIds(0, 0, bestStub->getMPCLink(), 0, 0);
1081  break;
1082  case 4:
1083  track.setStationIds(0, 0, 0, bestStub->getMPCLink(), 0);
1084  break;
1085  case 5:
1086  track.setStationIds(0, 0, 0, 0, bestStub->getMPCLink());
1087  break;
1088  default:
1089  edm::LogError("CSCTFSectorProcessor::run()") << "Illegal LCT link=" << bestStub->station() << "\n";
1090  break;
1091  }
1092  // singles.insertDigi(CSCDetId(st_iter->getDetId().rawId()),*st_iter);
1093  //tracksFromSingles.push_back(L1CSCTrack(track,singles));
1094  track.setPtLUTAddress((1 << 16) | ((bestStub->etaPacked() << 9) & 0xf000));
1095  ptadd thePtAddress(track.ptLUTAddress());
1096  ptdat thePtData = ptLUT_->Pt(thePtAddress);
1097  if (thePtAddress.track_fr) {
1098  track.setRank(thePtData.front_rank);
1099  track.setChargeValidPacked(thePtData.charge_valid_front);
1100  } else {
1101  track.setRank(thePtData.rear_rank);
1102  track.setChargeValidPacked(thePtData.charge_valid_rear);
1103  }
1104  tracksFromSingles.push_back(track);
1105  }
1106  }
1107  std::vector<csc::L1Track> single_tracks = tracksFromSingles.get();
1108  if (!single_tracks.empty())
1109  l1_tracks.push_many(single_tracks);
1110  // End of add-on for singles
1111 
1112  return (!l1_tracks.get().empty());
1113 }
1114 
1115 // according to the firmware versions print some more information
1116 void CSCTFSectorProcessor::printDisclaimer(int firmSP, int firmFA) {
1117  edm::LogInfo("CSCTFSectorProcessor") << "\n\n"
1118  << "******************************* \n"
1119  << "*** DISCLAIMER *** \n"
1120  << "******************************* \n"
1121  << "\n Firmware SP version (year+month+day)=" << firmSP
1122  << "\n Firmware FA/VM/DD version (year+month+day)=" << firmFA;
1123  if (firmSP == 20100210)
1124  edm::LogInfo("CSCTFSectorProcessor") << " -> KNOWN BUGS IN THE FIRMWARE:\n"
1125  << "\t * Wrong phi assignment for singles\n"
1126  << "\t * Wrapper passes to the core only even quality DT stubs\n"
1127  << "\n -> BUGS ARE GOING TO BE EMULATED BY THE SOFTWARE\n\n";
1128 
1129  else
1130  edm::LogInfo("CSCTFSectorProcessor") << "\t * Correct phi assignment for singles\n";
1131 
1132  if (firmSP == 20100629) {
1133  edm::LogInfo("CSCTFSectorProcessor") << "\t * Correct MB quality masking in the wrapper\n"
1134  << "\t * Core is 20100122\n";
1135  }
1136 
1137  if (firmSP == 20100728)
1138  edm::LogInfo("CSCTFSectorProcessor") << "\t * Inverted MB clocks\n";
1139 
1140  if (firmSP == 20100901)
1141  edm::LogInfo("CSCTFSectorProcessor") << "\t * Inverted charge bit\n";
1142 
1143  if (firmSP == 20101011)
1144  edm::LogInfo("CSCTFSectorProcessor") << "\t **** WARNING THIS FIRMWARE IS UNDER TEST ****\n"
1145  << "\t * Added CSC-DT assembling tracks ME1-MB2/1 \n";
1146  if (firmSP == 20101210)
1147  edm::LogInfo("CSCTFSectorProcessor") << "\t **** WARNING THIS FIRMWARE IS UNDER TEST ****\n"
1148  << "\t * New Ghost Busting Algorithm Removing Tracks\n"
1149  << "\t Sharing at Least One LCT\n";
1150 
1151  if (firmSP == 20110118)
1152  edm::LogInfo("CSCTFSectorProcessor") << "\t **** WARNING THIS FIRMWARE IS UNDER TEST ****\n"
1153  << "\t * New Ghost Busting Algorithm Removing Tracks\n"
1154  << "\t Sharing at Least One LCT\n"
1155  << "\t * Passing CLCT and PhiBend for PT LUTs\n";
1156  if (firmSP == 20120131)
1157  edm::LogInfo("CSCTFSectorProcessor") << "\t **** WARNING THIS FIRMWARE IS UNDER TEST ****\n"
1158  << "\t * non-linear dphi12 dphi23, use deta for PTLUTs \n";
1159 }
CSCTFSectorProcessor::QualityEnableME4b
int QualityEnableME4b
Definition: CSCTFSectorProcessor.h:86
CSCTFSectorProcessor::m_maxdeta12_accp
int m_maxdeta12_accp
Definition: CSCTFSectorProcessor.h:73
CSCTFSectorProcessor::QualityEnableME1e
int QualityEnableME1e
Definition: CSCTFSectorProcessor.h:83
CSCTFSectorProcessor::m_etawin
int m_etawin[7]
Definition: CSCTFSectorProcessor.h:71
CSCTFSectorProcessor::QualityEnableME1a
int QualityEnableME1a
Definition: CSCTFSectorProcessor.h:83
CSCSectorReceiverLUT
Definition: CSCSectorReceiverLUT.h:19
CSCTriggerContainer::clear
void clear()
Definition: CSCTriggerContainer.h:57
CSCTFSectorProcessor::m_allowCLCTonly
int m_allowCLCTonly
Definition: CSCTFSectorProcessor.h:69
mps_fire.i
i
Definition: mps_fire.py:355
CSCTFSectorProcessor::m_gangedME1a
bool m_gangedME1a
Definition: CSCTFSectorProcessor.h:62
CSCTFSectorProcessor::dt_stubs
CSCTriggerContainer< csctf::TrackStub > dt_stubs
Definition: CSCTFSectorProcessor.h:97
CSCTFSectorProcessor::QualityEnableME1d
int QualityEnableME1d
Definition: CSCTFSectorProcessor.h:83
CSCTrackFinderDataTypes.h
MessageLogger.h
CSCTFSectorProcessor::m_maxdphi113_accp
int m_maxdphi113_accp
Definition: CSCTFSectorProcessor.h:76
CSCTFSectorProcessor::m_mindeta12_accp
int m_mindeta12_accp
Definition: CSCTFSectorProcessor.h:73
CSCTFSectorProcessor::QualityEnableME2b
int QualityEnableME2b
Definition: CSCTFSectorProcessor.h:84
CSCTFSectorProcessor::QualityEnableME2c
int QualityEnableME2c
Definition: CSCTFSectorProcessor.h:84
ESHandle.h
CSCTFSectorProcessor::tracks
CSCTriggerContainer< csc::L1Track > tracks() const
Definition: CSCTFSectorProcessor.h:45
lclphidat
class local_phi_data lclphidat
Data Types.
relativeConstraints.station
station
Definition: relativeConstraints.py:67
CSCTFSPCoreLogic::SetSPFirmwareVersion
void SetSPFirmwareVersion(const unsigned int fwVer)
Definition: CSCTFSPCoreLogic.h:269
CSCTFSectorProcessor::trigger_on_MB1a
int trigger_on_MB1a
Definition: CSCTFSectorProcessor.h:90
CSCTFSectorProcessor::m_maxBX
int m_maxBX
Definition: CSCTFSectorProcessor.h:70
CSCTFSPCoreLogic::SetVerbose
void SetVerbose(const bool verb)
Definition: CSCTFSPCoreLogic.h:275
CSCTFSectorProcessor::QualityEnableME3b
int QualityEnableME3b
Definition: CSCTFSectorProcessor.h:85
edm::LogInfo
Definition: MessageLogger.h:254
l1GtPatternGenerator_cfi.bx
bx
Definition: l1GtPatternGenerator_cfi.py:18
CSCTFSectorProcessor::m_mindphip
int m_mindphip
Definition: CSCTFSectorProcessor.h:72
L1MuCSCTFConfigurationRcd
Definition: L1MuCSCTFConfigurationRcd.h:13
CSCTriggerNumbering::triggerSubSectorFromLabels
static int triggerSubSectorFromLabels(int station, int chamber)
Definition: CSCTriggerNumbering.cc:105
CSCTFSectorProcessor::m_mbaPhiOff
int m_mbaPhiOff
Definition: CSCTFSectorProcessor.h:79
makeMuonMisalignmentScenario.endcap
endcap
Definition: makeMuonMisalignmentScenario.py:320
CSCTriggerContainer::push_many
void push_many(const std::vector< T > &data)
Definition: CSCTriggerContainer.h:52
CSCTFSectorProcessor::stub_vec_filtered
std::vector< csctf::TrackStub > stub_vec_filtered
Definition: CSCTFSectorProcessor.h:99
CSCTFSectorProcessor::FPGAs
static const std::string FPGAs[5]
Definition: CSCTFSectorProcessor.h:101
CSCTFSectorProcessor::run_core
int run_core
Definition: CSCTFSectorProcessor.h:88
CSCTFSectorProcessor::m_maxdeta113_accp
int m_maxdeta113_accp
Definition: CSCTFSectorProcessor.h:76
CSCTFSectorProcessor::l1_tracks
CSCTriggerContainer< csc::L1Track > l1_tracks
Definition: CSCTFSectorProcessor.h:96
CSCTFSPCoreLogic::SetCoreFirmwareVersion
void SetCoreFirmwareVersion(const unsigned int fwVer)
Definition: CSCTFSPCoreLogic.h:272
CSCTFSectorProcessor::m_endcap
unsigned m_endcap
Definition: CSCTFSectorProcessor.h:65
CSCTFSectorProcessor::isCoreVerbose
bool isCoreVerbose
Definition: CSCTFSectorProcessor.h:109
CSCTFSectorProcessor::m_allowALCTonly
int m_allowALCTonly
Definition: CSCTFSectorProcessor.h:69
CSCTFSectorProcessor::m_mindeta112_accp
int m_mindeta112_accp
Definition: CSCTFSectorProcessor.h:75
CSCTFSectorProcessor::trigger_on_MB1d
int trigger_on_MB1d
Definition: CSCTFSectorProcessor.h:90
config
Definition: config.py:1
CSCTFSectorProcessor::QualityEnableME1f
int QualityEnableME1f
Definition: CSCTFSectorProcessor.h:83
L1MuTriggerPtScale
Definition: L1MuTriggerPtScale.h:33
CSCTFSPCoreLogic
Definition: CSCTFSPCoreLogic.h:34
CSCTFSectorProcessor::QualityEnableME3c
int QualityEnableME3c
Definition: CSCTFSectorProcessor.h:85
CSCTFSectorProcessor::readParameters
void readParameters(const edm::ParameterSet &pset)
Definition: CSCTFSectorProcessor.cc:594
CSCTFSectorProcessor::QualityEnableME4a
int QualityEnableME4a
Definition: CSCTFSectorProcessor.h:86
CSCTFSectorProcessor::m_straightp
int m_straightp
Definition: CSCTFSectorProcessor.h:78
CSCTFSectorProcessor::TMB07
unsigned TMB07
Definition: CSCTFSectorProcessor.h:65
CSCTFSectorProcessor::m_mbbPhiOff
int m_mbbPhiOff
Definition: CSCTFSectorProcessor.h:79
edm::ESHandle
Definition: DTSurvey.h:22
CSCTriggerNumbering.h
CSCTFSectorProcessor::m_mindphip_halo
int m_mindphip_halo
Definition: CSCTFSectorProcessor.h:77
CSCTFSectorProcessor::singlesTrackOutput
unsigned int singlesTrackOutput
Definition: CSCTFSectorProcessor.h:91
looper.config
config
Definition: looper.py:291
CSCTFSectorProcessor::run
int run(const CSCTriggerContainer< csctf::TrackStub > &)
Definition: CSCTFSectorProcessor.cc:684
ptdat
class pt_data ptdat
AlCaHLTBitMon_QueryRunRegistry.string
string
Definition: AlCaHLTBitMon_QueryRunRegistry.py:256
csc::L1TrackId
Definition: L1TrackId.h:18
edm::LogWarning
Definition: MessageLogger.h:141
CSCTFSectorProcessor::printDisclaimer
void printDisclaimer(int firmSP, int firmFA)
Definition: CSCTFSectorProcessor.cc:1116
CSCTFSectorProcessor::m_curvedp
int m_curvedp
Definition: CSCTFSectorProcessor.h:78
CSCTFSectorProcessor::QualityEnableME3a
int QualityEnableME3a
Definition: CSCTFSectorProcessor.h:85
CSCTFSectorProcessor::kill_fiber
int kill_fiber
Definition: CSCTFSectorProcessor.h:87
L1MuCSCTFConfiguration.h
LogDebug
#define LogDebug(id)
Definition: MessageLogger.h:670
CSCTFSPCoreLogic::tracks
CSCTriggerContainer< csc::L1Track > tracks()
Definition: CSCTFSPCoreLogic.cc:2810
edm::ParameterSet
Definition: ParameterSet.h:36
edm::LogError
Definition: MessageLogger.h:183
CSCTFSectorProcessor::trigger_on_ME3
int trigger_on_ME3
Definition: CSCTFSectorProcessor.h:89
CSCTFSectorProcessor::m_preTrigger
int m_preTrigger
Definition: CSCTFSectorProcessor.h:69
CSCTFSectorProcessor::m_firmSP
int m_firmSP
Definition: CSCTFSectorProcessor.h:94
ME
dqm::harvesting::MonitorElement ME
Definition: TrackingDQMClientHeavyIons.cc:20
CSCTFSectorProcessor::m_mindetap
int m_mindetap
Definition: CSCTFSectorProcessor.h:72
CSCTFSPCoreLogic::loadData
void loadData(const CSCTriggerContainer< csctf::TrackStub > &, const unsigned &endcap, const unsigned &sector, const int &minBX, const int &maxBX, const bool gangedME1a)
Definition: CSCTFSPCoreLogic.cc:23
CSCDetId
Definition: CSCDetId.h:26
CSCTFSectorProcessor::m_maxdeta13_accp
int m_maxdeta13_accp
Definition: CSCTFSectorProcessor.h:74
CSCTFSectorProcessor::m_etamax
int m_etamax[8]
Definition: CSCTFSectorProcessor.h:71
CSCTFSectorProcessor::srLUTs_
std::map< std::string, CSCSectorReceiverLUT * > srLUTs_
Definition: CSCTFSectorProcessor.h:103
CSCTFSectorProcessor::~CSCTFSectorProcessor
~CSCTFSectorProcessor()
Definition: CSCTFSectorProcessor.cc:667
CSCTFSectorProcessor::initFail_
bool initFail_
Definition: CSCTFSectorProcessor.h:110
CSCTFSectorProcessor::m_maxdeta112_accp
int m_maxdeta112_accp
Definition: CSCTFSectorProcessor.h:75
CSCTFSectorProcessor::ptLUT_
CSCTFPtLUT * ptLUT_
Definition: CSCTFSectorProcessor.h:105
CSCTFSectorProcessor::m_firmVM
int m_firmVM
Definition: CSCTFSectorProcessor.h:94
CSCTFSectorProcessor::initializeFromPSet
bool initializeFromPSet
Definition: CSCTFSectorProcessor.h:64
edm::EventSetup
Definition: EventSetup.h:57
HltBtagPostValidation_cff.c
c
Definition: HltBtagPostValidation_cff.py:31
ptScale
const std::vector< double > ptScale
Definition: Utilities.cc:33
itr
std::vector< std::pair< float, float > >::iterator itr
Definition: HGCDigitizer.cc:28
L1MuTriggerScales
Definition: L1MuTriggerScales.h:33
CSCTFSectorProcessor::m_maxdphi13_accp
int m_maxdphi13_accp
Definition: CSCTFSectorProcessor.h:74
get
#define get
CSCTFSectorProcessor::m_widePhi
int m_widePhi
Definition: CSCTFSectorProcessor.h:80
CSCTFSectorProcessor::m_firmDD
int m_firmDD
Definition: CSCTFSectorProcessor.h:94
CSCTFSectorProcessor::m_minBX
int m_minBX
Definition: CSCTFSectorProcessor.h:70
gbletadat
class global_eta_data gbletadat
edm::shift
static unsigned const int shift
Definition: LuminosityBlockID.cc:7
CSCTFSectorProcessor::m_firmFA
int m_firmFA
Definition: CSCTFSectorProcessor.h:94
CSCTFSectorProcessor::trigger_on_ME4
int trigger_on_ME4
Definition: CSCTFSectorProcessor.h:89
CSCTFSectorProcessor::QualityEnableME4c
int QualityEnableME4c
Definition: CSCTFSectorProcessor.h:86
CSCTFSectorProcessor::m_mindeta113_accp
int m_mindeta113_accp
Definition: CSCTFSectorProcessor.h:76
triggerObjects_cff.id
id
Definition: triggerObjects_cff.py:31
CSCTFSectorProcessor.h
CSCTFSectorProcessor::m_latency
unsigned m_latency
Definition: CSCTFSectorProcessor.h:66
ME
Definition: ME.h:11
CSCTFSectorProcessor::CSCTFSectorProcessor
CSCTFSectorProcessor(const unsigned &endcap, const unsigned &sector, const edm::ParameterSet &pset, bool tmb07, const L1MuTriggerScales *scales, const L1MuTriggerPtScale *ptScale)
Definition: CSCTFSectorProcessor.cc:16
CSCTriggerContainer< csctf::TrackStub >
CSCTFSectorProcessor::m_maxdphi12_accp
int m_maxdphi12_accp
Definition: CSCTFSectorProcessor.h:73
CSCTriggerContainer::push_back
void push_back(const T &data)
Definition: CSCTriggerContainer.h:51
CSCTFPtLUT
KK.
Definition: CSCTFPtLUT.h:14
csc::L1Track
Definition: L1Track.h:21
CSCTFSectorProcessor::m_bxa_depth
int m_bxa_depth
Definition: CSCTFSectorProcessor.h:69
gblphidat
class global_phi_data gblphidat
CSCTFSectorProcessor::m_sector
unsigned m_sector
Definition: CSCTFSectorProcessor.h:65
AlignmentPI::index
index
Definition: AlignmentPayloadInspectorHelper.h:46
CSCTFSectorProcessor::core_
CSCTFSPCoreLogic * core_
Definition: CSCTFSectorProcessor.h:104
CSCTFSectorProcessor::trigger_on_ME2
int trigger_on_ME2
Definition: CSCTFSectorProcessor.h:89
CSCTFSectorProcessor::QualityEnableME2a
int QualityEnableME2a
Definition: CSCTFSectorProcessor.h:84
CSCTFSectorProcessor::m_mindetap_halo
int m_mindetap_halo
Definition: CSCTFSectorProcessor.h:77
L1MuCSCTFConfigurationRcd.h
HLT_2018_cff.track
track
Definition: HLT_2018_cff.py:10352
cms::Exception
Definition: Exception.h:70
ptadd
class pt_address ptadd
CSCTFSectorProcessor::trigger_on_ME1a
int trigger_on_ME1a
Definition: CSCTFSectorProcessor.h:89
CSCTFSectorProcessor::m_mindeta13_accp
int m_mindeta13_accp
Definition: CSCTFSectorProcessor.h:74
CSCTFSPCoreLogic::GetCoreFirmwareVersion
unsigned int GetCoreFirmwareVersion()
Definition: CSCTFSPCoreLogic.h:273
dqmiolumiharvest.j
j
Definition: dqmiolumiharvest.py:66
CSCTFSectorProcessor::QualityEnableME1b
int QualityEnableME1b
Definition: CSCTFSectorProcessor.h:83
CSCTFPtLUT::Pt
ptdat Pt(const ptadd &) const
Definition: CSCTFPtLUT.cc:182
CSCTFSectorProcessor::initialize
void initialize(const edm::EventSetup &c)
KK.
Definition: CSCTFSectorProcessor.cc:182
CSCTFSectorProcessor::m_maxdphi112_accp
int m_maxdphi112_accp
Definition: CSCTFSectorProcessor.h:75
CSCTFSPCoreLogic::run
bool run(const unsigned &endcap, const unsigned &sector, const unsigned &latency, const unsigned &etamin1, const unsigned &etamin2, const unsigned &etamin3, const unsigned &etamin4, const unsigned &etamin5, const unsigned &etamin6, const unsigned &etamin7, const unsigned &etamin8, const unsigned &etamax1, const unsigned &etamax2, const unsigned &etamax3, const unsigned &etamax4, const unsigned &etamax5, const unsigned &etamax6, const unsigned &etamax7, const unsigned &etamax8, const unsigned &etawin1, const unsigned &etawin2, const unsigned &etawin3, const unsigned &etawin4, const unsigned &etawin5, const unsigned &etawin6, const unsigned &etawin7, const unsigned &mindphip, const unsigned &mindetap, const unsigned &mindeta12_accp, const unsigned &maxdeta12_accp, const unsigned &maxdphi12_accp, const unsigned &mindeta13_accp, const unsigned &maxdeta13_accp, const unsigned &maxdphi13_accp, const unsigned &mindeta112_accp, const unsigned &maxdeta112_accp, const unsigned &maxdphi112_accp, const unsigned &mindeta113_accp, const unsigned &maxdeta113_accp, const unsigned &maxdphi113_accp, const unsigned &mindphip_halo, const unsigned &mindetap_halo, const unsigned &straightp, const unsigned &curvedp, const unsigned &mbaPhiOff, const unsigned &mbbPhiOff, const unsigned &m_extend_length, const unsigned &m_allowALCTonly, const unsigned &m_allowCLCTonly, const unsigned &m_preTrigger, const unsigned &m_widePhi, const int &minBX, const int &maxBX)
Definition: CSCTFSPCoreLogic.cc:277
CSCTFSectorProcessor::rescaleSinglesPhi
int rescaleSinglesPhi
Definition: CSCTFSectorProcessor.h:92
CSCTriggerContainer::get
std::vector< T > get() const
Definition: CSCTriggerContainer.h:83
muonDTDigis_cfi.pset
pset
Definition: muonDTDigis_cfi.py:27
CSCTFSectorProcessor::QualityEnableME1c
int QualityEnableME1c
Definition: CSCTFSectorProcessor.h:83
CSCTFSectorProcessor::m_etamin
int m_etamin[8]
Definition: CSCTFSectorProcessor.h:71
CSCTFSectorProcessor::trigger_on_ME1b
int trigger_on_ME1b
Definition: CSCTFSectorProcessor.h:89
MillePedeFileConverter_cfg.e
e
Definition: MillePedeFileConverter_cfg.py:37
CSCTFSectorProcessor::firmSP_Map
std::map< int, int > firmSP_Map
Definition: CSCTFSectorProcessor.h:108