CMS 3D CMS Logo

List of all members | Public Member Functions | Public Attributes | Protected Member Functions | Protected Attributes | Static Protected Attributes
CSCMotherboard Class Reference

#include <CSCMotherboard.h>

Inheritance diagram for CSCMotherboard:
CSCBaseboard CSCGEMMotherboard

Public Member Functions

void clear ()
 
 CSCMotherboard (unsigned endcap, unsigned station, unsigned sector, unsigned subsector, unsigned chamber, const edm::ParameterSet &conf)
 
virtual std::vector< CSCCorrelatedLCTDigireadoutLCTs () const
 
CSCShowerDigi readoutShower () const
 
void run (const CSCWireDigiCollection *wiredc, const CSCComparatorDigiCollection *compdc)
 
void selectLCTs ()
 
void setConfigParameters (const CSCDBL1TPParameters *conf)
 
 ~CSCMotherboard () override=default
 
- Public Member Functions inherited from CSCBaseboard
 CSCBaseboard ()
 
 CSCBaseboard (unsigned endcap, unsigned station, unsigned sector, unsigned subsector, unsigned chamber, const edm::ParameterSet &conf)
 
std::string getCSCName () const
 
void setCSCGeometry (const CSCGeometry *g)
 
virtual ~CSCBaseboard ()=default
 

Public Attributes

std::unique_ptr< CSCAnodeLCTProcessoralctProc
 
std::unique_ptr< CSCCathodeLCTProcessorclctProc
 

Protected Member Functions

void checkConfigParameters ()
 
void constructLCTs (const CSCALCTDigi &aLCT, const CSCCLCTDigi &cLCT, int type, int trknmb, CSCCorrelatedLCTDigi &lct) const
 
void copyValidToInValid (CSCALCTDigi &, CSCALCTDigi &, CSCCLCTDigi &, CSCCLCTDigi &) const
 
void correlateLCTs (const CSCALCTDigi &bestALCT, const CSCALCTDigi &secondALCT, const CSCCLCTDigi &bestCLCT, const CSCCLCTDigi &secondCLCT, CSCCorrelatedLCTDigi &bLCT, CSCCorrelatedLCTDigi &sLCT, int type) const
 
void dumpConfigParams () const
 
void encodeHighMultiplicityBits ()
 
unsigned int encodePattern (const int clctPattern) const
 
CSCALCTDigi getBXShiftedALCT (const CSCALCTDigi &) const
 
CSCCLCTDigi getBXShiftedCLCT (const CSCCLCTDigi &) const
 
- Protected Member Functions inherited from CSCBaseboard
void checkConfigParameters (unsigned int &var, const unsigned int var_max, const unsigned int var_def, const std::string &var_str)
 

Protected Attributes

unsigned int alct_trig_enable
 
std::vector< CSCALCTDigialctV
 
LCTContainer allLCTs_
 
unsigned int clct_trig_enable
 
std::vector< CSCCLCTDigiclctV
 
std::unique_ptr< CSCALCTCrossCLCTcscOverlap_
 
bool drop_used_clcts
 
int early_tbins
 
std::vector< CSCCorrelatedLCTDigilctV
 
bool match_earliest_clct_only_
 
unsigned int match_trig_enable
 
unsigned int match_trig_window_size
 
unsigned int mpc_block_me1a
 
std::vector< int > preferred_bx_match_
 
std::unique_ptr< LCTQualityAssignmentqualityAssignment_
 
std::unique_ptr< LCTQualityControlqualityControl_
 
bool readout_earliest_2
 
CSCShowerDigi shower_
 
unsigned showerSource_
 
unsigned int tmb_l1a_window_size
 
- Protected Attributes inherited from CSCBaseboard
edm::ParameterSet alctParams_
 
edm::ParameterSet clctParams_
 
edm::ParameterSet commonParams_
 
const CSCChambercscChamber_
 
const CSCGeometrycscGeometry_
 
CSCDetId cscId_
 
bool disableME1a_
 
bool enableAlctPhase2_
 
bool gangedME1a_
 
int infoV
 
bool isME11_
 
bool isME21_
 
bool isME31_
 
bool isME41_
 
bool runCCLUT_
 
bool runME11ILT_
 
bool runME11Up_
 
bool runME21ILT_
 
bool runME21Up_
 
bool runME31Up_
 
bool runME41Up_
 
bool runPhase2_
 
edm::ParameterSet showerParams_
 
unsigned theChamber
 
std::string theCSCName_
 
const unsigned theEndcap
 
int theRegion
 
unsigned theRing
 
const unsigned theSector
 
const unsigned theStation
 
const unsigned theSubsector
 
const unsigned theTrigChamber
 
edm::ParameterSet tmbParams_
 

Static Protected Attributes

static const unsigned int def_alct_trig_enable = 0
 
static const unsigned int def_clct_trig_enable = 0
 
static const unsigned int def_match_trig_enable = 1
 
static const unsigned int def_match_trig_window_size = 7
 
static const unsigned int def_mpc_block_me1a = 1
 
static const unsigned int def_tmb_l1a_window_size = 7
 

Detailed Description

Correlates anode and cathode LCTs from the same chamber.

When the Trigger MotherBoard (TMB) is instantiated it instantiates an ALCT and CLCT board. The MotherBoard takes up to two LCTs from each anode and cathode LCT card and combines them into a single Correlated LCT. The output is up to two Correlated LCTs.

It can be run in either a test mode, where the arguments are a collection of wire times and arrays of halfstrip times, or for general use, with wire digi and comparator digi collections as arguments. In the latter mode, the wire & strip info is passed on the LCTProcessors, where it is decoded and converted into a convenient form. After running the anode and cathode LCTProcessors, TMB correlates the anode and cathode LCTs. At present, it simply matches the best CLCT with the best ALCT; perhaps a better algorithm will be determined in the future. The MotherBoard then determines a few more numbers (such as quality and pattern) from the ALCT and CLCT information, and constructs two correlated LCT "digis".

Author
Benn Tannenbaum 28 August 1999 benn@.nosp@m.phys.nosp@m.ics.u.nosp@m.cla..nosp@m.edu

Based on code by Nick Wisniewski (nw@it.nosp@m.s.ca.nosp@m.ltech.nosp@m..edu) and a framework by Darin Acosta (acost.nosp@m.a@ph.nosp@m.ys.uf.nosp@m.l.ed.nosp@m.u).

Numerous later improvements by Jason Mumford and Slava Valuev (see cvs in ORCA). Porting from ORCA by S. Valuev (Slava.nosp@m..Val.nosp@m.uev@c.nosp@m.ern..nosp@m.ch), May 2006.

Extended for Run-3 and Phase-2 by Vadim Khotilovich, Tao Huang and Sven Dildick

Definition at line 47 of file CSCMotherboard.h.

Constructor & Destructor Documentation

◆ CSCMotherboard()

CSCMotherboard::CSCMotherboard ( unsigned  endcap,
unsigned  station,
unsigned  sector,
unsigned  subsector,
unsigned  chamber,
const edm::ParameterSet conf 
)

Normal constructor.

Definition at line 13 of file CSCMotherboard.cc.

