CMS 3D CMS Logo

CSCGEMMotherboardME11.cc
Go to the documentation of this file.
2 
4  unsigned station,
5  unsigned sector,
6  unsigned subsector,
7  unsigned chamber,
8  const edm::ParameterSet& conf)
9  : CSCGEMMotherboard(endcap, station, sector, subsector, chamber, conf)
10  // special configuration parameters for ME11 treatment
11  ,
12  dropLowQualityCLCTsNoGEMs_ME1a_(tmbParams_.getParameter<bool>("dropLowQualityCLCTsNoGEMs_ME1a")),
13  dropLowQualityCLCTsNoGEMs_ME1b_(tmbParams_.getParameter<bool>("dropLowQualityCLCTsNoGEMs_ME1b")),
14  dropLowQualityALCTsNoGEMs_ME1a_(tmbParams_.getParameter<bool>("dropLowQualityALCTsNoGEMs_ME1a")),
15  dropLowQualityALCTsNoGEMs_ME1b_(tmbParams_.getParameter<bool>("dropLowQualityALCTsNoGEMs_ME1b")),
16  buildLCTfromALCTandGEM_ME1a_(tmbParams_.getParameter<bool>("buildLCTfromALCTandGEM_ME1a")),
17  buildLCTfromALCTandGEM_ME1b_(tmbParams_.getParameter<bool>("buildLCTfromALCTandGEM_ME1b")),
18  buildLCTfromCLCTandGEM_ME1a_(tmbParams_.getParameter<bool>("buildLCTfromCLCTandGEM_ME1a")),
19  buildLCTfromCLCTandGEM_ME1b_(tmbParams_.getParameter<bool>("buildLCTfromCLCTandGEM_ME1b")),
20  promoteCLCTGEMquality_ME1a_(tmbParams_.getParameter<bool>("promoteCLCTGEMquality_ME1a")),
21  promoteCLCTGEMquality_ME1b_(tmbParams_.getParameter<bool>("promoteCLCTGEMquality_ME1b")) {
22  if (!isSLHC_)
23  edm::LogError("CSCGEMMotherboardME11|ConfigError")
24  << "+++ Upgrade CSCGEMMotherboardME11 constructed while isSLHC is not set! +++\n";
25 
26  // set LUTs
27  tmbLUT_.reset(new CSCGEMMotherboardLUTME11());
28  cscTmbLUT_.reset(new CSCMotherboardLUTME11());
29 }
30 
32  // Constructor used only for testing.
33  if (!isSLHC_)
34  edm::LogError("CSCGEMMotherboardME11|ConfigError")
35  << "+++ Upgrade CSCGEMMotherboardME11 constructed while isSLHC is not set! +++\n";
36 }
37 
39 
40 //===============================================
41 //use ALCTs, CLCTs, GEMs to build LCTs
42 //loop over each BX to find valid ALCT in ME1b, try ALCT-CLCT match, if ALCT-CLCT match failed, try ALCT-GEM match
43 //do the same in ME1a
44 //sort LCTs according to different algorithm, and send out number of LCTs up to max_lcts
45 //===============================================
46 
48  const CSCComparatorDigiCollection* compdc,
49  const GEMPadDigiClusterCollection* gemClusters) {
50  std::unique_ptr<GEMPadDigiCollection> gemPads(new GEMPadDigiCollection());
51  coPadProcessor->declusterize(gemClusters, *gemPads);
52  run(wiredc, compdc, gemPads.get());
53 }
54 
56  const CSCComparatorDigiCollection* compdc,
57  const GEMPadDigiCollection* gemPads) {
59  setupGeometry();
60  debugLUTs();
61 
62  // encode high multiplicity bits
63  unsigned alctBits = alctProc->getHighMultiplictyBits();
65 
66  if (gem_g != nullptr) {
67  if (infoV >= 0)
68  edm::LogInfo("CSCGEMMotherboardME11|SetupInfo") << "+++ run() called for GEM-CSC integrated trigger! +++ \n";
69  gemGeometryAvailable = true;
70  }
71 
72  // check for GEM geometry
73  if (not gemGeometryAvailable) {
74  if (infoV >= 0)
75  edm::LogError("CSCGEMMotherboardME11|SetupError")
76  << "+++ run() called for GEM-CSC integrated trigger without valid GEM geometry! +++ \n";
77  return;
78  }
79  gemCoPadV = coPadProcessor->run(gemPads); // run copad processor in GE1/1
80 
81  if (!(alctProc and clctProc and isSLHC_)) {
82  if (infoV >= 0)
83  edm::LogError("CSCGEMMotherboardME11|SetupError")
84  << "+++ run() called for non-existing ALCT/CLCT processor! +++ \n";
85  return;
86  }
87 
88  alctProc->setCSCGeometry(cscGeometry_);
89  clctProc->setCSCGeometry(cscGeometry_);
90 
91  alctV = alctProc->run(wiredc); // run anodeLCT
92  clctV = clctProc->run(compdc); // run cathodeLCT
93 
94  // if there are no ALCTs and no CLCTs, it does not make sense to run this TMB
95  if (alctV.empty() and clctV.empty())
96  return;
97 
98  if (debug_matching) {
99  LogTrace("CSCGEMMotherboardME11") << "ALL ALCTs from ME11 " << std::endl;
100  for (const auto& alct : alctV)
101  if (alct.isValid())
102  LogTrace("CSCGEMMotherboardME11") << alct << std::endl;
103 
104  LogTrace("CSCGEMMotherboardME11") << "ALL CLCTs from ME11 " << std::endl;
105  for (const auto& clct : clctV)
106  if (clct.isValid())
107  LogTrace("CSCGEMMotherboardME11") << clct << std::endl;
108 
109  LogTrace("CSCGEMMotherboardME11") << "ALL GEM copads from GE11-ME11 " << std::endl;
110  for (const auto& g : gemCoPadV)
111  LogTrace("CSCGEMMotherboardME11") << g << std::endl;
112  }
113 
114  int used_clct_mask[20];
115  for (int b = 0; b < 20; b++)
116  used_clct_mask[b] = 0;
117 
118  retrieveGEMPads(gemPads, gemId);
120 
121  const bool hasPads(!pads_.empty());
122  const bool hasCoPads(hasPads and !coPads_.empty());
123 
124  if (debug_matching)
125  LogTrace("CSCGEMMotherboardME11") << "hascopads " << hasCoPads << std::endl;
126 
127  // ALCT-centric matching
128  for (int bx_alct = 0; bx_alct < CSCConstants::MAX_ALCT_TBINS; bx_alct++) {
129  if (alctProc->getBestALCT(bx_alct).isValid()) {
130  const int bx_clct_start(bx_alct - match_trig_window_size / 2 - alctClctOffset_);
131  const int bx_clct_stop(bx_alct + match_trig_window_size / 2 - alctClctOffset_);
132  const int bx_copad_start(bx_alct - maxDeltaBXCoPad_);
133  const int bx_copad_stop(bx_alct + maxDeltaBXCoPad_);
134 
135  if (debug_matching) {
136  LogTrace("CSCGEMMotherboardME11")
137  << "========================================================================\n"
138  << "ALCT-CLCT matching in ME1/1 chamber: " << cscId_ << "\n"
139  << "------------------------------------------------------------------------\n"
140  << "+++ Best ALCT Details: " << alctProc->getBestALCT(bx_alct) << "\n"
141  << "+++ Second ALCT Details: " << alctProc->getSecondALCT(bx_alct) << std::endl;
142 
143  printGEMTriggerPads(bx_clct_start, bx_clct_stop, CSCPart::ME11);
144  printGEMTriggerCoPads(bx_clct_start, bx_clct_stop, CSCPart::ME11);
145 
146  LogTrace("CSCGEMMotherboardME11")
147  << "------------------------------------------------------------------------ \n"
148  << "Attempt ALCT-CLCT matching in ME1/b in bx range: [" << bx_clct_start << "," << bx_clct_stop << "]"
149  << std::endl;
150  }
151 
152  // ALCT-to-CLCT matching in ME1b
153  int nSuccesFulMatches = 0;
154  for (int bx_clct = bx_clct_start; bx_clct <= bx_clct_stop; bx_clct++) {
155  if (bx_clct < 0 or bx_clct >= CSCConstants::MAX_CLCT_TBINS)
156  continue;
157  if (drop_used_clcts and used_clct_mask[bx_clct])
158  continue;
159  if (clctProc->getBestCLCT(bx_clct).isValid()) {
160  if (debug_matching)
161  LogTrace("CSCGEMMotherboardME11") << "++Valid ME1b CLCT: " << clctProc->getBestCLCT(bx_clct) << std::endl;
162 
163  // pick the pad that corresponds
164  matches<GEMPadDigi> mPads;
165  matchingPads<GEMPadDigi>(clctProc->getBestCLCT(bx_clct),
166  clctProc->getSecondCLCT(bx_clct),
167  alctProc->getBestALCT(bx_alct),
168  alctProc->getSecondALCT(bx_alct),
169  mPads);
170  matches<GEMCoPadDigi> mCoPads;
171  matchingPads<GEMCoPadDigi>(clctProc->getBestCLCT(bx_clct),
172  clctProc->getSecondCLCT(bx_clct),
173  alctProc->getBestALCT(bx_alct),
174  alctProc->getSecondALCT(bx_alct),
175  mCoPads);
176 
177  const bool lowQualityCLCT(clctProc->getBestCLCT(bx_clct).getQuality() <= 3);
178  const bool hasMatchingPads(!mPads.empty() or !mCoPads.empty());
179  // Low quality LCTs have at most 3 layers. Check if there is a matching GEM pad to keep the CLCT
180  if (dropLowQualityCLCTsNoGEMs_ME1b_ and lowQualityCLCT and !hasMatchingPads) {
181  LogTrace("CSCGEMMotherboardME11") << "Dropping low quality CLCT without matching GEM pads "
182  << clctProc->getBestCLCT(bx_clct) << std::endl;
183  continue;
184  }
185 
186  if (debug_matching) {
187  LogTrace("CSCGEMMotherboardME11") << "mPads " << mPads.size() << " "
188  << " mCoPads " << mCoPads.size() << std::endl;
189  for (auto p : mPads) {
190  LogTrace("CSCGEMMotherboardME11") << p.first << " " << p.second << std::endl;
191  }
192  for (auto p : mCoPads) {
193  LogTrace("CSCGEMMotherboardME11") << p.first << " " << p.second << std::endl;
194  }
195  }
196  // if (infoV > 1) LogTrace("CSCMotherboard")
197  int mbx = bx_clct - bx_clct_start;
198  correlateLCTsGEM(alctProc->getBestALCT(bx_alct),
199  alctProc->getSecondALCT(bx_alct),
200  clctProc->getBestCLCT(bx_clct),
201  clctProc->getSecondCLCT(bx_clct),
202  mPads,
203  mCoPads,
204  allLCTs(bx_alct, mbx, 0),
205  allLCTs(bx_alct, mbx, 1));
206 
207  if (allLCTs(bx_alct, mbx, 0).isValid()) {
208  ++nSuccesFulMatches;
209  used_clct_mask[bx_clct] += 1;
210 
211  if (debug_matching) {
212  LogTrace("CSCGEMMotherboardME11")
213  << "Successful ALCT-CLCT match in ME1b: bx_alct = " << bx_alct << "; match window: [" << bx_clct_start
214  << "; " << bx_clct_stop << "]; bx_clct = " << bx_clct << "\n"
215  << "+++ Best CLCT Details: " << clctProc->getBestCLCT(bx_clct) << "\n"
216  << "+++ Second CLCT Details: " << clctProc->getSecondCLCT(bx_clct) << std::endl;
217  if (allLCTs(bx_alct, mbx, 0).isValid()) {
218  LogTrace("CSCGEMMotherboardME11") << "LCT #1 " << allLCTs(bx_alct, mbx, 0) << std::endl;
219  LogTrace("CSCGEMMotherboardME11") << allLCTs(bx_alct, mbx, 0).getALCT() << std::endl;
220  LogTrace("CSCGEMMotherboardME11") << allLCTs(bx_alct, mbx, 0).getCLCT() << std::endl;
221  if (allLCTs(bx_alct, mbx, 0).getType() == 2)
222  LogTrace("CSCGEMMotherboardME11") << allLCTs(bx_alct, mbx, 0).getGEM1() << std::endl;
223  if (allLCTs(bx_alct, mbx, 0).getType() == 3)
224  LogTrace("CSCGEMMotherboardME11")
225  << allLCTs(bx_alct, mbx, 0).getGEM1() << " " << allLCTs(bx_alct, mbx, 0).getGEM2() << std::endl;
226  }
227 
228  if (allLCTs(bx_alct, mbx, 1).isValid()) {
229  LogTrace("CSCGEMMotherboardME11") << "LCT #2 " << allLCTs(bx_alct, mbx, 1) << std::endl;
230  LogTrace("CSCGEMMotherboardME11") << allLCTs(bx_alct, mbx, 1).getALCT() << std::endl;
231  LogTrace("CSCGEMMotherboardME11") << allLCTs(bx_alct, mbx, 1).getCLCT() << std::endl;
232  if (allLCTs(bx_alct, mbx, 1).getType() == 2)
233  LogTrace("CSCGEMMotherboardME11") << allLCTs(bx_alct, mbx, 1).getGEM1() << std::endl;
234  if (allLCTs(bx_alct, mbx, 1).getType() == 3)
235  LogTrace("CSCGEMMotherboardME11")
236  << allLCTs(bx_alct, mbx, 1).getGEM1() << " " << allLCTs(bx_alct, mbx, 1).getGEM2() << std::endl;
237  }
238  }
239 
241  break;
242  } else
243  LogTrace("CSCGEMMotherboardME11") << "No valid LCT is built from ALCT-CLCT matching in ME1b" << std::endl;
244  }
245  }
246 
247  // ALCT-to-GEM matching in ME1b
248  int nSuccesFulGEMMatches = 0;
249  if (nSuccesFulMatches == 0 and buildLCTfromALCTandGEM_ME1b_) {
250  if (debug_matching)
251  LogTrace("CSCGEMMotherboardME11") << "++No valid ALCT-CLCT matches in ME1b" << std::endl;
252  for (int bx_gem = bx_copad_start; bx_gem <= bx_copad_stop; bx_gem++) {
253  if (not hasCoPads) {
254  continue;
255  }
256 
257  // find the best matching copad
258  matches<GEMCoPadDigi> copads;
259  matchingPads<CSCALCTDigi, GEMCoPadDigi>(
260  alctProc->getBestALCT(bx_alct), alctProc->getSecondALCT(bx_alct), copads);
261 
262  if (debug_matching)
263  LogTrace("CSCGEMMotherboardME11")
264  << "\t++Number of matching GEM CoPads in BX " << bx_alct << " : " << copads.size() << std::endl;
265  if (copads.empty()) {
266  continue;
267  }
268 
269  CSCGEMMotherboard::correlateLCTsGEM(alctProc->getBestALCT(bx_alct),
270  alctProc->getSecondALCT(bx_alct),
271  copads,
272  allLCTs(bx_alct, 0, 0),
273  allLCTs(bx_alct, 0, 1));
274 
275  if (allLCTs(bx_alct, 0, 0).isValid()) {
276  ++nSuccesFulGEMMatches;
277 
278  if (debug_matching) {
279  LogTrace("CSCGEMMotherboardME11")
280  << "Successful ALCT-GEM CoPad match in ME1b: bx_alct = " << bx_alct << "\n\n"
281  << "------------------------------------------------------------------------" << std::endl
282  << std::endl;
283  if (allLCTs(bx_alct, 0, 0).isValid()) {
284  LogTrace("CSCGEMMotherboardME11") << "LCT #1 " << allLCTs(bx_alct, 0, 0) << std::endl;
285  LogTrace("CSCGEMMotherboardME11") << allLCTs(bx_alct, 0, 0).getALCT() << std::endl;
286  if (allLCTs(bx_alct, 0, 0).getType() == 4)
287  LogTrace("CSCGEMMotherboardME11")
288  << allLCTs(bx_alct, 0, 0).getGEM1() << " " << allLCTs(bx_alct, 0, 0).getGEM2() << std::endl
289  << std::endl;
290  } else {
291  LogTrace("CSCGEMMotherboardME11")
292  << "No valid LCT is built from ALCT-GEM matching in ME1b" << std::endl;
293  }
294  if (allLCTs(bx_alct, 0, 1).isValid()) {
295  LogTrace("CSCGEMMotherboardME11") << "LCT #2 " << allLCTs(bx_alct, 0, 1) << std::endl;
296  LogTrace("CSCGEMMotherboardME11") << allLCTs(bx_alct, 0, 1).getALCT() << std::endl;
297  if (allLCTs(bx_alct, 0, 1).getType() == 4)
298  LogTrace("CSCGEMMotherboardME11")
299  << allLCTs(bx_alct, 0, 1).getGEM1() << " " << allLCTs(bx_alct, 0, 1).getGEM2() << std::endl
300  << std::endl;
301  }
302  }
303 
305  break;
306  }
307  }
308  }
309 
310  if (debug_matching) {
311  LogTrace("CSCGEMMotherboardME11")
312  << "========================================================================" << std::endl
313  << "Summary: " << std::endl;
314  if (nSuccesFulMatches > 1)
315  LogTrace("CSCGEMMotherboardME11")
316  << "Too many successful ALCT-CLCT matches in ME1/1: " << nSuccesFulMatches << ", CSCDetId " << cscId_
317  << ", bx_alct = " << bx_alct << "; match window: [" << bx_clct_start << "; " << bx_clct_stop << "]"
318  << std::endl;
319  else if (nSuccesFulMatches == 1)
320  LogTrace("CSCGEMMotherboardME11")
321  << "1 successful ALCT-CLCT match in ME1/1: "
322  << " CSCDetId " << cscId_ << ", bx_alct = " << bx_alct << "; match window: [" << bx_clct_start << "; "
323  << bx_clct_stop << "]" << std::endl;
324  else if (nSuccesFulGEMMatches == 1)
325  LogTrace("CSCGEMMotherboardME11")
326  << "1 successful ALCT-GEM match in ME1/1: "
327  << " CSCDetId " << cscId_ << ", bx_alct = " << bx_alct << "; match window: [" << bx_clct_start << "; "
328  << bx_clct_stop << "]" << std::endl;
329  else
330  LogTrace("CSCGEMMotherboardME11") << "Unsuccessful ALCT-CLCT match in ME1/1: "
331  << "CSCDetId " << cscId_ << ", bx_alct = " << bx_alct << "; match window: ["
332  << bx_clct_start << "; " << bx_clct_stop << "]" << std::endl;
333  }
334  } // end of ALCT valid block
335  else {
336  auto coPads(coPads_[bx_alct]);
337  if (!coPads.empty()) {
338  // keep it simple for the time being, only consider the first copad
339  const int bx_clct_start(bx_alct - match_trig_window_size / 2 - alctClctOffset_);
340  const int bx_clct_stop(bx_alct + match_trig_window_size / 2 - alctClctOffset_);
341 
342  // matching in ME1b
344  for (int bx_clct = bx_clct_start; bx_clct <= bx_clct_stop; bx_clct++) {
345  if (bx_clct < 0 or bx_clct >= CSCConstants::MAX_CLCT_TBINS)
346  continue;
347  if (drop_used_clcts and used_clct_mask[bx_clct])
348  continue;
349  if (clctProc->getBestCLCT(bx_clct).isValid()) {
350  const int quality(clctProc->getBestCLCT(bx_clct).getQuality());
351  // only use high-Q stubs for the time being
352  if (quality < 4)
353  continue;
354  int mbx = bx_clct - bx_clct_start;
355  CSCGEMMotherboard::correlateLCTsGEM(clctProc->getBestCLCT(bx_clct),
356  clctProc->getSecondCLCT(bx_clct),
357  coPads,
358  allLCTs(bx_alct, mbx, 0),
359  allLCTs(bx_alct, mbx, 1));
360  if (allLCTs(bx_alct, mbx, 0).isValid()) {
361  used_clct_mask[bx_clct] += 1;
362 
363  if (debug_matching) {
364  // if (infoV > 1) LogTrace("CSCMotherboard")
365  LogTrace("CSCGEMMotherboardME11")
366  << "Successful GEM-CLCT match in ME1b: bx_alct = " << bx_alct << "; match window: ["
367  << bx_clct_start << "; " << bx_clct_stop << "]; bx_clct = " << bx_clct << "\n"
368  << "+++ Best CLCT Details: " << clctProc->getBestCLCT(bx_clct) << "\n"
369  << "+++ Second CLCT Details: " << clctProc->getSecondCLCT(bx_clct) << std::endl;
370 
371  LogTrace("CSCGEMMotherboardME11") << "LCT #1 " << allLCTs(bx_alct, mbx, 0) << std::endl;
372  LogTrace("CSCGEMMotherboardME11") << allLCTs(bx_alct, mbx, 0).getALCT() << std::endl;
373  if (allLCTs(bx_alct, mbx, 0).getType() == 5)
374  LogTrace("CSCGEMMotherboardME11")
375  << allLCTs(bx_alct, mbx, 0).getGEM1() << " " << allLCTs(bx_alct, mbx, 0).getGEM2() << std::endl
376  << std::endl;
377 
378  LogTrace("CSCGEMMotherboardME11") << "LCT #2 " << allLCTs(bx_alct, mbx, 1) << std::endl;
379  LogTrace("CSCGEMMotherboardME11") << allLCTs(bx_alct, mbx, 1).getALCT() << std::endl;
380  if (allLCTs(bx_alct, mbx, 1).getType() == 5)
381  LogTrace("CSCGEMMotherboardME11")
382  << allLCTs(bx_alct, mbx, 1).getGEM1() << " " << allLCTs(bx_alct, mbx, 1).getGEM2() << std::endl
383  << std::endl;
384  }
385 
387  break;
388  }
389  }
390  } //end of clct loop
391  }
392  } // if (!coPads.empty())
393  }
394  } // end of ALCT-centric matching
395 
396  if (debug_matching) {
397  LogTrace("CSCGEMMotherboardME11") << "======================================================================== \n"
398  << "Counting the final LCTs in CSCGEMMotherboard ME11\n"
399  << "======================================================================== \n"
400  << "tmb_cross_bx_algo: " << tmb_cross_bx_algo << std::endl;
401  unsigned int n1b = 0, n1a = 0;
402  for (const auto& p : readoutLCTs1b()) {
403  n1b++;
404  LogTrace("CSCGEMMotherboardME11") << "1b LCT " << n1b << " " << p << std::endl;
405  }
406 
407  for (const auto& p : readoutLCTs1a()) {
408  n1a++;
409  LogTrace("CSCGEMMotherboardME11") << "1a LCT " << n1a << " " << p << std::endl;
410  }
411  }
412 }
413 
414 std::vector<CSCCorrelatedLCTDigi> CSCGEMMotherboardME11::readoutLCTs1a() const { return readoutLCTsME11(ME1A); }
415 
416 std::vector<CSCCorrelatedLCTDigi> CSCGEMMotherboardME11::readoutLCTs1b() const { return readoutLCTsME11(ME1B); }
417 
418 // Returns vector of read-out correlated LCTs, if any. Starts with
419 // the vector of all found LCTs and selects the ones in the read-out
420 // time window.
421 std::vector<CSCCorrelatedLCTDigi> CSCGEMMotherboardME11::readoutLCTsME11(enum CSCPart me1ab) const {
422  std::vector<CSCCorrelatedLCTDigi> tmpV;
423 
424  // The start time of the L1A*LCT coincidence window should be related
425  // to the fifo_pretrig parameter, but I am not completely sure how.
426  // Just choose it such that the window is centered at bx=7. This may
427  // need further tweaking if the value of tmb_l1a_window_size changes.
428  //static int early_tbins = 4;
429  // The number of LCT bins in the read-out is given by the
430  // tmb_l1a_window_size parameter, forced to be odd
431  const int lct_bins = (tmb_l1a_window_size % 2 == 0) ? tmb_l1a_window_size + 1 : tmb_l1a_window_size;
432  const int late_tbins = early_tbins + lct_bins;
433 
434  // Start from the vector of all found correlated LCTs and select
435  // those within the LCT*L1A coincidence window.
436  int bx_readout = -1;
437  std::vector<CSCCorrelatedLCTDigi> all_lcts;
438  switch (tmb_cross_bx_algo) {
439  case 0:
440  case 1:
441  allLCTs.getMatched(all_lcts);
442  break;
443  case 2:
445  break;
446  case 3:
448  break;
449  default:
450  LogTrace("CSCGEMMotherboardME11") << "tmb_cross_bx_algo error" << std::endl;
451  break;
452  }
453 
454  for (const auto& lct : all_lcts) {
455  if (!lct.isValid())
456  continue;
457 
458  int bx = lct.getBX();
459  // Skip LCTs found too early relative to L1Accept.
460  if (bx <= early_tbins)
461  continue;
462 
463  // Skip LCTs found too late relative to L1Accept.
464  if (bx > late_tbins)
465  continue;
466 
467  if ((me1ab == CSCPart::ME1B and lct.getStrip() > CSCConstants::MAX_HALF_STRIP_ME1B) or
468  (me1ab == CSCPart::ME1A and lct.getStrip() <= CSCConstants::MAX_HALF_STRIP_ME1B))
469  continue;
470 
471  // If (readout_earliest_2) take only LCTs in the earliest bx in the read-out window:
472  // in digi->raw step, LCTs have to be packed into the TMB header, and
473  // currently there is room just for two.
474  if (readout_earliest_2 and (bx_readout == -1 or bx == bx_readout)) {
475  tmpV.push_back(lct);
476  if (bx_readout == -1)
477  bx_readout = bx;
478  } else
479  tmpV.push_back(lct);
480  }
481  return tmpV;
482 }
483 
484 //sort LCTs in each BX
485 //
486 void CSCGEMMotherboardME11::sortLCTs(std::vector<CSCCorrelatedLCTDigi>& LCTs,
487  int bx,
488  bool (*sorter)(const CSCCorrelatedLCTDigi&, const CSCCorrelatedLCTDigi&)) const {
489  allLCTs.getTimeMatched(bx, LCTs);
490 
492 
493  if (LCTs.size() > max_lcts)
494  LCTs.erase(LCTs.begin() + max_lcts, LCTs.end());
495 }
496 
497 //sort LCTs in whole LCTs BX window
498 void CSCGEMMotherboardME11::sortLCTs(std::vector<CSCCorrelatedLCTDigi>& LCTs,
499  bool (*sorter)(const CSCCorrelatedLCTDigi&, const CSCCorrelatedLCTDigi&)) const {
500  for (int bx = 0; bx < CSCConstants::MAX_LCT_TBINS; bx++) {
501  // temporary collection with all LCTs in the whole chamber
502  std::vector<CSCCorrelatedLCTDigi> LCTs_tmp;
504 
505  // Add the LCTs
506  for (const auto& p : LCTs_tmp) {
507  LCTs.push_back(p);
508  }
509  }
510 }
511 
513  return cscTmbLUT_->doesALCTCrossCLCT(a, c, theEndcap, gangedME1a_);
514 }
515 
516 bool CSCGEMMotherboardME11::doesWiregroupCrossStrip(int key_wg, int key_strip) const {
517  return cscTmbLUT_->doesWiregroupCrossStrip(key_wg, key_strip, theEndcap, gangedME1a_);
518 }
519 
521  const CSCALCTDigi& sALCT,
522  const CSCCLCTDigi& bCLCT,
523  const CSCCLCTDigi& sCLCT,
524  const GEMPadDigiIds& pads,
525  const GEMCoPadDigiIds& copads,
526  CSCCorrelatedLCTDigi& lct1,
527  CSCCorrelatedLCTDigi& lct2) const {
528  CSCALCTDigi bestALCT = bALCT;
529  CSCALCTDigi secondALCT = sALCT;
530  const CSCCLCTDigi& bestCLCT = bCLCT;
531  CSCCLCTDigi secondCLCT = sCLCT;
532 
533  // assume that always anodeBestValid and cathodeBestValid
534  if (secondALCT == bestALCT)
535  secondALCT.clear();
536  if (secondCLCT == bestCLCT)
537  secondCLCT.clear();
538 
539  const bool ok_bb = bestALCT.isValid() and bestCLCT.isValid();
540  const bool ok_bs = bestALCT.isValid() and secondCLCT.isValid();
541  const bool ok_sb = secondALCT.isValid() and bestCLCT.isValid();
542  const bool ok_ss = secondALCT.isValid() and secondCLCT.isValid();
543 
544  const int ok11 = doesALCTCrossCLCT(bestALCT, bestCLCT);
545  const int ok12 = doesALCTCrossCLCT(bestALCT, secondCLCT);
546  const int ok21 = doesALCTCrossCLCT(secondALCT, bestCLCT);
547  const int ok22 = doesALCTCrossCLCT(secondALCT, secondCLCT);
548  const int code = (ok11 << 3) | (ok12 << 2) | (ok21 << 1) | (ok22);
549 
550  int dbg = 0;
551  if (dbg)
552  LogTrace("CSCGEMMotherboardME11") << "debug correlateLCTs in ME11" << cscId_ << "\n"
553  << "ALCT1: " << bestALCT << "\n"
554  << "ALCT2: " << secondALCT << "\n"
555  << "CLCT1: " << bestCLCT << "\n"
556  << "CLCT2: " << secondCLCT << "\n"
557  << "ok 11 12 21 22 code = " << ok11 << " " << ok12 << " " << ok21 << " " << ok22
558  << " " << code << std::endl;
559 
560  if (code == 0)
561  return;
562 
563  // LUT defines correspondence between possible ok## combinations
564  // and resulting lct1 and lct2
565  int lut[16][2] = {
566  //ok: 11 12 21 22
567  {0, 0}, // 0 0 0 0
568  {22, 0}, // 0 0 0 1
569  {21, 0}, // 0 0 1 0
570  {21, 22}, // 0 0 1 1
571  {12, 0}, // 0 1 0 0
572  {12, 22}, // 0 1 0 1
573  {12, 21}, // 0 1 1 0
574  {12, 21}, // 0 1 1 1
575  {11, 0}, // 1 0 0 0
576  {11, 22}, // 1 0 0 1
577  {11, 21}, // 1 0 1 0
578  {11, 22}, // 1 0 1 1
579  {11, 12}, // 1 1 0 0
580  {11, 22}, // 1 1 0 1
581  {11, 12}, // 1 1 1 0
582  {11, 22}, // 1 1 1 1
583  };
584 
585  if (dbg)
586  LogTrace("CSCGEMMotherboardME11") << "lut 0 1 = " << lut[code][0] << " " << lut[code][1] << std::endl;
587 
588  // check matching copads
589  const GEMCoPadDigi& bb_copad = bestMatchingPad<GEMCoPadDigi>(bestALCT, bestCLCT, copads);
590  const GEMCoPadDigi& bs_copad = bestMatchingPad<GEMCoPadDigi>(bestALCT, secondCLCT, copads);
591  const GEMCoPadDigi& sb_copad = bestMatchingPad<GEMCoPadDigi>(secondALCT, bestCLCT, copads);
592  const GEMCoPadDigi& ss_copad = bestMatchingPad<GEMCoPadDigi>(secondALCT, secondCLCT, copads);
593 
594  // check matching pads
595  const GEMPadDigi& bb_pad = bestMatchingPad<GEMPadDigi>(bestALCT, bestCLCT, pads);
596  const GEMPadDigi& bs_pad = bestMatchingPad<GEMPadDigi>(bestALCT, secondCLCT, pads);
597  const GEMPadDigi& sb_pad = bestMatchingPad<GEMPadDigi>(secondALCT, bestCLCT, pads);
598  const GEMPadDigi& ss_pad = bestMatchingPad<GEMPadDigi>(secondALCT, secondCLCT, pads);
599 
600  // evaluate possible combinations
601  const bool ok_bb_copad = ok11 == 1 and ok_bb and bb_copad.isValid();
602  const bool ok_bs_copad = ok12 == 1 and ok_bs and bs_copad.isValid();
603  const bool ok_sb_copad = ok21 == 1 and ok_sb and sb_copad.isValid();
604  const bool ok_ss_copad = ok22 == 1 and ok_ss and ss_copad.isValid();
605 
606  const bool ok_bb_pad = ok11 == 1 and ok_bb and bb_pad.isValid();
607  const bool ok_bs_pad = ok12 == 1 and ok_bs and bs_pad.isValid();
608  const bool ok_sb_pad = ok21 == 1 and ok_sb and sb_pad.isValid();
609  const bool ok_ss_pad = ok22 == 1 and ok_ss and ss_pad.isValid();
610 
611  switch (lut[code][0]) {
612  case 11:
613  if (ok_bb_copad)
614  lct1 = CSCGEMMotherboard::constructLCTsGEM(bestALCT, bestCLCT, bb_copad, 1);
615  else if (ok_bb_pad)
616  lct1 = CSCGEMMotherboard::constructLCTsGEM(bestALCT, bestCLCT, bb_pad, 1);
617  else
618  lct1 = constructLCTs(bestALCT, bestCLCT, CSCCorrelatedLCTDigi::ALCTCLCT, 1);
619  break;
620  case 12:
621  if (ok_bs_copad)
622  lct1 = CSCGEMMotherboard::constructLCTsGEM(bestALCT, secondCLCT, bs_copad, 1);
623  else if (ok_bs_pad)
624  lct1 = CSCGEMMotherboard::constructLCTsGEM(bestALCT, secondCLCT, bs_pad, 1);
625  else
626  lct1 = constructLCTs(bestALCT, secondCLCT, CSCCorrelatedLCTDigi::ALCTCLCT, 1);
627  break;
628  case 21:
629  if (ok_sb_copad)
630  lct1 = CSCGEMMotherboard::constructLCTsGEM(secondALCT, bestCLCT, sb_copad, 1);
631  else if (ok_sb_pad)
632  lct1 = CSCGEMMotherboard::constructLCTsGEM(secondALCT, bestCLCT, sb_pad, 1);
633  else
634  lct1 = constructLCTs(secondALCT, bestCLCT, CSCCorrelatedLCTDigi::ALCTCLCT, 1);
635  break;
636  case 22:
637  if (ok_ss_copad)
638  lct1 = CSCGEMMotherboard::constructLCTsGEM(secondALCT, secondCLCT, ss_copad, 1);
639  else if (ok_ss_pad)
640  lct1 = CSCGEMMotherboard::constructLCTsGEM(secondALCT, secondCLCT, ss_pad, 1);
641  else
642  lct1 = constructLCTs(secondALCT, secondCLCT, CSCCorrelatedLCTDigi::ALCTCLCT, 1);
643  break;
644  default:
645  return;
646  }
647 
648  if (dbg)
649  LogTrace("CSCGEMMotherboardME11") << "lct1: " << lct1 << std::endl;
650 
651  switch (lut[code][1]) {
652  case 12:
653  if (ok_bs_copad)
654  lct2 = CSCGEMMotherboard::constructLCTsGEM(bestALCT, secondCLCT, bs_copad, 2);
655  else if (ok_bs_pad)
656  lct2 = CSCGEMMotherboard::constructLCTsGEM(bestALCT, secondCLCT, bs_pad, 2);
657  else
658  lct2 = constructLCTs(bestALCT, secondCLCT, CSCCorrelatedLCTDigi::ALCTCLCT, 2);
659  break;
660  case 21:
661  if (ok_sb_copad)
662  lct2 = CSCGEMMotherboard::constructLCTsGEM(secondALCT, bestCLCT, sb_copad, 2);
663  else if (ok_sb_pad)
664  lct2 = CSCGEMMotherboard::constructLCTsGEM(secondALCT, bestCLCT, sb_pad, 2);
665  else
666  lct2 = constructLCTs(secondALCT, bestCLCT, CSCCorrelatedLCTDigi::ALCTCLCT, 2);
667  break;
668  case 22:
669  if (ok_bb_copad)
670  lct2 = CSCGEMMotherboard::constructLCTsGEM(secondALCT, secondCLCT, bb_copad, 2);
671  else if (ok_bb_pad)
672  lct2 = CSCGEMMotherboard::constructLCTsGEM(secondALCT, secondCLCT, bb_pad, 2);
673  else
674  lct2 = constructLCTs(secondALCT, secondCLCT, CSCCorrelatedLCTDigi::ALCTCLCT, 2);
675  break;
676  default:
677  return;
678  }
679 
680  if (dbg)
681  LogTrace("CSCGEMMotherboardME11") << "lct2: " << lct2 << std::endl;
682 
683  if (dbg)
684  LogTrace("CSCGEMMotherboardME11") << "out of correlateLCTs" << std::endl;
685  return;
686 }
ME11
Definition: CSCUpgradeMotherboardLUT.h:12
electrons_cff.bool
bool
Definition: electrons_cff.py:372
CSCBaseboard::theEndcap
const unsigned theEndcap
Definition: CSCBaseboard.h:42
CSCMotherboard::match_trig_window_size
unsigned int match_trig_window_size
Definition: CSCMotherboard.h:99
CSCGEMMotherboardME11::clctV
std::vector< CSCCLCTDigi > clctV
Definition: CSCGEMMotherboardME11.h:80
CSCGEMMotherboardLUTME11
Definition: CSCUpgradeMotherboardLUT.h:78
GEMPadDigi
Definition: GEMPadDigi.h:15
CSCBaseboard::cscGeometry_
const CSCGeometry * cscGeometry_
Definition: CSCBaseboard.h:63
CSCBaseboard::isSLHC_
bool isSLHC_
Definition: CSCBaseboard.h:82
CSCConstants::MAX_ALCT_TBINS
Definition: CSCConstants.h:62
relativeConstraints.station
station
Definition: relativeConstraints.py:67
CSCMotherboard::alctProc
std::unique_ptr< CSCAnodeLCTProcessor > alctProc
Definition: CSCMotherboard.h:75
AlCaHLTBitMon_ParallelJobs.p
p
Definition: AlCaHLTBitMon_ParallelJobs.py:153
CSCALCTDigi::clear
void clear()
clear this ALCT
Definition: CSCALCTDigi.cc:43
edm::LogInfo
Definition: MessageLogger.h:254
CSCGEMMotherboard::gemGeometryAvailable
bool gemGeometryAvailable
Definition: CSCGEMMotherboard.h:207
l1GtPatternGenerator_cfi.bx
bx
Definition: l1GtPatternGenerator_cfi.py:18
CSCGEMMotherboardME11::run
void run(const CSCWireDigiCollection *wiredc, const CSCComparatorDigiCollection *compdc, const GEMPadDigiClusterCollection *gemPads) override
Definition: CSCGEMMotherboardME11.cc:47
CSCGEMMotherboardME11::~CSCGEMMotherboardME11
~CSCGEMMotherboardME11() override
Definition: CSCGEMMotherboardME11.cc:38
GEMPadDigiCollection
MuonDigiCollection< GEMDetId, GEMPadDigi > GEMPadDigiCollection
Definition: GEMPadDigiCollection.h:13
CSCGEMMotherboard::constructLCTsGEM
CSCCorrelatedLCTDigi constructLCTsGEM(const CSCALCTDigi &alct, const GEMCoPadDigi &gem, int i) const
Definition: CSCGEMMotherboard.cc:66
CSCGEMMotherboardME11::readoutLCTs1a
std::vector< CSCCorrelatedLCTDigi > readoutLCTs1a() const
Definition: CSCGEMMotherboardME11.cc:414
CSCGEMMotherboard::coPads_
GEMCoPadDigiIdsBX coPads_
Definition: CSCGEMMotherboard.h:213
CSCUpgradeMotherboard::tmb_cross_bx_algo
unsigned int tmb_cross_bx_algo
Definition: CSCUpgradeMotherboard.h:109
CSCUpgradeMotherboard::debugLUTs
void debugLUTs()
Definition: CSCUpgradeMotherboard.cc:274
makeMuonMisalignmentScenario.endcap
endcap
Definition: makeMuonMisalignmentScenario.py:320
CSCGEMMotherboard::setupGeometry
void setupGeometry()
Definition: CSCGEMMotherboard.cc:276
CSCCLCTDigi
Definition: CSCCLCTDigi.h:17
CSCCorrelatedLCTDigi::ALCTCLCT
Definition: CSCCorrelatedLCTDigi.h:160
CSCGEMMotherboardME11::dropLowQualityCLCTsNoGEMs_ME1b_
bool dropLowQualityCLCTsNoGEMs_ME1b_
Definition: CSCGEMMotherboardME11.h:84
CSCMotherboard::clctProc
std::unique_ptr< CSCCathodeLCTProcessor > clctProc
Definition: CSCMotherboard.h:78
LCTContainer::getMatched
void getMatched(std::vector< CSCCorrelatedLCTDigi > &) const
Definition: LCTContainer.cc:23
CSCMotherboard::alctV
std::vector< CSCALCTDigi > alctV
Definition: CSCMotherboard.h:83
CSCGEMMotherboardME11::CSCGEMMotherboardME11
CSCGEMMotherboardME11()
Definition: CSCGEMMotherboardME11.cc:31
CSCMotherboard::constructLCTs
CSCCorrelatedLCTDigi constructLCTs(const CSCALCTDigi &aLCT, const CSCCLCTDigi &cLCT, int type, int trknmb) const
Definition: CSCMotherboard.cc:476
CSCPart
CSCPart
Definition: CSCUpgradeMotherboardLUT.h:12
CSCGEMMotherboard::correlateLCTsGEM
void correlateLCTsGEM(const T &best, const T &second, const GEMCoPadDigiIds &coPads, CSCCorrelatedLCTDigi &lct1, CSCCorrelatedLCTDigi &lct2) const
Definition: CSCGEMMotherboard.h:464
CSCGEMMotherboardME11::tmbLUT_
std::unique_ptr< CSCGEMMotherboardLUTME11 > tmbLUT_
Definition: CSCGEMMotherboardME11.h:49
CSCUpgradeMotherboard::match_earliest_clct_only
bool match_earliest_clct_only
Definition: CSCUpgradeMotherboard.h:106
CSCBaseboard::alctClctOffset_
unsigned int alctClctOffset_
Definition: CSCBaseboard.h:95
GEMPadDigiCollection
CSCUpgradeMotherboard::sortLCTsByGEMDphi
static bool sortLCTsByGEMDphi(const CSCCorrelatedLCTDigi &, const CSCCorrelatedLCTDigi &)
Definition: CSCUpgradeMotherboard.cc:283
CSCConstants::MAX_LCT_TBINS
Definition: CSCConstants.h:63
CSCGEMMotherboard::printGEMTriggerCoPads
void printGEMTriggerCoPads(int bx_start, int bx_stop, enum CSCPart)
Definition: CSCGEMMotherboard.cc:306
CSCGEMMotherboard::gemId
unsigned gemId
Definition: CSCGEMMotherboard.h:202
GEMPadDigiClusterCollection
CSCBaseboard::gangedME1a_
bool gangedME1a_
Definition: CSCBaseboard.h:86
b
double b
Definition: hdecay.h:118
CSCGEMMotherboard::coPadProcessor
std::unique_ptr< GEMCoPadProcessor > coPadProcessor
Definition: CSCGEMMotherboard.h:63
CSCGEMMotherboard::gemCoPadV
std::vector< GEMCoPadDigi > gemCoPadV
Definition: CSCGEMMotherboard.h:209
CSCGEMMotherboardME11::cscTmbLUT_
std::unique_ptr< CSCMotherboardLUTME11 > cscTmbLUT_
Definition: CSCGEMMotherboardME11.h:50
GEMCoPadDigiIds
matches< GEMCoPadDigi > GEMCoPadDigiIds
Definition: CSCGEMMotherboard.h:26
GEMCoPadDigi
Definition: GEMCoPadDigi.h:16
CSCGEMMotherboardME11.h
CSCGEMMotherboardME11::readoutLCTs1b
std::vector< CSCCorrelatedLCTDigi > readoutLCTs1b() const
Definition: CSCGEMMotherboardME11.cc:416
edm::ParameterSet
Definition: ParameterSet.h:36
edm::LogError
Definition: MessageLogger.h:183
a
double a
Definition: hdecay.h:119
ME1A
Definition: CSCUpgradeMotherboardLUT.h:12
CSCMotherboardLUTME11
Definition: CSCUpgradeMotherboardLUT.h:15
CSCUpgradeMotherboard::debug_matching
bool debug_matching
Definition: CSCUpgradeMotherboard.h:115
sorter
Definition: SETFilter.cc:31
CSCConstants::MAX_HALF_STRIP_ME1B
Definition: CSCConstants.h:39
LCTContainer::getTimeMatched
void getTimeMatched(const int bx, std::vector< CSCCorrelatedLCTDigi > &) const
Definition: LCTContainer.cc:7
CSCMotherboard::early_tbins
int early_tbins
Definition: CSCMotherboard.h:108
CSCCLCTDigi::isValid
bool isValid() const
check CLCT validity (1 - valid CLCT)
Definition: CSCCLCTDigi.h:45
CSCGEMMotherboardME11::sortLCTs
void sortLCTs(std::vector< CSCCorrelatedLCTDigi > &, int bx, bool(*sorter)(const CSCCorrelatedLCTDigi &, const CSCCorrelatedLCTDigi &)) const
Definition: CSCGEMMotherboardME11.cc:486
CSCUpgradeMotherboard::sortLCTs
void sortLCTs(std::vector< CSCCorrelatedLCTDigi > &lcts, bool(*sorter)(const CSCCorrelatedLCTDigi &, const CSCCorrelatedLCTDigi &)) const
Definition: CSCUpgradeMotherboard.cc:287
CSCGEMMotherboardME11::correlateLCTsGEM
void correlateLCTsGEM(const CSCALCTDigi &bestALCT, const CSCALCTDigi &secondALCT, const CSCCLCTDigi &bestCLCT, const CSCCLCTDigi &secondCLCT, const GEMPadDigiIds &pads, const GEMCoPadDigiIds &copads, CSCCorrelatedLCTDigi &lct1, CSCCorrelatedLCTDigi &lct2) const
Definition: CSCGEMMotherboardME11.cc:520
CSCComparatorDigiCollection
CSCGEMMotherboard::retrieveGEMCoPads
void retrieveGEMCoPads()
Definition: CSCGEMMotherboard.cc:57
CSCGEMMotherboardME11::doesALCTCrossCLCT
bool doesALCTCrossCLCT(const CSCALCTDigi &a, const CSCCLCTDigi &c) const
Definition: CSCGEMMotherboardME11.cc:512
HltBtagPostValidation_cff.c
c
Definition: HltBtagPostValidation_cff.py:31
CSCMotherboard::readout_earliest_2
bool readout_earliest_2
Definition: CSCMotherboard.h:111
CSCMotherboard::drop_used_clcts
bool drop_used_clcts
Definition: CSCMotherboard.h:105
CSCMotherboard::encodeHighMultiplicityBits
void encodeHighMultiplicityBits(unsigned alctBits)
Definition: CSCMotherboard.cc:630
CSCUpgradeMotherboard::sortLCTsByQuality
static bool sortLCTsByQuality(const CSCCorrelatedLCTDigi &, const CSCCorrelatedLCTDigi &)
Definition: CSCUpgradeMotherboard.cc:279
CSCGEMMotherboard
Definition: CSCGEMMotherboard.h:29
CSCUpgradeMotherboard::allLCTs
LCTContainer allLCTs
Definition: CSCUpgradeMotherboard.h:98
CSCMotherboard::tmb_l1a_window_size
unsigned int tmb_l1a_window_size
Definition: CSCMotherboard.h:99
CSCWireDigiCollection
qcdUeDQM_cfi.quality
quality
Definition: qcdUeDQM_cfi.py:31
CSCCLCTDigi::clear
void clear()
clear this CLCT
Definition: CSCCLCTDigi.cc:68
CSCALCTDigi
Definition: CSCALCTDigi.h:16
CSCGEMMotherboard::printGEMTriggerPads
void printGEMTriggerPads(int bx_start, int bx_stop, enum CSCPart)
Definition: CSCGEMMotherboard.cc:285
CSCGEMMotherboardME11::readoutLCTsME11
std::vector< CSCCorrelatedLCTDigi > readoutLCTsME11(enum CSCPart me1ab) const
Definition: CSCGEMMotherboardME11.cc:421
CSCConstants::MAX_CLCT_TBINS
Definition: CSCConstants.h:61
relativeConstraints.chamber
chamber
Definition: relativeConstraints.py:53
or
The Signals That Services Can Subscribe To This is based on ActivityRegistry and is current per Services can connect to the signals distributed by the ActivityRegistry in order to monitor the activity of the application Each possible callback has some defined which we here list in angle e< void, edm::EventID const &, edm::Timestamp const & > We also list in braces which AR_WATCH_USING_METHOD_ is used for those or
Definition: Activities.doc:12
CSCGEMMotherboard::clear
void clear()
Definition: CSCGEMMotherboard.cc:33
CSCGEMMotherboardME11::buildLCTfromCLCTandGEM_ME1b_
bool buildLCTfromCLCTandGEM_ME1b_
Definition: CSCGEMMotherboardME11.h:92
CSCGEMMotherboard::pads_
GEMPadDigiIdsBX pads_
Definition: CSCGEMMotherboard.h:212
CSCGEMMotherboard::maxDeltaBXCoPad_
int maxDeltaBXCoPad_
Definition: CSCGEMMotherboard.h:217
CSCBaseboard::cscId_
CSCDetId cscId_
Definition: CSCBaseboard.h:55
CSCALCTDigi::isValid
bool isValid() const
check ALCT validity (1 - valid ALCT)
Definition: CSCALCTDigi.h:37
CSCGEMMotherboard::retrieveGEMPads
void retrieveGEMPads(const GEMPadDigiCollection *pads, unsigned id)
Definition: CSCGEMMotherboard.cc:39
LogTrace
#define LogTrace(id)
Definition: MessageLogger.h:671
GEMPadDigi::isValid
bool isValid() const
Definition: GEMPadDigi.cc:22
CSCUpgradeMotherboard::max_lcts
unsigned int max_lcts
Definition: CSCUpgradeMotherboard.h:112
GEMPadDigiIds
matches< GEMPadDigi > GEMPadDigiIds
Definition: CSCGEMMotherboard.h:22
CSCGEMMotherboardME11::doesWiregroupCrossStrip
bool doesWiregroupCrossStrip(int key_wg, int key_hs) const override
Definition: CSCGEMMotherboardME11.cc:516
CSCGEMMotherboard::gem_g
const GEMGeometry * gem_g
Definition: CSCGEMMotherboard.h:206
CSCGEMMotherboardME11::buildLCTfromALCTandGEM_ME1b_
bool buildLCTfromALCTandGEM_ME1b_
Definition: CSCGEMMotherboardME11.h:90
CSCCorrelatedLCTDigi
Definition: CSCCorrelatedLCTDigi.h:19
g
The Signals That Services Can Subscribe To This is based on ActivityRegistry and is current per Services can connect to the signals distributed by the ActivityRegistry in order to monitor the activity of the application Each possible callback has some defined which we here list in angle e g
Definition: Activities.doc:4
GEMCoPadDigi::isValid
bool isValid() const
Definition: GEMCoPadDigi.cc:18
ME1B
Definition: CSCUpgradeMotherboardLUT.h:12
CSCBaseboard::infoV
int infoV
Definition: CSCBaseboard.h:61