CMS 3D CMS Logo

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

#include <CSCUpgradeMotherboard.h>

Inheritance diagram for CSCUpgradeMotherboard:
CSCMotherboard CSCBaseboard CSCGEMMotherboard CSCMotherboardME11 CSCGEMMotherboardME11 CSCGEMMotherboardME21

Public Member Functions

void clear ()
 
template<class S >
bool compare (const S &p, const S &q) const
 
 CSCUpgradeMotherboard ()
 
 CSCUpgradeMotherboard (unsigned endcap, unsigned station, unsigned sector, unsigned subsector, unsigned chamber, const edm::ParameterSet &conf)
 
enum CSCPart getCSCPart (int keystrip) const
 
template<class S >
void intersection (const S &d1, const S &d2, S &result) const
 
std::vector< CSCCorrelatedLCTDigireadoutLCTs () const override
 
void run (const CSCWireDigiCollection *wiredc, const CSCComparatorDigiCollection *compdc) override
 
void sortLCTs (std::vector< CSCCorrelatedLCTDigi > &lcts, bool(*sorter)(const CSCCorrelatedLCTDigi &, const CSCCorrelatedLCTDigi &)) const
 
 ~CSCUpgradeMotherboard () override
 
- Public Member Functions inherited from CSCMotherboard
void clear ()
 
 CSCMotherboard ()
 
 CSCMotherboard (unsigned endcap, unsigned station, unsigned sector, unsigned subsector, unsigned chamber, const edm::ParameterSet &conf)
 
std::vector< CSCCorrelatedLCTDigigetLCTs () const
 
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
 

Static Public Member Functions

static bool sortLCTsByGEMDphi (const CSCCorrelatedLCTDigi &, const CSCCorrelatedLCTDigi &)
 
static bool sortLCTsByQuality (const CSCCorrelatedLCTDigi &, const CSCCorrelatedLCTDigi &)
 

Protected Member Functions

void correlateLCTs (const CSCALCTDigi &bestALCT, const CSCALCTDigi &secondALCT, const CSCCLCTDigi &bestCLCT, const CSCCLCTDigi &secondCLCT, CSCCorrelatedLCTDigi &lct1, CSCCorrelatedLCTDigi &lct2) const
 
void setPrefIndex ()
 
- Protected Member Functions inherited from CSCMotherboard
void checkConfigParameters ()
 
CSCCorrelatedLCTDigi constructLCTs (const CSCALCTDigi &aLCT, const CSCCLCTDigi &cLCT, int type, int trknmb) const
 
void correlateLCTs (const CSCALCTDigi &bestALCT, const CSCALCTDigi &secondALCT, const CSCCLCTDigi &bestCLCT, const CSCCLCTDigi &secondCLCT, int type)
 
void dumpConfigParams () const
 
void encodeHighMultiplicityBits (unsigned alctBits)
 
unsigned int encodePattern (const int clctPattern) const
 
LCT_Quality findQuality (const CSCALCTDigi &aLCT, const CSCCLCTDigi &cLCT) const
 
LCT_QualityRun3 findQualityRun3 (const CSCALCTDigi &aLCT, const CSCCLCTDigi &cLCT) 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

LCTContainer allLCTs
 
bool debug_luts
 
bool debug_matching
 
bool match_earliest_alct_only
 
bool match_earliest_clct_only
 
unsigned int max_lcts
 
int pref [CSCConstants::MAX_LCT_TBINS]
 
Parity theParity
 
unsigned int tmb_cross_bx_algo
 
- Protected Attributes inherited from CSCMotherboard
unsigned int alct_trig_enable
 
std::vector< CSCALCTDigialctV
 
bool clct_to_alct
 
unsigned int clct_trig_enable
 
std::vector< CSCCLCTDigiclctV
 
bool drop_used_alcts
 
bool drop_used_clcts
 
int early_tbins
 
CSCCorrelatedLCTDigi firstLCT [CSCConstants::MAX_LCT_TBINS]
 
unsigned int highMultiplicityBits_
 
unsigned int match_trig_enable
 
unsigned int match_trig_window_size
 
unsigned int mpc_block_me1a
 
std::unique_ptr< LCTQualityControlqualityControl_
 
bool readout_earliest_2
 
CSCCorrelatedLCTDigi secondLCT [CSCConstants::MAX_LCT_TBINS]
 
unsigned int tmb_l1a_window_size
 
bool useHighMultiplicityBits_
 
- 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_
 
unsigned theChamber
 
std::string theCSCName_
 
const unsigned theEndcap
 
unsigned theRegion
 
unsigned theRing
 
const unsigned theSector
 
const unsigned theStation
 
const unsigned theSubsector
 
const unsigned theTrigChamber
 
edm::ParameterSet tmbParams_
 

Additional Inherited Members

- Public Attributes inherited from CSCMotherboard
std::unique_ptr< CSCAnodeLCTProcessoralctProc
 
std::unique_ptr< CSCCathodeLCTProcessorclctProc
 
