CMS 3D CMS Logo

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