CMS 3D CMS Logo

CSCGEMMotherboard.h
Go to the documentation of this file.
1 #ifndef L1Trigger_CSCTriggerPrimitives_CSCGEMMotherboard_h
2 #define L1Trigger_CSCTriggerPrimitives_CSCGEMMotherboard_h
3 
20 
21 typedef match<GEMPadDigi> GEMPadDigiId;
22 typedef matches<GEMPadDigi> GEMPadDigiIds;
23 typedef matchesBX<GEMPadDigi> GEMPadDigiIdsBX;
24 
25 typedef match<GEMCoPadDigi> GEMCoPadDigiId;
26 typedef matches<GEMCoPadDigi> GEMCoPadDigiIds;
27 typedef matchesBX<GEMCoPadDigi> GEMCoPadDigiIdsBX;
28 
30 public:
32 
33  // standard constructor
34  CSCGEMMotherboard(unsigned endcap,
35  unsigned station,
36  unsigned sector,
37  unsigned subsector,
38  unsigned chamber,
39  const edm::ParameterSet& conf);
40 
41  //Default constructor for testing
43 
44  ~CSCGEMMotherboard() override;
45 
46  // clear stored pads and copads
47  void clear();
48 
50 
52 
53  // run TMB with GEM pad clusters as input
54  virtual void run(const CSCWireDigiCollection* wiredc,
55  const CSCComparatorDigiCollection* compdc,
56  const GEMPadDigiClusterCollection* gemPads) = 0;
57 
59  std::unique_ptr<GEMCoPadProcessor> coPadProcessor;
60 
62  void setGEMGeometry(const GEMGeometry* g) { gem_g = g; }
63 
64 protected:
65  virtual const CSCGEMMotherboardLUT* getLUT() const = 0;
66  // check wether wiregroup corss strip or not. ME11 case would redefine this function
67  virtual bool doesWiregroupCrossStrip(int key_wg, int key_strip) const { return true; }
68 
69  // check if a GEMDetId is valid
70  bool isGEMDetId(unsigned int) const;
71 
72  // aux functions to get BX and position of a digi
73  int getBX(const GEMPadDigi& p) const;
74  int getBX(const GEMCoPadDigi& p) const;
75 
76  int getRoll(const GEMPadDigiId& p) const;
77  int getRoll(const GEMCoPadDigiId& p) const;
78  std::pair<int, int> getRolls(const CSCALCTDigi&) const;
79 
80  float getPad(const GEMPadDigi&) const;
81  float getPad(const GEMCoPadDigi&) const;
82  float getPad(const CSCCLCTDigi&, enum CSCPart par) const;
83 
84  // match ALCT to GEM Pad/CoPad
85  // the template is GEMPadDigi or GEMCoPadDigi
86  template <class T>
87  void matchingPads(const CSCALCTDigi& alct, matches<T>&) const;
88 
89  // match CLCT to GEM Pad/CoPad
90  // the template is GEMPadDigi or GEMCoPadDigi
91  template <class T>
92  void matchingPads(const CSCCLCTDigi& alct, matches<T>&) const;
93 
94  // find the matching pads to a pair of ALCT/CLCT
95  // the first template is ALCT or CLCT
96  // the second template is GEMPadDigi or GEMCoPadDigi
97  template <class S, class T>
98  void matchingPads(const S& d1, const S& d2, matches<T>&) const;
99 
100  // find common matches between an ALCT and CLCT
101  // the template is GEMPadDigi or GEMCoPadDigi
102  template <class T>
103  void matchingPads(const CSCCLCTDigi& clct1, const CSCALCTDigi& alct1, matches<T>&) const;
104 
105  // find all matching pads to a pair of ALCT and a pair of CLCT
106  // the template is GEMPadDigi or GEMCoPadDigi
107  template <class T>
108  void matchingPads(const CSCCLCTDigi& clct1,
109  const CSCCLCTDigi& clct2,
110  const CSCALCTDigi& alct1,
111  const CSCALCTDigi& alct2,
112  matches<T>&) const;
113 
114  // find the best matching pad to an ALCT
115  // the template is GEMPadDigi or GEMCoPadDigi
116  template <class T>
117  T bestMatchingPad(const CSCALCTDigi&, const matches<T>&) const;
118 
119  // find the best matching pad to an ALCT
120  // the template is GEMPadDigi or GEMCoPadDigi
121  template <class T>
122  T bestMatchingPad(const CSCCLCTDigi&, const matches<T>&) const;
123 
124  // find the best matching pad to an ALCT and CLCT
125  // the template is GEMPadDigi or GEMCoPadDigi
126  template <class T>
127  T bestMatchingPad(const CSCALCTDigi&, const CSCCLCTDigi&, const matches<T>&) const;
128 
129  // correlate ALCTs/CLCTs with a set of matching GEM copads
130  // use this function when the best matching copads are not clear yet
131  // the template is ALCT or CLCT
132  template <class T>
133  void correlateLCTsGEM(const T& best,
134  const T& second,
135  const GEMCoPadDigiIds& coPads,
136  CSCCorrelatedLCTDigi& lct1,
137  CSCCorrelatedLCTDigi& lct2) const;
138 
139  // correlate ALCTs/CLCTs with their best matching GEM copads
140  // the template is ALCT or CLCT
141  template <class T>
142  void correlateLCTsGEM(const T& best,
143  const T& second,
144  const GEMCoPadDigi&,
145  const GEMCoPadDigi&,
146  CSCCorrelatedLCTDigi& lct1,
147  CSCCorrelatedLCTDigi& lct2) const;
148 
149  // construct LCT from ALCT and GEM copad
150  // fourth argument is the LCT number (1 or 2)
151  CSCCorrelatedLCTDigi constructLCTsGEM(const CSCALCTDigi& alct, const GEMCoPadDigi& gem, int i) const;
152 
153  // construct LCT from CLCT and GEM copad
154  // fourth argument is the LCT number (1 or 2)
155  CSCCorrelatedLCTDigi constructLCTsGEM(const CSCCLCTDigi& clct, const GEMCoPadDigi& gem, int i) const;
156 
157  // construct LCT from ALCT,CLCT and GEM copad
158  // last argument is the LCT number (1 or 2)
160  const CSCCLCTDigi& clct,
161  const GEMCoPadDigi& gem,
162  int i) const;
163 
164  // construct LCT from ALCT,CLCT and a single GEM pad
165  // last argument is the LCT number (1 or 2)
167  const CSCCLCTDigi& clct,
168  const GEMPadDigi& gem,
169  int i) const;
170  /*
171  * General function to construct integrated stubs from CSC and GEM information.
172  * Options are:
173  * 1. ALCT-CLCT-GEMPad
174  * 2. ALCT-CLCT-GEMCoPad
175  * 3. ALCT-GEMCoPad
176  * 4. CLCT-GEMCoPad
177  */
178  // last argument is the LCT number (1 or 2)
180  const CSCALCTDigi& alct, const CSCCLCTDigi& clct, const GEMPadDigi& gem1, const GEMCoPadDigi& gem2, int i) const;
181 
182  // get the pads/copads from the digi collection and store in handy containers
184  void processGEMPads(const GEMPadDigiCollection* pads);
185  void processGEMCoPads();
186 
188  INVALID = 0,
191  ALCTCLCT = 5,
194  };
195 
196  // quality of the LCT when you take into account max 2 GEM layers
197  CSCMotherboard::LCT_Quality findQualityGEMv1(const CSCALCTDigi&, const CSCCLCTDigi&, int gemlayer) const;
198  LCT_QualityRun3 findQualityGEMv2(const CSCALCTDigi&, const CSCCLCTDigi&, int gemlayer) const;
199 
200  // print available trigger pads
201  void printGEMTriggerPads(int bx_start, int bx_stop, enum CSCPart);
202  void printGEMTriggerCoPads(int bx_start, int bx_stop, enum CSCPart);
203 
204  bool isPadInOverlap(int roll) const;
205 
207  unsigned gemId;
208  int maxPads() const;
209  int maxRolls() const;
210 
213 
214  std::vector<GEMCoPadDigi> gemCoPadV;
215 
216  // map< bx , vector<gemid, pad> >
219 
220  // deltas used to match to GEM pads
225 
226  // promote ALCT-GEM pattern
228 
231 
232 private:
233  template <class T>
234  const matchesBX<T>& getPads() const;
235 
236  template <class T>
237  int getMaxDeltaBX() const;
238 
239  template <class T>
240  int getLctTrigEnable() const;
241 };
242 
243 template <class T>
244 void CSCGEMMotherboard::matchingPads(const CSCALCTDigi& alct, matches<T>& result) const {
245  result.clear();
246  // Invalid ALCTs have no matching pads
247  if (not alct.isValid())
248  return;
249 
250  // Get the corresponding roll numbers for a given ALCT
251  std::pair<int, int> alctRoll = (getLUT()->get_csc_wg_to_gem_roll(theParity))[alct.getKeyWG()];
252 
253  // Get the pads in the ALCT bx
254  const matchesBX<T>& lut = getPads<T>();
255 
256  // If no pads in that bx...
257  if (lut.count(alct.getBX()) == 0)
258  return;
259 
260  for (const auto& p : lut.at(alct.getBX())) {
261  auto padRoll(getRoll(p));
262 
263  int delta;
264  if (GEMDetId(p.first).station() == 2)
265  delta = 1;
266 
267  // pad bx needs to match to ALCT bx
268  int pad_bx = getBX(p.second) + CSCConstants::LCT_CENTRAL_BX;
269 
270  if (std::abs(alct.getBX() - pad_bx) > getMaxDeltaBX<T>())
271  continue;
272 
273  // gem roll number if invalid
274  if (alctRoll.first == CSCGEMMotherboard::DEFAULT_MATCHING_VALUE and
276  continue;
277  // ALCTs at the top of the chamber
278  else if (alctRoll.first == CSCGEMMotherboard::DEFAULT_MATCHING_VALUE and padRoll > alctRoll.second)
279  continue;
280  // ALCTs at the bottom of the chamber
281  else if (alctRoll.second == CSCGEMMotherboard::DEFAULT_MATCHING_VALUE and padRoll < alctRoll.first)
282  continue;
283  // ignore pads that are too far away in roll number
284  else if ((alctRoll.first != CSCGEMMotherboard::DEFAULT_MATCHING_VALUE and
285  alctRoll.second != CSCGEMMotherboard::DEFAULT_MATCHING_VALUE) and
286  (alctRoll.first - delta > padRoll or padRoll > alctRoll.second))
287  continue;
288  result.push_back(p);
289  }
290 }
291 
292 template <class T>
293 void CSCGEMMotherboard::matchingPads(const CSCCLCTDigi& clct, matches<T>& result) const {
294  result.clear();
295  // Invalid ALCTs have no matching pads
296  if (not clct.isValid())
297  return;
298 
299  auto part(getCSCPart(clct.getKeyStrip()));
300  // Get the corresponding pad numbers for a given CLCT
301  const auto& mymap = (getLUT()->get_csc_hs_to_gem_pad(theParity, part));
302  int keyStrip = clct.getKeyStrip();
303  //ME1A part, convert halfstrip from 128-223 to 0-95
305  keyStrip = keyStrip - CSCConstants::MAX_HALF_STRIP_ME1B - 1;
306  const int lowPad(mymap[keyStrip].first);
307  const int highPad(mymap[keyStrip].second);
308 
309  // Get the pads in the CLCT bx
310  const matchesBX<T>& lut = getPads<T>();
311 
312  // If no pads in that bx...
313  if (lut.count(clct.getBX()) == 0)
314  return;
315 
316  for (const auto& p : lut.at(clct.getBX())) {
317  // pad bx needs to match to CLCT bx
318  int pad_bx = getBX(p.second) + CSCConstants::LCT_CENTRAL_BX;
319  if (std::abs(clct.getBX() - pad_bx) > getMaxDeltaBX<T>())
320  continue;
321 
322  // pad number must match
323  int padNumber(getPad(p.second));
324  if (std::abs(lowPad - padNumber) <= maxDeltaPadL1_ or std::abs(padNumber - highPad) <= maxDeltaPadL1_) {
325  result.push_back(p);
326  }
327  }
328 }
329 
330 template <class S, class T>
331 void CSCGEMMotherboard::matchingPads(const S& d1, const S& d2, matches<T>& result) const {
332  matches<T> p1, p2;
333 
334  // pads matching to the CLCT/ALCT
335  matchingPads<T>(d1, p1);
336 
337  // pads matching to the CLCT/ALCT
338  matchingPads<T>(d2, p2);
339 
340  // collect *all* matching pads
341  result.reserve(p1.size() + p2.size());
342  result.insert(std::end(result), std::begin(p1), std::end(p1));
343  result.insert(std::end(result), std::begin(p2), std::end(p2));
344 }
345 
346 template <class T>
347 void CSCGEMMotherboard::matchingPads(const CSCCLCTDigi& clct1, const CSCALCTDigi& alct1, matches<T>& result) const {
348  matches<T> padsClct, padsAlct;
349 
350  // pads matching to the CLCT
351  matchingPads<T>(clct1, padsClct);
352 
353  // pads matching to the ALCT
354  matchingPads<T>(alct1, padsAlct);
355 
356  // collect all *common* pads
357  intersection(padsClct, padsAlct, result);
358 }
359 
360 template <class T>
362  const CSCCLCTDigi& clct2,
363  const CSCALCTDigi& alct1,
364  const CSCALCTDigi& alct2,
365  matches<T>& result) const {
366  matches<T> padsClct, padsAlct;
367 
368  // pads matching to CLCTs
369  matchingPads<CSCCLCTDigi, T>(clct1, clct2, padsClct);
370 
371  // pads matching to ALCTs
372  matchingPads<CSCALCTDigi, T>(alct1, alct2, padsAlct);
373 
374  // collect *all* matching pads
375  result.reserve(padsClct.size() + padsAlct.size());
376  result.insert(std::end(result), std::begin(padsClct), std::end(padsClct));
377  result.insert(std::end(result), std::begin(padsAlct), std::end(padsAlct));
378 }
379 
380 template <class S>
381 S CSCGEMMotherboard::bestMatchingPad(const CSCALCTDigi& alct1, const matches<S>& pads) const {
382  S result;
383  // no matching pads for invalid stub
384  if (not alct1.isValid()) {
385  return result;
386  }
387  // return the first one with the same roll number
388  for (const auto& p : pads) {
389  // protection against corrupted DetIds
390  if (not isGEMDetId(p.first))
391  continue;
392 
393  // roll number of pad and ALCT must match
394  if (getRolls(alct1).first <= getRoll(p) and getRoll(p) <= getRolls(alct1).second) {
395  return p.second;
396  }
397  }
398  return result;
399 }
400 
401 template <class S>
402 S CSCGEMMotherboard::bestMatchingPad(const CSCCLCTDigi& clct, const matches<S>& pads) const {
403  S result;
404  // no matching pads for invalid stub
405  if (not clct.isValid())
406  return result;
407 
408  auto part(getCSCPart(clct.getKeyStrip()));
409 
410  // return the pad with the smallest bending angle
411  float averagePadNumberCSC = getPad(clct, part);
412  float minDeltaPad = 999;
413  for (const auto& p : pads) {
414  // protection against corrupted DetIds
415  if (not isGEMDetId(p.first))
416  continue;
417 
418  // best pad is closest to CLCT in number of halfstrips
419  float averagePadNumberGEM = getPad(p.second);
420  if (std::abs(averagePadNumberCSC - averagePadNumberGEM) < minDeltaPad) {
421  minDeltaPad = std::abs(averagePadNumberCSC - averagePadNumberGEM);
422  result = p.second;
423  }
424  }
425  return result;
426 }
427 
428 template <class S>
429 S CSCGEMMotherboard::bestMatchingPad(const CSCALCTDigi& alct1, const CSCCLCTDigi& clct1, const matches<S>& pads) const {
430  S result;
431  // no matching pads for invalid stub
432  if (not alct1.isValid() or not clct1.isValid()) {
433  return result;
434  }
435 
436  auto part(getCSCPart(clct1.getKeyStrip()));
437 
438  // return the pad with the smallest bending angle
439  float averagePadNumberCSC = getPad(clct1, part);
440  float minDeltaPad = 999;
441  for (const auto& p : pads) {
442  // protection against corrupted DetIds
443  if (not isGEMDetId(p.first))
444  continue;
445 
446  float averagePadNumberGEM = getPad(p.second);
447 
448  int delta;
449  if (GEMDetId(p.first).station() == 2)
450  delta = 1;
451 
452  // add another safety to make sure that the deltaPad is not larger than max value!!!
453  if (std::abs(averagePadNumberCSC - averagePadNumberGEM) < minDeltaPad and
454  getRolls(alct1).first - delta <= getRoll(p) and getRoll(p) <= getRolls(alct1).second) {
455  minDeltaPad = std::abs(averagePadNumberCSC - averagePadNumberGEM);
456  result = p.second;
457  }
458  }
459  return result;
460 }
461 
462 template <class T>
464  const T& sLCT,
465  const GEMCoPadDigiIds& coPads,
466  CSCCorrelatedLCTDigi& lct1,
467  CSCCorrelatedLCTDigi& lct2) const {
468  T bestLCT = bLCT;
469  T secondLCT = sLCT;
470 
471  // Check which LCTs are valid
472  bool bestValid = bestLCT.isValid();
473  bool secondValid = secondLCT.isValid();
474 
475  // At this point, set both LCTs valid if they are invalid
476  // Duplicate LCTs are taken into account later
477  if (bestValid and !secondValid)
478  secondLCT = bestLCT;
479  if (!bestValid and secondValid)
480  bestLCT = secondLCT;
481 
482  // get best matching copad1
483  const GEMCoPadDigi& bestCoPad = bestMatchingPad<GEMCoPadDigi>(bestLCT, coPads);
484  const GEMCoPadDigi& secondCoPad = bestMatchingPad<GEMCoPadDigi>(secondLCT, coPads);
485 
486  correlateLCTsGEM(bestLCT, secondLCT, bestCoPad, secondCoPad, lct1, lct2);
487 }
488 
489 template <class T>
491  const T& secondLCT,
492  const GEMCoPadDigi& bestCoPad,
493  const GEMCoPadDigi& secondCoPad,
494  CSCCorrelatedLCTDigi& lct1,
495  CSCCorrelatedLCTDigi& lct2) const {
496  // construct the first LCT from ALCT(CLCT) and a GEM Copad
497  if ((getLctTrigEnable<T>() and bestLCT.isValid()) or (match_trig_enable and bestLCT.isValid())) {
498  lct1 = constructLCTsGEM(bestLCT, bestCoPad, 1);
499  }
500 
501  // construct the second LCT from ALCT(CLCT) and a GEM Copad
502  if ((getLctTrigEnable<T>() and secondLCT.isValid()) or
503  (match_trig_enable and secondLCT.isValid() and secondLCT != bestLCT)) {
504  lct2 = constructLCTsGEM(secondLCT, secondCoPad, 2);
505  }
506 }
507 
508 #endif
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
mps_fire.i
i
Definition: mps_fire.py:428
CSCGEMMotherboard::matchingPads
void matchingPads(const CSCALCTDigi &alct, matches< T > &) const
Definition: CSCGEMMotherboard.h:244
GEMPadDigi
Definition: GEMPadDigi.h:17
CSCGEMMotherboard::maxDeltaPadL2_
int maxDeltaPadL2_
Definition: CSCGEMMotherboard.h:224
GEMCoPadProcessor.h
CSCMotherboard::secondLCT
CSCCorrelatedLCTDigi secondLCT[CSCConstants::MAX_LCT_TBINS]
Definition: CSCMotherboard.h:90
CSCGEMMotherboard::findQualityGEMv1
CSCMotherboard::LCT_Quality findQualityGEMv1(const CSCALCTDigi &, const CSCCLCTDigi &, int gemlayer) const
Definition: CSCGEMMotherboard.cc:379
relativeConstraints.station
station
Definition: relativeConstraints.py:67
CSCGEMMotherboard::ALCTCLCT_1GEM
Definition: CSCGEMMotherboard.h:192
AlCaHLTBitMon_ParallelJobs.p
p
Definition: AlCaHLTBitMon_ParallelJobs.py:153
CSCGEMMotherboard::getLUT
virtual const CSCGEMMotherboardLUT * getLUT() const =0
CSCGEMMotherboard::findQualityGEMv2
LCT_QualityRun3 findQualityGEMv2(const CSCALCTDigi &, const CSCCLCTDigi &, int gemlayer) const
Definition: CSCGEMMotherboard.cc:471
CSCGEMMotherboard::gemGeometryAvailable
bool gemGeometryAvailable
Definition: CSCGEMMotherboard.h:212
CSCGEMMotherboard::ALCTCLCT_2GEM
Definition: CSCGEMMotherboard.h:193
CSCUpgradeMotherboard::intersection
void intersection(const S &d1, const S &d2, S &result) const
Definition: CSCUpgradeMotherboard.h:121
CSCConstants::LCT_CENTRAL_BX
Definition: CSCConstants.h:79
CSCGEMMotherboard::INVALID
Definition: CSCGEMMotherboard.h:188
GEMCoPadDigiCollection.h
CSCGEMMotherboard::getPads
const matchesBX< T > & getPads() const
CSCGEMMotherboard::constructLCTsGEM
CSCCorrelatedLCTDigi constructLCTsGEM(const CSCALCTDigi &alct, const GEMCoPadDigi &gem, int i) const
Definition: CSCGEMMotherboard.cc:91
edm::second
U second(std::pair< T, U > const &p)
Definition: ParameterSet.cc:222
CSCGEMMotherboard::promoteALCTGEMquality_
bool promoteALCTGEMquality_
Definition: CSCGEMMotherboard.h:229
CSCGEMMotherboard::setGEMGeometry
void setGEMGeometry(const GEMGeometry *g)
set CSC and GEM geometries for the matching needs
Definition: CSCGEMMotherboard.h:62
CSCGEMMotherboard::getMaxDeltaBX
int getMaxDeltaBX() const
CSCGEMMotherboard::coPads_
GEMCoPadDigiIdsBX coPads_
Definition: CSCGEMMotherboard.h:218
makeMuonMisalignmentScenario.endcap
endcap
Definition: makeMuonMisalignmentScenario.py:320
CSCCLCTDigi::getKeyStrip
uint16_t getKeyStrip(const uint16_t n=2) const
Definition: CSCCLCTDigi.cc:131
CSCCLCTDigi
Definition: CSCCLCTDigi.h:17
CSCGEMMotherboard::run
virtual void run(const CSCWireDigiCollection *wiredc, const CSCComparatorDigiCollection *compdc, const GEMPadDigiClusterCollection *gemPads)=0
GEMPadDigiIdsBX
matchesBX< GEMPadDigi > GEMPadDigiIdsBX
Definition: CSCGEMMotherboard.h:23
CSCALCTDigi::getKeyWG
uint16_t getKeyWG() const
return key wire group
Definition: CSCALCTDigi.h:67
CSCGEMMotherboard::LCT_QualityRun3
LCT_QualityRun3
Definition: CSCGEMMotherboard.h:187
part
part
Definition: HCALResponse.h:20
CSCGEMMotherboardLUT
Definition: CSCUpgradeMotherboardLUT.h:35
CSCUpgradeMotherboard::readoutLCTs
std::vector< CSCCorrelatedLCTDigi > readoutLCTs() const override
Definition: CSCUpgradeMotherboard.cc:259
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:463
CSCUpgradeMotherboard::getCSCPart
enum CSCPart getCSCPart(int keystrip) const
Definition: CSCUpgradeMotherboard.cc:276
CSCGEMMotherboard::CSCGEMMotherboard
CSCGEMMotherboard()
Definition: CSCGEMMotherboard.cc:29
CSCGEMMotherboard::processGEMClusters
void processGEMClusters(const GEMPadDigiClusterCollection *pads)
Definition: CSCGEMMotherboard.cc:41
mps_fire.end
end
Definition: mps_fire.py:242
p2
double p2[4]
Definition: TauolaWrapper.h:90
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::getLctTrigEnable
int getLctTrigEnable() const
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
GEMPadDigiClusterCollection
CSCGEMMotherboard::ALCTCLCT
Definition: CSCGEMMotherboard.h:191
first
auto first
Definition: CAHitNtupletGeneratorKernelsImpl.h:112
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
GEMCoPadDigiIds
matches< GEMCoPadDigi > GEMCoPadDigiIds
Definition: CSCGEMMotherboard.h:26
GEMCoPadDigi
Definition: GEMCoPadDigi.h:16
edm::ParameterSet
Definition: ParameterSet.h:47
ME1A
Definition: CSCUpgradeMotherboardLUT.h:12
CSCGEMMotherboard::CLCT_2GEM
Definition: CSCGEMMotherboard.h:189
CSCGEMMotherboard::isGEMDetId
bool isGEMDetId(unsigned int) const
Definition: CSCGEMMotherboard.cc:300
CSCGEMMotherboard::getRoll
int getRoll(const GEMPadDigiId &p) const
Definition: CSCGEMMotherboard.cc:308
CSCConstants::MAX_HALF_STRIP_ME1B
Definition: CSCConstants.h:39
dumpMFGeometry_cfg.delta
delta
Definition: dumpMFGeometry_cfg.py:25
GEMDetId
Definition: GEMDetId.h:18
CSCGEMMotherboard::bestMatchingPad
T bestMatchingPad(const CSCALCTDigi &, const matches< T > &) const
CSCCLCTDigi::isValid
bool isValid() const
check CLCT validity (1 - valid CLCT)
Definition: CSCCLCTDigi.h:50
CSCGEMMotherboard::ALCT_2GEM
Definition: CSCGEMMotherboard.h:190
p1
double p1[4]
Definition: TauolaWrapper.h:89
CSCComparatorDigiCollection
CSCGEMMotherboard::getRolls
std::pair< int, int > getRolls(const CSCALCTDigi &) const
Definition: CSCGEMMotherboard.cc:312
gem
Definition: AMC13Event.h:6
CSCGEMMotherboard::processGEMCoPads
void processGEMCoPads()
Definition: CSCGEMMotherboard.cc:77
CSCCLCTDigi::getBX
uint16_t getBX() const
return BX
Definition: CSCCLCTDigi.h:123
CSCGEMMotherboard
Definition: CSCGEMMotherboard.h:29
GEMGeometry.h
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
GEMPadDigiId
match< GEMPadDigi > GEMPadDigiId
Definition: CSCGEMMotherboard.h:21
CSCWireDigiCollection
CSCGEMMotherboard::maxDeltaBXPad_
int maxDeltaBXPad_
Definition: CSCGEMMotherboard.h:221
CSCGEMMotherboard::processGEMPads
void processGEMPads(const GEMPadDigiCollection *pads)
Definition: CSCGEMMotherboard.cc:51
T
long double T
Definition: Basic3DVectorLD.h:48
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
CSCGEMMotherboard::Default_values
Default_values
Definition: CSCGEMMotherboard.h:31
CSCUpgradeMotherboard::run
void run(const CSCWireDigiCollection *wiredc, const CSCComparatorDigiCollection *compdc) override
Definition: CSCUpgradeMotherboard.cc:68
GEMPadDigiCollection.h
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
CSCGEMMotherboard::DEFAULT_MATCHING_VALUE
Definition: CSCGEMMotherboard.h:31
CSCGEMMotherboard::pads_
GEMPadDigiIdsBX pads_
Definition: CSCGEMMotherboard.h:217
CSCGEMMotherboard::maxDeltaBXCoPad_
int maxDeltaBXCoPad_
Definition: CSCGEMMotherboard.h:222
GEMCoPadDigiIdsBX
matchesBX< GEMCoPadDigi > GEMCoPadDigiIdsBX
Definition: CSCGEMMotherboard.h:27
S
Definition: CSCDBL1TPParametersExtended.h:16
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
GEMDetId::station
constexpr int station() const
Definition: GEMDetId.h:179
GEMGeometry
Definition: GEMGeometry.h:24
CSCGEMMotherboard::maxPads
int maxPads() const
Definition: CSCGEMMotherboard.cc:333
mps_fire.result
result
Definition: mps_fire.py:311
funct::abs
Abs< T >::type abs(const T &t)
Definition: Abs.h:22
CSCMotherboard::match_trig_enable
unsigned int match_trig_enable
Definition: CSCMotherboard.h:98
CSCCorrelatedLCTDigi::isValid
bool isValid() const
return valid pattern bit
Definition: CSCCorrelatedLCTDigi.h:55
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
GEMPadDigiIds
matches< GEMPadDigi > GEMPadDigiIds
Definition: CSCGEMMotherboard.h:22
CSCMotherboard::LCT_Quality
LCT_Quality
Definition: CSCMotherboard.h:147
d1
static constexpr float d1
Definition: L1EGammaCrystalsEmulatorProducer.cc:85
CSCGEMMotherboard::gem_g
const GEMGeometry * gem_g
Definition: CSCGEMMotherboard.h:211
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
CSCUpgradeMotherboard.h