19  : CSCBaseboard(endcap, station, sector, subsector, chamber, conf) {
20  // Normal constructor. -JM
21  // Pass ALCT, CLCT, and common parameters on to ALCT and CLCT processors.
22  static std::atomic<bool> config_dumped{false};
23 
24  mpc_block_me1a = tmbParams_.getParameter<unsigned int>("mpcBlockMe1a");
25  alct_trig_enable = tmbParams_.getParameter<unsigned int>("alctTrigEnable");
26  clct_trig_enable = tmbParams_.getParameter<unsigned int>("clctTrigEnable");
27  match_trig_enable = tmbParams_.getParameter<unsigned int>("matchTrigEnable");
28  match_trig_window_size = tmbParams_.getParameter<unsigned int>("matchTrigWindowSize");
29  tmb_l1a_window_size = // Common to CLCT and TMB
30  tmbParams_.getParameter<unsigned int>("tmbL1aWindowSize");
31 
32  // configuration handle for number of early time bins
33  early_tbins = tmbParams_.getParameter<int>("tmbEarlyTbins");
34 
35  // whether to not reuse CLCTs that were used by previous matching ALCTs
36  drop_used_clcts = tmbParams_.getParameter<bool>("tmbDropUsedClcts");
37 
38  // whether to readout only the earliest two LCTs in readout window
39  readout_earliest_2 = tmbParams_.getParameter<bool>("tmbReadoutEarliest2");
40 
41  match_earliest_clct_only_ = tmbParams_.getParameter<bool>("matchEarliestClctOnly");
42 
43  infoV = tmbParams_.getParameter<int>("verbosity");
44 
45  alctProc = std::make_unique<CSCAnodeLCTProcessor>(endcap, station, sector, subsector, chamber, conf);
46  clctProc = std::make_unique<CSCCathodeLCTProcessor>(endcap, station, sector, subsector, chamber, conf);
47 
48  // Check and print configuration parameters.
50  if (infoV > 0 && !config_dumped) {
52  config_dumped = true;
53  }
54 
56 
57  // get the preferred CLCT BX match array
58  preferred_bx_match_ = tmbParams_.getParameter<std::vector<int> >("preferredBxMatch");
59 
60  // quality assignment
61  qualityAssignment_ = std::make_unique<LCTQualityAssignment>(endcap, station, sector, subsector, chamber, conf);
62 
63  // quality control of stubs
64  qualityControl_ = std::make_unique<LCTQualityControl>(endcap, station, sector, subsector, chamber, conf);
65 
66  // shower-trigger source
67  showerSource_ = showerParams_.getParameter<unsigned>("source");
68 
69  // enable the upgrade processors for ring 1 stations
70  if (runPhase2_ and theRing == 1) {
71  clctProc = std::make_unique<CSCUpgradeCathodeLCTProcessor>(endcap, station, sector, subsector, chamber, conf);
72  if (enableAlctPhase2_) {
73  alctProc = std::make_unique<CSCUpgradeAnodeLCTProcessor>(endcap, station, sector, subsector, chamber, conf);
74  }
75  }
76 
77  // set up helper class to check if ALCT and CLCT cross
78  const bool ignoreAlctCrossClct = tmbParams_.getParameter<bool>("ignoreAlctCrossClct");
79  cscOverlap_ = std::make_unique<CSCALCTCrossCLCT>(endcap, station, theRing, ignoreAlctCrossClct, conf);
80 }

References alct_trig_enable, alctProc, allLCTs_, relativeConstraints::chamber, checkConfigParameters(), clct_trig_enable, clctProc, cscOverlap_, drop_used_clcts, dumpConfigParams(), early_tbins, CSCBaseboard::enableAlctPhase2_, makeMuonMisalignmentScenario::endcap, edm::ParameterSet::getParameter(), tmbParams::ignoreAlctCrossClct, CSCBaseboard::infoV, match_earliest_clct_only_, match_trig_enable, match_trig_window_size, mpc_block_me1a, preferred_bx_match_, qualityAssignment_, qualityControl_, readout_earliest_2, CSCBaseboard::runPhase2_, LCTContainer::setMatchTrigWindowSize(), CSCBaseboard::showerParams_, showerSource_, relativeConstraints::station, CSCBaseboard::theRing, tmb_l1a_window_size, and CSCBaseboard::tmbParams_.

◆ ~CSCMotherboard()

CSCMotherboard::~CSCMotherboard ( )
overridedefault

Default destructor.

Member Function Documentation

◆ checkConfigParameters()

void CSCMotherboard::checkConfigParameters ( )
protected

Make sure that the parameter values are within the allowed range.

Definition at line 498 of file CSCMotherboard.cc.

498  {
499  // Make sure that the parameter values are within the allowed range.
500 
501  // Max expected values.
502  static const unsigned int max_mpc_block_me1a = 1 << 1;
503  static const unsigned int max_alct_trig_enable = 1 << 1;
504  static const unsigned int max_clct_trig_enable = 1 << 1;
505  static const unsigned int max_match_trig_enable = 1 << 1;
506  static const unsigned int max_match_trig_window_size = 1 << 4;
507  static const unsigned int max_tmb_l1a_window_size = 1 << 4;
508 
509  // Checks.
510  CSCBaseboard::checkConfigParameters(mpc_block_me1a, max_mpc_block_me1a, def_mpc_block_me1a, "mpc_block_me1a");
511  CSCBaseboard::checkConfigParameters(alct_trig_enable, max_alct_trig_enable, def_alct_trig_enable, "alct_trig_enable");
512  CSCBaseboard::checkConfigParameters(clct_trig_enable, max_clct_trig_enable, def_clct_trig_enable, "clct_trig_enable");
514  match_trig_enable, max_match_trig_enable, def_match_trig_enable, "match_trig_enable");
516  match_trig_window_size, max_match_trig_window_size, def_match_trig_window_size, "match_trig_window_size");
518  tmb_l1a_window_size, max_tmb_l1a_window_size, def_tmb_l1a_window_size, "tmb_l1a_window_size");
519 }

References alct_trig_enable, CSCBaseboard::checkConfigParameters(), clct_trig_enable, def_alct_trig_enable, def_clct_trig_enable, def_match_trig_enable, def_match_trig_window_size, def_mpc_block_me1a, def_tmb_l1a_window_size, match_trig_enable, match_trig_window_size, mpc_block_me1a, and tmb_l1a_window_size.

Referenced by CSCMotherboard(), and setConfigParameters().

◆ clear()

void CSCMotherboard::clear ( void  )

Clears correlated LCT and passes clear signal on to cathode and anode LCT processors.

Definition at line 82 of file CSCMotherboard.cc.

82  {
83  // clear the processors
84  if (alctProc)
85  alctProc->clear();
86  if (clctProc)
87  clctProc->clear();
88 
89  // clear the ALCT and CLCT containers
90  alctV.clear();
91  clctV.clear();
92  lctV.clear();
93 
94  allLCTs_.clear();
95 
96  // reset the shower trigger
97  shower_.clear();
98 }

References alctProc, alctV, allLCTs_, clctProc, clctV, CSCShowerDigi::clear(), LCTContainer::clear(), lctV, and shower_.

Referenced by CSCGEMMotherboard::clear(), and run().

◆ constructLCTs()

void CSCMotherboard::constructLCTs ( const CSCALCTDigi aLCT,
const CSCCLCTDigi cLCT,
int  type,
int  trknmb,
CSCCorrelatedLCTDigi lct 
) const
protected

Definition at line 428 of file CSCMotherboard.cc.

429  {
430  thisLCT.setValid(true);
431  thisLCT.setType(type);
432  // make sure to shift the ALCT BX from 8 to 3 and the CLCT BX from 8 to 7!
433  thisLCT.setALCT(getBXShiftedALCT(aLCT));
434  thisLCT.setCLCT(getBXShiftedCLCT(cLCT));
435  thisLCT.setPattern(encodePattern(cLCT.getPattern()));
436  thisLCT.setMPCLink(0);
437  thisLCT.setBX0(0);
438  thisLCT.setSyncErr(0);
439  thisLCT.setCSCID(theTrigChamber);
440  thisLCT.setTrknmb(trknmb);
441  thisLCT.setWireGroup(aLCT.getKeyWG());
442  thisLCT.setStrip(cLCT.getKeyStrip());
443  thisLCT.setBend(cLCT.getBend());
444  // Bunch crossing: get it from cathode LCT if anode LCT is not there.
445  int bx = aLCT.isValid() ? aLCT.getBX() : cLCT.getBX();
446  thisLCT.setBX(bx);
447  thisLCT.setQuality(qualityAssignment_->findQuality(aLCT, cLCT));
448  if (runCCLUT_) {
449  thisLCT.setRun3(true);
450  // 4-bit slope value derived with the CCLUT algorithm
451  thisLCT.setSlope(cLCT.getSlope());
452  thisLCT.setQuartStripBit(cLCT.getQuartStripBit());
453  thisLCT.setEighthStripBit(cLCT.getEighthStripBit());
454  thisLCT.setRun3Pattern(cLCT.getRun3Pattern());
455  }
456 }

