11 { 0,2.441},{ 1,2.435},{ 2,2.425},{ 3,2.414},{ 4,2.404},{ 5,2.394},{ 6,2.384},{ 7,2.374},
12 { 8,2.365},{ 9,2.355},{10,2.346},{11,2.336},{12,2.327},{13,2.317},{14,2.308},{15,2.299},
13 {16,2.290},{17,2.281},{18,2.273},{19,2.264},{20,2.255},{21,2.247},{22,2.238},{23,2.230},
14 {24,2.221},{25,2.213},{26,2.205},{27,2.197},{28,2.189},{29,2.181},{30,2.173},{31,2.165},
15 {32,2.157},{33,2.149},{34,2.142},{35,2.134},{36,2.127},{37,2.119},{38,2.112},{39,2.104},
16 {40,2.097},{41,2.090},{42,2.083},{43,2.075},{44,2.070},{45,2.059},{46,2.054},{47,2.047},
17 {48,2.041},{49,2.034},{50,2.027},{51,2.020},{52,2.014},{53,2.007},{54,2.000},{55,1.994},
18 {56,1.988},{57,1.981},{58,1.975},{59,1.968},{60,1.962},{61,1.956},{62,1.950},{63,1.944},
19 {64,1.937},{65,1.931},{66,1.924},{67,1.916},{68,1.909},{69,1.902},{70,1.895},{71,1.888},
20 {72,1.881},{73,1.875},{74,1.868},{75,1.861},{76,1.854},{77,1.848},{78,1.841},{79,1.835},
21 {80,1.830},{81,1.820},{82,1.815},{83,1.809},{84,1.803},{85,1.796},{86,1.790},{87,1.784},
22 {88,1.778},{89,1.772},{90,1.766},{91,1.760},{92,1.754},{93,1.748},{94,1.742},{95,1.736},
23 {96,1.731},{97,1.725},{98,1.719},{99,1.714},{100,1.708},{101,1.702},{102,1.697},{103,1.691},
24 {104,1.686},{105,1.680},{106,1.675},{107,1.670},{108,1.664},{109,1.659},{110,1.654},{111,1.648},
28 { 0,2.412},{ 1,2.405},{ 2,2.395},{ 3,2.385},{ 4,2.375},{ 5,2.365},{ 6,2.355},{ 7,2.345},
29 { 8,2.335},{ 9,2.325},{10,2.316},{11,2.306},{12,2.297},{13,2.288},{14,2.279},{15,2.270},
30 {16,2.261},{17,2.252},{18,2.243},{19,2.234},{20,2.226},{21,2.217},{22,2.209},{23,2.200},
31 {24,2.192},{25,2.184},{26,2.175},{27,2.167},{28,2.159},{29,2.151},{30,2.143},{31,2.135},
32 {32,2.128},{33,2.120},{34,2.112},{35,2.105},{36,2.097},{37,2.090},{38,2.082},{39,2.075},
33 {40,2.068},{41,2.060},{42,2.053},{43,2.046},{44,2.041},{45,2.030},{46,2.025},{47,2.018},
34 {48,2.011},{49,2.005},{50,1.998},{51,1.991},{52,1.985},{53,1.978},{54,1.971},{55,1.965},
35 {56,1.958},{57,1.952},{58,1.946},{59,1.939},{60,1.933},{61,1.927},{62,1.921},{63,1.915},
36 {64,1.909},{65,1.902},{66,1.895},{67,1.887},{68,1.880},{69,1.873},{70,1.866},{71,1.859},
37 {72,1.853},{73,1.846},{74,1.839},{75,1.832},{76,1.826},{77,1.819},{78,1.812},{79,1.806},
38 {80,1.801},{81,1.792},{82,1.787},{83,1.780},{84,1.774},{85,1.768},{86,1.762},{87,1.756},
39 {88,1.750},{89,1.744},{90,1.738},{91,1.732},{92,1.726},{93,1.720},{94,1.714},{95,1.708},
40 {96,1.702},{97,1.697},{98,1.691},{99,1.685},{100,1.680},{101,1.674},{102,1.669},{103,1.663},
41 {104,1.658},{105,1.652},{106,1.647},{107,1.642},{108,1.636},{109,1.631},{110,1.626},{111,1.621},
49 {3, 0.01832829, 0.01003643 },
50 {5, 0.01095490, 0.00631625 },
51 {7, 0.00786026, 0.00501017 },
52 {10, 0.00596349, 0.00414560 },
53 {15, 0.00462411, 0.00365550 },
54 {20, 0.00435298, 0.00361550 },
55 {30, 0.00465160, 0.00335700 },
56 {40, 0.00372145, 0.00366262 }
60 unsigned sector,
unsigned subsector,
69 <<
"+++ Upgrade CSCMotherboardME21GEM constructed while isSLHC is not set! +++\n";
90 pref[
m-1] = pref[0] -
m/2;
91 pref[
m] = pref[0] +
m/2;
149 for (
int i=0;
i<2;
i++)
170 <<
"+++ run() called for non-existing ALCT/CLCT processor! +++ \n";
182 bool gemGeometryAvailable(
false);
183 if (
gem_g !=
nullptr) {
185 <<
"+++ run() called for GEM-CSC integrated trigger! +++ \n";
186 gemGeometryAvailable =
true;
192 const CSCDetId csc_id(cscChamber->id());
197 if ((not gemGeometryAvailable)
or (gemGeometryAvailable and (
gem_g->
stations()).
size()==2)) {
199 <<
"+++ run() called for GEM-CSC integrated trigger without valid GE21 geometry! +++ \n";
204 const CSCLayer* keyLayer(cscChamber->layer(3));
208 const int region((
theEndcap == 1) ? 1: -1);
209 const bool isEven(csc_id.chamber()%2==0);
210 const GEMDetId gem_id_long(region, 1, 2, 0, csc_id.chamber(), 0);
217 std::cout<<
"csc id "<< csc_id <<
" "<< csc_id.rawId() << (isEven ?
" even" :
" odd") <<
" chamber" << csc_id.chamber()<<std::endl;
218 for (
const auto&
p : gemRollToEtaLimits_) {
219 std::cout <<
"pad "<<
p.first <<
" min eta " << (
p.second).
first <<
" max eta " << (
p.second).second << std::endl;
224 const int numberOfWG(keyLayerGeometry->numberOfWireGroups());
225 for (
int i = 0;
i< numberOfWG; ++
i){
241 std::cout <<
"WG "<<
p.first <<
" GEM roll " <<
p.second << std::endl;
245 const auto& randRoll(gemChamberLong->chamber(1)->etaPartition(2));
247 const int nGEMPads(randRoll->npads());
248 for (
int i = 1;
i<= nGEMPads; ++
i){
252 const float strip(keyLayerGeometry->strip(lpCSC));
257 std::cout <<
"detId " << csc_id << std::endl;
259 std::cout <<
"GEM Pad "<<
p.first <<
" CSC HS : " <<
p.second << std::endl;
263 auto nStrips(keyLayerGeometry->numberOfStrips());
269 for (
int i=0;
i<nStrips*2; ++
i){
270 std::vector<int>
temp;
275 temp.push_back(
p.first);
296 std::cout <<
"detId " << csc_id << std::endl;
298 std::cout <<
"CSC HS "<<
p.first <<
" GEM Pad low " << (
p.second).
first <<
" GEM Pad high " << (
p.second).second << std::endl;
315 int used_clct_mask[20];
316 for (
int c=0;
c<20;++
c) used_clct_mask[
c]=0;
318 const bool hasPads(!
pads_.empty());
323 if (
alct->bestALCT[bx_alct].isValid())
331 std::cout <<
"========================================================================" << std::endl;
332 std::cout <<
"ALCT-CLCT matching in ME2/1 chamber: " << cscChamber->id() << std::endl;
333 std::cout <<
"------------------------------------------------------------------------" << std::endl;
334 std::cout <<
"+++ Best ALCT Details: " <<
alct->bestALCT[bx_alct] << std::endl;
335 if (not
alct->secondALCT[bx_alct].isValid())
336 std::cout <<
"+++ Second ALCT INVALID" << std::endl;
338 std::cout <<
"+++ Second ALCT Details: " <<
alct->secondALCT[bx_alct] << std::endl;
344 std::cout <<
"------------------------------------------------------------------------" << std::endl;
345 std::cout <<
"Attempt ALCT-CLCT matching in ME2/1 in bx range: [" << bx_clct_start <<
"," << bx_clct_stop <<
"]" << std::endl;
349 int nSuccesFulMatches = 0;
350 for (
int bx_clct = bx_clct_start; bx_clct <= bx_clct_stop; bx_clct++)
354 if (
clct->bestCLCT[bx_clct].isValid())
357 const int quality(
clct->bestCLCT[bx_clct].getQuality());
359 const bool lowQualityALCT(
alct->bestALCT[bx_alct].getQuality() == 0);
361 const bool lowQuality(
quality<4
or lowQualityALCT);
370 matchingPads.reserve(matchingPads11.size() +
371 matchingPads12.size() +
372 matchingPads21.size() +
373 matchingPads22.size()
385 matchingCoPads.reserve(matchingCoPads11.size() +
386 matchingCoPads12.size() +
387 matchingCoPads21.size() +
388 matchingCoPads22.size()
396 int nFound(!matchingPads.empty());
397 const bool clctInEdge(
clct->bestCLCT[bx_clct].getKeyStrip() < 5
or clct->bestCLCT[bx_clct].getKeyStrip() > 155);
413 std::cout <<
"+++ Best CLCT Details: " <<
clct->bestCLCT[bx_clct] << std::endl;
414 if (not
clct->secondCLCT[bx_clct].isValid())
415 std::cout <<
"+++ Second CLCT INVALID" << std::endl;
417 std::cout <<
"+++ Second CLCT Details: " <<
clct->secondCLCT[bx_clct] << std:: endl;
421 int nFound(!matchingCoPads.empty());
422 if (nFound != 0 and bx_alct == 6 and bx_clct != 6){
430 int mbx = bx_clct-bx_clct_start;
433 clct->bestCLCT[bx_clct],
clct->secondCLCT[bx_clct],
434 allLCTs[bx_alct][mbx][0],
allLCTs[bx_alct][mbx][1], matchingPads, matchingCoPads);
437 std::cout <<
"Successful ALCT-CLCT match in ME21: bx_alct = " << bx_alct
438 <<
"; match window: [" << bx_clct_start <<
"; " << bx_clct_stop
439 <<
"]; bx_clct = " << bx_clct << std::endl;
440 std::cout <<
"+++ Best LCT Details: " <<
allLCTs[bx_alct][mbx][0] << std::endl;
441 if (not
allLCTs[bx_alct][mbx][1].isValid())
442 std::cout <<
"+++ Second LCT INVALID" << std::endl;
444 std::cout <<
"+++ Second LCT Details: " <<
allLCTs[bx_alct][mbx][1] << std:: endl;
446 if (
allLCTs[bx_alct][mbx][0].isValid()) {
447 used_clct_mask[bx_clct] += 1;
453 if (nSuccesFulMatches==0)
456 if (nSuccesFulMatches==0 and bx_alct==6)
460 int nSuccesFulGEMMatches = 0;
462 std::cout <<
"Check for ALCT-GEM copad match in ME21" << std::endl;
463 for (
int bx_gem = bx_copad_start; bx_gem <= bx_copad_stop; bx_gem++) {
469 copads.reserve(copads1.size() +
473 std::cout <<
"CoPad1 size "<< copads1.size() <<
" CoPad2 size "<< copads2.size() << std::endl;
478 if (copads.empty()) {
479 std::cout <<
"Unsuccessful ALCT-GEM CoPad match in ME21: bx_alct = " << bx_alct << std::endl << std::endl;
480 std::cout <<
"------------------------------------------------------------------------" << std::endl << std::endl;
485 copads.at(0).second,
allLCTs[bx_alct][0][0],
allLCTs[bx_alct][0][1]);
487 std::cout <<
"Successful ALCT-GEM CoPad match in ME21: bx_alct = " << bx_alct << std::endl << std::endl;
488 std::cout <<
"+++ Best LCT Details: " <<
allLCTs[bx_alct][0][0] << std::endl;
489 if (not
allLCTs[bx_alct][0][1].isValid())
490 std::cout <<
"+++ Second LCT INVALID" << std::endl;
492 std::cout <<
"+++ Second LCT Details: " <<
allLCTs[bx_alct][0][1] << std:: endl;
493 std::cout <<
"------------------------------------------------------------------------" << std::endl << std::endl;
495 if (
allLCTs[bx_alct][0][0].isValid()) {
496 ++nSuccesFulGEMMatches;
503 std::cout <<
"========================================================================" << std::endl;
504 std::cout <<
"Summary: nSuccesFulMatches " << nSuccesFulMatches <<
" nSuccesFulGEMMatches " << nSuccesFulGEMMatches <<
" in bx " << bx_alct << std::endl;
505 if (nSuccesFulMatches>1)
506 std::cout <<
"Too many successful ALCT-CLCT matches in ME21: " << nSuccesFulMatches
507 <<
", CSCDetId " << cscChamber->id()
508 <<
", bx_alct = " << bx_alct
509 <<
"; match window: [" << bx_clct_start <<
"; " << bx_clct_stop <<
"]" << std::endl;
510 else if (nSuccesFulMatches==1)
511 std::cout <<
"1 successful ALCT-CLCT match in ME21: " 512 <<
" CSCDetId " << cscChamber->id()
513 <<
", bx_alct = " << bx_alct
514 <<
"; match window: [" << bx_clct_start <<
"; " << bx_clct_stop <<
"]" << std::endl;
515 else if (nSuccesFulGEMMatches==1)
516 std::cout <<
"1 successful ALCT-GEM match in ME21: " 517 <<
" CSCDetId " << cscChamber->id()
518 <<
", bx_alct = " << bx_alct
519 <<
"; match window: [" << bx_clct_start <<
"; " << bx_clct_stop <<
"]" << std::endl;
521 std::cout <<
"Unsuccessful ALCT-CLCT match in ME21: " 522 <<
"CSCDetId " << cscChamber->id()
523 <<
", bx_alct = " << bx_alct
524 <<
"; match window: [" << bx_clct_start <<
"; " << bx_clct_stop <<
"]" << std::endl;
535 std::cout <<
"========================================================================" << std::endl;
536 std::cout <<
"GEM-CLCT matching in ME2/1 chamber: "<< cscChamber->id()<<
"in bx:"<<bx_alct<<std::endl;
537 std::cout <<
"------------------------------------------------------------------------" << std::endl;
540 int nSuccesFulMatches = 0;
545 if (
clct->bestCLCT[bx_alct].isValid())
547 const int quality(
clct->bestCLCT[bx_alct].getQuality());
553 int mbx =
std::abs(
clct->bestCLCT[bx_alct].getBX()-bx_alct);
559 std::cout <<
"Successful GEM-CLCT match in ME21: bx_alct = " << bx_alct <<std::endl;
562 std::cout <<
"+++ Best CLCT Details: " <<
clct->bestCLCT[bx_alct] << std::endl;
563 if (not
clct->secondCLCT[bx_alct].isValid())
564 std::cout <<
"+++ Second CLCT INVALID" << std::endl;
566 std::cout <<
"+++ Second CLCT Details: " <<
clct->secondCLCT[bx_alct] << std:: endl;
568 if (
allLCTs[bx_gem][mbx][0].isValid()) {
569 used_clct_mask[bx_alct] += 1;
578 std::cout <<
"========================================================================" << std::endl;
579 std::cout <<
"Counting the LCTs" << std::endl;
580 std::cout <<
"========================================================================" << std::endl;
589 for (
int i=0;
i<2;
i++)
591 int cbx = bx + mbx - match_trig_window_size/2;
596 <<
"LCT"<<
i+1<<
" "<<bx<<
"/"<<cbx<<
": "<<
allLCTs[bx][mbx][
i]<<std::endl;
605 for (
int i=0;
i<2;
i++)
616 for (
int i=0;
i<2;
i++)
618 int cbx = bx + mbx - match_trig_window_size/2;
623 <<
"LCT"<<
i+1<<
" "<<bx<<
"/"<<cbx<<
": "<<
allLCTs[bx][mbx][
i]<<std::endl;
627 <<
"bx "<<bx<<
" nnLCT:"<<n<<
" "<<n<<std::endl;
635 std::cout <<
"========================================================================" << std::endl;
636 std::cout <<
"Counting the final LCTs" << std::endl;
637 std::cout <<
"========================================================================" << std::endl;
647 std::cout <<
"Summarize LCTs, ME21 nLCT "<< n << std::endl;
648 std::cout <<
"========================================================================" << std::endl;
662 std::vector<CSCCorrelatedLCTDigi>
result;
664 std::vector<CSCCorrelatedLCTDigi> tmpV;
667 result.insert(result.end(), tmpV.begin(), tmpV.end());
671 result.insert(result.end(), tmpV.begin(), tmpV.end());
675 for (
int i=0;
i<2;
i++) {
676 if (
allLCTs[bx][mbx][
i].isValid()) {
677 result.push_back(
allLCTs[bx][mbx][
i]);
689 std::vector<CSCCorrelatedLCTDigi> LCTs;
692 for (
int i=0;
i<2;
i++)
694 LCTs.push_back(
allLCTs[bx][mbx][
i]);
706 std::vector<CSCCorrelatedLCTDigi> LCTs;
709 for (
int i=0;
i<2;
i++)
711 LCTs.push_back(
allLCTs[bx][mbx][
i]);
730 const int nPads(!pads.empty());
731 const int nCoPads(!copads.empty());
732 const bool hasPads(nPads!=0);
733 const bool hasCoPads(nCoPads!=0);
735 bool anodeBestValid = bestALCT.
isValid();
736 bool anodeSecondValid = secondALCT.
isValid();
737 bool cathodeBestValid = bestCLCT.
isValid();
738 bool cathodeSecondValid = secondCLCT.
isValid();
740 if (anodeBestValid and !anodeSecondValid) secondALCT = bestALCT;
741 if (!anodeBestValid and anodeSecondValid) bestALCT = secondALCT;
742 if (cathodeBestValid and !cathodeSecondValid) secondCLCT = bestCLCT;
743 if (!cathodeBestValid and cathodeSecondValid) bestCLCT = secondCLCT;
755 if (((secondALCT != bestALCT)
or (secondCLCT != bestCLCT)) and
772 bool anodeBestValid = bestALCT.
isValid();
773 bool anodeSecondValid = secondALCT.
isValid();
775 if (anodeBestValid and !anodeSecondValid) secondALCT = bestALCT;
776 if (!anodeBestValid and anodeSecondValid) bestALCT = secondALCT;
806 bool cathodeBestValid = bestCLCT.
isValid();
807 bool cathodeSecondValid = secondCLCT.
isValid();
809 if (cathodeBestValid and !cathodeSecondValid) secondCLCT = bestCLCT;
810 if (!cathodeBestValid and cathodeSecondValid) bestCLCT = secondCLCT;
848 int bx = alct.
getBX();
857 return CSCCorrelatedLCTDigi(0, 1, quality, wg, keyStrip, pattern, 0, bx, 0, 0, 0,
theTrigChamber);
875 return CSCCorrelatedLCTDigi(0, 1, quality, wg, keyStrip, pattern, 0, bx, 0, 0, 0,
theTrigChamber);
897 return CSCCorrelatedLCTDigi(0, 1, quality, wg, clct.
getKeyStrip(),
pattern, clct.
getBend(), bx, 0, 0, 0,
theTrigChamber);
913 return CSCCorrelatedLCTDigi(0, 1, quality, wg, 0, pattern, 0, bx, 0, 0, 0,
theTrigChamber);
919 bool hasPad,
bool hasCoPad)
936 thisLCT.setCLCT(cLCT);
945 bool hasPad,
bool hasCoPad)
968 if (hasPad) n_gem = 1;
969 if (hasCoPad) n_gem = 2;
973 if (!a4 && !c4) quality = 5;
974 else if ( a4 && !c4) quality = 6;
975 else if (!a4 && c4) quality = 7;
976 else if ( a4 && c4) {
985 else if (
pattern == 10) quality = 15;
988 <<
"+++ findQuality: Unexpected CLCT pattern id = " 999 std::map<int,std::pair<double,double> >
1002 std::map<int,std::pair<double,double> >
result;
1007 for(
int i = 1;
i<=
chamber->nEtaPartitions(); ++
i){
1008 auto roll(
chamber->etaPartition(
i));
1009 if (roll==
nullptr)
continue;
1010 const float half_striplength(roll->specs()->specificTopology().stripLength()/2.);
1011 const LocalPoint lp_top(0., half_striplength, 0.);
1012 const LocalPoint lp_bottom(0., -half_striplength, 0.);
1014 const GlobalPoint gp_bottom(roll->toGlobal(lp_bottom));
1015 result[
i] = std::make_pair(gp_top.eta(), gp_bottom.eta());
1023 for (
const auto& ch : superChamber->chambers()) {
1024 for (
const auto& roll : ch->etaPartitions()) {
1026 auto pads_in_det = gemPads->get(roll_id);
1027 for (
auto pad = pads_in_det.first; pad != pads_in_det.second; ++pad) {
1028 auto id_pad = std::make_pair(roll_id, *pad);
1031 pads_[bx].push_back(id_pad);
1043 auto detId1(
GEMDetId(region, 1, 2, 1, gemChamber, copad.roll()));
1044 auto detId2(
GEMDetId(region, 1, 2, 2, gemChamber, copad.roll()));
1054 const bool hasPads(!thePads.empty());
1056 std::cout <<
"------------------------------------------------------------------------" << std::endl;
1057 if (!iscopad)
std::cout <<
"* GEM trigger pads ["<< bx_start <<
","<< bx_stop <<
"]: " << std::endl;
1058 else std::cout <<
"* GEM trigger coincidence pads ["<< bx_start <<
","<< bx_stop <<
"]: " << std::endl;
1060 for (
int bx = bx_start; bx <= bx_stop; bx++) {
1063 std::vector<std::pair<unsigned int, GEMPadDigi> > in_pads = thePads[bx];
1064 if (!iscopad)
std::cout <<
"N(pads) BX " << bx <<
" : " << in_pads.size() << std::endl;
1065 else std::cout <<
"N(copads) BX " << bx <<
" : " << in_pads.size() << std::endl;
1067 for (
const auto& pad : in_pads){
1071 const auto& roll_id(
GEMDetId(pad.first));
1072 std::cout <<
"\t" << roll_id <<
", pad = " << pad.second.pad() <<
", BX = " << pad.second.bx() + 6 << std::endl;
1085 if (not clct.
isValid())
return result;
1090 int clct_bx = clct.
getBX();
1093 const bool debug(
false);
1094 if (debug)
std::cout <<
"CLCT lowpad " << lowPad <<
" highpad " << highPad <<
" delta pad " << deltaPad <<
" bx "<< clct_bx <<std::endl;
1095 for (
const auto&
p: pads){
1099 auto padRoll((
p.second).pad());
1101 if (debug)
std::cout <<
"Candidate GEMPad (CLCT): " <<
p.second << std::endl;
1102 if (
std::abs(clct_bx-pad_bx)>deltaBX)
continue;
1104 if (debug)
std::cout <<
"++Matches! " << std::endl;
1105 result.push_back(
p);
1106 if (first)
return result;
1117 if (not alct.
isValid())
return result;
1120 int alct_bx = alct.
getBX();
1122 const bool debug(
false);
1123 if (debug)
std::cout <<
"ALCT keyWG " << alct.
getKeyWG() <<
", roll " << alctRoll <<
" bx "<< alct_bx << std::endl;
1124 for (
const auto&
p: pads){
1130 if (debug)
std::cout <<
"Candidate GEMPad (ALCT): " <<
p.second << std::endl;
1131 if (
std::abs(alct_bx-pad_bx)>deltaBX)
continue;
1132 if (
std::abs(alctRoll - padRoll)>1)
continue;
1133 if (debug)
std::cout <<
"++Matches! " << std::endl;
1134 result.push_back(
p);
1135 if (first)
return result;
1143 bool isCoPad,
bool first)
1151 const bool debug(
false);
1152 if (debug)
std::cout <<
"-----------------------------------------------------------------------"<<std::endl;
1153 if (debug)
std::cout <<
"Finding common pads"<<std::endl;
1155 for (
const auto&
p : padsAlct){
1156 if (debug)
std::cout<<
"Candidate ALCT: " <<
p.first <<
" " <<
p.second << std::endl;
1157 for (
const auto&
q: padsClct){
1158 if (debug)
std::cout<<
"++Candidate CLCT: " <<
q.first <<
" " <<
q.second << std::endl;
1160 if ((
p.first !=
q.first)
or p.second !=
q.second)
continue;
1162 if (isCoPad)
std::cout <<
"++Matched copad" <<
GEMDetId(
p.first) <<
" " <<
p.second << std::endl;
1165 result.push_back(
p);
1166 if (first)
return result;
1169 if (debug)
std::cout <<
"-----------------------------------------------------------------------"<<std::endl;
1178 const float minEta((
p.second).first);
1179 const float maxEta((
p.second).second);
1182 if (minEta-0.00035 <= eta and eta <= maxEta+0.00035) {
int getQuality() const
return quality of a pattern (number of layers hit!)
std::vector< GEMCoPadDigi > readoutCoPads()
T getParameter(std::string const &) const
std::vector< CSCCorrelatedLCTDigi > getLCTs()
GEMPadsBX matchingGEMPads(const CSCCLCTDigi &cLCT, const GEMPadsBX &pads=GEMPadsBX(), bool isCopad=false, bool first=true)
unsigned int clct_trig_enable
CSCChamber * chamber(unsigned endcap, unsigned station, unsigned sector, unsigned subsector, unsigned tcscid) const
Return the CSCChamber for a corresponding endcap/station/sector/subsector/trigger cscid...
unsigned int findQualityGEM(const CSCALCTDigi &aLCT, const CSCCLCTDigi &cLCT, bool hasPad, bool hasCoPad)
std::unique_ptr< GEMCoPadProcessor > coPadProcessor
static bool sortByGEMDphi(const CSCCorrelatedLCTDigi &, const CSCCorrelatedLCTDigi &)
unsigned int match_trig_window_size
const unsigned theTrigChamber
bool isValid() const
check ALCT validity (1 - valid ALCT)
std::map< int, std::pair< double, double > > gemRollToEtaLimits_
bool promoteALCTGEMquality_
unsigned int tmb_cross_bx_algo
std::vector< CSCCLCTDigi > clctV
std::vector< CSCCorrelatedLCTDigi > sortLCTsByQuality(int bx)
bool promoteCLCTGEMquality_
int getStripType() const
return striptype
int deltaPad(int hs, int pad)
int getBend() const
return bend
bool dropLowQualityALCTsNoGEMs_
const unsigned theStation
int assignGEMRoll(double eta)
void retrieveGEMPads(const GEMPadDigiCollection *pads, unsigned id)
static CSCTriggerGeomManager * get()
static const double lut_wg_eta_odd[112][2]
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
const unsigned theSubsector
int getBX() const
return BX
unsigned int encodePattern(const int ptn, const int highPt)
Abs< T >::type abs(const T &t)
std::vector< GEMPadBX > GEMPadsBX
bool correctLCTtimingWithGEM_
bool isValid() const
check CLCT validity (1 - valid CLCT)
unsigned int match_trig_enable
unsigned int max_me21_lcts
int subdetId() const
get the contents of the subdetector field (not cast into any detector's numbering enum) ...
std::map< int, std::pair< double, double > > createGEMRollEtaLUT()
const GEMSuperChamber * superChamber(GEMDetId id) const
int getBX() const
return BX - five low bits of BXN counter tagged by the ALCT
int getQuality() const
return quality of a pattern
static const double lut_pt_vs_dphi_gemcsc[8][3]
int getAccelerator() const
void run(const CSCWireDigiCollection *wiredc, const CSCComparatorDigiCollection *compdc, const GEMPadDigiCollection *gemPads)
std::map< int, std::pair< int, int > > cscHsToGemPad_
int getPattern() const
return pattern
const GEMChamber * chamber(GEMDetId id) const
std::map< int, int > gemPadToCscHs_
bool buildLCTfromALCTandGEM_
CSCCorrelatedLCTDigi allLCTs[MAX_LCT_BINS][15][2]
const GEMGeometry * gem_g
unsigned int alct_trig_enable
bool buildLCTfromCLCTandGEM_
std::vector< GEMCoPadDigi > gemCoPadV
std::unique_ptr< CSCAnodeLCTProcessor > alct
void printGEMTriggerPads(int minBX, int maxBx, bool iscopad=false)
std::vector< CSCALCTDigi > alctV
CSCCorrelatedLCTDigi constructLCTsGEM(const CSCALCTDigi &alct, const GEMPadDigi &gem, bool oldDataFormat=false)
bool doLCTGhostBustingWithGEMs_
std::vector< CSCCorrelatedLCTDigi > sortLCTsByGEMDPhi(int bx)
bool dropLowQualityCLCTsNoGEMs_
std::unique_ptr< CSCCathodeLCTProcessor > clct
std::vector< CSCCorrelatedLCTDigi > readoutLCTs()
const std::vector< const GEMStation * > & stations() const
Return a vector of all GEM stations.
CSCMotherboardME21GEM(unsigned endcap, unsigned station, unsigned sector, unsigned subsector, unsigned chamber, const edm::ParameterSet &conf)
bool match_earliest_clct_me21_only
bool useOldLCTDataFormat_
Detector det() const
get the detector field from this detid
int maxDeltaPadCoPadEven_
void correlateLCTsGEM(CSCALCTDigi bestALCT, CSCALCTDigi secondALCT, GEMPadDigi gemPad, CSCCorrelatedLCTDigi &lct1, CSCCorrelatedLCTDigi &lct2)
std::map< int, int > cscWgToGemRoll_
int getKeyWG() const
return key wire group
static int chamberFromTriggerLabels(int TriggerSector, int TriggerSubSector, int station, int TriggerCSCID)
bool promoteALCTGEMpattern_
static bool sortByQuality(const CSCCorrelatedLCTDigi &, const CSCCorrelatedLCTDigi &)
~CSCMotherboardME21GEM() override
static const double lut_wg_eta_even[112][2]