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