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