- Protected Types inherited from CSCMotherboard
enum  LCT_Quality : unsigned int {
  LCT_Quality::INVALID = 0, LCT_Quality::NO_CLCT = 1, LCT_Quality::NO_ALCT = 2, LCT_Quality::CLCT_LAYER_TRIGGER = 3,
  LCT_Quality::LOW_QUALITY = 4, LCT_Quality::MARGINAL_ANODE_CATHODE = 5, LCT_Quality::HQ_ANODE_MARGINAL_CATHODE = 6, LCT_Quality::HQ_CATHODE_MARGINAL_ANODE = 7,
  LCT_Quality::HQ_ACCEL_ALCT = 8, LCT_Quality::HQ_RESERVED_1 = 9, LCT_Quality::HQ_RESERVED_2 = 10, LCT_Quality::HQ_PATTERN_2_3 = 11,
  LCT_Quality::HQ_PATTERN_4_5 = 12, LCT_Quality::HQ_PATTERN_6_7 = 13, LCT_Quality::HQ_PATTERN_8_9 = 14, LCT_Quality::HQ_PATTERN_10 = 15
}
 
enum  LCT_QualityRun3 : unsigned int { LCT_QualityRun3::INVALID = 0, LCT_QualityRun3::LowQ = 1, LCT_QualityRun3::MedQ = 2, LCT_QualityRun3::HighQ = 3 }
 
- Static Protected Attributes inherited from CSCMotherboard
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

Base class for upgrade TMBs (MEX/1) chambers, that either run the upgrade CSC-only TMB algorithm or the CSC-GEM algorithm

Author
Sven Dildick (TAMU)

Definition at line 35 of file CSCUpgradeMotherboard.h.

Constructor & Destructor Documentation

◆ CSCUpgradeMotherboard() [1/2]

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

Definition at line 5 of file CSCUpgradeMotherboard.cc.

11  : // special configuration parameters for ME11 treatment
12  CSCMotherboard(endcap, station, sector, subsector, chamber, conf),
14  if (!runPhase2_)
15  edm::LogError("CSCUpgradeMotherboard|SetupError") << "+++ TMB constructed while runPhase2_ is not set! +++\n";
16 
17  if (theRing == 1) {
18  if (theStation == 1 and !runME11Up_)
19  edm::LogError("CSCUpgradeMotherboard|SetupError") << "+++ TMB constructed while runME11Up_ is not set! +++\n";
20  if (theStation == 2 and !runME21Up_)
21  edm::LogError("CSCUpgradeMotherboard|SetupError") << "+++ TMB constructed while runME21Up_ is not set! +++\n";
22  if (theStation == 3 and !runME31Up_)
23  edm::LogError("CSCUpgradeMotherboard|SetupError") << "+++ TMB constructed while runME31Up_ is not set! +++\n";
24  if (theStation == 4 and !runME41Up_)
25  edm::LogError("CSCUpgradeMotherboard|SetupError") << "+++ TMB constructed while runME41Up_ is not set! +++\n";
26  }
27 
29 
30  // enable the upgrade processors
31  if (runPhase2_ and theRing == 1) {
32  clctProc = std::make_unique<CSCUpgradeCathodeLCTProcessor>(endcap, station, sector, subsector, chamber, conf);
33  if (enableAlctPhase2_) {
34  alctProc = std::make_unique<CSCUpgradeAnodeLCTProcessor>(endcap, station, sector, subsector, chamber, conf);
35  }
36  }
37 
38  match_earliest_alct_only = tmbParams_.getParameter<bool>("matchEarliestAlctOnly");
39  match_earliest_clct_only = tmbParams_.getParameter<bool>("matchEarliestClctOnly");
40  clct_to_alct = tmbParams_.getParameter<bool>("clctToAlct");
41  drop_used_clcts = tmbParams_.getParameter<bool>("tmbDropUsedClcts");
42  tmb_cross_bx_algo = tmbParams_.getParameter<unsigned int>("tmbCrossBxAlgorithm");
43  max_lcts = tmbParams_.getParameter<unsigned int>("maxLCTs");
44  debug_matching = tmbParams_.getParameter<bool>("debugMatching");
45  debug_luts = tmbParams_.getParameter<bool>("debugLUTs");
46 
47  setPrefIndex();
48 }

References CSCMotherboard::alctProc, relativeConstraints::chamber, CSCMotherboard::clct_to_alct, CSCMotherboard::clctProc, debug_luts, debug_matching, CSCMotherboard::drop_used_clcts, CSCBaseboard::enableAlctPhase2_, makeMuonMisalignmentScenario::endcap, Even, edm::ParameterSet::getParameter(), match_earliest_alct_only, match_earliest_clct_only, max_lcts, Odd, CSCBaseboard::runME11Up_, CSCBaseboard::runME21Up_, CSCBaseboard::runME31Up_, CSCBaseboard::runME41Up_, CSCBaseboard::runPhase2_, setPrefIndex(), relativeConstraints::station, CSCBaseboard::theChamber, theParity, CSCBaseboard::theRing, CSCBaseboard::theStation, tmb_cross_bx_algo, and CSCBaseboard::tmbParams_.

◆ CSCUpgradeMotherboard() [2/2]

CSCUpgradeMotherboard::CSCUpgradeMotherboard ( )

Definition at line 50 of file CSCUpgradeMotherboard.cc.