References l1GtPatternGenerator_cfi::bx, encodePattern(), CSCCLCTDigi::getBend(), CSCALCTDigi::getBX(), CSCCLCTDigi::getBX(), getBXShiftedALCT(), getBXShiftedCLCT(), CSCCLCTDigi::getEighthStripBit(), CSCCLCTDigi::getKeyStrip(), CSCALCTDigi::getKeyWG(), CSCCLCTDigi::getPattern(), CSCCLCTDigi::getQuartStripBit(), CSCCLCTDigi::getRun3Pattern(), CSCCLCTDigi::getSlope(), CSCALCTDigi::isValid(), qualityAssignment_, CSCBaseboard::runCCLUT_, CSCCorrelatedLCTDigi::setALCT(), CSCCorrelatedLCTDigi::setBend(), CSCCorrelatedLCTDigi::setBX(), CSCCorrelatedLCTDigi::setBX0(), CSCCorrelatedLCTDigi::setCLCT(), CSCCorrelatedLCTDigi::setCSCID(), CSCCorrelatedLCTDigi::setEighthStripBit(), CSCCorrelatedLCTDigi::setMPCLink(), CSCCorrelatedLCTDigi::setPattern(), CSCCorrelatedLCTDigi::setQuality(), CSCCorrelatedLCTDigi::setQuartStripBit(), CSCCorrelatedLCTDigi::setRun3(), CSCCorrelatedLCTDigi::setRun3Pattern(), CSCCorrelatedLCTDigi::setSlope(), CSCCorrelatedLCTDigi::setStrip(), CSCCorrelatedLCTDigi::setSyncErr(), CSCCorrelatedLCTDigi::setTrknmb(), CSCCorrelatedLCTDigi::setType(), CSCCorrelatedLCTDigi::setValid(), CSCCorrelatedLCTDigi::setWireGroup(), and CSCBaseboard::theTrigChamber.

Referenced by correlateLCTs().

◆ copyValidToInValid()

void CSCMotherboard::copyValidToInValid ( CSCALCTDigi bestALCT,
CSCALCTDigi secondALCT,
CSCCLCTDigi bestCLCT,
CSCCLCTDigi secondCLCT 
) const
protected

Definition at line 405 of file CSCMotherboard.cc.

408  {
409  // check which ALCTs and CLCTs are valid
410  const bool anodeBestValid = bestALCT.isValid();
411  const bool anodeSecondValid = secondALCT.isValid();
412  const bool cathodeBestValid = bestCLCT.isValid();
413  const bool cathodeSecondValid = secondCLCT.isValid();
414 
415  // copy the valid ALCT/CLCT information to the valid ALCT/CLCT
416  if (anodeBestValid && !anodeSecondValid)
417  secondALCT = bestALCT;
418  if (!anodeBestValid && anodeSecondValid)
419  bestALCT = secondALCT;
420  if (cathodeBestValid && !cathodeSecondValid)
421  secondCLCT = bestCLCT;
422  if (!cathodeBestValid && cathodeSecondValid)
423  bestCLCT = secondCLCT;
424 }

References CSCALCTDigi::isValid(), and CSCCLCTDigi::isValid().

Referenced by correlateLCTs(), and CSCGEMMotherboard::correlateLCTsGEM().

◆ correlateLCTs()

void CSCMotherboard::correlateLCTs ( const CSCALCTDigi bestALCT,
const CSCALCTDigi secondALCT,
const CSCCLCTDigi bestCLCT,
const CSCCLCTDigi secondCLCT,
CSCCorrelatedLCTDigi bLCT,
CSCCorrelatedLCTDigi sLCT,
int  type 
) const
protected

Definition at line 346 of file CSCMotherboard.cc.

352  {
353  CSCALCTDigi bestALCT = bALCT;
354  CSCALCTDigi secondALCT = sALCT;
355  CSCCLCTDigi bestCLCT = bCLCT;
356  CSCCLCTDigi secondCLCT = sCLCT;
357 
358  // check which ALCTs and CLCTs are valid
359  copyValidToInValid(bestALCT, secondALCT, bestCLCT, secondCLCT);
360 
361  // ALCT-only LCTs
362  const bool bestCase1(alct_trig_enable and bestALCT.isValid());
363  // CLCT-only LCTs
364  const bool bestCase2(clct_trig_enable and bestCLCT.isValid());
365  /*
366  Normal case: ALCT-CLCT matched LCTs. We require ALCT and CLCT to be valid.
367  Optionally, we can check if the ALCT cross the CLCT. This check will always return true
368  for a valid ALCT-CLCT pair in non-ME1/1 chambers. For ME1/1 chambers, it returns true,
369  only when the ALCT-CLCT pair crosses and when the parameter "checkAlctCrossClct" is set to True.
370  It is recommended to keep "checkAlctCrossClct" set to False, so that the EMTF receives
371  all information, even if it's unphysical.
372  */
373  const bool bestCase3(match_trig_enable and bestALCT.isValid() and bestCLCT.isValid() and
374  cscOverlap_->doesALCTCrossCLCT(bestALCT, bestCLCT));
375 
376  // at least one of the cases must be valid
377  if (bestCase1 or bestCase2 or bestCase3) {
378  constructLCTs(bestALCT, bestCLCT, type, 1, bLCT);
379  }
380 
381  // ALCT-only LCTs
382  const bool secondCase1(alct_trig_enable and secondALCT.isValid());
383  // CLCT-only LCTs
384  const bool secondCase2(clct_trig_enable and secondCLCT.isValid());
385  /*
386  Normal case: ALCT-CLCT matched LCTs. We require ALCT and CLCT to be valid.
387  Optionally, we can check if the ALCT cross the CLCT. This check will always return true
388  for a valid ALCT-CLCT pair in non-ME1/1 chambers. For ME1/1 chambers, it returns true,
389  only when the ALCT-CLCT pair crosses and when the parameter "checkAlctCrossClct" is set to True.
390  It is recommended to keep "checkAlctCrossClct" set to False, so that the EMTF receives
391  all information, even if it's unphysical.
392  */
393  const bool secondCase3(match_trig_enable and secondALCT.isValid() and secondCLCT.isValid() and
394  cscOverlap_->doesALCTCrossCLCT(secondALCT, secondCLCT));
395 
396  // at least one component must be different in order to consider the secondLCT
397  if ((secondALCT != bestALCT) or (secondCLCT != bestCLCT)) {
398  // at least one of the cases must be valid
399  if (secondCase1 or secondCase2 or secondCase3) {
400  constructLCTs(secondALCT, secondCLCT, type, 2, sLCT);
401  }
402  }
403 }

References alct_trig_enable, clct_trig_enable, constructLCTs(), copyValidToInValid(), cscOverlap_, CSCALCTDigi::isValid(), CSCCLCTDigi::isValid(), match_trig_enable, and or.

Referenced by CSCGEMMotherboard::correlateLCTsGEM(), and run().

◆ dumpConfigParams()

void CSCMotherboard::dumpConfigParams ( ) const
protected

Dump TMB/MPC configuration parameters.

Definition at line 521 of file CSCMotherboard.cc.

