CMS 3D CMS Logo

CSCMotherboardME11.cc
Go to the documentation of this file.
1 //-----------------------------------------------------------------------------
2 //
3 // Class: CSCMotherboardME11
4 //
5 // Description:
6 // Extended CSCMotherboard for ME11 to handle ME1a and ME1b separately
7 //
8 // Author List: Vadim Khotilovich 12 May 2009
9 //
10 //
11 //-----------------------------------------------------------------------------
12 
13 #include <memory>
14 
16 
18  unsigned station,
19  unsigned sector,
20  unsigned subsector,
21  unsigned chamber,
22  const edm::ParameterSet& conf)
23  : CSCUpgradeMotherboard(endcap, station, sector, subsector, chamber, conf) {
24  if (!runPhase2_)
25  edm::LogError("CSCMotherboardME11|SetupError") << "+++ TMB constructed while runPhase2_ is not set! +++\n";
26 
27  if (!runME11Up_)
28  edm::LogError("CSCMotherboardME11|SetupError") << "+++ TMB constructed while runME11Up_ is not set! +++\n";
29 
30  cscTmbLUT_ = std::make_unique<CSCMotherboardLUTME11>();
31 
32  // ignore unphysical ALCT-CLCT matches
33  ignoreAlctCrossClct = tmbParams_.getParameter<bool>("ignoreAlctCrossClct");
34 }
35 
37  if (!runPhase2_)
38  edm::LogError("CSCMotherboardME11|SetupError") << "+++ TMB constructed while runPhase2_ is not set! +++\n";
39 
40  if (!runME11Up_)
41  edm::LogError("CSCMotherboardME11|SetupError") << "+++ TMB constructed while runME11Up_ is not set! +++\n";
42 }
43 
45 
47 
48 // Set configuration parameters obtained via EventSetup mechanism.
50  alctProc->setConfigParameters(conf);
51  clctProc->setConfigParameters(conf);
52  // No config. parameters in DB for the TMB itself yet.
53 }
54 
56  clear();
57 
58  // Check for existing processors
59  if (!(alctProc && clctProc)) {
60  edm::LogError("CSCMotherboardME11|SetupError") << "+++ run() called for non-existing ALCT/CLCT processor! +++ \n";
61  return;
62  }
63 
64  alctProc->setCSCGeometry(cscGeometry_);
65  clctProc->setCSCGeometry(cscGeometry_);
66 
67  alctV = alctProc->run(wiredc); // run anodeLCT
68  clctV = clctProc->run(compdc); // run cathodeLCT
69 
70  // if there are no ALCTs and no CLCTs, it does not make sense to run this TMB
71  if (alctV.empty() and clctV.empty())
72  return;
73 
74  // encode high multiplicity bits
75  unsigned alctBits = alctProc->getHighMultiplictyBits();
77 
78  int used_alct_mask[20];
79  int used_clct_mask[20];
80  for (int b = 0; b < 20; b++)
81  used_alct_mask[b] = used_clct_mask[b] = 0;
82 
83  // CLCT-centric CLCT-to-ALCT matching
84  if (clct_to_alct) {
85  for (int bx_clct = 0; bx_clct < CSCConstants::MAX_CLCT_TBINS; bx_clct++) {
86  if (clctProc->getBestCLCT(bx_clct).isValid()) {
87  bool is_matched = false;
88  const int bx_alct_start = bx_clct - match_trig_window_size / 2 + CSCConstants::ALCT_CLCT_OFFSET;
89  const int bx_alct_stop = bx_clct + match_trig_window_size / 2 + CSCConstants::ALCT_CLCT_OFFSET;
90  for (int bx_alct = bx_alct_start; bx_alct <= bx_alct_stop; bx_alct++) {
91  if (bx_alct < 0 || bx_alct >= CSCConstants::MAX_ALCT_TBINS)
92  continue;
93  if (drop_used_alcts && used_alct_mask[bx_alct])
94  continue;
95  if (alctProc->getBestALCT(bx_alct).isValid()) {
96  if (infoV > 1)
97  LogTrace("CSCMotherboardME11")
98  << "Successful CLCT-ALCT match in ME11: bx_clct = " << bx_clct << "; match window: [" << bx_alct_start
99  << "; " << bx_alct_stop << "]; bx_alct = " << bx_alct;
100  int mbx = bx_alct_stop - bx_alct;
101  correlateLCTsME11(alctProc->getBestALCT(bx_alct),
102  alctProc->getSecondALCT(bx_alct),
103  clctProc->getBestCLCT(bx_clct),
104  clctProc->getSecondCLCT(bx_clct),
105  allLCTs(bx_alct, mbx, 0),
106  allLCTs(bx_alct, mbx, 1));
107  if (allLCTs(bx_alct, mbx, 0).isValid()) {
108  used_alct_mask[bx_alct] += 1;
110  break;
111  }
112  }
113  }
114  // Do not report CLCT-only LCT for ME11
115  if (!is_matched) {
116  if (infoV > 1)
117  LogTrace("CSCMotherboard") << "Unsuccessful ALCT-CLCT match (CLCT only): bx_clct = " << bx_clct
118  << " first CLCT " << clctProc->getBestCLCT(bx_clct) << "; match window: ["
119  << bx_alct_start << "; " << bx_alct_stop << "]";
120  }
121  }
122  } // end of CLCT-centric matching
123 
124  // ALCT-centric ALCT-to-CLCT matching
125  } else {
126  for (int bx_alct = 0; bx_alct < CSCConstants::MAX_ALCT_TBINS; bx_alct++) {
127  if (alctProc->getBestALCT(bx_alct).isValid()) {
128  const int bx_clct_start = bx_alct - match_trig_window_size / 2 - CSCConstants::ALCT_CLCT_OFFSET;
129  const int bx_clct_stop = bx_alct + match_trig_window_size / 2 - CSCConstants::ALCT_CLCT_OFFSET;
130 
131  // matching in ME11
132  bool is_matched = false;
133  for (int bx_clct = bx_clct_start; bx_clct <= bx_clct_stop; bx_clct++) {
134  if (bx_clct < 0 || bx_clct >= CSCConstants::MAX_CLCT_TBINS)
135  continue;
136  if (drop_used_clcts && used_clct_mask[bx_clct])
137  continue;
138  if (clctProc->getBestCLCT(bx_clct).isValid()) {
139  if (infoV > 1)
140  LogTrace("CSCMotherboardME11")
141  << "Successful ALCT-CLCT match in ME11: bx_alct = " << bx_alct << "; match window: [" << bx_clct_start
142  << "; " << bx_clct_stop << "]; bx_clct = " << bx_clct;
143  int mbx = bx_clct - bx_clct_start;
144  correlateLCTsME11(alctProc->getBestALCT(bx_alct),
145  alctProc->getSecondALCT(bx_alct),
146  clctProc->getBestCLCT(bx_clct),
147  clctProc->getSecondCLCT(bx_clct),
148  allLCTs(bx_alct, mbx, 0),
149  allLCTs(bx_alct, mbx, 1));
150  if (allLCTs(bx_alct, mbx, 0).isValid()) {
151  is_matched = true;
152  used_clct_mask[bx_clct] += 1;
154  break;
155  }
156  }
157  }
158  if (!is_matched) {
159  if (infoV > 1)
160  LogTrace("CSCMotherboard") << "Unsuccessful ALCT-CLCT match (ALCT only): bx_alct = " << bx_alct
161  << " first ALCT " << alctProc->getBestALCT(bx_alct) << "; match window: ["
162  << bx_clct_start << "; " << bx_clct_stop << "]";
163  }
164  }
165  } // end of ALCT-centric matching
166  }
167 
168  // reduction of nLCTs per each BX
169  //add similar cross bx algorithm to standard TMB in next step
170  for (int bx = 0; bx < CSCConstants::MAX_LCT_TBINS; bx++) {
171  // counting
172  unsigned int nlct = 0;
173  unsigned int nbx = 0;
174  for (unsigned int mbx = 0; mbx < match_trig_window_size; mbx++) {
175  bool hasLCT = false;
176  for (int i = 0; i < CSCConstants::MAX_LCTS_PER_CSC; i++) {
177  if (allLCTs(bx, mbx, i).isValid()) {
178  nlct++;
179  hasLCT = true;
180  if (infoV > 0) {
181  LogDebug("CSCMotherboardME11") << "LCT" << i + 1 << " " << bx << "/"
182  << bx + mbx - match_trig_window_size / 2 << ": " << allLCTs(bx, mbx, i);
183  }
184  }
185  }
186  if (hasLCT)
187  nbx++;
188  }
189  if (infoV > 0 && nlct > 0)
190  LogDebug("CSCMotherboardME11") << "bx " << bx << " nLCT: " << nlct << " total mbx with LCTs " << nbx;
191 
192  // some simple cross-bx sorting algorithms
193  if (tmb_cross_bx_algo == 1 and (nlct > 2 or nbx > 1)) {
194  nbx = 0;
195  for (unsigned int mbx = 0; mbx < match_trig_window_size; mbx++) {
196  nlct = 0;
197  bool hasLCT = false;
198  for (int i = 0; i < CSCConstants::MAX_LCTS_PER_CSC; i++) {
199  if (allLCTs(bx, pref[mbx], i).isValid()) {
200  nlct++;
201  hasLCT = true;
202  if (nlct > CSCConstants::MAX_LCTS_PER_CSC or nbx > 0)
203  allLCTs(bx, pref[mbx], i).clear();
204  }
205  }
206  if (hasLCT)
207  nbx++;
208  }
209 
210  if (infoV > 0)
211  LogDebug("CSCMotherboardME11") << "After x-bx sorting:";
212  nlct = 0;
213  for (unsigned int mbx = 0; mbx < match_trig_window_size; mbx++)
214  for (int i = 0; i < CSCConstants::MAX_LCTS_PER_CSC; i++) {
215  if (allLCTs(bx, mbx, i).isValid()) {
216  nlct++;
217  if (infoV > 0) {
218  LogDebug("CSCMotherboardME11") << "LCT" << i + 1 << " " << bx << "/"
219  << bx + mbx - match_trig_window_size / 2 << ": " << allLCTs(bx, mbx, i);
220  }
221  }
222  }
223  if (infoV > 0 && nlct > 0)
224  LogDebug("CSCMotherboardME11") << "bx " << bx << " nnLCT: " << nlct;
225  } // x-bx sorting
226  } // end of for (int bx = 0; bx < CSCConstants::MAX_LCT_TBINS; bx++)
227 }
228 
229 std::vector<CSCCorrelatedLCTDigi> CSCMotherboardME11::readoutLCTs1a() const { return readoutLCTs(ME1A); }
230 
231 std::vector<CSCCorrelatedLCTDigi> CSCMotherboardME11::readoutLCTs1b() const { return readoutLCTs(ME1B); }
232 
233 // Returns vector of read-out correlated LCTs, if any. Starts with
234 // the vector of all found LCTs and selects the ones in the read-out
235 // time window.
236 std::vector<CSCCorrelatedLCTDigi> CSCMotherboardME11::readoutLCTs(int me1ab) const {
237  std::vector<CSCCorrelatedLCTDigi> tmpV;
238 
239  // The start time of the L1A*LCT coincidence window should be related
240  // to the fifo_pretrig parameter, but I am not completely sure how.
241  // Just choose it such that the window is centered at bx=7. This may
242  // need further tweaking if the value of tmb_l1a_window_size changes.
243  //static int early_tbins = 4;
244  // The number of LCT bins in the read-out is given by the
245  // tmb_l1a_window_size parameter, forced to be odd
246  const int lct_bins = (tmb_l1a_window_size % 2 == 0) ? tmb_l1a_window_size + 1 : tmb_l1a_window_size;
247  const int late_tbins = early_tbins + lct_bins;
248 
249  // Start from the vector of all found correlated LCTs and select
250  // those within the LCT*L1A coincidence window.
251  int bx_readout = -1;
252  std::vector<CSCCorrelatedLCTDigi> all_lcts;
253  if (me1ab == ME1A)
254  all_lcts = getLCTs1a();
255  if (me1ab == ME1B)
256  all_lcts = getLCTs1b();
257  std::vector<CSCCorrelatedLCTDigi>::const_iterator plct = all_lcts.begin();
258  for (; plct != all_lcts.end(); plct++) {
259  if (!plct->isValid())
260  continue;
261 
262  int bx = (*plct).getBX();
263  // Skip LCTs found too early relative to L1Accept.
264  if (bx <= early_tbins)
265  continue;
266 
267  // Skip LCTs found too late relative to L1Accept.
268  if (bx > late_tbins)
269  continue;
270 
271  // If (readout_earliest_2) take only LCTs in the earliest bx in the read-out window:
272  // in digi->raw step, LCTs have to be packed into the TMB header, and
273  // currently there is room just for two.
274  if (readout_earliest_2 && (bx_readout == -1 || bx == bx_readout)) {
275  tmpV.push_back(*plct);
276  if (bx_readout == -1)
277  bx_readout = bx;
278  } else
279  tmpV.push_back(*plct);
280  }
281 
282  // do a final check on the LCTs in readout
283  qualityControl_->checkMultiplicityBX(tmpV);
284  for (const auto& lct : tmpV) {
285  qualityControl_->checkValid(lct);
286  }
287 
288  return tmpV;
289 }
290 
291 // Returns vector of found correlated LCTs, if any.
292 std::vector<CSCCorrelatedLCTDigi> CSCMotherboardME11::getLCTs1b() const {
293  std::vector<CSCCorrelatedLCTDigi> tmpV;
294 
295  for (int bx = 0; bx < CSCConstants::MAX_LCT_TBINS; bx++) {
296  for (unsigned int mbx = 0; mbx < match_trig_window_size; mbx++) {
297  for (int i = 0; i < CSCConstants::MAX_LCTS_PER_CSC; i++) {
298  const CSCCorrelatedLCTDigi& lct = allLCTs.data[bx][mbx][i];
299  if (lct.isValid() and lct.getStrip() < CSCConstants::MAX_HALF_STRIP_ME1B) {
300  tmpV.push_back(lct);
301  }
302  }
303  }
304  }
305  return tmpV;
306 }
307 
308 // Returns vector of found correlated LCTs, if any.
309 std::vector<CSCCorrelatedLCTDigi> CSCMotherboardME11::getLCTs1a() const {
310  std::vector<CSCCorrelatedLCTDigi> tmpV;
311 
312  // disabled ME1a
314  return tmpV;
315 
316  for (int bx = 0; bx < CSCConstants::MAX_LCT_TBINS; bx++) {
317  for (unsigned int mbx = 0; mbx < match_trig_window_size; mbx++) {
318  for (int i = 0; i < CSCConstants::MAX_LCTS_PER_CSC; i++) {
319  const CSCCorrelatedLCTDigi& lct = allLCTs.data[bx][mbx][i];
320  if (lct.isValid() and lct.getStrip() >= CSCConstants::MAX_HALF_STRIP_ME1B) {
321  tmpV.push_back(lct);
322  }
323  }
324  }
325  } // Report all LCTs found.
326  return tmpV;
327 }
328 
330  return cscTmbLUT_->doesALCTCrossCLCT(a, c, theEndcap, gangedME1a_);
331 }
332 
334  const CSCALCTDigi& sALCT,
335  const CSCCLCTDigi& bCLCT,
336  const CSCCLCTDigi& sCLCT,
337  CSCCorrelatedLCTDigi& lct1,
338  CSCCorrelatedLCTDigi& lct2) const {
339  // assume that always anodeBestValid && cathodeBestValid
340  CSCALCTDigi bestALCT = bALCT;
341  CSCALCTDigi secondALCT = sALCT;
342  CSCCLCTDigi bestCLCT = bCLCT;
343  CSCCLCTDigi secondCLCT = sCLCT;
344 
345  if (ignoreAlctCrossClct) {
346  const bool anodeBestValid = bestALCT.isValid();
347  const bool anodeSecondValid = secondALCT.isValid();
348  const bool cathodeBestValid = bestCLCT.isValid();
349  const bool cathodeSecondValid = secondCLCT.isValid();
350  if (anodeBestValid and !anodeSecondValid)
351  secondALCT = bestALCT;
352  if (!anodeBestValid and anodeSecondValid)
353  bestALCT = secondALCT;
354  if (cathodeBestValid and !cathodeSecondValid)
355  secondCLCT = bestCLCT;
356  if (!cathodeBestValid and cathodeSecondValid)
357  bestCLCT = secondCLCT;
358  // ALCT-CLCT matching conditions are defined by "trig_enable" configuration
359  // parameters.
360  if ((alct_trig_enable and bestALCT.isValid()) or (clct_trig_enable and bestCLCT.isValid()) or
361  (match_trig_enable and bestALCT.isValid() and bestCLCT.isValid())) {
362  lct1 = constructLCTs(bestALCT, bestCLCT, CSCCorrelatedLCTDigi::ALCTCLCT, 1);
363  }
364  if (((secondALCT != bestALCT) or (secondCLCT != bestCLCT)) and
365  ((alct_trig_enable and secondALCT.isValid()) or (clct_trig_enable and secondCLCT.isValid()) or
366  (match_trig_enable and secondALCT.isValid() and secondCLCT.isValid()))) {
367  lct2 = constructLCTs(secondALCT, secondCLCT, CSCCorrelatedLCTDigi::ALCTCLCT, 2);
368  }
369  return;
370  } else {
371  if (secondALCT == bestALCT)
372  secondALCT.clear();
373  if (secondCLCT == bestCLCT)
374  secondCLCT.clear();
375 
376  const int ok11 = doesALCTCrossCLCT(bestALCT, bestCLCT);
377  const int ok12 = doesALCTCrossCLCT(bestALCT, secondCLCT);
378  const int ok21 = doesALCTCrossCLCT(secondALCT, bestCLCT);
379  const int ok22 = doesALCTCrossCLCT(secondALCT, secondCLCT);
380  const int code = (ok11 << 3) | (ok12 << 2) | (ok21 << 1) | (ok22);
381 
382  int dbg = 0;
383  if (dbg)
384  LogTrace("CSCMotherboardME11") << "debug correlateLCTs in ME11 " << cscId_ << std::endl
385  << "ALCT1: " << bestALCT << std::endl
386  << "ALCT2: " << secondALCT << std::endl
387  << "CLCT1: " << bestCLCT << std::endl
388  << "CLCT2: " << secondCLCT << std::endl
389  << "ok 11 12 21 22 code = " << ok11 << " " << ok12 << " " << ok21 << " " << ok22
390  << " " << code << std::endl;
391 
392  if (code == 0)
393  return;
394 
395  // LUT defines correspondence between possible ok## combinations
396  // and resulting lct1 and lct2
397  int lut[16][2] = {
398  //ok: 11 12 21 22
399  {0, 0}, // 0 0 0 0
400  {22, 0}, // 0 0 0 1
401  {21, 0}, // 0 0 1 0
402  {21, 22}, // 0 0 1 1
403  {12, 0}, // 0 1 0 0
404  {12, 22}, // 0 1 0 1
405  {12, 21}, // 0 1 1 0
406  {12, 21}, // 0 1 1 1
407  {11, 0}, // 1 0 0 0
408  {11, 22}, // 1 0 0 1
409  {11, 21}, // 1 0 1 0
410  {11, 22}, // 1 0 1 1
411  {11, 12}, // 1 1 0 0
412  {11, 22}, // 1 1 0 1
413  {11, 12}, // 1 1 1 0
414  {11, 22}, // 1 1 1 1
415  };
416 
417  if (dbg)
418  LogTrace("CSCMotherboardME11") << "lut 0 1 = " << lut[code][0] << " " << lut[code][1] << std::endl;
419 
420  switch (lut[code][0]) {
421  case 11:
422  lct1 = constructLCTs(bestALCT, bestCLCT, CSCCorrelatedLCTDigi::ALCTCLCT, 1);
423  break;
424  case 12:
425  lct1 = constructLCTs(bestALCT, secondCLCT, CSCCorrelatedLCTDigi::ALCTCLCT, 1);
426  break;
427  case 21:
428  lct1 = constructLCTs(secondALCT, bestCLCT, CSCCorrelatedLCTDigi::ALCTCLCT, 1);
429  break;
430  case 22:
431  lct1 = constructLCTs(secondALCT, secondCLCT, CSCCorrelatedLCTDigi::ALCTCLCT, 1);
432  break;
433  default:
434  return;
435  }
436 
437  if (dbg)
438  LogTrace("CSCMotherboardME11") << "lct1: " << lct1 << std::endl;
439 
440  switch (lut[code][1]) {
441  case 12:
442  lct2 = constructLCTs(bestALCT, secondCLCT, CSCCorrelatedLCTDigi::ALCTCLCT, 2);
443  if (dbg)
444  LogTrace("CSCMotherboardME11") << "lct2: " << lct2 << std::endl;
445  return;
446  case 21:
447  lct2 = constructLCTs(secondALCT, bestCLCT, CSCCorrelatedLCTDigi::ALCTCLCT, 2);
448  if (dbg)
449  LogTrace("CSCMotherboardME11") << "lct2: " << lct2 << std::endl;
450  return;
451  case 22:
452  lct2 = constructLCTs(secondALCT, secondCLCT, CSCCorrelatedLCTDigi::ALCTCLCT, 2);
453  if (dbg)
454  LogTrace("CSCMotherboardME11") << "lct2: " << lct2 << std::endl;
455  return;
456  default:
457  return;
458  }
459  if (dbg)
460  LogTrace("CSCMotherboardME11") << "out of correlateLCTsME11" << std::endl;
461 
462  return;
463  }
464 }
CSCDBL1TPParameters
Definition: CSCDBL1TPParameters.h:14
CSCUpgradeMotherboard
Definition: CSCUpgradeMotherboard.h:35
CSCMotherboard::qualityControl_
std::unique_ptr< LCTQualityControl > qualityControl_
Definition: CSCMotherboard.h:128
mps_fire.i
i
Definition: mps_fire.py:428
CSCBaseboard::theEndcap
const unsigned theEndcap
Definition: CSCBaseboard.h:42
CSCMotherboard::match_trig_window_size
unsigned int match_trig_window_size
Definition: CSCMotherboard.h:99
CSCMotherboardME11::ME1A
Definition: CSCMotherboardME11.h:59
CSCMotherboard::mpc_block_me1a
unsigned int mpc_block_me1a
Definition: CSCMotherboard.h:97
CSCMotherboard::drop_used_alcts
bool drop_used_alcts
Definition: CSCMotherboard.h:102
CSCBaseboard::cscGeometry_
const CSCGeometry * cscGeometry_
Definition: CSCBaseboard.h:66
CSCConstants::MAX_ALCT_TBINS
Definition: CSCConstants.h:64
CSCBaseboard::tmbParams_
edm::ParameterSet tmbParams_
Definition: CSCBaseboard.h:73
relativeConstraints.station
station
Definition: relativeConstraints.py:67
CSCMotherboard::alctProc
std::unique_ptr< CSCAnodeLCTProcessor > alctProc
Definition: CSCMotherboard.h:75
CSCMotherboardME11::ME1B
Definition: CSCMotherboardME11.h:59
CSCBaseboard::disableME1a_
bool disableME1a_
Definition: CSCBaseboard.h:89
CSCCorrelatedLCTDigi::getStrip
uint16_t getStrip(uint16_t n=2) const
return the key halfstrip from 0,159
Definition: CSCCorrelatedLCTDigi.cc:72
CSCUpgradeMotherboard::clear
void clear()
Definition: CSCUpgradeMotherboard.cc:332
CSCALCTDigi::clear
void clear()
clear this ALCT
Definition: CSCALCTDigi.cc:50
l1GtPatternGenerator_cfi.bx
bx
Definition: l1GtPatternGenerator_cfi.py:18
CSCMotherboardME11::getLCTs1b
std::vector< CSCCorrelatedLCTDigi > getLCTs1b() const
Definition: CSCMotherboardME11.cc:292
CSCUpgradeMotherboard::tmb_cross_bx_algo
unsigned int tmb_cross_bx_algo
Definition: CSCUpgradeMotherboard.h:109
CSCMotherboard::clct_trig_enable
unsigned int clct_trig_enable
Definition: CSCMotherboard.h:98
CSCConstants::ALCT_CLCT_OFFSET
Definition: CSCConstants.h:81
makeMuonMisalignmentScenario.endcap
endcap
Definition: makeMuonMisalignmentScenario.py:320
CSCMotherboardME11::setConfigParameters
void setConfigParameters(const CSCDBL1TPParameters *conf)
Definition: CSCMotherboardME11.cc:49
CSCCLCTDigi
Definition: CSCCLCTDigi.h:17
CSCCorrelatedLCTDigi::ALCTCLCT
Definition: CSCCorrelatedLCTDigi.h:196
CSCMotherboardME11::~CSCMotherboardME11
~CSCMotherboardME11() override
Definition: CSCMotherboardME11.cc:44
CSCMotherboardME11::correlateLCTsME11
void correlateLCTsME11(const CSCALCTDigi &bestALCT, const CSCALCTDigi &secondALCT, const CSCCLCTDigi &bestCLCT, const CSCCLCTDigi &secondCLCT, CSCCorrelatedLCTDigi &lct1, CSCCorrelatedLCTDigi &lct2) const
Definition: CSCMotherboardME11.cc:333
CSCMotherboard::clctV
std::vector< CSCCLCTDigi > clctV
Definition: CSCMotherboard.h:84
CSCMotherboard::clctProc
std::unique_ptr< CSCCathodeLCTProcessor > clctProc
Definition: CSCMotherboard.h:78
CSCBaseboard::runME11Up_
bool runME11Up_
Definition: CSCBaseboard.h:98
CSCMotherboard::alctV
std::vector< CSCALCTDigi > alctV
Definition: CSCMotherboard.h:83
CSCConstants::MAX_LCTS_PER_CSC
Definition: CSCConstants.h:75
CSCMotherboard::constructLCTs
CSCCorrelatedLCTDigi constructLCTs(const CSCALCTDigi &aLCT, const CSCCLCTDigi &cLCT, int type, int trknmb) const
Definition: CSCMotherboard.cc:486
CSCUpgradeMotherboard::readoutLCTs
std::vector< CSCCorrelatedLCTDigi > readoutLCTs() const override
Definition: CSCUpgradeMotherboard.cc:262
CSCMotherboardME11::cscTmbLUT_
std::unique_ptr< CSCMotherboardLUTME11 > cscTmbLUT_
Definition: CSCMotherboardME11.h:56
CSCMotherboardME11::getLCTs1a
std::vector< CSCCorrelatedLCTDigi > getLCTs1a() const
Definition: CSCMotherboardME11.cc:309
CSCUpgradeMotherboard::match_earliest_clct_only
bool match_earliest_clct_only
Definition: CSCUpgradeMotherboard.h:106
CSCConstants::MAX_LCT_TBINS
Definition: CSCConstants.h:65
CSCBaseboard::gangedME1a_
bool gangedME1a_
Definition: CSCBaseboard.h:89
b
double b
Definition: hdecay.h:118
CSCBaseboard::runPhase2_
bool runPhase2_
Definition: CSCBaseboard.h:85
LogDebug
#define LogDebug(id)
Definition: MessageLogger.h:223
edm::ParameterSet
Definition: ParameterSet.h:47
a
double a
Definition: hdecay.h:119
LCTContainer::clear
void clear()
Definition: LCTContainer.cc:31
CSCMotherboardME11::run
void run(const CSCWireDigiCollection *wiredc, const CSCComparatorDigiCollection *compdc) override
Definition: CSCMotherboardME11.cc:55
CSCMotherboardME11::clear
void clear()
Definition: CSCMotherboardME11.cc:46
CSCConstants::MAX_HALF_STRIP_ME1B
Definition: CSCConstants.h:39
CSCMotherboard::early_tbins
int early_tbins
Definition: CSCMotherboard.h:108
CSCCLCTDigi::isValid
bool isValid() const
check CLCT validity (1 - valid CLCT)
Definition: CSCCLCTDigi.h:50
CSCUpgradeMotherboard::pref
int pref[CSCConstants::MAX_LCT_TBINS]
Definition: CSCUpgradeMotherboard.h:103
CSCComparatorDigiCollection
CSCMotherboardME11.h
CSCUpgradeMotherboard::match_earliest_alct_only
bool match_earliest_alct_only
Definition: CSCUpgradeMotherboard.h:105
HltBtagPostValidation_cff.c
c
Definition: HltBtagPostValidation_cff.py:31
edm::LogError
Log< level::Error, false > LogError
Definition: MessageLogger.h:123
CSCMotherboardME11::ignoreAlctCrossClct
bool ignoreAlctCrossClct
Definition: CSCMotherboardME11.h:70
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:709
CSCUpgradeMotherboard::allLCTs
LCTContainer allLCTs
Definition: CSCUpgradeMotherboard.h:98
CSCMotherboard::tmb_l1a_window_size
unsigned int tmb_l1a_window_size
Definition: CSCMotherboard.h:99
CSCMotherboardME11::CSCMotherboardME11
CSCMotherboardME11()
Definition: CSCMotherboardME11.cc:36
CSCWireDigiCollection
CSCCLCTDigi::clear
void clear()
clear this CLCT
Definition: CSCCLCTDigi.cc:68
CSCALCTDigi
Definition: CSCALCTDigi.h:17
CSCMotherboard::alct_trig_enable
unsigned int alct_trig_enable
Definition: CSCMotherboard.h:98
CSCConstants::MAX_CLCT_TBINS
Definition: CSCConstants.h:63
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
edm::ParameterSet::getParameter
T getParameter(std::string const &) const
Definition: ParameterSet.h:303
CSCBaseboard::cscId_
CSCDetId cscId_
Definition: CSCBaseboard.h:58
CSCALCTDigi::isValid
bool isValid() const
check ALCT validity (1 - valid ALCT)
Definition: CSCALCTDigi.h:40
CSCMotherboard::clct_to_alct
bool clct_to_alct
Definition: CSCMotherboard.h:115
LogTrace
#define LogTrace(id)
Definition: MessageLogger.h:224
CSCMotherboard::match_trig_enable
unsigned int match_trig_enable
Definition: CSCMotherboard.h:98
CSCMotherboardME11::readoutLCTs1a
std::vector< CSCCorrelatedLCTDigi > readoutLCTs1a() const
Definition: CSCMotherboardME11.cc:229
CSCCorrelatedLCTDigi::isValid
bool isValid() const
return valid pattern bit
Definition: CSCCorrelatedLCTDigi.h:55
LCTContainer::data
CSCCorrelatedLCTDigi data[CSCConstants::MAX_LCT_TBINS][CSCConstants::MAX_MATCH_WINDOW_SIZE][CSCConstants::MAX_LCTS_PER_CSC]
Definition: LCTContainer.h:43
CSCMotherboardME11::readoutLCTs1b
std::vector< CSCCorrelatedLCTDigi > readoutLCTs1b() const
Definition: CSCMotherboardME11.cc:231
CSCCorrelatedLCTDigi
Definition: CSCCorrelatedLCTDigi.h:19
CSCMotherboardME11::doesALCTCrossCLCT
bool doesALCTCrossCLCT(const CSCALCTDigi &a, const CSCCLCTDigi &c) const
Definition: CSCMotherboardME11.cc:329
CSCBaseboard::infoV
int infoV
Definition: CSCBaseboard.h:64