51  if (!runPhase2_)
52  edm::LogError("CSCUpgradeMotherboard|SetupError") << "+++ TMB constructed while runPhase2_ is not set! +++\n";
53 
54  if (theRing == 1) {
55  if (theStation == 1 and !runME11Up_)
56  edm::LogError("CSCUpgradeMotherboard|SetupError") << "+++ TMB constructed while runME11Up_ is not set! +++\n";
57  if (theStation == 2 and !runME21Up_)
58  edm::LogError("CSCUpgradeMotherboard|SetupError") << "+++ TMB constructed while runME21Up_ is not set! +++\n";
59  if (theStation == 3 and !runME31Up_)
60  edm::LogError("CSCUpgradeMotherboard|SetupError") << "+++ TMB constructed while runME31Up_ is not set! +++\n";
61  if (theStation == 4 and !runME41Up_)
62  edm::LogError("CSCUpgradeMotherboard|SetupError") << "+++ TMB constructed while runME41Up_ is not set! +++\n";
63  }
64 
65  setPrefIndex();
66 }

References CSCBaseboard::runME11Up_, CSCBaseboard::runME21Up_, CSCBaseboard::runME31Up_, CSCBaseboard::runME41Up_, CSCBaseboard::runPhase2_, setPrefIndex(), CSCBaseboard::theRing, and CSCBaseboard::theStation.

◆ ~CSCUpgradeMotherboard()

CSCUpgradeMotherboard::~CSCUpgradeMotherboard ( )
override

Definition at line 274 of file CSCUpgradeMotherboard.cc.

274 {}

Member Function Documentation

◆ clear()

void CSCUpgradeMotherboard::clear ( void  )

◆ compare()

template<class S >
bool CSCUpgradeMotherboard::compare ( const S p,
const S q 
) const

Definition at line 116 of file CSCUpgradeMotherboard.h.

116  {
117  return (p.first == q.first) and (p.second == q.second);
118 }

References AlCaHLTBitMon_ParallelJobs::p, and submitPVResolutionJobs::q.

Referenced by intersection().

◆ correlateLCTs()

void CSCUpgradeMotherboard::correlateLCTs ( const CSCALCTDigi bestALCT,
const CSCALCTDigi secondALCT,
const CSCCLCTDigi bestCLCT,
const CSCCLCTDigi secondCLCT,
CSCCorrelatedLCTDigi lct1,
CSCCorrelatedLCTDigi lct2 
) const
protected

Definition at line 219 of file CSCUpgradeMotherboard.cc.

224  {
225  CSCALCTDigi bestALCT = bALCT;
226  CSCALCTDigi secondALCT = sALCT;
227  CSCCLCTDigi bestCLCT = bCLCT;
228  CSCCLCTDigi secondCLCT = sCLCT;
229 
230  const bool anodeBestValid = bestALCT.isValid();
231  const bool anodeSecondValid = secondALCT.isValid();
232  const bool cathodeBestValid = bestCLCT.isValid();
233  const bool cathodeSecondValid = secondCLCT.isValid();
234 
235  if (anodeBestValid and !anodeSecondValid)
236  secondALCT = bestALCT;
237  if (!anodeBestValid and anodeSecondValid)
238  bestALCT = secondALCT;
239  if (cathodeBestValid and !cathodeSecondValid)
240  secondCLCT = bestCLCT;
241  if (!cathodeBestValid and cathodeSecondValid)
242  bestCLCT = secondCLCT;
243 
244  // ALCT-CLCT matching conditions are defined by "trig_enable" configuration
245  // parameters.
246  if ((alct_trig_enable and bestALCT.isValid()) or (clct_trig_enable and bestCLCT.isValid()) or
247  (match_trig_enable and bestALCT.isValid() and bestCLCT.isValid())) {
248  lct1 = constructLCTs(bestALCT, bestCLCT, CSCCorrelatedLCTDigi::ALCTCLCT, 1);
249  }
250 
251  if (((secondALCT != bestALCT) or (secondCLCT != bestCLCT)) and
252  ((alct_trig_enable and secondALCT.isValid()) or (clct_trig_enable and secondCLCT.isValid()) or
253  (match_trig_enable and secondALCT.isValid() and secondCLCT.isValid()))) {
254  lct2 = constructLCTs(secondALCT, secondCLCT, CSCCorrelatedLCTDigi::ALCTCLCT, 2);
255  }
256 }

References CSCMotherboard::alct_trig_enable, CSCCorrelatedLCTDigi::ALCTCLCT, CSCMotherboard::clct_trig_enable, CSCMotherboard::constructLCTs(), CSCALCTDigi::isValid(), CSCCLCTDigi::isValid(), CSCMotherboard::match_trig_enable, and or.

Referenced by run().

◆ getCSCPart()

enum CSCPart CSCUpgradeMotherboard::getCSCPart ( int  keystrip) const

get CSCPart from HS, station, ring number

Definition at line 276 of file CSCUpgradeMotherboard.cc.