521  {
522  std::ostringstream strm;
523  strm << "\n";
524  strm << "++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++\n";
525  strm << "+ TMB configuration parameters: +\n";
526  strm << "++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++\n";
527  strm << " mpc_block_me1a [block/not block triggers which come from ME1/A] = " << mpc_block_me1a << "\n";
528  strm << " alct_trig_enable [allow ALCT-only triggers] = " << alct_trig_enable << "\n";
529  strm << " clct_trig_enable [allow CLCT-only triggers] = " << clct_trig_enable << "\n";
530  strm << " match_trig_enable [allow matched ALCT-CLCT triggers] = " << match_trig_enable << "\n";
531  strm << " match_trig_window_size [ALCT-CLCT match window width, in 25 ns] = " << match_trig_window_size << "\n";
532  strm << " tmb_l1a_window_size [L1Accept window width, in 25 ns bins] = " << tmb_l1a_window_size << "\n";
533  strm << "++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++\n";
534  LogDebug("CSCMotherboard") << strm.str();
535 }

References alct_trig_enable, clct_trig_enable, LogDebug, match_trig_enable, match_trig_window_size, mpc_block_me1a, and tmb_l1a_window_size.

Referenced by CSCMotherboard(), and setConfigParameters().

◆ encodeHighMultiplicityBits()

void CSCMotherboard::encodeHighMultiplicityBits ( )
protected

Definition at line 549 of file CSCMotherboard.cc.

549  {
550  // get the high multiplicity
551  // for anode this reflects what is already in the anode CSCShowerDigi object
552  unsigned cathodeInTime = clctProc->getInTimeHMT();
553  unsigned cathodeOutTime = clctProc->getOutTimeHMT();
554  unsigned anodeInTime = alctProc->getInTimeHMT();
555  unsigned anodeOutTime = alctProc->getOutTimeHMT();
556 
557  // assign the bits
558  unsigned inTimeHMT_;
559  unsigned outTimeHMT_;
560 
561  // set the value according to source
562  switch (showerSource_) {
563  case 0:
564  inTimeHMT_ = cathodeInTime;
565  outTimeHMT_ = cathodeOutTime;
566  break;
567  case 1:
568  inTimeHMT_ = anodeInTime;
569  outTimeHMT_ = anodeOutTime;
570  break;
571  case 2:
572  inTimeHMT_ = anodeInTime | cathodeInTime;
573  outTimeHMT_ = anodeOutTime | cathodeOutTime;
574  break;
575  default:
576  inTimeHMT_ = cathodeInTime;
577  outTimeHMT_ = cathodeOutTime;
578  break;
579  };
580 
581  // create a new object
582  shower_ = CSCShowerDigi(inTimeHMT_, outTimeHMT_, theTrigChamber);
583 }

References alctProc, clctProc, shower_, showerSource_, and CSCBaseboard::theTrigChamber.

Referenced by CSCGEMMotherboard::run(), and run().

◆ encodePattern()

unsigned int CSCMotherboard::encodePattern ( const int  clctPattern) const
protected

Definition at line 459 of file CSCMotherboard.cc.

459  {
460  const int kPatternBitWidth = 4;
461 
462  // In the TMB07 firmware, LCT pattern is just a 4-bit CLCT pattern.
463  unsigned int pattern = (abs(ptn) & ((1 << kPatternBitWidth) - 1));
464 
465  return pattern;
466 }

References funct::abs(), and topSingleLeptonDQM_PU_cfi::pattern.

Referenced by constructLCTs(), and CSCGEMMotherboard::constructLCTsGEM().

◆ getBXShiftedALCT()

CSCALCTDigi CSCMotherboard::getBXShiftedALCT ( const CSCALCTDigi aLCT) const
protected

Definition at line 537 of file CSCMotherboard.cc.

537  {
538  CSCALCTDigi aLCT_shifted = aLCT;
539  aLCT_shifted.setBX(aLCT_shifted.getBX() - (CSCConstants::LCT_CENTRAL_BX - CSCConstants::ALCT_CENTRAL_BX));
540  return aLCT_shifted;
541 }

References CSCConstants::ALCT_CENTRAL_BX, CSCALCTDigi::getBX(), CSCConstants::LCT_CENTRAL_BX, and CSCALCTDigi::setBX().

Referenced by constructLCTs(), and CSCGEMMotherboard::constructLCTsGEM().

◆ getBXShiftedCLCT()

CSCCLCTDigi CSCMotherboard::getBXShiftedCLCT ( const CSCCLCTDigi cLCT) const
protected

Definition at line 543 of file CSCMotherboard.cc.

543  {
544  CSCCLCTDigi cLCT_shifted = cLCT;
545  cLCT_shifted.setBX(cLCT_shifted.getBX() - CSCConstants::ALCT_CLCT_OFFSET);
546  return cLCT_shifted;
547 }

References CSCConstants::ALCT_CLCT_OFFSET, CSCCLCTDigi::getBX(), and CSCCLCTDigi::setBX().

Referenced by constructLCTs(), and CSCGEMMotherboard::constructLCTsGEM().

◆ readoutLCTs()

std::vector< CSCCorrelatedLCTDigi > CSCMotherboard::readoutLCTs ( ) const
virtual

Definition at line 247 of file CSCMotherboard.cc.

247  {
248  // temporary container for further selection
249  std::vector<CSCCorrelatedLCTDigi> tmpV;
250 
251  /*
252  LCTs in the BX window [early_tbin,...,late_tbin] are considered good for physics
253  The central LCT BX is time bin 8.
254  For tmb_l1a_window_size set to 7 (Run-1, Run-2), the window is [5, 6, 7, 8, 9, 10, 11]
255  For tmb_l1a_window_size set to 5 (Run-3), the window is [6, 7, 8, 9, 10]
256  For tmb_l1a_window_size set to 3 (Run-4?), the window is [ 7, 8, 9]
257  */
258  const unsigned delta_tbin = tmb_l1a_window_size / 2;
259  int early_tbin = CSCConstants::LCT_CENTRAL_BX - delta_tbin;
260  int late_tbin = CSCConstants::LCT_CENTRAL_BX + delta_tbin;
261  /*
262  Special case for an even-numbered time-window,
263  For instance tmb_l1a_window_size set to 6: [5, 6, 7, 8, 9, 10]
264  */
265  if (tmb_l1a_window_size % 2 == 0)
266  late_tbin = CSCConstants::LCT_CENTRAL_BX + delta_tbin - 1;
267  const int max_late_tbin = CSCConstants::MAX_LCT_TBINS - 1;
268 
269  // debugging messages when early_tbin or late_tbin has a suspicious value
270  bool debugTimeBins = true;
271  if (debugTimeBins) {
272  if (early_tbin < 0) {
273  edm::LogWarning("CSCMotherboard|SuspiciousParameters")
274  << "Early time bin (early_tbin) smaller than minimum allowed, which is 0. set early_tbin to 0.";
275  early_tbin = 0;
276  }
277  if (late_tbin > max_late_tbin) {
278  edm::LogWarning("CSCMotherboard|SuspiciousParameters")
279  << "Late time bin (late_tbin) larger than maximum allowed, which is " << max_late_tbin
280  << ". set early_tbin to max allowed";
281  late_tbin = CSCConstants::MAX_LCT_TBINS - 1;
282  }
283  debugTimeBins = false;
284  }
285 
286  // Start from the vector of all found correlated LCTs and select
287  // those within the LCT*L1A coincidence window.
288  int bx_readout = -1;
289  for (const auto& lct : lctV) {
290  // extra check on invalid LCTs
291  if (!lct.isValid()) {
292  continue;
293  }
294 
295  const int bx = lct.getBX();
296  // Skip LCTs found too early relative to L1Accept.
297  if (bx < early_tbin) {
298  if (infoV > 1)
299  LogDebug("CSCMotherboard") << " Do not report correlated LCT on key halfstrip " << lct.getStrip()
300  << " and key wire " << lct.getKeyWG() << ": found at bx " << bx
301  << ", whereas the earliest allowed bx is " << early_tbin;
302  continue;
303  }
304 
305  // Skip LCTs found too late relative to L1Accept.
306  if (bx > late_tbin) {
307  if (infoV > 1)
308  LogDebug("CSCMotherboard") << " Do not report correlated LCT on key halfstrip " << lct.getStrip()
309  << " and key wire " << lct.getKeyWG() << ": found at bx " << bx
310  << ", whereas the latest allowed bx is " << late_tbin;
311  continue;
312  }
313 
314  // Do not report LCTs found in ME1/A if mpc_block_me1a is set.
315  if (mpc_block_me1a and isME11_ and lct.getStrip() > CSCConstants::MAX_HALF_STRIP_ME1B) {
316  continue;
317  }
318 
319  // If (readout_earliest_2) take only LCTs in the earliest bx in the read-out window:
320  // in digi->raw step, LCTs have to be packed into the TMB header, and
321  // currently there is room just for two.
322  if (readout_earliest_2) {
323  if (bx_readout == -1 || bx == bx_readout) {
324  tmpV.push_back(lct);
325  if (bx_readout == -1)
326  bx_readout = bx;
327  }
328  }
329  // if readout_earliest_2 == false, save all LCTs
330  else {
331  tmpV.push_back(lct);
332  }
333  }
334 
335  // do a final check on the LCTs in readout
336  qualityControl_->checkMultiplicityBX(tmpV);
337  for (const auto& lct : tmpV) {
338  qualityControl_->checkValid(lct);
339  }
340 
341  return tmpV;
342 }

