4 unsigned sector,
unsigned subsector,
8 , maxDeltaBXPad_(tmbParams_.getParameter<
int>(
"maxDeltaBXPad"))
9 , maxDeltaBXCoPad_(tmbParams_.getParameter<
int>(
"maxDeltaBXCoPad"))
10 , useOldLCTDataFormat_(tmbParams_.getParameter<
bool>(
"useOldLCTDataFormat"))
11 , promoteALCTGEMpattern_(tmbParams_.getParameter<
bool>(
"promoteALCTGEMpattern"))
12 , promoteALCTGEMquality_(tmbParams_.getParameter<
bool>(
"promoteALCTGEMquality"))
13 , doLCTGhostBustingWithGEMs_(tmbParams_.getParameter<
bool>(
"doLCTGhostBustingWithGEMs"))
52 run(wiredc, compdc, gemPads.get());
60 for (
const auto& ch : superChamber->chambers()) {
61 for (
const auto& roll : ch->etaPartitions()) {
63 auto pads_in_det = gemPads->get(roll_id);
64 for (
auto pad = pads_in_det.first; pad != pads_in_det.second; ++pad) {
68 pads_[bx].emplace_back(roll_id.rawId(), *pad);
123 int pattern = 0,
quality = 0, bx = 0, keyStrip = 0, keyWG = 0, bend = 0, valid = 0;
128 LogTrace(
"CSCGEMCMotherboard") <<
"Warning!!! either ALCT or CLCT not valid, return invalid LCT \n";
177 keyStrip = mymap1[gem2.
pad(2) - 1];
205 keyWG = mymap2[gem2.
roll()];
215 LogTrace(
"CSCGEMCMotherboard") <<
"Warning!!! wiregroup and strip pair are not crossing each other" 216 <<
" detid "<<
cscId_ <<
" with wiregroup "<< keyWG <<
"keyStrip "<< keyStrip <<
" \n";
244 for (
unsigned i=0;
i<mymap.size();
i++) {
246 if ((
i < 10)
or (
i > 15))
continue;
247 if ((mymap[
i].
first <= roll) and (roll <= mymap[
i].
second))
return true;
275 return p.second.roll();
291 return 0.5*(p.
pad(1) + p.
pad(2));
301 return 0.5*(mymap[keyStrip].first + mymap[keyStrip].second);
313 LogTrace(
"CSCGEMMotherboard") <<
"------------------------------------------------------------------------" << std::endl;
314 LogTrace(
"CSCGEMMotherboard") <<
"* GEM trigger pads: " << std::endl;
316 for (
int bx = bx_start; bx <= bx_stop; bx++) {
317 const auto& in_pads =
pads_[bx];
318 LogTrace(
"CSCGEMMotherboard") <<
"N(pads) BX " << bx <<
" : " << in_pads.size() << std::endl;
320 for (
const auto& pad : in_pads){
321 LogTrace(
"CSCGEMMotherboard") <<
"\tdetId " <<
GEMDetId(pad.first) <<
", pad = " << pad.second;
322 const auto& roll_id(
GEMDetId(pad.first));
325 LogTrace(
"CSCGEMMotherboard") <<
" (in overlap)" << std::endl;
327 LogTrace(
"CSCGEMMotherboard") << std::endl;
335 LogTrace(
"CSCGEMMotherboard") <<
"------------------------------------------------------------------------" << std::endl;
336 LogTrace(
"CSCGEMMotherboard") <<
"* GEM trigger coincidence pads: " << std::endl;
338 for (
int bx = bx_start; bx <= bx_stop; bx++) {
339 const auto& in_pads =
coPads_[bx];
340 LogTrace(
"CSCGEMMotherboard") <<
"N(copads) BX " << bx <<
" : " << in_pads.size() << std::endl;
342 for (
const auto& pad : in_pads){
343 LogTrace(
"CSCGEMMotherboard") <<
"\tdetId " <<
GEMDetId(pad.first) <<
", pad = " << pad.second;
344 const auto& roll_id(
GEMDetId(pad.first));
347 else LogTrace(
"CSCGEMMotherboard") << std::endl;
361 return LCT_Quality::NO_CLCT;
365 return LCT_Quality::NO_ALCT;
377 return LCT_Quality::CLCT_LAYER_TRIGGER;
397 return LCT_Quality::MARGINAL_ANODE_CATHODE;
401 return LCT_Quality::HQ_ANODE_MARGINAL_CATHODE;
405 return LCT_Quality::HQ_CATHODE_MARGINAL_ANODE;
408 else if ( a4 && c4) {
411 return LCT_Quality::HQ_ACCEL_ALCT;
419 return LCT_Quality::HQ_PATTERN_2_3;
422 return LCT_Quality::HQ_PATTERN_4_5;
425 return LCT_Quality::HQ_PATTERN_6_7;
428 return LCT_Quality::HQ_PATTERN_8_9;
431 return LCT_Quality::HQ_PATTERN_10;
435 <<
"+++ findQuality: Unexpected CLCT pattern id = " 447 template <>
const matchesBX<GEMPadDigi>&
448 CSCGEMMotherboard::getPads<GEMPadDigi>()
const 453 template <>
const matchesBX<GEMCoPadDigi>&
454 CSCGEMMotherboard::getPads<GEMCoPadDigi>()
const 460 int CSCGEMMotherboard::getMaxDeltaBX<GEMPadDigi>()
const 466 int CSCGEMMotherboard::getMaxDeltaBX<GEMCoPadDigi>()
const 472 int CSCGEMMotherboard::getLctTrigEnable<CSCALCTDigi>()
const 478 int CSCGEMMotherboard::getLctTrigEnable<CSCCLCTDigi>()
const int getQuality() const
return quality of a pattern (number of layers hit!)
void retrieveGEMPads(const GEMPadDigiCollection *pads, unsigned id)
T getParameter(std::string const &) const
match< GEMCoPadDigi > GEMCoPadDigiId
unsigned int clct_trig_enable
std::unique_ptr< CSCUpgradeMotherboardLUTGenerator > generator_
CSCALCTDigi getBXShiftedALCT(const CSCALCTDigi &) const
bool isValid() const
check ALCT validity (1 - valid ALCT)
GEMCoPadDigiIdsBX coPads_
constexpr uint32_t rawId() const
get the raw id
std::vector< int > get_gem_roll_to_csc_wg(Parity par, int layer=1) const
int getBX(const GEMPadDigi &p) const
static constexpr TimeType INVALID
virtual bool doesWiregroupCrossStrip(int key_wg, int key_strip) const
std::vector< GEMCoPadDigi > gemCoPadV
int getBend() const
return bend
bool promoteALCTGEMpattern_
U second(std::pair< T, U > const &p)
bool promoteALCTGEMquality_
const unsigned theTrigChamber
match< GEMPadDigi > GEMPadDigiId
bool promoteCLCTGEMquality_
std::unique_ptr< GEMCoPadProcessor > coPadProcessor
virtual void run(const CSCWireDigiCollection *wiredc, const CSCComparatorDigiCollection *compdc, const GEMPadDigiCollection *gemPads)=0
unsigned int findQualityGEM(const CSCALCTDigi &, const CSCCLCTDigi &, int gemlayer) const
virtual std::vector< std::pair< int, int > > get_csc_hs_to_gem_pad(Parity par, enum CSCPart) const =0
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
void printGEMTriggerCoPads(int bx_start, int bx_stop, enum CSCPart)
unsigned int encodePattern(const int clctPattern) const
bool isValid() const
check CLCT validity (1 - valid CLCT)
int getRoll(const GEMPadDigiId &p) const
bool isGEMDetId(unsigned int) const
const GEMSuperChamber * superChamber(GEMDetId id) const
int getBX() const
return BX - five low bits of BXN counter tagged by the ALCT
bool isPadInOverlap(int roll) const
float getPad(const GEMPadDigi &) const
virtual std::vector< int > get_gem_pad_to_csc_hs(Parity par, enum CSCPart) const =0
CSCCorrelatedLCTDigi constructLCTsGEM(const CSCALCTDigi &alct, const GEMCoPadDigi &gem, int i) const
edm::ParameterSet tmbParams_
int getQuality() const
return quality of a pattern
int getAccelerator() const
int getPattern() const
return pattern
MuonDigiCollection< GEMDetId, GEMPadDigi > GEMPadDigiCollection
const unsigned theStation
GEMPadDigi second() const
unsigned int alct_trig_enable
virtual const CSCGEMMotherboardLUT * getLUT() const =0
~CSCGEMMotherboard() override
const GEMGeometry * gem_g
int getKeyWG() const
return key wire group
void printGEMTriggerPads(int bx_start, int bx_stop, enum CSCPart)
std::vector< std::pair< int, int > > get_csc_wg_to_gem_roll(Parity par, int layer=1) const
enum CSCPart getCSCPart(int keystrip) const