276  {
277  if (theStation == 1 and (theRing == 1 or theRing == 4)) {
278  if (keystrip > CSCConstants::MAX_HALF_STRIP_ME1B) {
279  if (gangedME1a_)
280  return CSCPart::ME1Ag;
281  else
282  return CSCPart::ME1A;
283  } else if (keystrip <= CSCConstants::MAX_HALF_STRIP_ME1B and keystrip >= 0)
284  return CSCPart::ME1B;
285  else
286  return CSCPart::ME11;
287  } else if (theStation == 2 and theRing == 1)
288  return CSCPart::ME21;
289  else if (theStation == 3 and theRing == 1)
290  return CSCPart::ME31;
291  else if (theStation == 4 and theRing == 1)
292  return CSCPart::ME41;
293  else {
294  edm::LogError("CSCUpgradeMotherboard|Error") << " ++ getCSCPart() failed to find the CSC chamber for in case ";
295  return CSCPart::ME11; // return ME11 by default
296  }
297 }

References CSCBaseboard::gangedME1a_, CSCConstants::MAX_HALF_STRIP_ME1B, ME11, ME1A, ME1Ag, ME1B, ME21, ME31, ME41, or, CSCBaseboard::theRing, and CSCBaseboard::theStation.

Referenced by CSCGEMMotherboard::bestMatchingPad(), CSCGEMMotherboard::constructLCTsGEM(), and CSCGEMMotherboard::matchingPads().

◆ intersection()

template<class S >
void CSCUpgradeMotherboard::intersection ( const S d1,
const S d2,
S result 
) const

Definition at line 121 of file CSCUpgradeMotherboard.h.

121  {
122  for (const auto& p : d1) {
123  for (const auto& q : d2) {
124  if (compare(p, q)) {
125  result.push_back(p);
126  }
127  }
128  }
129 }

References compare(), d1, AlCaHLTBitMon_ParallelJobs::p, submitPVResolutionJobs::q, and mps_fire::result.

Referenced by CSCGEMMotherboard::matchingPads().

◆ readoutLCTs()

std::vector< CSCCorrelatedLCTDigi > CSCUpgradeMotherboard::readoutLCTs ( ) const
overridevirtual

Returns vector of correlated LCTs in the read-out time window, if any.

Reimplemented from CSCMotherboard.

Definition at line 259 of file CSCUpgradeMotherboard.cc.

259  {
260  std::vector<CSCCorrelatedLCTDigi> result;
262  if (tmb_cross_bx_algo == 2)
264 
265  // do a final check on the LCTs in readout
266  qualityControl_->checkMultiplicityBX(result);
267  for (const auto& lct : result) {
268  qualityControl_->checkValid(lct);
269  }
270 
271  return result;
272 }

References allLCTs, LCTContainer::getMatched(), CSCMotherboard::qualityControl_, mps_fire::result, sortLCTs(), sortLCTsByQuality(), and tmb_cross_bx_algo.

Referenced by CSCTriggerPrimitivesBuilder::build(), CSCMotherboardME11::readoutLCTs1a(), CSCMotherboardME11::readoutLCTs1b(), and run().

◆ run()

void CSCUpgradeMotherboard::run ( const CSCWireDigiCollection wiredc,
const CSCComparatorDigiCollection compdc 
)
overridevirtual

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

Reimplemented from CSCMotherboard.

Definition at line 68 of file CSCUpgradeMotherboard.cc.