References l1GtPatternGenerator_cfi::bx, CSCBaseboard::infoV, CSCBaseboard::isME11_, CSCConstants::LCT_CENTRAL_BX, lctV, LogDebug, CSCConstants::MAX_HALF_STRIP_ME1B, CSCConstants::MAX_LCT_TBINS, mpc_block_me1a, qualityControl_, readout_earliest_2, and tmb_l1a_window_size.

Referenced by CSCTriggerPrimitivesBuilder::build().

◆ readoutShower()

CSCShowerDigi CSCMotherboard::readoutShower ( ) const

Returns shower bits

Definition at line 344 of file CSCMotherboard.cc.

344 { return shower_; }

References shower_.

Referenced by CSCTriggerPrimitivesBuilder::build().

◆ run()

void CSCMotherboard::run ( const CSCWireDigiCollection wiredc,
const CSCComparatorDigiCollection compdc 
)

Run function for normal usage. Runs cathode and anode LCT processors, takes results and correlates into CorrelatedLCT.

Definition at line 124 of file CSCMotherboard.cc.

124  {
125  // Step 1: Setup
126  clear();
127 
128  // Check for existing processors
129  if (!(alctProc && clctProc)) {
130  edm::LogError("CSCMotherboard|SetupError") << "+++ run() called for non-existing ALCT/CLCT processor! +++ \n";
131  return;
132  }
133 
134  // set geometry
135  alctProc->setCSCGeometry(cscGeometry_);
136  clctProc->setCSCGeometry(cscGeometry_);
137 
138  // Step 2: Run the processors
139  alctV = alctProc->run(wiredc); // run anodeLCT
140  clctV = clctProc->run(compdc); // run cathodeLCT
141 
142  // Step 2b: encode high multiplicity bits (independent of LCT construction)
144 
145  // if there are no ALCTs and no CLCTs, it does not make sense to run this TMB
146  if (alctV.empty() and clctV.empty())
147  return;
148 
149  // array to mask CLCTs
150  bool used_clct_mask[CSCConstants::MAX_CLCT_TBINS] = {false};
151 
152  // Step 3: ALCT-centric ALCT-to-CLCT matching
153  int bx_clct_matched = 0; // bx of last matched CLCT
154  for (int bx_alct = 0; bx_alct < CSCConstants::MAX_ALCT_TBINS; bx_alct++) {
155  // There should be at least one valid CLCT or ALCT for a
156  // correlated LCT to be formed. Decision on whether to reject
157  // non-complete LCTs (and if yes of which type) is made further
158  // upstream.
159  if (alctProc->getBestALCT(bx_alct).isValid()) {
160  // Look for CLCTs within the match-time window. The window is
161  // centered at the ALCT bx; therefore, we make an assumption
162  // that anode and cathode hits are perfectly synchronized. This
163  // is always true for MC, but only an approximation when the
164  // data is analyzed (which works fairly good as long as wide
165  // windows are used). To get rid of this assumption, one would
166  // need to access "full BX" words, which are not readily
167  // available.
168  bool is_matched = false;
169  // loop on the preferred "delta BX" array
170  for (unsigned mbx = 0; mbx < match_trig_window_size; mbx++) {
171  // evaluate the preffered CLCT BX, taking into account that there is an offset in the simulation
172  unsigned bx_clct = bx_alct + preferred_bx_match_[mbx] - CSCConstants::ALCT_CLCT_OFFSET;
173  // check that the CLCT BX is valid
174  if (bx_clct >= CSCConstants::MAX_CLCT_TBINS)
175  continue;
176  // do not consider previously matched CLCTs
177  if (drop_used_clcts && used_clct_mask[bx_clct])
178  continue;
179  if (clctProc->getBestCLCT(bx_clct).isValid()) {
180  if (infoV > 1)
181  LogTrace("CSCMotherboard") << "Successful ALCT-CLCT match: bx_alct = " << bx_alct
182  << "; bx_clct = " << bx_clct << "; mbx = " << mbx;
183  // now correlate the ALCT and CLCT into LCT.
184  // smaller mbx means more preferred!
185  correlateLCTs(alctProc->getBestALCT(bx_alct),
186  alctProc->getSecondALCT(bx_alct),
187  clctProc->getBestCLCT(bx_clct),
188  clctProc->getSecondCLCT(bx_clct),
189  allLCTs_(bx_alct, mbx, 0),
190  allLCTs_(bx_alct, mbx, 1),
192  // when the first LCT is valid, you can mask the matched CLCT and/or
193  // move on to the next ALCT if match_earliest_clct_only_ is set to true
194  if (allLCTs_(bx_alct, mbx, 0).isValid()) {
195  is_matched = true;
196  used_clct_mask[bx_clct] = true;
198  break;
199  }
200  }
201  }
202  // No CLCT within the match time interval found: report ALCT-only LCT
203  // (use dummy CLCTs).
204  if (!is_matched) {
205  if (infoV > 1)
206  LogTrace("CSCMotherboard") << "Unsuccessful ALCT-CLCT match (ALCT only): bx_alct = " << bx_alct
207  << " first ALCT " << alctProc->getBestALCT(bx_alct);
208  if (alct_trig_enable)
209  correlateLCTs(alctProc->getBestALCT(bx_alct),
210  alctProc->getSecondALCT(bx_alct),
211  clctProc->getBestCLCT(bx_alct),
212  clctProc->getSecondCLCT(bx_alct),
213  allLCTs_(bx_alct, 0, 0),
214  allLCTs_(bx_alct, 0, 1),
216  }
217  }
218  // No valid ALCTs; attempt to make CLCT-only LCT. Use only CLCTs
219  // which have zeroth chance to be matched at later cathode times.
220  // (I am not entirely sure this perfectly matches the firmware logic.)
221  // Use dummy ALCTs.
222  else {
223  int bx_clct = bx_alct - match_trig_window_size / 2;
224  if (bx_clct >= 0 && bx_clct > bx_clct_matched) {
225  if (clctProc->getBestCLCT(bx_clct).isValid() and clct_trig_enable) {
226  if (infoV > 1)
227  LogTrace("CSCMotherboard") << "Unsuccessful ALCT-CLCT match (CLCT only): bx_clct = " << bx_clct;
228  correlateLCTs(alctProc->getBestALCT(bx_alct),
229  alctProc->getSecondALCT(bx_alct),
230  clctProc->getBestCLCT(bx_clct),
231  clctProc->getSecondCLCT(bx_clct),
232  allLCTs_(bx_clct, 0, 0),
233  allLCTs_(bx_clct, 0, 1),
235  }
236  }
237  }
238  }
239 
240  // Step 4: Select at most 2 LCTs per BX
241  selectLCTs();
242 }

References CSCConstants::ALCT_CLCT_OFFSET, alct_trig_enable, CSCCorrelatedLCTDigi::ALCTCLCT, CSCCorrelatedLCTDigi::ALCTONLY, alctProc, alctV, allLCTs_, clct_trig_enable, CSCCorrelatedLCTDigi::CLCTONLY, clctProc, clctV, clear(), correlateLCTs(), CSCBaseboard::cscGeometry_, drop_used_clcts, encodeHighMultiplicityBits(), CSCBaseboard::infoV, LogTrace, match_earliest_clct_only_, match_trig_window_size, CSCConstants::MAX_ALCT_TBINS, CSCConstants::MAX_CLCT_TBINS, preferred_bx_match_, and selectLCTs().

Referenced by CSCTriggerPrimitivesBuilder::build().

◆ selectLCTs()

void CSCMotherboard::selectLCTs ( )

Definition at line 468 of file CSCMotherboard.cc.

468  {
469  // in each of the LCT time bins
470  for (int bx = 0; bx < CSCConstants::MAX_LCT_TBINS; bx++) {
471  unsigned nLCTs = 0;
472 
473  std::vector<CSCCorrelatedLCTDigi> tempV;
474  // check each of the preferred combinations
475  for (unsigned int mbx = 0; mbx < match_trig_window_size; mbx++) {
476  // select at most 2
477  for (int i = 0; i < CSCConstants::MAX_LCTS_PER_CSC; i++) {
478  if (allLCTs_(bx, mbx, i).isValid() and nLCTs < 2) {
479  tempV.push_back(allLCTs_(bx, mbx, i));
480  ++nLCTs;
481  }
482  }
483  }
484  // store the best 2
485  for (const auto& lct : tempV) {
486  lctV.push_back(lct);
487  }
488  }
489 
490  // Show the pre-selected LCTs. They're not final yet. Some selection is done in the readoutLCTs function
491  if (infoV > 0) {
492  for (const auto& lct : lctV) {
493  LogDebug("CSCMotherboard") << "Selected LCT" << lct;
494  }
495  }
496 }

References allLCTs_, l1GtPatternGenerator_cfi::bx, mps_fire::i, CSCBaseboard::infoV, sistrip::SpyUtilities::isValid(), lctV, LogDebug, match_trig_window_size, CSCConstants::MAX_LCT_TBINS, and CSCConstants::MAX_LCTS_PER_CSC.

Referenced by CSCGEMMotherboard::run(), and run().

◆ setConfigParameters()

void CSCMotherboard::setConfigParameters ( const CSCDBL1TPParameters conf)

Set configuration parameters obtained via EventSetup mechanism.

Definition at line 101 of file CSCMotherboard.cc.

101  {
102  static std::atomic<bool> config_dumped{false};
103 
104  // Config. parameters for the TMB itself.
111 
112  // Config. paramteres for ALCT and CLCT processors.
113  alctProc->setConfigParameters(conf);
114  clctProc->setConfigParameters(conf);
115 
116  // Check and print configuration parameters.
118  if (!config_dumped) {
120  config_dumped = true;
121  }
122 }

References alct_trig_enable, alctProc, checkConfigParameters(), clct_trig_enable, clctProc, dumpConfigParams(), match_trig_enable, match_trig_window_size, mpc_block_me1a, tmb_l1a_window_size, CSCDBL1TPParameters::tmbAlctTrigEnable(), CSCDBL1TPParameters::tmbClctTrigEnable(), CSCDBL1TPParameters::tmbMatchTrigEnable(), CSCDBL1TPParameters::tmbMatchTrigWindowSize(), CSCDBL1TPParameters::tmbMpcBlockMe1a(), and CSCDBL1TPParameters::tmbTmbL1aWindowSize().

Member Data Documentation

◆ alct_trig_enable

unsigned int CSCMotherboard::alct_trig_enable
protected

◆ alctProc

std::unique_ptr<CSCAnodeLCTProcessor> CSCMotherboard::alctProc

◆ alctV

std::vector<CSCALCTDigi> CSCMotherboard::alctV
protected

Definition at line 106 of file CSCMotherboard.h.

Referenced by clear(), CSCGEMMotherboard::run(), and run().

◆ allLCTs_

LCTContainer CSCMotherboard::allLCTs_
protected

Container with all LCTs prior to sorting and selecting.

Definition at line 110 of file CSCMotherboard.h.

Referenced by clear(), CSCMotherboard(), CSCGEMMotherboard::matchALCT2GEM(), CSCGEMMotherboard::matchALCTCLCTGEM(), CSCGEMMotherboard::matchCLCT2GEM(), run(), and selectLCTs().

◆ clct_trig_enable

unsigned int CSCMotherboard::clct_trig_enable
protected

◆ clctProc

std::unique_ptr<CSCCathodeLCTProcessor> CSCMotherboard::clctProc

◆ clctV

std::vector<CSCCLCTDigi> CSCMotherboard::clctV
protected

Definition at line 107 of file CSCMotherboard.h.

Referenced by clear(), CSCGEMMotherboard::run(), and run().

◆ cscOverlap_

std::unique_ptr<CSCALCTCrossCLCT> CSCMotherboard::cscOverlap_
protected

Definition at line 166 of file CSCMotherboard.h.

Referenced by correlateLCTs(), and CSCMotherboard().

◆ def_alct_trig_enable

const unsigned int CSCMotherboard::def_alct_trig_enable = 0
staticprotected

Definition at line 150 of file CSCMotherboard.h.

Referenced by checkConfigParameters().

◆ def_clct_trig_enable

const unsigned int CSCMotherboard::def_clct_trig_enable = 0
staticprotected

Definition at line 150 of file CSCMotherboard.h.

Referenced by checkConfigParameters().

◆ def_match_trig_enable

const unsigned int CSCMotherboard::def_match_trig_enable = 1
staticprotected

Definition at line 151 of file CSCMotherboard.h.

Referenced by checkConfigParameters().

◆ def_match_trig_window_size

const unsigned int CSCMotherboard::def_match_trig_window_size = 7
staticprotected

Definition at line 151 of file CSCMotherboard.h.

Referenced by checkConfigParameters().

◆ def_mpc_block_me1a

const unsigned int CSCMotherboard::def_mpc_block_me1a = 1
staticprotected

Default values of configuration parameters.

Definition at line 149 of file CSCMotherboard.h.

Referenced by checkConfigParameters().

◆ def_tmb_l1a_window_size

const unsigned int CSCMotherboard::def_tmb_l1a_window_size = 7
staticprotected

Definition at line 152 of file CSCMotherboard.h.

Referenced by checkConfigParameters().

◆ drop_used_clcts

bool CSCMotherboard::drop_used_clcts
protected

Phase2: whether to not reuse CLCTs that were used by previous matching ALCTs

Definition at line 127 of file CSCMotherboard.h.

Referenced by CSCMotherboard(), CSCGEMMotherboard::matchALCTCLCTGEM(), CSCGEMMotherboard::matchCLCT2GEM(), and run().

◆ early_tbins

int CSCMotherboard::early_tbins
protected

Phase2: separate handle for early time bins

Definition at line 130 of file CSCMotherboard.h.

Referenced by CSCMotherboard().

◆ lctV

std::vector<CSCCorrelatedLCTDigi> CSCMotherboard::lctV
protected

Definition at line 113 of file CSCMotherboard.h.

Referenced by clear(), readoutLCTs(), and selectLCTs().

◆ match_earliest_clct_only_

bool CSCMotherboard::match_earliest_clct_only_
protected

◆ match_trig_enable

unsigned int CSCMotherboard::match_trig_enable
protected

◆ match_trig_window_size

unsigned int CSCMotherboard::match_trig_window_size
protected

◆ mpc_block_me1a

unsigned int CSCMotherboard::mpc_block_me1a
protected

Configuration parameters.

Definition at line 122 of file CSCMotherboard.h.

Referenced by checkConfigParameters(), CSCMotherboard(), dumpConfigParams(), readoutLCTs(), and setConfigParameters().

◆ preferred_bx_match_

std::vector<int> CSCMotherboard::preferred_bx_match_
protected

◆ qualityAssignment_

std::unique_ptr<LCTQualityAssignment> CSCMotherboard::qualityAssignment_
protected

◆ qualityControl_

std::unique_ptr<LCTQualityControl> CSCMotherboard::qualityControl_
protected

Definition at line 158 of file CSCMotherboard.h.

Referenced by CSCMotherboard(), and readoutLCTs().

◆ readout_earliest_2

bool CSCMotherboard::readout_earliest_2
protected

Phase2: whether to readout only the earliest two LCTs in readout window

Definition at line 133 of file CSCMotherboard.h.

Referenced by CSCMotherboard(), and readoutLCTs().

◆ shower_

CSCShowerDigi CSCMotherboard::shower_
protected

Definition at line 115 of file CSCMotherboard.h.

Referenced by clear(), encodeHighMultiplicityBits(), and readoutShower().

◆ showerSource_

unsigned CSCMotherboard::showerSource_
protected

Definition at line 139 of file CSCMotherboard.h.

Referenced by CSCMotherboard(), and encodeHighMultiplicityBits().

◆ tmb_l1a_window_size

unsigned int CSCMotherboard::tmb_l1a_window_size
protected
CSCALCTDigi::getBX
uint16_t getBX() const
return BX - five low bits of BXN counter tagged by the ALCT
Definition: CSCALCTDigi.h:73
CSCMotherboard::qualityControl_
std::unique_ptr< LCTQualityControl > qualityControl_
Definition: CSCMotherboard.h:158
CSCMotherboard::selectLCTs
void selectLCTs()
Definition: CSCMotherboard.cc:468
mps_fire.i
i
Definition: mps_fire.py:428
CSCMotherboard::match_trig_window_size
unsigned int match_trig_window_size
Definition: CSCMotherboard.h:124
CSCMotherboard::copyValidToInValid
void copyValidToInValid(CSCALCTDigi &, CSCALCTDigi &, CSCCLCTDigi &, CSCCLCTDigi &) const
Definition: CSCMotherboard.cc:405
CSCMotherboard::def_clct_trig_enable
static const unsigned int def_clct_trig_enable
Definition: CSCMotherboard.h:150
CSCMotherboard::mpc_block_me1a
unsigned int mpc_block_me1a
Definition: CSCMotherboard.h:122
CSCBaseboard::cscGeometry_
const CSCGeometry * cscGeometry_
Definition: CSCBaseboard.h:65
CSCConstants::MAX_ALCT_TBINS
Definition: CSCConstants.h:127
CSCMotherboard::lctV
std::vector< CSCCorrelatedLCTDigi > lctV
Definition: CSCMotherboard.h:113
CSCBaseboard::tmbParams_
edm::ParameterSet tmbParams_
Definition: CSCBaseboard.h:72
relativeConstraints.station
station
Definition: relativeConstraints.py:67
CSCMotherboard::alctProc
std::unique_ptr< CSCAnodeLCTProcessor > alctProc
Definition: CSCMotherboard.h:98
CSCShowerDigi
Definition: CSCShowerDigi.h:9
CSCDBL1TPParameters::tmbClctTrigEnable
unsigned int tmbClctTrigEnable() const
Definition: CSCDBL1TPParameters.h:80
CSCCLCTDigi::getEighthStripBit
bool getEighthStripBit() const
get single eighth strip bit
Definition: CSCCLCTDigi.h:114
l1GtPatternGenerator_cfi.bx
bx
Definition: l1GtPatternGenerator_cfi.py:18
CSCMotherboard::allLCTs_
LCTContainer allLCTs_
Definition: CSCMotherboard.h:110
CSCConstants::LCT_CENTRAL_BX
Definition: CSCConstants.h:148
CSCMotherboard::def_alct_trig_enable
static const unsigned int def_alct_trig_enable
Definition: CSCMotherboard.h:150
CSCMotherboard::clear
void clear()
Definition: CSCMotherboard.cc:82
CSCMotherboard::clct_trig_enable
unsigned int clct_trig_enable
Definition: CSCMotherboard.h:123
CSCBaseboard::checkConfigParameters
void checkConfigParameters(unsigned int &var, const unsigned int var_max, const unsigned int var_def, const std::string &var_str)
Definition: CSCBaseboard.cc:94
CSCConstants::ALCT_CLCT_OFFSET
Definition: CSCConstants.h:164
makeMuonMisalignmentScenario.endcap
endcap
Definition: makeMuonMisalignmentScenario.py:320
CSCDBL1TPParameters::tmbMpcBlockMe1a
unsigned int tmbMpcBlockMe1a() const
Definition: CSCDBL1TPParameters.h:74
CSCCLCTDigi::getKeyStrip
uint16_t getKeyStrip(const uint16_t n=2) const
Definition: CSCCLCTDigi.cc:99
edm::LogWarning
Log< level::Warning, false > LogWarning
Definition: MessageLogger.h:122
CSCCLCTDigi
Definition: CSCCLCTDigi.h:17
CSCCorrelatedLCTDigi::ALCTCLCT
Definition: CSCCorrelatedLCTDigi.h:28
CSCMotherboard::checkConfigParameters
void checkConfigParameters()
Definition: CSCMotherboard.cc:498
CSCMotherboard::clctV
std::vector< CSCCLCTDigi > clctV
Definition: CSCMotherboard.h:107
CSCMotherboard::match_earliest_clct_only_
bool match_earliest_clct_only_
Definition: CSCMotherboard.h:136
CSCMotherboard::clctProc
std::unique_ptr< CSCCathodeLCTProcessor > clctProc
Definition: CSCMotherboard.h:101
CSCALCTDigi::getKeyWG
uint16_t getKeyWG() const
return key wire group
Definition: CSCALCTDigi.h:67
CSCMotherboard::correlateLCTs
void correlateLCTs(const CSCALCTDigi &bestALCT, const CSCALCTDigi &secondALCT, const CSCCLCTDigi &bestCLCT, const CSCCLCTDigi &secondCLCT, CSCCorrelatedLCTDigi &bLCT, CSCCorrelatedLCTDigi &sLCT, int type) const
Definition: CSCMotherboard.cc:346
CSCCLCTDigi::getQuartStripBit
bool getQuartStripBit() const
get single quart strip bit
Definition: CSCCLCTDigi.h:108
CSCCLCTDigi::getBend
uint16_t getBend() const
Definition: CSCCLCTDigi.h:93
CSCMotherboard::alctV
std::vector< CSCALCTDigi > alctV
Definition: CSCMotherboard.h:106
CSCConstants::MAX_LCTS_PER_CSC
Definition: CSCConstants.h:138
CSCDBL1TPParameters::tmbMatchTrigWindowSize
unsigned int tmbMatchTrigWindowSize() const
Definition: CSCDBL1TPParameters.h:86
CSCCorrelatedLCTDigi::CLCTONLY
Definition: CSCCorrelatedLCTDigi.h:33
CSCBaseboard::showerParams_
edm::ParameterSet showerParams_
Definition: CSCBaseboard.h:81
CSCConstants::MAX_HALF_STRIP_ME1B
Definition: CSCConstants.h:88
CSCMotherboard::dumpConfigParams
void dumpConfigParams() const
Definition: CSCMotherboard.cc:521
CSCMotherboard::def_tmb_l1a_window_size
static const unsigned int def_tmb_l1a_window_size
Definition: CSCMotherboard.h:152
CSCConstants::MAX_LCT_TBINS
Definition: CSCConstants.h:128
sistrip::SpyUtilities::isValid
const bool isValid(const Frame &aFrame, const FrameQuality &aQuality, const uint16_t aExpectedPos)
Definition: SiStripSpyUtilities.cc:124
CSCALCTDigi::setBX
void setBX(const uint16_t BX)
set BX
Definition: CSCALCTDigi.h:76
CSCBaseboard::runPhase2_
bool runPhase2_
Definition: CSCBaseboard.h:87
CSCMotherboard::cscOverlap_
std::unique_ptr< CSCALCTCrossCLCT > cscOverlap_
Definition: CSCMotherboard.h:166
LogDebug
#define LogDebug(id)
Definition: MessageLogger.h:233
LCTContainer::clear
void clear()
Definition: LCTContainer.cc:31
CSCShowerDigi::clear
void clear()
clear this Shower
Definition: CSCShowerDigi.cc:15
CSCBaseboard::enableAlctPhase2_
bool enableAlctPhase2_
Definition: CSCBaseboard.h:88
CSCDBL1TPParameters::tmbMatchTrigEnable
unsigned int tmbMatchTrigEnable() const
Definition: CSCDBL1TPParameters.h:83
type
type
Definition: SiPixelVCal_PayloadInspector.cc:39
CSCBaseboard::CSCBaseboard
CSCBaseboard()
Definition: CSCBaseboard.cc:81
CSCMotherboard::preferred_bx_match_
std::vector< int > preferred_bx_match_
Definition: CSCMotherboard.h:146
CSCMotherboard::shower_
CSCShowerDigi shower_
Definition: CSCMotherboard.h:115
CSCMotherboard::early_tbins
int early_tbins
Definition: CSCMotherboard.h:130
CSCCLCTDigi::isValid
bool isValid() const
check CLCT validity (1 - valid CLCT)
Definition: CSCCLCTDigi.h:50
CSCDBL1TPParameters::tmbTmbL1aWindowSize
unsigned int tmbTmbL1aWindowSize() const
Definition: CSCDBL1TPParameters.h:89
topSingleLeptonDQM_PU_cfi.pattern
pattern
Definition: topSingleLeptonDQM_PU_cfi.py:39
edm::LogError
Log< level::Error, false > LogError
Definition: MessageLogger.h:123
CSCCLCTDigi::getSlope
uint16_t getSlope() const
return the slope
Definition: CSCCLCTDigi.h:74
CSCMotherboard::readout_earliest_2
bool readout_earliest_2
Definition: CSCMotherboard.h:133
CSCDBL1TPParameters::tmbAlctTrigEnable
unsigned int tmbAlctTrigEnable() const
Definition: CSCDBL1TPParameters.h:77
CSCMotherboard::drop_used_clcts
bool drop_used_clcts
Definition: CSCMotherboard.h:127
CSCCLCTDigi::getBX
uint16_t getBX() const
return BX
Definition: CSCCLCTDigi.h:123
CSCMotherboard::getBXShiftedCLCT
CSCCLCTDigi getBXShiftedCLCT(const CSCCLCTDigi &) const
Definition: CSCMotherboard.cc:543
CSCConstants::ALCT_CENTRAL_BX
Definition: CSCConstants.h:155
CSCMotherboard::tmb_l1a_window_size
unsigned int tmb_l1a_window_size
Definition: CSCMotherboard.h:124
CSCALCTDigi
Definition: CSCALCTDigi.h:17
CSCMotherboard::alct_trig_enable
unsigned int alct_trig_enable
Definition: CSCMotherboard.h:123
CSCConstants::MAX_CLCT_TBINS
Definition: CSCConstants.h:126
relativeConstraints.chamber
chamber
Definition: relativeConstraints.py:53
CSCMotherboard::showerSource_
unsigned showerSource_
Definition: CSCMotherboard.h:139
or
The Signals That Services Can Subscribe To This is based on ActivityRegistry and is current per Services can connect to the signals distributed by the ActivityRegistry in order to monitor the activity of the application Each possible callback has some defined which we here list in angle e< void, edm::EventID const &, edm::Timestamp const & > We also list in braces which AR_WATCH_USING_METHOD_ is used for those or
Definition: Activities.doc:12
CSCBaseboard::theTrigChamber
const unsigned theTrigChamber
Definition: CSCBaseboard.h:45
edm::ParameterSet::getParameter
T getParameter(std::string const &) const
Definition: ParameterSet.h:303
CSCCLCTDigi::setBX
void setBX(const uint16_t bx)
set bx
Definition: CSCCLCTDigi.h:129
CSCMotherboard::encodePattern
unsigned int encodePattern(const int clctPattern) const
Definition: CSCMotherboard.cc:459
CSCCorrelatedLCTDigi::ALCTONLY
Definition: CSCCorrelatedLCTDigi.h:34
CSCMotherboard::constructLCTs
void constructLCTs(const CSCALCTDigi &aLCT, const CSCCLCTDigi &cLCT, int type, int trknmb, CSCCorrelatedLCTDigi &lct) const
Definition: CSCMotherboard.cc:428
CSCMotherboard::def_match_trig_window_size
static const unsigned int def_match_trig_window_size
Definition: CSCMotherboard.h:151
CSCALCTDigi::isValid
bool isValid() const
check ALCT validity (1 - valid ALCT)
Definition: CSCALCTDigi.h:40
CSCMotherboard::def_mpc_block_me1a
static const unsigned int def_mpc_block_me1a
Definition: CSCMotherboard.h:149
CSCMotherboard::def_match_trig_enable
static const unsigned int def_match_trig_enable
Definition: CSCMotherboard.h:151
LCTContainer::setMatchTrigWindowSize
void setMatchTrigWindowSize(unsigned trig_window_size)
Definition: LCTContainer.h:41
funct::abs
Abs< T >::type abs(const T &t)
Definition: Abs.h:22
LogTrace
#define LogTrace(id)
Definition: MessageLogger.h:234
CSCMotherboard::match_trig_enable
unsigned int match_trig_enable
Definition: CSCMotherboard.h:123
tmbParams.ignoreAlctCrossClct
ignoreAlctCrossClct
Definition: tmbParams.py:43
CSCMotherboard::getBXShiftedALCT
CSCALCTDigi getBXShiftedALCT(const CSCALCTDigi &) const
Definition: CSCMotherboard.cc:537
CSCCLCTDigi::getPattern
uint16_t getPattern() const
return pattern
Definition: CSCCLCTDigi.h:62
CSCMotherboard::encodeHighMultiplicityBits
void encodeHighMultiplicityBits()
Definition: CSCMotherboard.cc:549
CSCMotherboard::qualityAssignment_
std::unique_ptr< LCTQualityAssignment > qualityAssignment_
Definition: CSCMotherboard.h:155
CSCBaseboard::isME11_
bool isME11_
Definition: CSCBaseboard.h:51
CSCBaseboard::runCCLUT_
bool runCCLUT_
Definition: CSCBaseboard.h:105
CSCBaseboard::infoV
int infoV
Definition: CSCBaseboard.h:63
CSCBaseboard::theRing
unsigned theRing
Definition: CSCBaseboard.h:47
CSCCLCTDigi::getRun3Pattern
uint16_t getRun3Pattern() const
return pattern
Definition: CSCCLCTDigi.h:68