CMS 3D CMS Logo

CSCGEMMotherboard.cc
Go to the documentation of this file.
1 #include <memory>
2 
4 
6  unsigned station,
7  unsigned sector,
8  unsigned subsector,
9  unsigned chamber,
10  const edm::ParameterSet& conf)
11  : CSCUpgradeMotherboard(endcap, station, sector, subsector, chamber, conf),
12  maxDeltaBXPad_(tmbParams_.getParameter<int>("maxDeltaBXPad")),
13  maxDeltaBXCoPad_(tmbParams_.getParameter<int>("maxDeltaBXCoPad")),
14  promoteALCTGEMpattern_(tmbParams_.getParameter<bool>("promoteALCTGEMpattern")),
15  promoteALCTGEMquality_(tmbParams_.getParameter<bool>("promoteALCTGEMquality")) {
16  // super chamber has layer=0!
18 
19  const edm::ParameterSet coPadParams(station == 1 ? conf.getParameter<edm::ParameterSet>("copadParamGE11")
20  : conf.getParameter<edm::ParameterSet>("copadParamGE21"));
21  coPadProcessor = std::make_unique<GEMCoPadProcessor>(theRegion, theStation, theChamber, coPadParams);
22 
23  maxDeltaPadL1_ = (theParity ? tmbParams_.getParameter<int>("maxDeltaPadL1Even")
24  : tmbParams_.getParameter<int>("maxDeltaPadL1Odd"));
25  maxDeltaPadL2_ = (theParity ? tmbParams_.getParameter<int>("maxDeltaPadL2Even")
26  : tmbParams_.getParameter<int>("maxDeltaPadL2Odd"));
27 }
28 
30 
32 
35  gemCoPadV.clear();
36  coPadProcessor->clear();
37  pads_.clear();
38  coPads_.clear();
39 }
40 
42  std::unique_ptr<GEMPadDigiCollection> gemPads(new GEMPadDigiCollection());
43  coPadProcessor->declusterize(gemClusters, *gemPads);
44 
45  gemCoPadV = coPadProcessor->run(gemPads.get());
46 
47  processGEMPads(gemPads.get());
49 }
50 
52  pads_.clear();
53  const auto& superChamber(gem_g->superChamber(gemId));
54  for (const auto& ch : superChamber->chambers()) {
55  for (const auto& roll : ch->etaPartitions()) {
56  GEMDetId roll_id(roll->id());
57  auto pads_in_det = gemPads->get(roll_id);
58  for (auto pad = pads_in_det.first; pad != pads_in_det.second; ++pad) {
59  // ignore 16-partition GE2/1 pads
60  if (roll->isGE21() and pad->nPartitions() == GEMPadDigi::GE21SplitStrip)
61  continue;
62 
63  // ignore invalid pads
64  if (!pad->isValid())
65  continue;
66 
67  const int bx_shifted(CSCConstants::LCT_CENTRAL_BX + pad->bx());
68  // consider matches with BX difference +1/0/-1
69  for (int bx = bx_shifted - maxDeltaBXPad_; bx <= bx_shifted + maxDeltaBXPad_; ++bx) {
70  pads_[bx].emplace_back(roll_id.rawId(), *pad);
71  }
72  }
73  }
74  }
75 }
76 
78  coPads_.clear();
79  for (const auto& copad : gemCoPadV) {
80  GEMDetId detId(theRegion, 1, theStation, 0, theChamber, 0);
81 
82  // ignore 16-partition GE2/1 pads
83  if (detId.isGE21() and copad.first().nPartitions() == GEMPadDigi::GE21SplitStrip)
84  continue;
85 
86  // only consider matches with same BX
87  coPads_[CSCConstants::LCT_CENTRAL_BX + copad.bx(1)].emplace_back(detId.rawId(), copad);
88  }
89 }
90 
92  const GEMCoPadDigi& gem,
93  int trknmb) const {
94  return constructLCTsGEM(alct, CSCCLCTDigi(), GEMPadDigi(), gem, trknmb);
95 }
96 
98  const GEMCoPadDigi& gem,
99  int trknmb) const {
100  return constructLCTsGEM(CSCALCTDigi(), clct, GEMPadDigi(), gem, trknmb);
101 }
102 
104  const CSCCLCTDigi& clct,
105  const GEMCoPadDigi& gem,
106  int trknmb) const {
107  return constructLCTsGEM(alct, clct, GEMPadDigi(), gem, trknmb);
108 }
109 
111  const CSCCLCTDigi& clct,
112  const GEMPadDigi& gem,
113  int trknmb) const {
114  return constructLCTsGEM(alct, clct, gem, GEMCoPadDigi(), trknmb);
115 }
116 
118  const CSCCLCTDigi& clct,
119  const GEMPadDigi& gem1,
120  const GEMCoPadDigi& gem2,
121  int trknmb) const {
122  int pattern = 0, quality = 0, bx = 0, keyStrip = 0, keyWG = 0, bend = 0, valid = 0;
123 
124  // make a new LCT
125  CSCCorrelatedLCTDigi thisLCT;
126  if (!alct.isValid() and !clct.isValid()) {
127  edm::LogError("CSCGEMCMotherboard") << "Warning!!! neither ALCT nor CLCT valid, return invalid LCT";
128  return thisLCT;
129  }
130 
131  // Determine the case and assign properties depending on the LCT dataformat (old/new)
132  if (alct.isValid() and clct.isValid() and gem1.isValid() and not gem2.isValid()) {
133  pattern = encodePattern(clct.getPattern());
134  if (runCCLUT_) {
135  quality = static_cast<unsigned int>(findQualityGEMv2(alct, clct, 1));
136  } else {
137  quality = static_cast<unsigned int>(findQualityGEMv1(alct, clct, 1));
138  }
139  bx = alct.getBX();
140  keyStrip = clct.getKeyStrip();
141  keyWG = alct.getKeyWG();
142  bend = clct.getBend();
143  thisLCT.setALCT(getBXShiftedALCT(alct));
144  thisLCT.setCLCT(getBXShiftedCLCT(clct));
145  thisLCT.setGEM1(gem1);
147  valid = doesWiregroupCrossStrip(keyWG, keyStrip) ? 1 : 0;
148  if (runCCLUT_) {
149  thisLCT.setRun3(true);
150  // 4-bit slope value derived with the CCLUT algorithm
151  thisLCT.setSlope(clct.getSlope());
152  thisLCT.setQuartStrip(clct.getQuartStrip());
153  thisLCT.setEighthStrip(clct.getEighthStrip());
154  thisLCT.setRun3Pattern(clct.getRun3Pattern());
155  }
156  } else if (alct.isValid() and clct.isValid() and not gem1.isValid() and gem2.isValid()) {
157  pattern = encodePattern(clct.getPattern());
158  if (runCCLUT_) {
159  quality = static_cast<unsigned int>(findQualityGEMv2(alct, clct, 2));
160  } else {
161  quality = static_cast<unsigned int>(findQualityGEMv1(alct, clct, 2));
162  }
163  bx = alct.getBX();
164  keyStrip = clct.getKeyStrip();
165  keyWG = alct.getKeyWG();
166  bend = clct.getBend();
167  thisLCT.setALCT(getBXShiftedALCT(alct));
168  thisLCT.setCLCT(getBXShiftedCLCT(clct));
169  thisLCT.setGEM1(gem2.first());
170  thisLCT.setGEM2(gem2.second());
172  valid = doesWiregroupCrossStrip(keyWG, keyStrip) ? 1 : 0;
173  if (runCCLUT_) {
174  thisLCT.setRun3(true);
175  // 4-bit slope value derived with the CCLUT algorithm
176  thisLCT.setSlope(clct.getSlope());
177  thisLCT.setQuartStrip(clct.getQuartStrip());
178  thisLCT.setEighthStrip(clct.getEighthStrip());
179  thisLCT.setRun3Pattern(clct.getRun3Pattern());
180  }
181  } else if (alct.isValid() and gem2.isValid() and not clct.isValid()) {
182  //in ME11
183  //ME1b: keyWG >15,
184  //ME1a and ME1b overlap: 10<=keyWG<=15
185  //ME1a: keyWG < 10
186  //in overlap region, firstly try a match in ME1b
187 
188  auto p(getCSCPart(-1)); //use -1 as fake halfstrip, it returns ME11 if station==1 && (ring==1 or ring==4)
189  if (p == CSCPart::ME11) {
190  if (alct.getKeyWG() >= 10)
191  p = CSCPart::ME1B;
192  else
193  p = CSCPart::ME1A;
194  }
195 
196  // min pad number is always 0
197  // max pad number is 191 or 383, depending on the station
198  assert(gem2.pad(1) >= 0);
199  assert(gem2.pad(2) >= 0);
200  assert(gem2.pad(1) < maxPads());
201  assert(gem2.pad(2) < maxPads());
202 
203  const auto& mymap1 = getLUT()->get_gem_pad_to_csc_hs(theParity, p);
204  // GEM pad number is counting from 1
205  // keyStrip from mymap: for ME1b 0-127 and for ME1a 0-95
206  // keyStrip for CLCT: for ME1b 0-127 and for ME1a 128-223
207  keyStrip = mymap1.at(gem2.pad(2));
208  if (p == CSCPart::ME1A and keyStrip <= CSCConstants::MAX_HALF_STRIP_ME1B) {
209  keyStrip += CSCConstants::MAX_HALF_STRIP_ME1B + 1;
210  }
211  keyWG = alct.getKeyWG();
212 
213  if ((not doesWiregroupCrossStrip(keyWG, keyStrip)) and p == CSCPart::ME1B and keyWG <= 15) {
214  //try ME1A as strip and WG do not cross
215  p = CSCPart::ME1A;
216  const auto& mymap2 = getLUT()->get_gem_pad_to_csc_hs(theParity, p);
217  keyStrip = mymap2.at(gem2.pad(2)) + CSCConstants::MAX_HALF_STRIP_ME1B + 1;
218  }
219 
220  pattern = promoteALCTGEMpattern_ ? 10 : 0;
221  quality = promoteALCTGEMquality_ ? 15 : 11;
222  bx = alct.getBX();
223  thisLCT.setALCT(getBXShiftedALCT(alct));
224  thisLCT.setGEM1(gem2.first());
225  thisLCT.setGEM2(gem2.second());
227  valid = true;
228  } else if (clct.isValid() and gem2.isValid() and not alct.isValid()) {
229  // min roll number is always 1
230  // max roll number is 8 or 16, depending on the station
231  assert(gem2.roll() >= GEMDetId::minRollId);
232  assert(gem2.roll() <= maxRolls());
233 
234  const auto& mymap2 = getLUT()->get_gem_roll_to_csc_wg(theParity);
235  pattern = encodePattern(clct.getPattern());
236  quality = promoteCLCTGEMquality_ ? 15 : 11;
237  bx = gem2.bx(1) + CSCConstants::LCT_CENTRAL_BX;
238  keyStrip = clct.getKeyStrip();
239  // choose the corresponding wire-group in the middle of the partition
240  keyWG = mymap2.at(gem2.roll() - 1);
241  bend = clct.getBend();
242  thisLCT.setCLCT(clct);
243  thisLCT.setGEM1(gem2.first());
244  thisLCT.setGEM2(gem2.second());
246  valid = true;
247  if (runCCLUT_) {
248  thisLCT.setRun3(true);
249  // 4-bit slope value derived with the CCLUT algorithm
250  thisLCT.setSlope(clct.getSlope());
251  thisLCT.setQuartStrip(clct.getQuartStrip());
252  thisLCT.setEighthStrip(clct.getEighthStrip());
253  thisLCT.setRun3Pattern(clct.getRun3Pattern());
254  }
255  }
256 
257  if (valid == 0)
258  LogTrace("CSCGEMCMotherboard") << "Warning!!! wiregroup and strip pair are not crossing each other"
259  << " detid " << cscId_ << " with wiregroup " << keyWG << "keyStrip " << keyStrip
260  << " \n";
261 
262  // fill the rest of the properties
263  thisLCT.setTrknmb(trknmb);
264  thisLCT.setValid(valid);
265  thisLCT.setQuality(quality);
266  thisLCT.setWireGroup(keyWG);
267  thisLCT.setStrip(keyStrip);
268  thisLCT.setPattern(pattern);
269  thisLCT.setBend(bend);
270  thisLCT.setBX(bx);
271  thisLCT.setMPCLink(0);
272  thisLCT.setBX0(0);
273  // Not used in Run-2. Will not be assigned in Run-3
274  thisLCT.setSyncErr(0);
275  thisLCT.setCSCID(theTrigChamber);
276  // in Run-3 we plan to denote the presence of exotic signatures in the chamber
278  thisLCT.setHMT(highMultiplicityBits_);
279 
280  // future work: add a section that produces LCTs according
281  // to the new LCT dataformat (not yet defined)
282 
283  // return new LCT
284  return thisLCT;
285 }
286 
287 bool CSCGEMMotherboard::isPadInOverlap(int roll) const {
288  // this only works for ME1A!
289  const auto& mymap = (getLUT()->get_csc_wg_to_gem_roll(theParity));
290  for (unsigned i = 0; i < mymap.size(); i++) {
291  // overlap region are WGs 10-15
292  if ((i < 10) or (i > 15))
293  continue;
294  if ((mymap.at(i).first <= roll) and (roll <= mymap.at(i).second))
295  return true;
296  }
297  return false;
298 }
299 
300 bool CSCGEMMotherboard::isGEMDetId(unsigned int p) const {
301  return (DetId(p).subdetId() == MuonSubdetId::GEM and DetId(p).det() == DetId::Muon);
302 }
303 
304 int CSCGEMMotherboard::getBX(const GEMPadDigi& p) const { return p.bx(); }
305 
306 int CSCGEMMotherboard::getBX(const GEMCoPadDigi& p) const { return p.bx(1); }
307 
308 int CSCGEMMotherboard::getRoll(const GEMPadDigiId& p) const { return GEMDetId(p.first).roll(); }
309 
310 int CSCGEMMotherboard::getRoll(const GEMCoPadDigiId& p) const { return p.second.roll(); }
311 
312 std::pair<int, int> CSCGEMMotherboard::getRolls(const CSCALCTDigi& alct) const {
313  const auto& mymap(getLUT()->get_csc_wg_to_gem_roll(theParity));
314  return mymap.at(alct.getKeyWG());
315 }
316 
317 float CSCGEMMotherboard::getPad(const GEMPadDigi& p) const { return p.pad(); }
318 
320  // average pad number for a GEMCoPad
321  return 0.5 * (p.pad(1) + p.pad(2));
322 }
323 
324 float CSCGEMMotherboard::getPad(const CSCCLCTDigi& clct, enum CSCPart part) const {
325  const auto& mymap = (getLUT()->get_csc_hs_to_gem_pad(theParity, part));
326  int keyStrip = clct.getKeyStrip();
327  //ME1A part, convert halfstrip from 128-223 to 0-95
329  keyStrip = keyStrip - CSCConstants::MAX_HALF_STRIP_ME1B - 1;
330  return 0.5 * (mymap.at(keyStrip).first + mymap.at(keyStrip).second);
331 }
332 
334 
336 
337 void CSCGEMMotherboard::printGEMTriggerPads(int bx_start, int bx_stop, enum CSCPart part) {
338  LogTrace("CSCGEMMotherboard") << "------------------------------------------------------------------------"
339  << std::endl;
340  LogTrace("CSCGEMMotherboard") << "* GEM trigger pads: " << std::endl;
341 
342  for (int bx = bx_start; bx <= bx_stop; bx++) {
343  const auto& in_pads = pads_[bx];
344  LogTrace("CSCGEMMotherboard") << "N(pads) BX " << bx << " : " << in_pads.size() << std::endl;
345 
346  for (const auto& pad : in_pads) {
347  LogTrace("CSCGEMMotherboard") << "\tdetId " << GEMDetId(pad.first) << ", pad = " << pad.second;
348  const auto& roll_id(GEMDetId(pad.first));
349 
350  if (part == CSCPart::ME11 and isPadInOverlap(GEMDetId(roll_id).roll()))
351  LogTrace("CSCGEMMotherboard") << " (in overlap)" << std::endl;
352  else
353  LogTrace("CSCGEMMotherboard") << std::endl;
354  }
355  }
356 }
357 
358 void CSCGEMMotherboard::printGEMTriggerCoPads(int bx_start, int bx_stop, enum CSCPart part) {
359  LogTrace("CSCGEMMotherboard") << "------------------------------------------------------------------------"
360  << std::endl;
361  LogTrace("CSCGEMMotherboard") << "* GEM trigger coincidence pads: " << std::endl;
362 
363  for (int bx = bx_start; bx <= bx_stop; bx++) {
364  const auto& in_pads = coPads_[bx];
365  LogTrace("CSCGEMMotherboard") << "N(copads) BX " << bx << " : " << in_pads.size() << std::endl;
366 
367  for (const auto& pad : in_pads) {
368  LogTrace("CSCGEMMotherboard") << "\tdetId " << GEMDetId(pad.first) << ", pad = " << pad.second;
369  const auto& roll_id(GEMDetId(pad.first));
370 
371  if (part == CSCPart::ME11 and isPadInOverlap(GEMDetId(roll_id).roll()))
372  LogTrace("CSCGEMMotherboard") << " (in overlap)" << std::endl;
373  else
374  LogTrace("CSCGEMMotherboard") << std::endl;
375  }
376  }
377 }
378 
380  const CSCCLCTDigi& cLCT,
381  int gemlayers) const {
382  // Either ALCT or CLCT is invalid
383  if (!(aLCT.isValid()) || !(cLCT.isValid())) {
384  // No CLCT
385  if (aLCT.isValid() && !(cLCT.isValid()))
386  return LCT_Quality::NO_CLCT;
387 
388  // No ALCT
389  else if (!(aLCT.isValid()) && cLCT.isValid())
390  return LCT_Quality::NO_ALCT;
391 
392  // No ALCT and no CLCT
393  else
394  return LCT_Quality::INVALID;
395  }
396  // Both ALCT and CLCT are valid
397  else {
398  const int pattern(cLCT.getPattern());
399 
400  // Layer-trigger in CLCT
401  if (pattern == 1)
403 
404  // Multi-layer pattern in CLCT
405  else {
406  // ALCT quality is the number of layers hit minus 3.
407  bool a4 = false;
408 
409  // Case of ME11 with GEMs: require 4 layers for ALCT
410  if (theStation == 1)
411  a4 = aLCT.getQuality() >= 1;
412 
413  // Case of ME21 with GEMs: require 4 layers for ALCT+GEM
414  if (theStation == 2)
415  a4 = aLCT.getQuality() + gemlayers >= 1;
416 
417  // CLCT quality is the number of layers hit.
418  const bool c4((cLCT.getQuality() >= 4) or (cLCT.getQuality() >= 3 and gemlayers >= 1));
419 
420  // quality = 4; "reserved for low-quality muons in future"
421 
422  // marginal anode and cathode
423  if (!a4 && !c4)
425 
426  // HQ anode, but marginal cathode
427  else if (a4 && !c4)
429 
430  // HQ cathode, but marginal anode
431  else if (!a4 && c4)
433 
434  // HQ muon, but accelerator ALCT
435  else if (a4 && c4) {
436  if (aLCT.getAccelerator())
438 
439  else {
440  // quality = 9; "reserved for HQ muons with future patterns
441  // quality = 10; "reserved for HQ muons with future patterns
442 
443  // High quality muons are determined by their CLCT pattern
444  if (pattern == 2 || pattern == 3)
446 
447  else if (pattern == 4 || pattern == 5)
449 
450  else if (pattern == 6 || pattern == 7)
452 
453  else if (pattern == 8 || pattern == 9)
455 
456  else if (pattern == 10)
458 
459  else {
460  edm::LogWarning("CSCGEMMotherboard")
461  << "findQualityGEMv1: Unexpected CLCT pattern id = " << pattern << " in " << theCSCName_;
462  return LCT_Quality::INVALID;
463  }
464  }
465  }
466  }
467  }
468  return LCT_Quality::INVALID;
469 }
470 
472  const CSCCLCTDigi& cLCT,
473  int gemlayers) const {
474  // ALCT and CLCT invalid
475  if (!(aLCT.isValid()) and !(cLCT.isValid())) {
477  } else if (!aLCT.isValid() && cLCT.isValid() and gemlayers == 2) {
478  return LCT_QualityRun3::CLCT_2GEM;
479  } else if (aLCT.isValid() && !cLCT.isValid() and gemlayers == 2) {
480  return LCT_QualityRun3::ALCT_2GEM;
481  } else if (aLCT.isValid() && cLCT.isValid()) {
482  if (gemlayers == 0)
483  return LCT_QualityRun3::ALCTCLCT;
484  else if (gemlayers == 1)
485  return LCT_QualityRun3::ALCTCLCT_1GEM;
486  else if (gemlayers == 2)
487  return LCT_QualityRun3::ALCTCLCT_2GEM;
488  }
490 }
491 
492 template <>
493 const matchesBX<GEMPadDigi>& CSCGEMMotherboard::getPads<GEMPadDigi>() const {
494  return pads_;
495 }
496 
497 template <>
498 const matchesBX<GEMCoPadDigi>& CSCGEMMotherboard::getPads<GEMCoPadDigi>() const {
499  return coPads_;
500 }
501 
502 template <>
503 int CSCGEMMotherboard::getMaxDeltaBX<GEMPadDigi>() const {
504  return maxDeltaBXPad_;
505 }
506 
507 template <>
508 int CSCGEMMotherboard::getMaxDeltaBX<GEMCoPadDigi>() const {
509  return maxDeltaBXCoPad_;
510 }
511 
512 template <>
513 int CSCGEMMotherboard::getLctTrigEnable<CSCALCTDigi>() const {
514  return alct_trig_enable;
515 }
516 
517 template <>
518 int CSCGEMMotherboard::getLctTrigEnable<CSCCLCTDigi>() const {
519  return clct_trig_enable;
520 }
CSCMotherboard::LCT_Quality::NO_CLCT
MuonSubdetId::GEM
static constexpr int GEM
Definition: MuonSubdetId.h:14
CSCGEMMotherboard::doesWiregroupCrossStrip
virtual bool doesWiregroupCrossStrip(int key_wg, int key_strip) const
Definition: CSCGEMMotherboard.h:67
CSCALCTDigi::getBX
uint16_t getBX() const
return BX - five low bits of BXN counter tagged by the ALCT
Definition: CSCALCTDigi.h:73
CSCGEMMotherboard::isPadInOverlap
bool isPadInOverlap(int roll) const
Definition: CSCGEMMotherboard.cc:287
CSCUpgradeMotherboard
Definition: CSCUpgradeMotherboard.h:35
ME11
Definition: CSCUpgradeMotherboardLUT.h:12
GEMDetId::isGE21
bool isGE21() const
Definition: GEMDetId.cc:11
electrons_cff.bool
bool
Definition: electrons_cff.py:366
mps_fire.i
i
Definition: mps_fire.py:428
GEMCoPadDigi::bx
int bx(int l) const
Definition: GEMCoPadDigi.cc:29
CSCGEMMotherboardLUT::get_gem_pad_to_csc_hs
virtual std::vector< int > get_gem_pad_to_csc_hs(Parity par, enum CSCPart) const =0
GEMCoPadDigi::pad
int pad(int l) const
Definition: GEMCoPadDigi.cc:20
CSCCorrelatedLCTDigi::setValid
void setValid(const uint16_t v)
set valid
Definition: CSCCorrelatedLCTDigi.h:163
GEMPadDigi
Definition: GEMPadDigi.h:17
CSCBaseboard::theRegion
unsigned theRegion
Definition: CSCBaseboard.h:46
CSCGEMMotherboard::maxDeltaPadL2_
int maxDeltaPadL2_
Definition: CSCGEMMotherboard.h:224
CSCCorrelatedLCTDigi::ALCT2GEM
Definition: CSCCorrelatedLCTDigi.h:206
CSCMotherboard::useHighMultiplicityBits_
bool useHighMultiplicityBits_
Definition: CSCMotherboard.h:119
CSCMotherboard::LCT_Quality::HQ_CATHODE_MARGINAL_ANODE
CSCGEMMotherboard::findQualityGEMv1
CSCMotherboard::LCT_Quality findQualityGEMv1(const CSCALCTDigi &, const CSCCLCTDigi &, int gemlayer) const
Definition: CSCGEMMotherboard.cc:379
CSCBaseboard::tmbParams_
edm::ParameterSet tmbParams_
Definition: CSCBaseboard.h:72
CSCMotherboard::LCT_Quality::NO_ALCT
relativeConstraints.station
station
Definition: relativeConstraints.py:67
AlCaHLTBitMon_ParallelJobs.p
p
Definition: AlCaHLTBitMon_ParallelJobs.py:153
CSCGEMMotherboard::getLUT
virtual const CSCGEMMotherboardLUT * getLUT() const =0
CSCBaseboard::theStation
const unsigned theStation
Definition: CSCBaseboard.h:42
CSCMotherboard::LCT_Quality::CLCT_LAYER_TRIGGER
CSCUpgradeMotherboard::clear
void clear()
Definition: CSCUpgradeMotherboard.cc:322
CSCGEMMotherboard::findQualityGEMv2
LCT_QualityRun3 findQualityGEMv2(const CSCALCTDigi &, const CSCCLCTDigi &, int gemlayer) const
Definition: CSCGEMMotherboard.cc:471
CSCCorrelatedLCTDigi::setQuality
void setQuality(const uint16_t q)
set quality code
Definition: CSCCorrelatedLCTDigi.h:160
l1GtPatternGenerator_cfi.bx
bx
Definition: l1GtPatternGenerator_cfi.py:18
CSCBaseboard::theCSCName_
std::string theCSCName_
Definition: CSCBaseboard.h:81
CSCConstants::LCT_CENTRAL_BX
Definition: CSCConstants.h:79
cms::cuda::assert
assert(be >=bs)
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:91
GEMSuperChamber::chamber
const GEMChamber * chamber(GEMDetId id) const
Return the chamber corresponding to the given id.
Definition: GEMSuperChamber.cc:27
CSCCorrelatedLCTDigi::setWireGroup
void setWireGroup(const uint16_t wiregroup)
set wiregroup number
Definition: CSCCorrelatedLCTDigi.h:157
CSCGEMMotherboard::promoteALCTGEMquality_
bool promoteALCTGEMquality_
Definition: CSCGEMMotherboard.h:229
CSCGEMMotherboard::coPads_
GEMCoPadDigiIdsBX coPads_
Definition: CSCGEMMotherboard.h:218
CSCMotherboard::clct_trig_enable
unsigned int clct_trig_enable
Definition: CSCMotherboard.h:98
makeMuonMisalignmentScenario.endcap
endcap
Definition: makeMuonMisalignmentScenario.py:320
CSCCLCTDigi::getKeyStrip
uint16_t getKeyStrip(const uint16_t n=2) const
Definition: CSCCLCTDigi.cc:131
CSCGEMMotherboard.h
CSCCLCTDigi::getEighthStrip
bool getEighthStrip() const
get single eighth strip bit
Definition: CSCCLCTDigi.cc:165
CSCCorrelatedLCTDigi::setBX0
void setBX0(const uint16_t b)
set bx0
Definition: CSCCorrelatedLCTDigi.h:184
edm::LogWarning
Log< level::Warning, false > LogWarning
Definition: MessageLogger.h:122
CSCCLCTDigi
Definition: CSCCLCTDigi.h:17
GEMPadDigi::GE21SplitStrip
Definition: GEMPadDigi.h:22
quality
const uint32_t *__restrict__ Quality * quality
Definition: CAHitNtupletGeneratorKernelsImpl.h:109
CSCCorrelatedLCTDigi::CLCT2GEM
Definition: CSCCorrelatedLCTDigi.h:207
CSCCorrelatedLCTDigi::setEighthStrip
void setEighthStrip(const bool eighthStrip)
set single eighth strip bit
Definition: CSCCorrelatedLCTDigi.cc:93
CSCCorrelatedLCTDigi::setHMT
void setHMT(const uint16_t h)
set high-multiplicity bits
Definition: CSCCorrelatedLCTDigi.cc:173
CSCCorrelatedLCTDigi::setCLCT
void setCLCT(const CSCCLCTDigi &clct)
Definition: CSCCorrelatedLCTDigi.h:217
CSCMotherboard::LCT_Quality::HQ_PATTERN_10
DetId
Definition: DetId.h:17
CSCCorrelatedLCTDigi::setALCT
void setALCT(const CSCALCTDigi &alct)
Definition: CSCCorrelatedLCTDigi.h:216
CSCALCTDigi::getKeyWG
uint16_t getKeyWG() const
return key wire group
Definition: CSCALCTDigi.h:67
CSCCLCTDigi::getQuality
uint16_t getQuality() const
return quality of a pattern (number of layers hit!)
Definition: CSCCLCTDigi.h:56
CSCCorrelatedLCTDigi::setStrip
void setStrip(const uint16_t s)
set strip
Definition: CSCCorrelatedLCTDigi.h:166
CSCCLCTDigi::getBend
uint16_t getBend() const
Definition: CSCCLCTDigi.h:93
CSCGEMMotherboard::LCT_QualityRun3
LCT_QualityRun3
Definition: CSCGEMMotherboard.h:187
part
part
Definition: HCALResponse.h:20
CSCPart
CSCPart
Definition: CSCUpgradeMotherboardLUT.h:12
CSCUpgradeMotherboard::getCSCPart
enum CSCPart getCSCPart(int keystrip) const
Definition: CSCUpgradeMotherboard.cc:276
CSCMotherboard::LCT_Quality::INVALID
CSCGEMMotherboard::CSCGEMMotherboard
CSCGEMMotherboard()
Definition: CSCGEMMotherboard.cc:29
cond::time::INVALID
static constexpr TimeType INVALID
Definition: Time.h:33
CSCGEMMotherboard::processGEMClusters
void processGEMClusters(const GEMPadDigiClusterCollection *pads)
Definition: CSCGEMMotherboard.cc:41
CSCCorrelatedLCTDigi::setMPCLink
void setMPCLink(const uint16_t &link)
Set mpc link number after MPC sorting.
Definition: CSCCorrelatedLCTDigi.h:147
CSCCorrelatedLCTDigi::setSlope
void setSlope(const uint16_t slope)
set the slope
Definition: CSCCorrelatedLCTDigi.cc:117
GEMPadDigiCollection
CSCUpgradeMotherboard::theParity
Parity theParity
Definition: CSCUpgradeMotherboard.h:88
CSCGEMMotherboardLUT::get_csc_hs_to_gem_pad
virtual std::vector< std::pair< int, int > > get_csc_hs_to_gem_pad(Parity par, enum CSCPart) const =0
CSCGEMMotherboard::printGEMTriggerCoPads
void printGEMTriggerCoPads(int bx_start, int bx_stop, enum CSCPart)
Definition: CSCGEMMotherboard.cc:358
CSCGEMMotherboard::gemId
unsigned gemId
Definition: CSCGEMMotherboard.h:207
CSCGEMMotherboard::promoteCLCTGEMquality_
bool promoteCLCTGEMquality_
Definition: CSCGEMMotherboard.h:230
CSCMotherboard::LCT_Quality::HQ_PATTERN_4_5
GEMPadDigiClusterCollection
CSCALCTDigi::getQuality
uint16_t getQuality() const
return quality of a pattern
Definition: CSCALCTDigi.h:46
CSCCorrelatedLCTDigi::ALCTCLCTGEM
Definition: CSCCorrelatedLCTDigi.h:204
CSCGEMMotherboard::coPadProcessor
std::unique_ptr< GEMCoPadProcessor > coPadProcessor
Definition: CSCGEMMotherboard.h:59
GEMCoPadDigiId
match< GEMCoPadDigi > GEMCoPadDigiId
Definition: CSCGEMMotherboard.h:25
CSCGEMMotherboard::gemCoPadV
std::vector< GEMCoPadDigi > gemCoPadV
Definition: CSCGEMMotherboard.h:214
CSCGEMMotherboard::promoteALCTGEMpattern_
bool promoteALCTGEMpattern_
Definition: CSCGEMMotherboard.h:227
CSCCorrelatedLCTDigi::setBend
void setBend(const uint16_t b)
set bend
Definition: CSCCorrelatedLCTDigi.h:178
GEMCoPadDigi
Definition: GEMCoPadDigi.h:16
CSCCorrelatedLCTDigi::setGEM1
void setGEM1(const GEMPadDigi &gem)
Definition: CSCCorrelatedLCTDigi.h:218
CSCCorrelatedLCTDigi::ALCTCLCT2GEM
Definition: CSCCorrelatedLCTDigi.h:205
CSCCorrelatedLCTDigi::setBX
void setBX(const uint16_t b)
set bx
Definition: CSCCorrelatedLCTDigi.h:181
CSCCorrelatedLCTDigi::setTrknmb
void setTrknmb(const uint16_t number)
Set track number (1,2) after sorting LCTs.
Definition: CSCCorrelatedLCTDigi.h:144
edm::ParameterSet
Definition: ParameterSet.h:47
ME1A
Definition: CSCUpgradeMotherboardLUT.h:12
CSCGEMMotherboard::isGEMDetId
bool isGEMDetId(unsigned int) const
Definition: CSCGEMMotherboard.cc:300
CSCCorrelatedLCTDigi::setPattern
void setPattern(const uint16_t p)
set pattern
Definition: CSCCorrelatedLCTDigi.cc:155
CSCGEMMotherboard::getRoll
int getRoll(const GEMPadDigiId &p) const
Definition: CSCGEMMotherboard.cc:308
GEMDetId::roll
constexpr int roll() const
Definition: GEMDetId.h:194
CSCMotherboard::LCT_Quality::HQ_PATTERN_8_9
CSCMotherboard::LCT_Quality::MARGINAL_ANODE_CATHODE
CSCCorrelatedLCTDigi::setGEM2
void setGEM2(const GEMPadDigi &gem)
Definition: CSCCorrelatedLCTDigi.h:219
CSCConstants::MAX_HALF_STRIP_ME1B
Definition: CSCConstants.h:39
GEMDetId
Definition: GEMDetId.h:18
CSCCLCTDigi::getQuartStrip
bool getQuartStrip() const
get single quart strip bit
Definition: CSCCLCTDigi.cc:159
CSCCorrelatedLCTDigi::setCSCID
void setCSCID(const uint16_t c)
set cscID
Definition: CSCCorrelatedLCTDigi.h:190
createfilelist.int
int
Definition: createfilelist.py:10
CSCCorrelatedLCTDigi::setRun3Pattern
void setRun3Pattern(const uint16_t pattern)
set pattern
Definition: CSCCorrelatedLCTDigi.cc:165
CSCGEMMotherboardLUT::get_gem_roll_to_csc_wg
std::vector< int > get_gem_roll_to_csc_wg(Parity par) const
Definition: CSCUpgradeMotherboardLUT.cc:106
CSCCLCTDigi::isValid
bool isValid() const
check CLCT validity (1 - valid CLCT)
Definition: CSCCLCTDigi.h:50
topSingleLeptonDQM_PU_cfi.pattern
pattern
Definition: topSingleLeptonDQM_PU_cfi.py:39
GEMCoPadDigi::second
GEMPadDigi second() const
Definition: GEMCoPadDigi.h:30
CSCGEMMotherboard::getRolls
std::pair< int, int > getRolls(const CSCALCTDigi &) const
Definition: CSCGEMMotherboard.cc:312
edm::LogError
Log< level::Error, false > LogError
Definition: MessageLogger.h:123
CSCCLCTDigi::getSlope
uint16_t getSlope() const
return the slope
Definition: CSCCLCTDigi.cc:106
CSCBaseboard::theChamber
unsigned theChamber
Definition: CSCBaseboard.h:48
CSCCorrelatedLCTDigi::setSyncErr
void setSyncErr(const uint16_t s)
set syncErr
Definition: CSCCorrelatedLCTDigi.h:187
gem
Definition: AMC13Event.h:6
GEMChamber::etaPartition
const GEMEtaPartition * etaPartition(GEMDetId id) const
Return the eta partition corresponding to the given id.
Definition: GEMChamber.cc:33
CSCGEMMotherboard::processGEMCoPads
void processGEMCoPads()
Definition: CSCGEMMotherboard.cc:77
GEMChamber::nEtaPartitions
int nEtaPartitions() const
Retunr numbers of eta partitions.
Definition: GEMChamber.cc:31
CSCMotherboard::getBXShiftedCLCT
CSCCLCTDigi getBXShiftedCLCT(const CSCCLCTDigi &) const
Definition: CSCMotherboard.cc:705
GEMEtaPartition::npads
int npads() const
number of GEM-CSC trigger readout pads in partition
Definition: GEMEtaPartition.cc:43
CSCGEMMotherboardLUT::get_csc_wg_to_gem_roll
std::vector< std::pair< int, int > > get_csc_wg_to_gem_roll(Parity par, int layer=1) const
Definition: CSCUpgradeMotherboardLUT.cc:98
DetId::rawId
constexpr uint32_t rawId() const
get the raw id
Definition: DetId.h:57
GEMPadDigiId
match< GEMPadDigi > GEMPadDigiId
Definition: CSCGEMMotherboard.h:21
CSCGEMMotherboard::maxDeltaBXPad_
int maxDeltaBXPad_
Definition: CSCGEMMotherboard.h:221
CSCGEMMotherboard::processGEMPads
void processGEMPads(const GEMPadDigiCollection *pads)
Definition: CSCGEMMotherboard.cc:51
CSCALCTDigi::getAccelerator
uint16_t getAccelerator() const
Definition: CSCALCTDigi.h:53
CSCMotherboard::LCT_Quality::HQ_PATTERN_2_3
trklet::bend
double bend(double r, double rinv, double stripPitch)
Definition: Util.h:166
CSCMotherboard::LCT_Quality::HQ_ACCEL_ALCT
CSCMotherboard::highMultiplicityBits_
unsigned int highMultiplicityBits_
Definition: CSCMotherboard.h:118
CSCGEMMotherboard::maxRolls
int maxRolls() const
Definition: CSCGEMMotherboard.cc:335
CSCALCTDigi
Definition: CSCALCTDigi.h:17
CSCGEMMotherboard::printGEMTriggerPads
void printGEMTriggerPads(int bx_start, int bx_stop, enum CSCPart)
Definition: CSCGEMMotherboard.cc:337
GEMCoPadDigi::roll
int roll() const
Definition: GEMCoPadDigi.h:25
CSCMotherboard::alct_trig_enable
unsigned int alct_trig_enable
Definition: CSCMotherboard.h:98
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
CSCBaseboard::theTrigChamber
const unsigned theTrigChamber
Definition: CSCBaseboard.h:45
GEMDetId::minRollId
static constexpr int32_t minRollId
Definition: GEMDetId.h:35
edm::ParameterSet::getParameter
T getParameter(std::string const &) const
Definition: ParameterSet.h:303
CSCMotherboard::encodePattern
unsigned int encodePattern(const int clctPattern) const
Definition: CSCMotherboard.cc:542
CSCGEMMotherboard::pads_
GEMPadDigiIdsBX pads_
Definition: CSCGEMMotherboard.h:217
CSCGEMMotherboard::maxDeltaBXCoPad_
int maxDeltaBXCoPad_
Definition: CSCGEMMotherboard.h:222
CSCBaseboard::cscId_
CSCDetId cscId_
Definition: CSCBaseboard.h:57
CSCALCTDigi::isValid
bool isValid() const
check ALCT validity (1 - valid ALCT)
Definition: CSCALCTDigi.h:40
CSCGEMMotherboard::getPad
float getPad(const GEMPadDigi &) const
Definition: CSCGEMMotherboard.cc:317
CSCMotherboard::LCT_Quality::HQ_ANODE_MARGINAL_CATHODE
CSCGEMMotherboard::maxPads
int maxPads() const
Definition: CSCGEMMotherboard.cc:333
CSCCorrelatedLCTDigi::setRun3
void setRun3(const bool isRun3)
Definition: CSCCorrelatedLCTDigi.cc:175
DetId::Muon
Definition: DetId.h:26
RunInfoPI::valid
Definition: RunInfoPayloadInspectoHelper.h:16
LogTrace
#define LogTrace(id)
Definition: MessageLogger.h:234
GEMPadDigi::isValid
bool isValid() const
Definition: GEMPadDigi.cc:26
GEMGeometry::superChamber
const GEMSuperChamber * superChamber(GEMDetId id) const
Definition: GEMGeometry.cc:69
CSCMotherboard::getBXShiftedALCT
CSCALCTDigi getBXShiftedALCT(const CSCALCTDigi &) const
Definition: CSCMotherboard.cc:699
CSCCLCTDigi::getPattern
uint16_t getPattern() const
return pattern
Definition: CSCCLCTDigi.cc:88
CSCCorrelatedLCTDigi::setType
void setType(int type)
Definition: CSCCorrelatedLCTDigi.h:214
CSCGEMMotherboard::getBX
int getBX(const GEMPadDigi &p) const
Definition: CSCGEMMotherboard.cc:304
CSCGEMMotherboard::maxDeltaPadL1_
int maxDeltaPadL1_
Definition: CSCGEMMotherboard.h:223
CSCGEMMotherboard::~CSCGEMMotherboard
~CSCGEMMotherboard() override
Definition: CSCGEMMotherboard.cc:31
GEMCoPadDigi::first
GEMPadDigi first() const
Definition: GEMCoPadDigi.h:29
CSCMotherboard::LCT_Quality
LCT_Quality
Definition: CSCMotherboard.h:147
CSCGEMMotherboard::gem_g
const GEMGeometry * gem_g
Definition: CSCGEMMotherboard.h:211
CSCCorrelatedLCTDigi::setQuartStrip
void setQuartStrip(const bool quartStrip)
set single quart strip bit
Definition: CSCCorrelatedLCTDigi.cc:87
CSCCorrelatedLCTDigi
Definition: CSCCorrelatedLCTDigi.h:19
CSCBaseboard::runCCLUT_
bool runCCLUT_
Definition: CSCBaseboard.h:102
GEMCoPadDigi::isValid
bool isValid() const
Definition: GEMCoPadDigi.cc:18
ME1B
Definition: CSCUpgradeMotherboardLUT.h:12
CSCMotherboard::LCT_Quality::HQ_PATTERN_6_7
CSCCLCTDigi::getRun3Pattern
uint16_t getRun3Pattern() const
return pattern
Definition: CSCCLCTDigi.cc:94