68  {
69  clear();
70 
71  if (!(alctProc and clctProc)) {
72  edm::LogError("CSCUpgradeMotherboard|SetupError")
73  << "+++ run() called for non-existing ALCT/CLCT processor! +++ \n";
74  return;
75  }
76 
77  alctProc->setCSCGeometry(cscGeometry_);
78  clctProc->setCSCGeometry(cscGeometry_);
79 
80  alctV = alctProc->run(wiredc); // run anodeLCT
81  clctV = clctProc->run(compdc); // run cathodeLCT
82 
83  // if there are no ALCTs and no CLCTs, it does not make sense to run this TMB
84  if (alctV.empty() and clctV.empty())
85  return;
86 
87  // encode high multiplicity bits
88  unsigned alctBits = alctProc->getHighMultiplictyBits();
90 
91  int used_clct_mask[20];
92  for (int c = 0; c < 20; ++c)
93  used_clct_mask[c] = 0;
94 
95  // ALCT centric matching
96  for (int bx_alct = 0; bx_alct < CSCConstants::MAX_ALCT_TBINS; bx_alct++) {
97  if (alctProc->getBestALCT(bx_alct).isValid()) {
98  const int bx_clct_start(bx_alct - match_trig_window_size / 2 - CSCConstants::ALCT_CLCT_OFFSET);
99  const int bx_clct_stop(bx_alct + match_trig_window_size / 2 - CSCConstants::ALCT_CLCT_OFFSET);
100 
101  if (debug_matching) {
102  LogTrace("CSCUpgradeMotherboard")
103  << "========================================================================" << std::endl;
104  LogTrace("CSCUpgradeMotherboard") << "ALCT-CLCT matching in ME34/1 chamber: " << cscId_ << std::endl;
105  LogTrace("CSCUpgradeMotherboard")
106  << "------------------------------------------------------------------------" << std::endl;
107  LogTrace("CSCUpgradeMotherboard") << "+++ Best ALCT Details: ";
108  alctProc->getBestALCT(bx_alct).print();
109  LogTrace("CSCUpgradeMotherboard") << "+++ Second ALCT Details: ";
110  alctProc->getSecondALCT(bx_alct).print();
111 
112  LogTrace("CSCUpgradeMotherboard")
113  << "------------------------------------------------------------------------" << std::endl;
114  LogTrace("CSCUpgradeMotherboard") << "Attempt ALCT-CLCT matching in ME34/13 in bx range: [" << bx_clct_start
115  << "," << bx_clct_stop << "]" << std::endl;
116  }
117 
118  // ALCT-to-CLCT
119  for (int bx_clct = bx_clct_start; bx_clct <= bx_clct_stop; bx_clct++) {
120  if (bx_clct < 0 or bx_clct >= CSCConstants::MAX_CLCT_TBINS)
121  continue;
122  if (drop_used_clcts and used_clct_mask[bx_clct])
123  continue;
124  if (clctProc->getBestCLCT(bx_clct).isValid()) {
125  if (debug_matching)
126  LogTrace("CSCUpgradeMotherboard") << "++Valid ME21 CLCT: " << clctProc->getBestCLCT(bx_clct) << std::endl;
127 
128  int mbx = bx_clct - bx_clct_start;
129  CSCUpgradeMotherboard::correlateLCTs(alctProc->getBestALCT(bx_alct),
130  alctProc->getSecondALCT(bx_alct),
131  clctProc->getBestCLCT(bx_clct),
132  clctProc->getSecondCLCT(bx_clct),
133  allLCTs(bx_alct, mbx, 0),
134  allLCTs(bx_alct, mbx, 1));
135  if (infoV > 1)
136  LogTrace("CSCUpgradeMotherboard")
137  << "Successful ALCT-CLCT match in ME21: bx_alct = " << bx_alct << "; match window: [" << bx_clct_start
138  << "; " << bx_clct_stop << "]; bx_clct = " << bx_clct << std::endl;
139  LogTrace("CSCUpgradeMotherboard") << "+++ Best CLCT Details: ";
140  clctProc->getBestCLCT(bx_clct).print();
141  LogTrace("CSCUpgradeMotherboard") << "+++ Second CLCT Details: ";
142  clctProc->getSecondCLCT(bx_clct).print();
143  if (allLCTs(bx_alct, mbx, 0).isValid()) {
144  used_clct_mask[bx_clct] += 1;
146  break;
147  }
148  }
149  }
150  }
151  }
152 
153  // reduction of nLCTs per each BX
154  for (int bx = 0; bx < CSCConstants::MAX_LCT_TBINS; bx++) {
155  // counting
156  unsigned int n = 0;
157  for (unsigned int mbx = 0; mbx < match_trig_window_size; mbx++) {
158  for (int i = 0; i < CSCConstants::MAX_LCTS_PER_CSC; i++) {
159  if (allLCTs(bx, mbx, i).isValid()) {
160  ++n;
161  if (infoV > 0) {
162  LogDebug("CSCUpgradeMotherboard")
163  << "LCT" << i + 1 << " " << bx << "/" << bx + mbx - match_trig_window_size / 2 << ": "
164  << allLCTs(bx, mbx, i) << std::endl;
165  }
166  }
167  }
168  }
169 
170  // some simple cross-bx sorting algorithms
171  if (tmb_cross_bx_algo == 1 and (n > 2)) {
172  n = 0;
173  for (unsigned int mbx = 0; mbx < match_trig_window_size; mbx++) {
174  for (int i = 0; i < CSCConstants::MAX_LCTS_PER_CSC; i++) {
175  if (allLCTs(bx, pref[mbx], i).isValid()) {
176  n++;
177  if (n > 2)
178  allLCTs(bx, pref[mbx], i).clear();
179  }
180  }
181  }
182 
183  n = 0;
184  for (unsigned int mbx = 0; mbx < match_trig_window_size; mbx++) {
185  for (int i = 0; i < CSCConstants::MAX_LCTS_PER_CSC; i++) {
186  if (allLCTs(bx, mbx, i).isValid()) {
187  n++;
188  if (infoV > 0) {
189  LogDebug("CSCUpgradeMotherboard")
190  << "LCT" << i + 1 << " " << bx << "/" << bx + mbx - match_trig_window_size / 2 << ": "
191  << allLCTs(bx, mbx, i) << std::endl;
192  }
193  }
194  }
195  }
196  if (infoV > 0 and n > 0)
197  LogDebug("CSCUpgradeMotherboard") << "bx " << bx << " nnLCT:" << n << " " << n << std::endl;
198  } // x-bx sorting
199  }
200 
201  bool first = true;
202  unsigned int n = 0;
203  for (const auto& p : readoutLCTs()) {
204  if (debug_matching and first) {
205  LogTrace("CSCUpgradeMotherboard") << "========================================================================"
206  << std::endl;
207  LogTrace("CSCUpgradeMotherboard") << "Counting the final LCTs" << std::endl;
208  LogTrace("CSCUpgradeMotherboard") << "========================================================================"
209  << std::endl;
210  first = false;
211  LogTrace("CSCUpgradeMotherboard") << "tmb_cross_bx_algo: " << tmb_cross_bx_algo << std::endl;
212  }
213  n++;
214  if (debug_matching)
215  LogTrace("CSCUpgradeMotherboard") << "LCT " << n << " " << p << std::endl;
216  }
217 }

