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