10 maxDeltaBXPad_(tmbParams_.getParameter<
int>(
"maxDeltaBXPad")),
11 maxDeltaBXCoPad_(tmbParams_.getParameter<
int>(
"maxDeltaBXCoPad")),
12 useOldLCTDataFormat_(tmbParams_.getParameter<
bool>(
"useOldLCTDataFormat")),
13 promoteALCTGEMpattern_(tmbParams_.getParameter<
bool>(
"promoteALCTGEMpattern")),
14 promoteALCTGEMquality_(tmbParams_.getParameter<
bool>(
"promoteALCTGEMquality")),
15 doLCTGhostBustingWithGEMs_(tmbParams_.getParameter<
bool>(
"doLCTGhostBustingWithGEMs")) {
44 run(wiredc, compdc, gemPads.get());
50 for (
const auto& ch : superChamber->chambers()) {
51 for (
const auto& roll : ch->etaPartitions()) {
53 auto pads_in_det = gemPads->get(roll_id);
54 for (
auto pad = pads_in_det.first; pad != pads_in_det.second; ++pad) {
58 pads_[
bx].emplace_back(roll_id.rawId(), *pad);
110 LogTrace(
"CSCGEMCMotherboard") <<
"Warning!!! either ALCT or CLCT not valid, return invalid LCT \n";
159 keyStrip = mymap1[gem2.
pad(2) - 1];
186 keyWG = mymap2[gem2.
roll()];
196 LogTrace(
"CSCGEMCMotherboard") <<
"Warning!!! wiregroup and strip pair are not crossing each other" 197 <<
" detid " <<
cscId_ <<
" with wiregroup " << keyWG <<
"keyStrip " << keyStrip
224 for (
unsigned i = 0;
i < mymap.size();
i++) {
226 if ((
i < 10)
or (
i > 15))
255 return 0.5 * (p.
pad(1) + p.
pad(2));
264 return 0.5 * (mymap[keyStrip].first + mymap[keyStrip].second);
273 LogTrace(
"CSCGEMMotherboard") <<
"------------------------------------------------------------------------" 275 LogTrace(
"CSCGEMMotherboard") <<
"* GEM trigger pads: " << std::endl;
277 for (
int bx = bx_start;
bx <= bx_stop;
bx++) {
278 const auto& in_pads =
pads_[
bx];
279 LogTrace(
"CSCGEMMotherboard") <<
"N(pads) BX " <<
bx <<
" : " << in_pads.size() << std::endl;
281 for (
const auto& pad : in_pads) {
282 LogTrace(
"CSCGEMMotherboard") <<
"\tdetId " <<
GEMDetId(pad.first) <<
", pad = " << pad.second;
283 const auto& roll_id(
GEMDetId(pad.first));
286 LogTrace(
"CSCGEMMotherboard") <<
" (in overlap)" << std::endl;
288 LogTrace(
"CSCGEMMotherboard") << std::endl;
294 LogTrace(
"CSCGEMMotherboard") <<
"------------------------------------------------------------------------" 296 LogTrace(
"CSCGEMMotherboard") <<
"* GEM trigger coincidence pads: " << std::endl;
298 for (
int bx = bx_start;
bx <= bx_stop;
bx++) {
300 LogTrace(
"CSCGEMMotherboard") <<
"N(copads) BX " <<
bx <<
" : " << in_pads.size() << std::endl;
302 for (
const auto& pad : in_pads) {
303 LogTrace(
"CSCGEMMotherboard") <<
"\tdetId " <<
GEMDetId(pad.first) <<
", pad = " << pad.second;
304 const auto& roll_id(
GEMDetId(pad.first));
307 LogTrace(
"CSCGEMMotherboard") <<
" (in overlap)" << std::endl;
309 LogTrace(
"CSCGEMMotherboard") << std::endl;
319 return LCT_Quality::NO_CLCT;
323 return LCT_Quality::NO_ALCT;
335 return LCT_Quality::CLCT_LAYER_TRIGGER;
357 return LCT_Quality::MARGINAL_ANODE_CATHODE;
361 return LCT_Quality::HQ_ANODE_MARGINAL_CATHODE;
365 return LCT_Quality::HQ_CATHODE_MARGINAL_ANODE;
370 return LCT_Quality::HQ_ACCEL_ALCT;
378 return LCT_Quality::HQ_PATTERN_2_3;
381 return LCT_Quality::HQ_PATTERN_4_5;
384 return LCT_Quality::HQ_PATTERN_6_7;
387 return LCT_Quality::HQ_PATTERN_8_9;
390 return LCT_Quality::HQ_PATTERN_10;
395 <<
"+++ findQuality: Unexpected CLCT pattern id = " <<
pattern <<
"+++\n";
406 const matchesBX<GEMPadDigi>& CSCGEMMotherboard::getPads<GEMPadDigi>()
const {
411 const matchesBX<GEMCoPadDigi>& CSCGEMMotherboard::getPads<GEMCoPadDigi>()
const {
416 int CSCGEMMotherboard::getMaxDeltaBX<GEMPadDigi>()
const {
421 int CSCGEMMotherboard::getMaxDeltaBX<GEMCoPadDigi>()
const {
426 int CSCGEMMotherboard::getLctTrigEnable<CSCALCTDigi>()
const {
431 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
CSCCLCTDigi getBXShiftedCLCT(const CSCCLCTDigi &) const
bool isValid() const
check ALCT validity (1 - valid ALCT)
GEMCoPadDigiIdsBX coPads_
constexpr uint32_t rawId() const
get the raw id
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
std::vector< int > get_gem_roll_to_csc_wg(Parity par) const
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
std::pair< int, int > getRolls(const CSCALCTDigi &) 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
virtual std::vector< std::pair< int, int > > get_csc_hs_to_gem_pad(Parity par, enum CSCPart) 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