References CSCConstants::ALCT_CLCT_OFFSET, CSCMotherboard::alctProc, CSCMotherboard::alctV, allLCTs, l1GtPatternGenerator_cfi::bx, c, CSCMotherboard::clctProc, CSCMotherboard::clctV, LCTContainer::clear(), clear(), correlateLCTs(), CSCBaseboard::cscGeometry_, CSCBaseboard::cscId_, debug_matching, CSCMotherboard::drop_used_clcts, CSCMotherboard::encodeHighMultiplicityBits(), first, mps_fire::i, CSCBaseboard::infoV, sistrip::SpyUtilities::isValid(), LogDebug, LogTrace, match_earliest_clct_only, CSCMotherboard::match_trig_window_size, CSCConstants::MAX_ALCT_TBINS, CSCConstants::MAX_CLCT_TBINS, CSCConstants::MAX_LCT_TBINS, CSCConstants::MAX_LCTS_PER_CSC, dqmiodumpmetadata::n, AlCaHLTBitMon_ParallelJobs::p, pref, readoutLCTs(), and tmb_cross_bx_algo.

Referenced by CSCTriggerPrimitivesBuilder::build().

◆ setPrefIndex()

void CSCUpgradeMotherboard::setPrefIndex ( )
protected

Definition at line 314 of file CSCUpgradeMotherboard.cc.

314  {
315  pref[0] = match_trig_window_size / 2;
316  for (unsigned int m = 2; m < match_trig_window_size; m += 2) {
317  pref[m - 1] = pref[0] - m / 2;
318  pref[m] = pref[0] + m / 2;
319  }
320 }

References visualization-live-secondInstance_cfg::m, CSCMotherboard::match_trig_window_size, and pref.

Referenced by CSCUpgradeMotherboard().

◆ sortLCTs()

void CSCUpgradeMotherboard::sortLCTs ( std::vector< CSCCorrelatedLCTDigi > &  lcts,
bool(*)(const CSCCorrelatedLCTDigi &, const CSCCorrelatedLCTDigi &)  sorter 
) const

Definition at line 307 of file CSCUpgradeMotherboard.cc.

308  {
309  std::sort(lcts.begin(), lcts.end(), *sorter);
310  if (lcts.size() > max_lcts)
311  lcts.erase(lcts.begin() + max_lcts, lcts.end());
312 }

References max_lcts, jetUpdater_cfi::sort, and MCScenario_CRAFT1_22X::sorter().

Referenced by CSCGEMMotherboardME21::readoutLCTs(), readoutLCTs(), and CSCGEMMotherboardME11::sortLCTs().

◆ sortLCTsByGEMDphi()

bool CSCUpgradeMotherboard::sortLCTsByGEMDphi ( const CSCCorrelatedLCTDigi lct1,
const CSCCorrelatedLCTDigi lct2 
)
static

Definition at line 303 of file CSCUpgradeMotherboard.cc.

303  {
304  return true;
305 }

Referenced by CSCGEMMotherboardME21::readoutLCTs(), and CSCGEMMotherboardME11::readoutLCTsME11().

◆ sortLCTsByQuality()

bool CSCUpgradeMotherboard::sortLCTsByQuality ( const CSCCorrelatedLCTDigi lct1,
const CSCCorrelatedLCTDigi lct2 
)
static

Methods to sort the LCTs

Definition at line 299 of file CSCUpgradeMotherboard.cc.

299  {
300  return lct1.getQuality() > lct2.getQuality();
301 }

References CSCCorrelatedLCTDigi::getQuality().

Referenced by CSCGEMMotherboardME21::readoutLCTs(), readoutLCTs(), and CSCGEMMotherboardME11::readoutLCTsME11().

Member Data Documentation

◆ allLCTs

LCTContainer CSCUpgradeMotherboard::allLCTs
protected

◆ debug_luts

bool CSCUpgradeMotherboard::debug_luts
protected

Definition at line 112 of file CSCUpgradeMotherboard.h.

Referenced by CSCUpgradeMotherboard().

◆ debug_matching

bool CSCUpgradeMotherboard::debug_matching
protected

◆ match_earliest_alct_only

bool CSCUpgradeMotherboard::match_earliest_alct_only
protected

Definition at line 99 of file CSCUpgradeMotherboard.h.

Referenced by CSCUpgradeMotherboard(), and CSCMotherboardME11::run().

◆ match_earliest_clct_only

bool CSCUpgradeMotherboard::match_earliest_clct_only
protected

◆ max_lcts

unsigned int CSCUpgradeMotherboard::max_lcts
protected

maximum lcts per BX in MEX1: 2, 3, 4 or 999

Definition at line 106 of file CSCUpgradeMotherboard.h.

Referenced by CSCUpgradeMotherboard(), CSCGEMMotherboardME11::sortLCTs(), and sortLCTs().

◆ pref

int CSCUpgradeMotherboard::pref[CSCConstants::MAX_LCT_TBINS]
protected

"preferential" index array in matching window for cross-BX sorting

Definition at line 97 of file CSCUpgradeMotherboard.h.

