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 
206  void setupGeometry();
207 
209  unsigned gemId;
210  int maxPads() const;
211  int maxRolls() const;
212 
215 
216  std::vector<GEMCoPadDigi> gemCoPadV;
217 
218  // map< bx , vector<gemid, pad> >
221 
222  // deltas used to match to GEM pads
227 
228  // promote ALCT-GEM pattern
230 
233 
234 private:
235  template <class T>
236  const matchesBX<T>& getPads() const;
237 
238  template <class T>
239  int getMaxDeltaBX() const;
240 
241  template <class T>
242  int getLctTrigEnable() const;
243 };
244 
245 template <class T>
246 void CSCGEMMotherboard::matchingPads(const CSCALCTDigi& alct, matches<T>& result) const {
247  result.clear();
248  // Invalid ALCTs have no matching pads
249  if (not alct.isValid())
250  return;
251 
252  // Get the corresponding roll numbers for a given ALCT
253  std::pair<int, int> alctRoll = (getLUT()->get_csc_wg_to_gem_roll(theParity))[alct.getKeyWG()];
254 
255  // Get the pads in the ALCT bx
256  const matchesBX<T>& lut = getPads<T>();
257 
258  // If no pads in that bx...
259  if (lut.count(alct.getBX()) == 0)
260  return;
261 
262  for (const auto& p : lut.at(alct.getBX())) {
263  auto padRoll(getRoll(p));
264 
265  int delta;
266  if (GEMDetId(p.first).station() == 2)
267  delta = 1;
268 
269  // pad bx needs to match to ALCT bx
270  int pad_bx = getBX(p.second) + CSCConstants::LCT_CENTRAL_BX;
271 
272  if (std::abs(alct.getBX() - pad_bx) > getMaxDeltaBX<T>())
273  continue;
274 
275  // gem roll number if invalid
276  if (alctRoll.first == CSCGEMMotherboard::DEFAULT_MATCHING_VALUE and
278  continue;
279  // ALCTs at the top of the chamber
280  else if (alctRoll.first == CSCGEMMotherboard::DEFAULT_MATCHING_VALUE and padRoll > alctRoll.second)
281  continue;
282  // ALCTs at the bottom of the chamber
283  else if (alctRoll.second == CSCGEMMotherboard::DEFAULT_MATCHING_VALUE and padRoll < alctRoll.first)
284  continue;
285  // ignore pads that are too far away in roll number
286  else if ((alctRoll.first != CSCGEMMotherboard::DEFAULT_MATCHING_VALUE and
287  alctRoll.second != CSCGEMMotherboard::DEFAULT_MATCHING_VALUE) and
288  (alctRoll.first - delta > padRoll or padRoll > alctRoll.second))
289  continue;
290  result.push_back(p);
291  }
292 }
293 
294 template <class T>
295 void CSCGEMMotherboard::matchingPads(const CSCCLCTDigi& clct, matches<T>& result) const {
296  result.clear();
297  // Invalid ALCTs have no matching pads
298  if (not clct.isValid())
299  return;
300 
301  auto part(getCSCPart(clct.getKeyStrip()));
302  // Get the corresponding pad numbers for a given CLCT
303  const auto& mymap = (getLUT()->get_csc_hs_to_gem_pad(theParity, part));
304  int keyStrip = clct.getKeyStrip();
305  //ME1A part, convert halfstrip from 128-223 to 0-95
307  keyStrip = keyStrip - CSCConstants::MAX_HALF_STRIP_ME1B - 1;
308  const int lowPad(mymap[keyStrip].first);
309  const int highPad(mymap[keyStrip].second);
310 
311  // Get the pads in the CLCT bx
312  const matchesBX<T>& lut = getPads<T>();
313 
314  // If no pads in that bx...
315  if (lut.count(clct.getBX()) == 0)
316  return;
317 
318  for (const auto& p : lut.at(clct.getBX())) {
319  // pad bx needs to match to CLCT bx
320  int pad_bx = getBX(p.second) + CSCConstants::LCT_CENTRAL_BX;
321  if (std::abs(clct.getBX() - pad_bx) > getMaxDeltaBX<T>())
322  continue;
323 
324  // pad number must match
325  int padNumber(getPad(p.second));
326  if (std::abs(lowPad - padNumber) <= maxDeltaPadL1_ or std::abs(padNumber - highPad) <= maxDeltaPadL1_) {
327  result.push_back(p);
328  }
329  }
330 }
331 
332 template <class S, class T>
333 void CSCGEMMotherboard::matchingPads(const S& d1, const S& d2, matches<T>& result) const {
334  matches<T> p1, p2;
335 
336  // pads matching to the CLCT/ALCT
337  matchingPads<T>(d1, p1);
338 
339  // pads matching to the CLCT/ALCT
340  matchingPads<T>(d2, p2);
341 
342  // collect *all* matching pads
343  result.reserve(p1.size() + p2.size());
344  result.insert(std::end(result), std::begin(p1), std::end(p1));
345  result.insert(std::end(result), std::begin(p2), std::end(p2));
346 }
347 
348 template <class T>
349 void CSCGEMMotherboard::matchingPads(const CSCCLCTDigi& clct1, const CSCALCTDigi& alct1, matches<T>& result) const {
350  matches<T> padsClct, padsAlct;
351 
352  // pads matching to the CLCT
353  matchingPads<T>(clct1, padsClct);
354 
355  // pads matching to the ALCT
356  matchingPads<T>(alct1, padsAlct);
357 
358  // collect all *common* pads
359  intersection(padsClct, padsAlct, result);
360 }
361 
362 template <class T>
364  const CSCCLCTDigi& clct2,
365  const CSCALCTDigi& alct1,
366  const CSCALCTDigi& alct2,
367  matches<T>& result) const {
368  matches<T> padsClct, padsAlct;
369 
370  // pads matching to CLCTs
371  matchingPads<CSCCLCTDigi, T>(clct1, clct2, padsClct);
372 
373  // pads matching to ALCTs
374  matchingPads<CSCALCTDigi, T>(alct1, alct2, padsAlct);
375 
376  // collect *all* matching pads
377  result.reserve(padsClct.size() + padsAlct.size());
378  result.insert(std::end(result), std::begin(padsClct), std::end(padsClct));
379  result.insert(std::end(result), std::begin(padsAlct), std::end(padsAlct));
380 }
381 
382 template <class S>
383 S CSCGEMMotherboard::bestMatchingPad(const CSCALCTDigi& alct1, const matches<S>& pads) const {
384  S result;
385  // no matching pads for invalid stub
386  if (not alct1.isValid()) {
387  return result;
388  }
389  // return the first one with the same roll number
390  for (const auto& p : pads) {
391  // protection against corrupted DetIds
392  if (not isGEMDetId(p.first))
393  continue;
394 
395  // roll number of pad and ALCT must match
396  if (getRolls(alct1).first <= getRoll(p) and getRoll(p) <= getRolls(alct1).second) {
397  return p.second;
398  }
399  }
400  return result;
401 }
402 
403 template <class S>
404 S CSCGEMMotherboard::bestMatchingPad(const CSCCLCTDigi& clct, const matches<S>& pads) const {
405  S result;
406  // no matching pads for invalid stub
407  if (not clct.isValid())
408  return result;
409 
410  auto part(getCSCPart(clct.getKeyStrip()));
411 
412  // return the pad with the smallest bending angle
413  float averagePadNumberCSC = getPad(clct, part);
414  float minDeltaPad = 999;
415  for (const auto& p : pads) {
416  // protection against corrupted DetIds
417  if (not isGEMDetId(p.first))
418  continue;
419 
420  // best pad is closest to CLCT in number of halfstrips
421  float averagePadNumberGEM = getPad(p.second);
422  if (std::abs(averagePadNumberCSC - averagePadNumberGEM) < minDeltaPad) {
423  minDeltaPad = std::abs(averagePadNumberCSC - averagePadNumberGEM);
424  result = p.second;
425  }
426  }
427  return result;
428 }
429 
430 template <class S>
431 S CSCGEMMotherboard::bestMatchingPad(const CSCALCTDigi& alct1, const CSCCLCTDigi& clct1, const matches<S>& pads) const {
432  S result;
433  // no matching pads for invalid stub
434  if (not alct1.isValid() or not clct1.isValid()) {
435  return result;
436  }
437 
438  auto part(getCSCPart(clct1.getKeyStrip()));
439 
440  // return the pad with the smallest bending angle
441  float averagePadNumberCSC = getPad(clct1, part);
442  float minDeltaPad = 999;
443  for (const auto& p : pads) {
444  // protection against corrupted DetIds
445  if (not isGEMDetId(p.first))
446  continue;
447 
448  float averagePadNumberGEM = getPad(p.second);
449 
450  int delta;
451  if (GEMDetId(p.first).station() == 2)
452  delta = 1;
453 
454  // add another safety to make sure that the deltaPad is not larger than max value!!!
455  if (std::abs(averagePadNumberCSC - averagePadNumberGEM) < minDeltaPad and
456  getRolls(alct1).first - delta <= getRoll(p) and getRoll(p) <= getRolls(alct1).second) {
457  minDeltaPad = std::abs(averagePadNumberCSC - averagePadNumberGEM);
458  result = p.second;
459  }
460  }
461  return result;
462 }
463 
464 template <class T>
466  const T& sLCT,
467  const GEMCoPadDigiIds& coPads,
468  CSCCorrelatedLCTDigi& lct1,
469  CSCCorrelatedLCTDigi& lct2) const {
470  T bestLCT = bLCT;
471  T secondLCT = sLCT;
472 
473  // Check which LCTs are valid
474  bool bestValid = bestLCT.isValid();
475  bool secondValid = secondLCT.isValid();
476 
477  // At this point, set both LCTs valid if they are invalid
478  // Duplicate LCTs are taken into account later
479  if (bestValid and !secondValid)
480  secondLCT = bestLCT;
481  if (!bestValid and secondValid)
482  bestLCT = secondLCT;
483 
484  // get best matching copad1
485  const GEMCoPadDigi& bestCoPad = bestMatchingPad<GEMCoPadDigi>(bestLCT, coPads);
486  const GEMCoPadDigi& secondCoPad = bestMatchingPad<GEMCoPadDigi>(secondLCT, coPads);
487 
488  correlateLCTsGEM(bestLCT, secondLCT, bestCoPad, secondCoPad, lct1, lct2);
489 }
490 
491 template <class T>
493  const T& secondLCT,
494  const GEMCoPadDigi& bestCoPad,
495  const GEMCoPadDigi& secondCoPad,
496  CSCCorrelatedLCTDigi& lct1,
497  CSCCorrelatedLCTDigi& lct2) const {
498  // construct the first LCT from ALCT(CLCT) and a GEM Copad
499  if ((getLctTrigEnable<T>() and bestLCT.isValid()) or (match_trig_enable and bestLCT.isValid())) {
500  lct1 = constructLCTsGEM(bestLCT, bestCoPad, 1);
501  }
502 
503  // construct the second LCT from ALCT(CLCT) and a GEM Copad
504  if ((getLctTrigEnable<T>() and secondLCT.isValid()) or
505  (match_trig_enable and secondLCT.isValid() and secondLCT != bestLCT)) {
506  lct2 = constructLCTsGEM(secondLCT, secondCoPad, 2);
507  }
508 }
509 
510 #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:264
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:246
GEMPadDigi
Definition: GEMPadDigi.h:17
CSCGEMMotherboard::maxDeltaPadL2_
int maxDeltaPadL2_
Definition: CSCGEMMotherboard.h:226
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:361
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:453
CSCGEMMotherboard::gemGeometryAvailable
bool gemGeometryAvailable
Definition: CSCGEMMotherboard.h:214
CSCGEMMotherboard::ALCTCLCT_2GEM
Definition: CSCGEMMotherboard.h:193
CSCUpgradeMotherboard::intersection
void intersection(const S &d1, const S &d2, S &result) const
Definition: CSCUpgradeMotherboard.h:127
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:231
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:220
makeMuonMisalignmentScenario.endcap
endcap
Definition: makeMuonMisalignmentScenario.py:320
CSCCLCTDigi::getKeyStrip
uint16_t getKeyStrip(const uint16_t n=2) const
Definition: CSCCLCTDigi.cc:133
dqmdumpme.first
first
Definition: dqmdumpme.py:55
CSCGEMMotherboard::setupGeometry
void setupGeometry()
Definition: CSCGEMMotherboard.cc:310
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:262
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:465
CSCUpgradeMotherboard::getCSCPart
enum CSCPart getCSCPart(int keystrip) const
Definition: CSCUpgradeMotherboard.cc:279
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:92
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:340
CSCGEMMotherboard::gemId
unsigned gemId
Definition: CSCGEMMotherboard.h:209
CSCGEMMotherboard::promoteCLCTGEMquality_
bool promoteCLCTGEMquality_
Definition: CSCGEMMotherboard.h:232
GEMPadDigiClusterCollection
CSCGEMMotherboard::ALCTCLCT
Definition: CSCGEMMotherboard.h:191
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:216
CSCGEMMotherboard::promoteALCTGEMpattern_
bool promoteALCTGEMpattern_
Definition: CSCGEMMotherboard.h:229
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:277
CSCGEMMotherboard::getRoll
int getRoll(const GEMPadDigiId &p) const
Definition: CSCGEMMotherboard.cc:285
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:289
gem
Definition: AMC13Event.h:6
CSCGEMMotherboard::processGEMCoPads
void processGEMCoPads()
Definition: CSCGEMMotherboard.cc:77
CSCCLCTDigi::getBX
uint16_t getBX() const
return BX
Definition: CSCCLCTDigi.h:121
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:223
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:317
CSCALCTDigi
Definition: CSCALCTDigi.h:17
CSCGEMMotherboard::printGEMTriggerPads
void printGEMTriggerPads(int bx_start, int bx_stop, enum CSCPart)
Definition: CSCGEMMotherboard.cc:319
CSCGEMMotherboard::Default_values
Default_values
Definition: CSCGEMMotherboard.h:31
CSCUpgradeMotherboard::run
void run(const CSCWireDigiCollection *wiredc, const CSCComparatorDigiCollection *compdc) override
Definition: CSCUpgradeMotherboard.cc:71
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:219
CSCGEMMotherboard::maxDeltaBXCoPad_
int maxDeltaBXCoPad_
Definition: CSCGEMMotherboard.h:224
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:294
GEMDetId::station
constexpr int station() const
Definition: GEMDetId.h:176
GEMGeometry
Definition: GEMGeometry.h:24
CSCGEMMotherboard::maxPads
int maxPads() const
Definition: CSCGEMMotherboard.cc:315
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:281
CSCGEMMotherboard::maxDeltaPadL1_
int maxDeltaPadL1_
Definition: CSCGEMMotherboard.h:225
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:84
CSCGEMMotherboard::gem_g
const GEMGeometry * gem_g
Definition: CSCGEMMotherboard.h:213
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