5 unsigned sector,
unsigned subsector,
9 , maxDeltaBXPad_(tmbParams_.getParameter<
int>(
"maxDeltaBXPad"))
10 , maxDeltaBXCoPad_(tmbParams_.getParameter<
int>(
"maxDeltaBXCoPad"))
11 , useOldLCTDataFormat_(tmbParams_.getParameter<
bool>(
"useOldLCTDataFormat"))
12 , promoteALCTGEMpattern_(tmbParams_.getParameter<
bool>(
"promoteALCTGEMpattern"))
13 , promoteALCTGEMquality_(tmbParams_.getParameter<
bool>(
"promoteALCTGEMquality"))
14 , doLCTGhostBustingWithGEMs_(tmbParams_.getParameter<
bool>(
"doLCTGhostBustingWithGEMs"))
51 run(wiredc, compdc, gemPads.get());
59 for (
const auto& ch : superChamber->chambers()) {
60 for (
const auto& roll : ch->etaPartitions()) {
62 auto pads_in_det = gemPads->get(roll_id);
63 for (
auto pad = pads_in_det.first; pad != pads_in_det.second; ++pad) {
67 pads_[bx].emplace_back(roll_id.rawId(), *pad);
126 int pattern = 0,
quality = 0, bx = 0, keyStrip = 0, keyWG = 0, bend = 0;
131 LogTrace(
"CSCGEMCMotherboard") <<
"Warning!!! either ALCT or CLCT not valid, return invalid LCT \n";
167 keyStrip = mymap1[gem2.
pad(2) - 1];
181 keyWG = mymap2[gem2.
roll()];
215 for (
unsigned i=0;
i<mymap.size();
i++) {
217 if ((
i < 10)
or (
i > 15))
continue;
218 if ((mymap[
i].
first <= roll) and (roll <= mymap[
i].
second))
return true;
246 return p.second.roll();
262 return 0.5*(p.
pad(1) + p.
pad(2));
279 LogTrace(
"CSCGEMMotherboard") <<
"------------------------------------------------------------------------" << std::endl;
280 LogTrace(
"CSCGEMMotherboard") <<
"* GEM trigger pads: " << std::endl;
282 for (
int bx = bx_start; bx <= bx_stop; bx++) {
283 const auto& in_pads =
pads_[bx];
284 LogTrace(
"CSCGEMMotherboard") <<
"N(pads) BX " << bx <<
" : " << in_pads.size() << std::endl;
286 for (
const auto& pad : in_pads){
287 LogTrace(
"CSCGEMMotherboard") <<
"\tdetId " <<
GEMDetId(pad.first) <<
", pad = " << pad.second;
288 const auto& roll_id(
GEMDetId(pad.first));
291 LogTrace(
"CSCGEMMotherboard") <<
" (in overlap)" << std::endl;
293 LogTrace(
"CSCGEMMotherboard") << std::endl;
301 LogTrace(
"CSCGEMMotherboard") <<
"------------------------------------------------------------------------" << std::endl;
302 LogTrace(
"CSCGEMMotherboard") <<
"* GEM trigger coincidence pads: " << std::endl;
304 for (
int bx = bx_start; bx <= bx_stop; bx++) {
305 const auto& in_pads =
coPads_[bx];
306 LogTrace(
"CSCGEMMotherboard") <<
"N(copads) BX " << bx <<
" : " << in_pads.size() << std::endl;
308 for (
const auto& pad : in_pads){
309 LogTrace(
"CSCGEMMotherboard") <<
"\tdetId " <<
GEMDetId(pad.first) <<
", pad = " << pad.second;
310 const auto& roll_id(
GEMDetId(pad.first));
313 else LogTrace(
"CSCGEMMotherboard") << std::endl;
327 return LCT_Quality::NO_CLCT;
331 return LCT_Quality::NO_ALCT;
343 return LCT_Quality::CLCT_LAYER_TRIGGER;
363 return LCT_Quality::MARGINAL_ANODE_CATHODE;
367 return LCT_Quality::HQ_ANODE_MARGINAL_CATHODE;
371 return LCT_Quality::HQ_CATHODE_MARGINAL_ANODE;
374 else if ( a4 && c4) {
377 return LCT_Quality::HQ_ACCEL_ALCT;
385 return LCT_Quality::HQ_PATTERN_2_3;
388 return LCT_Quality::HQ_PATTERN_4_5;
391 return LCT_Quality::HQ_PATTERN_6_7;
394 return LCT_Quality::HQ_PATTERN_8_9;
397 return LCT_Quality::HQ_PATTERN_10;
401 <<
"+++ findQuality: Unexpected CLCT pattern id = " 413 template <>
const matchesBX<GEMPadDigi>&
414 CSCGEMMotherboard::getPads<GEMPadDigi>()
const 419 template <>
const matchesBX<GEMCoPadDigi>&
420 CSCGEMMotherboard::getPads<GEMCoPadDigi>()
const 426 int CSCGEMMotherboard::getMaxDeltaBX<GEMPadDigi>()
const 432 int CSCGEMMotherboard::getMaxDeltaBX<GEMCoPadDigi>()
const 438 int CSCGEMMotherboard::getLctTrigEnable<CSCALCTDigi>()
const 444 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
const unsigned theTrigChamber
bool isValid() const
check ALCT validity (1 - valid ALCT)
GEMCoPadDigiIdsBX coPads_
CSCCorrelatedLCTDigi constructLCTsGEM(const CSCALCTDigi &alct, const GEMCoPadDigi &gem, enum CSCPart, int i) const
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
int getStripType() const
return striptype
std::vector< GEMCoPadDigi > gemCoPadV
int getBend() const
return bend
bool promoteALCTGEMpattern_
U second(std::pair< T, U > const &p)
bool promoteALCTGEMquality_
match< GEMPadDigi > GEMPadDigiId
bool promoteCLCTGEMquality_
const unsigned theStation
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)
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
edm::ParameterSet tmbParams_
int getQuality() const
return quality of a pattern
int getAccelerator() const
int getPattern() const
return pattern
MuonDigiCollection< GEMDetId, GEMPadDigi > GEMPadDigiCollection
GEMPadDigi second() const
unsigned int encodePattern(const int ptn, const int highPt) const
unsigned int alct_trig_enable
virtual const CSCGEMMotherboardLUT * getLUT() const =0
std::unique_ptr< CSCAnodeLCTProcessor > alct
std::unique_ptr< CSCCathodeLCTProcessor > clct
~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