Referenced by CSCGEMMotherboardME21::run(), CSCMotherboardME11::run(), run(), and setPrefIndex().

◆ theParity

Parity CSCUpgradeMotherboard::theParity
protected

◆ tmb_cross_bx_algo

unsigned int CSCUpgradeMotherboard::tmb_cross_bx_algo
protected
CSCMotherboard::qualityControl_
std::unique_ptr< LCTQualityControl > qualityControl_
Definition: CSCMotherboard.h:128
ME11
Definition: CSCUpgradeMotherboardLUT.h:12
mps_fire.i
i
Definition: mps_fire.py:428
CSCMotherboard::match_trig_window_size
unsigned int match_trig_window_size
Definition: CSCMotherboard.h:99
dqmiodumpmetadata.n
n
Definition: dqmiodumpmetadata.py:28
ME41
Definition: CSCUpgradeMotherboardLUT.h:12
CSCBaseboard::cscGeometry_
const CSCGeometry * cscGeometry_
Definition: CSCBaseboard.h:65
CSCConstants::MAX_ALCT_TBINS
Definition: CSCConstants.h:64
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:75
AlCaHLTBitMon_ParallelJobs.p
p
Definition: AlCaHLTBitMon_ParallelJobs.py:153
CSCBaseboard::theStation
const unsigned theStation
Definition: CSCBaseboard.h:42
CSCUpgradeMotherboard::clear
void clear()
Definition: CSCUpgradeMotherboard.cc:322
l1GtPatternGenerator_cfi.bx
bx
Definition: l1GtPatternGenerator_cfi.py:18
CSCUpgradeMotherboard::compare
bool compare(const S &p, const S &q) const
Definition: CSCUpgradeMotherboard.h:116
CSCMotherboard::clear
void clear()
Definition: CSCMotherboard.cc:89
CSCUpgradeMotherboard::tmb_cross_bx_algo
unsigned int tmb_cross_bx_algo
Definition: CSCUpgradeMotherboard.h:103
CSCMotherboard::clct_trig_enable
unsigned int clct_trig_enable
Definition: CSCMotherboard.h:98
CSCConstants::ALCT_CLCT_OFFSET
Definition: CSCConstants.h:81
makeMuonMisalignmentScenario.endcap
endcap
Definition: makeMuonMisalignmentScenario.py:320
CSCCLCTDigi
Definition: CSCCLCTDigi.h:17
CSCCorrelatedLCTDigi::ALCTCLCT
Definition: CSCCorrelatedLCTDigi.h:203
CSCMotherboard::CSCMotherboard
CSCMotherboard()
Definition: CSCMotherboard.cc:64
CSCMotherboard::clctV
std::vector< CSCCLCTDigi > clctV
Definition: CSCMotherboard.h:84
CSCMotherboard::clctProc
std::unique_ptr< CSCCathodeLCTProcessor > clctProc
Definition: CSCMotherboard.h:78
CSCBaseboard::runME11Up_
bool runME11Up_
Definition: CSCBaseboard.h:97
LCTContainer::getMatched
void getMatched(std::vector< CSCCorrelatedLCTDigi > &) const
Definition: LCTContainer.cc:23
ME31
Definition: CSCUpgradeMotherboardLUT.h:12
CSCMotherboard::alctV
std::vector< CSCALCTDigi > alctV
Definition: CSCMotherboard.h:83
CSCConstants::MAX_LCTS_PER_CSC
Definition: CSCConstants.h:75
CSCMotherboard::constructLCTs
CSCCorrelatedLCTDigi constructLCTs(const CSCALCTDigi &aLCT, const CSCCLCTDigi &cLCT, int type, int trknmb) const
Definition: CSCMotherboard.cc:486
CSCUpgradeMotherboard::readoutLCTs
std::vector< CSCCorrelatedLCTDigi > readoutLCTs() const override
Definition: CSCUpgradeMotherboard.cc:259
visualization-live-secondInstance_cfg.m
m
Definition: visualization-live-secondInstance_cfg.py:72
CSCUpgradeMotherboard::match_earliest_clct_only
bool match_earliest_clct_only
Definition: CSCUpgradeMotherboard.h:100
CSCUpgradeMotherboard::theParity
Parity theParity
Definition: CSCUpgradeMotherboard.h:88
CSCBaseboard::runME41Up_
bool runME41Up_
Definition: CSCBaseboard.h:100
CSCConstants::MAX_LCT_TBINS
Definition: CSCConstants.h:65
CSCBaseboard::gangedME1a_
bool gangedME1a_
Definition: CSCBaseboard.h:88
sistrip::SpyUtilities::isValid
const bool isValid(const Frame &aFrame, const FrameQuality &aQuality, const uint16_t aExpectedPos)
Definition: SiStripSpyUtilities.cc:124
CSCBaseboard::runME31Up_
bool runME31Up_
Definition: CSCBaseboard.h:99
first
auto first
Definition: CAHitNtupletGeneratorKernelsImpl.h:112
CSCBaseboard::runME21Up_
bool runME21Up_
Definition: CSCBaseboard.h:98
CSCBaseboard::runPhase2_
bool runPhase2_
Definition: CSCBaseboard.h:84
CSCUpgradeMotherboard::correlateLCTs
void correlateLCTs(const CSCALCTDigi &bestALCT, const CSCALCTDigi &secondALCT, const CSCCLCTDigi &bestCLCT, const CSCCLCTDigi &secondCLCT, CSCCorrelatedLCTDigi &lct1, CSCCorrelatedLCTDigi &lct2) const
Definition: CSCUpgradeMotherboard.cc:219
LogDebug
#define LogDebug(id)
Definition: MessageLogger.h:233
ME1A
Definition: CSCUpgradeMotherboardLUT.h:12
LCTContainer::clear
void clear()
Definition: LCTContainer.cc:31
CSCUpgradeMotherboard::debug_matching
bool debug_matching
Definition: CSCUpgradeMotherboard.h:109
CSCBaseboard::enableAlctPhase2_
bool enableAlctPhase2_
Definition: CSCBaseboard.h:85
jetUpdater_cfi.sort
sort
Definition: jetUpdater_cfi.py:29
CSCConstants::MAX_HALF_STRIP_ME1B
Definition: CSCConstants.h:39
CSCCLCTDigi::isValid
bool isValid() const
check CLCT validity (1 - valid CLCT)
Definition: CSCCLCTDigi.h:50
CSCUpgradeMotherboard::sortLCTs
void sortLCTs(std::vector< CSCCorrelatedLCTDigi > &lcts, bool(*sorter)(const CSCCorrelatedLCTDigi &, const CSCCorrelatedLCTDigi &)) const
Definition: CSCUpgradeMotherboard.cc:307
CSCUpgradeMotherboard::pref
int pref[CSCConstants::MAX_LCT_TBINS]
Definition: CSCUpgradeMotherboard.h:97
submitPVResolutionJobs.q
q
Definition: submitPVResolutionJobs.py:84
CSCUpgradeMotherboard::match_earliest_alct_only
bool match_earliest_alct_only
Definition: CSCUpgradeMotherboard.h:99
edm::LogError
Log< level::Error, false > LogError
Definition: MessageLogger.h:123
CSCBaseboard::theChamber
unsigned theChamber
Definition: CSCBaseboard.h:48
CSCMotherboard::drop_used_clcts
bool drop_used_clcts
Definition: CSCMotherboard.h:105
CSCMotherboard::encodeHighMultiplicityBits
void encodeHighMultiplicityBits(unsigned alctBits)
Definition: CSCMotherboard.cc:711
CSCUpgradeMotherboard::sortLCTsByQuality
static bool sortLCTsByQuality(const CSCCorrelatedLCTDigi &, const CSCCorrelatedLCTDigi &)
Definition: CSCUpgradeMotherboard.cc:299
MCScenario_CRAFT1_22X.sorter
def sorter(a, b)
Definition: MCScenario_CRAFT1_22X.py:97
CSCUpgradeMotherboard::allLCTs
LCTContainer allLCTs
Definition: CSCUpgradeMotherboard.h:94
ME1Ag
Definition: CSCUpgradeMotherboardLUT.h:12
CSCALCTDigi
Definition: CSCALCTDigi.h:17
CSCMotherboard::alct_trig_enable
unsigned int alct_trig_enable
Definition: CSCMotherboard.h:98
CSCUpgradeMotherboard::setPrefIndex
void setPrefIndex()
Definition: CSCUpgradeMotherboard.cc:314
Odd
Definition: CSCUpgradeMotherboardLUT.h:13
CSCConstants::MAX_CLCT_TBINS
Definition: CSCConstants.h:63
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
edm::ParameterSet::getParameter
T getParameter(std::string const &) const
Definition: ParameterSet.h:303
CSCBaseboard::cscId_
CSCDetId cscId_
Definition: CSCBaseboard.h:57
CSCALCTDigi::isValid
bool isValid() const
check ALCT validity (1 - valid ALCT)
Definition: CSCALCTDigi.h:40
CSCMotherboard::clct_to_alct
bool clct_to_alct
Definition: CSCMotherboard.h:115
CSCUpgradeMotherboard::debug_luts
bool debug_luts
Definition: CSCUpgradeMotherboard.h:112
mps_fire.result
result
Definition: mps_fire.py:311
LogTrace
#define LogTrace(id)
Definition: MessageLogger.h:234
CSCMotherboard::match_trig_enable
unsigned int match_trig_enable
Definition: CSCMotherboard.h:98
Even
Definition: CSCUpgradeMotherboardLUT.h:13
c
auto & c
Definition: CAHitNtupletGeneratorKernelsImpl.h:46
CSCCorrelatedLCTDigi::getQuality
uint16_t getQuality() const
return the Quality
Definition: CSCCorrelatedLCTDigi.h:58
CSCUpgradeMotherboard::max_lcts
unsigned int max_lcts
Definition: CSCUpgradeMotherboard.h:106
d1
static constexpr float d1
Definition: L1EGammaCrystalsEmulatorProducer.cc:85
ME21
Definition: CSCUpgradeMotherboardLUT.h:12
ME1B
Definition: CSCUpgradeMotherboardLUT.h:12
CSCBaseboard::infoV
int infoV
Definition: CSCBaseboard.h:63
CSCBaseboard::theRing
unsigned theRing
Definition: CSCBaseboard.h:47