12 #include "boost/container/flat_set.hpp"
18 {0, 95},{0, 95},{0, 95},{0, 95},{0, 95},
19 {0, 95},{0, 95},{0, 95},{0, 95},{0, 95},
20 {0, 95},{0, 95},{0, 77},{0, 61},{0, 39},
21 {0, 22},{-1,-1},{-1,-1},{-1,-1},{-1,-1},
22 {-1,-1},{-1,-1},{-1,-1},{-1,-1},{-1,-1},
23 {-1,-1},{-1,-1},{-1,-1},{-1,-1},{-1,-1},
24 {-1,-1},{-1,-1},{-1,-1},{-1,-1},{-1,-1},
25 {-1,-1},{-1,-1},{-1,-1},{-1,-1},{-1,-1},
26 {-1,-1},{-1,-1},{-1,-1},{-1,-1},{-1,-1},
27 {-1,-1},{-1,-1},{-1,-1} };
30 {0, 31},{0, 31},{0, 31},{0, 31},{0, 31},
31 {0, 31},{0, 31},{0, 31},{0, 31},{0, 31},
32 {0, 31},{0, 31},{0, 31},{0, 31},{0, 31},
33 {0, 22},{-1,-1},{-1,-1},{-1,-1},{-1,-1},
34 {-1,-1},{-1,-1},{-1,-1},{-1,-1},{-1,-1},
35 {-1,-1},{-1,-1},{-1,-1},{-1,-1},{-1,-1},
36 {-1,-1},{-1,-1},{-1,-1},{-1,-1},{-1,-1},
37 {-1,-1},{-1,-1},{-1,-1},{-1,-1},{-1,-1},
38 {-1,-1},{-1,-1},{-1,-1},{-1,-1},{-1,-1},
39 {-1,-1},{-1,-1},{-1,-1} };
45 {-1,-1},{-1,-1},{-1,-1},{-1,-1},{-1,-1},
46 {-1,-1},{-1,-1},{-1,-1},{-1,-1},{-1,-1},
47 {100, 127},{73, 127},{47, 127},{22, 127},{0, 127},
48 {0, 127},{0, 127},{0, 127},{0, 127},{0, 127},
49 {0, 127},{0, 127},{0, 127},{0, 127},{0, 127},
50 {0, 127},{0, 127},{0, 127},{0, 127},{0, 127},
51 {0, 127},{0, 127},{0, 127},{0, 127},{0, 127},
52 {0, 127},{0, 127},{0, 127},{0, 127},{0, 127},
53 {0, 127},{0, 127},{0, 127},{0, 127},{0, 105},
54 {0, 93},{0, 78},{0, 63} };
72 {3, 0.03971647, 0.01710244},
73 {5, 0.02123785, 0.00928431},
74 {7, 0.01475524, 0.00650928},
75 {10, 0.01023299, 0.00458796},
76 {15, 0.00689220, 0.00331313},
77 {20, 0.00535176, 0.00276152},
78 {30, 0.00389050, 0.00224959},
79 {40, 0.00329539, 0.00204670}};
82 {0, 2.44005, 2.44688},
83 {1, 2.38863, 2.45035},
84 {2, 2.32742, 2.43077},
85 {3, 2.30064, 2.40389},
87 {5, 2.24925, 2.35231},
88 {6, 2.22458, 2.32754},
89 {7, 2.20054, 2.30339},
91 {9, 2.15425, 2.25689},
92 {10, 2.13194, 2.23447},
93 {11, 2.11016, 2.21258},
94 {12, 2.08889, 2.19119},
95 {13, 2.06809, 2.17028},
96 {14, 2.04777, 2.14984},
97 {15, 2.02788, 2.12983},
98 {16, 2.00843, 2.11025},
99 {17, 1.98938, 2.09108},
100 {18, 1.97073, 2.0723},
101 {19, 1.95246, 2.0539},
102 {20, 1.93456, 2.03587},
103 {21, 1.91701, 2.01818},
104 {22, 1.8998, 2.00084},
105 {23, 1.88293, 1.98382},
106 {24, 1.86637, 1.96712},
107 {25, 1.85012, 1.95073},
108 {26, 1.83417, 1.93463},
109 {27, 1.8185, 1.91882},
110 {28, 1.80312, 1.90329},
111 {29, 1.788, 1.88803},
112 {30, 1.77315, 1.87302},
113 {31, 1.75855, 1.85827},
114 {32, 1.74421, 1.84377},
115 {33, 1.7301, 1.8295},
116 {34, 1.71622, 1.81547},
117 {35, 1.70257, 1.80166},
118 {36, 1.68914, 1.78807},
119 {37, 1.67592, 1.77469},
120 {38, 1.66292, 1.76151},
121 {39, 1.65011, 1.74854},
122 {40, 1.63751, 1.73577},
123 {41, 1.62509, 1.72319},
124 {42, 1.61287, 1.71079},
125 {43, 1.60082, 1.69857},
126 {44, 1.59924, 1.68654},
127 {45, 1.6006, 1.67467},
128 {46, 1.60151, 1.66297},
129 {47, 1.60198, 1.65144} };
132 {0, 2.3917, 2.39853},
133 {1, 2.34037, 2.40199},
134 {2, 2.27928, 2.38244},
135 {3, 2.25254, 2.35561},
136 {4, 2.22655, 2.32951},
137 {5, 2.20127, 2.30412},
138 {6, 2.17665, 2.27939},
139 {7, 2.15267, 2.25529},
140 {8, 2.12929, 2.2318},
141 {9, 2.1065, 2.20889},
142 {10, 2.08425, 2.18652},
143 {11, 2.06253, 2.16468},
144 {12, 2.04132, 2.14334},
145 {13, 2.0206, 2.12249},
146 {14, 2.00033, 2.1021},
147 {15, 1.98052, 2.08215},
148 {16, 1.96113, 2.06262},
149 {17, 1.94215, 2.04351},
150 {18, 1.92357, 2.02479},
151 {19, 1.90538, 2.00645},
152 {20, 1.88755, 1.98847},
153 {21, 1.87007, 1.97085},
154 {22, 1.85294, 1.95357},
155 {23, 1.83614, 1.93662},
156 {24, 1.81965, 1.91998},
157 {25, 1.80348, 1.90365},
158 {26, 1.78761, 1.88762},
159 {27, 1.77202, 1.87187},
160 {28, 1.75672, 1.85641},
161 {29, 1.74168, 1.84121},
162 {30, 1.72691, 1.82628},
163 {31, 1.7124, 1.8116},
164 {32, 1.69813, 1.79716},
165 {33, 1.68411, 1.78297},
166 {34, 1.67032, 1.769},
167 {35, 1.65675, 1.75526},
168 {36, 1.64341, 1.74174},
169 {37, 1.63028, 1.72844},
170 {38, 1.61736, 1.71534},
171 {39, 1.60465, 1.70245},
172 {40, 1.59213, 1.68975},
173 {41, 1.57981, 1.67724},
174 {42, 1.56767, 1.66492},
175 {43, 1.55572, 1.65278},
176 {44, 1.55414, 1.64082},
177 {45, 1.55549, 1.62903},
178 {46, 1.5564, 1.61742},
179 {47, 1.55686, 1.60596} };
182 unsigned sector,
unsigned subsector,
196 <<
"+++ Upgrade CSCMotherboardME11GEM constructed while isSLHC is not set! +++\n";
198 <<
"+++ Upgrade CSCMotherboardME11GEM constructed while smartME1aME1b is not set! +++\n";
226 pref[
m-1] = pref[0] -
m/2;
227 pref[
m] = pref[0] +
m/2;
321 for (
int i=0;
i<2;
i++)
343 alct->setConfigParameters(conf);
344 clct->setConfigParameters(conf);
345 clct1a->setConfigParameters(conf);
359 <<
"+++ run() called for non-existing ALCT/CLCT processor! +++ \n";
367 bool gemGeometryAvailable(
false);
368 if (
gem_g !=
nullptr) {
370 <<
"+++ run() called for GEM-CSC integrated trigger! +++ \n";
371 gemGeometryAvailable =
true;
374 int used_clct_mask[20], used_clct_mask_1a[20];
375 for (
int b=0;
b<20;
b++)
376 used_clct_mask[
b] = used_clct_mask_1a[
b] = 0;
381 const CSCDetId me1bId(cscChamberME1b->id());
382 const CSCDetId me1aId(me1bId.endcap(), 1, 4, me1bId.chamber());
388 if (not gemGeometryAvailable){
390 <<
"+++ run() called for GEM-CSC integrated trigger without valid GEM geometry! +++ \n";
395 const CSCLayer* keyLayerME1b(cscChamberME1b->layer(3));
397 const CSCLayer* keyLayerME1a(cscChamberME1a->layer(3));
400 const bool isEven(me1bId.chamber()%2==0);
414 LogDebug(
"CSCMotherboardME11GEM") <<
"me1b Det "<< me1bId<<
" "<< me1bId.rawId() <<
" "
415 << (isEven ?
"Even":
"odd") <<
" chamber "<< me1bId.chamber()<<std::endl;
418 LogDebug(
"CSCMotherboardME11GEM") <<
"pad "<<
p.first <<
" min eta " << (
p.second).
first <<
" max eta " << (
p.second).second << std::endl;
422 const int numberOfWG(keyLayerGeometryME1b->numberOfWireGroups());
423 for (
int i = 0;
i< numberOfWG; ++
i){
430 LogDebug(
"CSCMotherboardME11GEM") <<
"WG "<<
p.first <<
" GEM pads " << (
p.second).
first <<
" " << (
p.second).second << std::endl;
435 auto randRoll(gemChamber->etaPartition(2));
438 auto nStripsME1a(keyLayerGeometryME1a->numberOfStrips());
439 for (
float i = 0;
i< nStripsME1a;
i =
i+0.5){
440 const LocalPoint lpCSC(keyLayerGeometryME1a->topology()->localPosition(
i));
444 const bool edge(HS < 4 or HS > 93);
445 const float pad(edge ? -99 : randRoll->pad(lpGEM));
450 auto nStripsME1b(keyLayerGeometryME1b->numberOfStrips());
451 for (
float i = 0;
i< nStripsME1b;
i =
i+0.5){
452 const LocalPoint lpCSC(keyLayerGeometryME1b->topology()->localPosition(
i));
456 const bool edge(HS < 5 or HS > 124);
457 const float pad(edge ? -99 : randRoll->pad(lpGEM));
462 LogDebug(
"CSCMotherboardME11GEM") <<
"detId " << me1bId;
463 LogDebug(
"CSCMotherboardME11GEM") <<
"CSCHSToGEMPad LUT in ME1a";
465 LogDebug(
"CSCMotherboardME11GEM") <<
"CSC HS "<<
p.first <<
" GEM Pad low " << (
p.second).
first <<
" GEM Pad high " << (
p.second).second;
467 LogDebug(
"CSCMotherboardME11GEM") <<
"CSCHSToGEMPad LUT in ME1b";
469 LogDebug(
"CSCMotherboardME11GEM") <<
"CSC HS "<<
p.first <<
" GEM Pad low " << (
p.second).
first <<
" GEM Pad high " << (
p.second).second;
473 const int nGEMPads(randRoll->npads());
474 for (
int i = 0;
i< nGEMPads; ++
i){
479 const float stripME1a(keyLayerGeometryME1a->strip(lpCSCME1a));
480 const float stripME1b(keyLayerGeometryME1b->strip(lpCSCME1b));
486 LogDebug(
"CSCMotherboardME11GEM") <<
"detId " << me1bId;
487 LogDebug(
"CSCMotherboardME11GEM") <<
"GEMPadToCSCHs LUT in ME1a";
489 LogDebug(
"CSCMotherboardME11GEM") <<
"GEM Pad "<<
p.first <<
" CSC HS: " <<
p.second;
491 LogDebug(
"CSCMotherboardME11GEM") <<
"GEMPadToCSCHs LUT in ME1b";
493 LogDebug(
"CSCMotherboardME11GEM") <<
"GEM Pad "<<
p.first <<
" CSC HS: " <<
p.second;
508 const bool hasPads(
pads_.size()!=0);
509 const bool hasCoPads(hasPads and
coPads_.size()!=0);
515 if (
alct->bestALCT[bx_alct].isValid())
523 std::cout <<
"========================================================================" << std::endl;
524 std::cout <<
"ALCT-CLCT matching in ME1/1 chamber: " << cscChamberME1b->id() << std::endl;
525 std::cout <<
"------------------------------------------------------------------------" << std::endl;
527 alct->bestALCT[bx_alct].print();
528 std::cout <<
"+++ Second ALCT Details: ";
529 alct->secondALCT[bx_alct].print();
534 std::cout <<
"------------------------------------------------------------------------" << std::endl;
535 std::cout <<
"Attempt ALCT-CLCT matching in ME1/b in bx range: [" << bx_clct_start <<
"," << bx_clct_stop <<
"]" << std::endl;
539 int nSuccesFulMatches = 0;
540 for (
int bx_clct = bx_clct_start; bx_clct <= bx_clct_stop; bx_clct++)
544 if (
clct->bestCLCT[bx_clct].isValid())
546 const int quality(
clct->bestCLCT[bx_clct].getQuality());
553 int nFound(matchingPads.size());
554 const bool clctInEdge(
clct->bestCLCT[bx_clct].getKeyStrip() < 5
or clct->bestCLCT[bx_clct].getKeyStrip() > 124);
571 int nFound(matchingCoPads.size());
572 if (nFound != 0 and bx_alct == 6 and bx_clct != 6){
582 int mbx = bx_clct-bx_clct_start;
584 clct->bestCLCT[bx_clct],
clct->secondCLCT[bx_clct],
587 std::cout <<
"Successful ALCT-CLCT match in ME1b: bx_alct = " << bx_alct
588 <<
"; match window: [" << bx_clct_start <<
"; " << bx_clct_stop
589 <<
"]; bx_clct = " << bx_clct << std::endl;
591 clct->bestCLCT[bx_clct].print();
592 std::cout <<
"+++ Second CLCT Details: ";
593 clct->secondCLCT[bx_clct].print();
596 if (
allLCTs1b[bx_alct][mbx][0].isValid()) {
597 used_clct_mask[bx_clct] += 1;
604 int nSuccesFulGEMMatches = 0;
607 for (
int bx_gem = bx_copad_start; bx_gem <= bx_copad_stop; bx_gem++) {
615 if (copads.size()==0) {
621 if (allLCTs1b[bx_alct][0][0].isValid()) {
622 ++nSuccesFulGEMMatches;
626 std::cout <<
"Successful ALCT-GEM CoPad match in ME1b: bx_alct = " << bx_alct << std::endl << std::endl;
627 std::cout <<
"------------------------------------------------------------------------" << std::endl << std::endl;
633 std::cout <<
"========================================================================" << std::endl;
635 if (nSuccesFulMatches>1)
636 std::cout <<
"Too many successful ALCT-CLCT matches in ME1b: " << nSuccesFulMatches
637 <<
", CSCDetId " << cscChamberME1b->id()
638 <<
", bx_alct = " << bx_alct
639 <<
"; match window: [" << bx_clct_start <<
"; " << bx_clct_stop <<
"]" << std::endl;
640 else if (nSuccesFulMatches==1)
641 std::cout <<
"1 successful ALCT-CLCT match in ME1b: "
642 <<
" CSCDetId " << cscChamberME1b->id()
643 <<
", bx_alct = " << bx_alct
644 <<
"; match window: [" << bx_clct_start <<
"; " << bx_clct_stop <<
"]" << std::endl;
645 else if (nSuccesFulGEMMatches==1)
646 std::cout <<
"1 successful ALCT-GEM match in ME1b: "
647 <<
" CSCDetId " << cscChamberME1b->id()
648 <<
", bx_alct = " << bx_alct
649 <<
"; match window: [" << bx_clct_start <<
"; " << bx_clct_stop <<
"]" << std::endl;
651 std::cout <<
"Unsuccessful ALCT-CLCT match in ME1b: "
652 <<
"CSCDetId " << cscChamberME1b->id()
653 <<
", bx_alct = " << bx_alct
654 <<
"; match window: [" << bx_clct_start <<
"; " << bx_clct_stop <<
"]" << std::endl;
656 std::cout <<
"------------------------------------------------------------------------" << std::endl;
657 std::cout <<
"Attempt ALCT-CLCT matching in ME1/a in bx range: [" << bx_clct_start <<
"," << bx_clct_stop <<
"]" << std::endl;
661 nSuccesFulMatches = 0;
662 for (
int bx_clct = bx_clct_start; bx_clct <= bx_clct_stop; bx_clct++)
666 if (
clct1a->bestCLCT[bx_clct].isValid())
675 int nFound(matchingPads.size());
676 const bool clctInEdge(
clct1a->bestCLCT[bx_clct].getKeyStrip() < 4
or clct1a->bestCLCT[bx_clct].getKeyStrip() > 93);
691 int mbx = bx_clct-bx_clct_start;
696 std::cout <<
"Successful ALCT-CLCT match in ME1a: bx_alct = " << bx_alct
697 <<
"; match window: [" << bx_clct_start <<
"; " << bx_clct_stop
698 <<
"]; bx_clct = " << bx_clct << std::endl;
700 clct1a->bestCLCT[bx_clct].print();
701 std::cout <<
"+++ Second CLCT Details: ";
702 clct1a->secondCLCT[bx_clct].print();
704 if (
allLCTs1a[bx_alct][mbx][0].isValid()){
705 used_clct_mask_1a[bx_clct] += 1;
712 nSuccesFulGEMMatches = 0;
715 for (
int bx_gem = bx_copad_start; bx_gem <= bx_copad_stop; bx_gem++) {
723 if (copads.size()==0) {
729 if (allLCTs1a[bx_alct][0][0].isValid()) {
730 ++nSuccesFulGEMMatches;
734 std::cout <<
"Successful ALCT-GEM CoPad match in ME1a: bx_alct = " << bx_alct << std::endl << std::endl;
735 std::cout <<
"------------------------------------------------------------------------" << std::endl << std::endl;
741 std::cout <<
"========================================================================" << std::endl;
743 if (nSuccesFulMatches>1)
744 std::cout <<
"Too many successful ALCT-CLCT matches in ME1a: " << nSuccesFulMatches
745 <<
", CSCDetId " << cscChamberME1a->id()
746 <<
", bx_alct = " << bx_alct
747 <<
"; match window: [" << bx_clct_start <<
"; " << bx_clct_stop <<
"]" << std::endl;
748 else if (nSuccesFulMatches==1)
749 std::cout <<
"1 successful ALCT-CLCT match in ME1a: "
750 <<
" CSCDetId " << cscChamberME1a->id()
751 <<
", bx_alct = " << bx_alct
752 <<
"; match window: [" << bx_clct_start <<
"; " << bx_clct_stop <<
"]" << std::endl;
753 else if (nSuccesFulGEMMatches==1)
754 std::cout <<
"1 successful ALCT-GEM match in ME1a: "
755 <<
" CSCDetId " << cscChamberME1a->id()
756 <<
", bx_alct = " << bx_alct
757 <<
"; match window: [" << bx_clct_start <<
"; " << bx_clct_stop <<
"]" << std::endl;
759 std::cout <<
"Unsuccessful ALCT-CLCT match in ME1a: "
760 <<
"CSCDetId " << cscChamberME1a->id()
761 <<
", bx_alct = " << bx_alct
762 <<
"; match window: [" << bx_clct_start <<
"; " << bx_clct_stop <<
"]" << std::endl;
775 for (
int bx_clct = bx_clct_start; bx_clct <= bx_clct_stop; bx_clct++) {
778 if (
clct->bestCLCT[bx_clct].isValid()) {
779 const int quality(
clct->bestCLCT[bx_clct].getQuality());
782 int mbx = bx_clct-bx_clct_start;
787 std::cout <<
"Successful GEM-CLCT match in ME1b: bx_alct = " << bx_alct
788 <<
"; match window: [" << bx_clct_start <<
"; " << bx_clct_stop
789 <<
"]; bx_clct = " << bx_clct << std::endl;
791 clct->bestCLCT[bx_clct].print();
792 std::cout <<
"+++ Second CLCT Details: ";
793 clct->secondCLCT[bx_clct].print();
795 if (
allLCTs1b[bx_alct][mbx][0].isValid()) {
796 used_clct_mask[bx_clct] += 1;
805 for (
int bx_clct = bx_clct_start; bx_clct <= bx_clct_stop; bx_clct++) {
808 if (
clct1a->bestCLCT[bx_clct].isValid()){
812 int mbx = bx_clct-bx_clct_start;
817 std::cout <<
"Successful GEM-CLCT match in ME1a: bx_alct = " << bx_alct
818 <<
"; match window: [" << bx_clct_start <<
"; " << bx_clct_stop
819 <<
"]; bx_clct = " << bx_clct << std::endl;
821 clct1a->bestCLCT[bx_clct].print();
822 std::cout <<
"+++ Second CLCT Details: ";
823 clct1a->secondCLCT[bx_clct].print();
825 if (
allLCTs1a[bx_alct][mbx][0].isValid()){
826 used_clct_mask_1a[bx_clct] += 1;
837 std::cout <<
"========================================================================" << std::endl;
838 std::cout <<
"Counting the LCTs" << std::endl;
839 std::cout <<
"========================================================================" << std::endl;
846 unsigned int n1a=0, n1b=0;
848 for (
int i=0;
i<2;
i++)
850 int cbx = bx + mbx - match_trig_window_size/2;
855 <<
"1b LCT"<<
i+1<<
" "<<bx<<
"/"<<cbx<<
": "<<
allLCTs1b[bx][mbx][
i]<<std::endl;
861 <<
"1a LCT"<<
i+1<<
" "<<bx<<
"/"<<cbx<<
": "<<
allLCTs1a[bx][mbx][
i]<<std::endl;
865 <<
"bx "<<bx<<
" nLCT:"<<n1a<<
" "<<n1b<<
" "<<n1a+n1b<<std::endl;
872 for (
int i=0;
i<2;
i++)
888 for (
int i=0;
i<2;
i++)
890 int cbx = bx + mbx - match_trig_window_size/2;
905 <<
"bx "<<bx<<
" nnLCT:"<<n1a<<
" "<<n1b<<
" "<<n1a+n1b<<std::endl;
913 unsigned int nLCT=n1b;
917 for (
int i=0;
i<2;
i++)
929 unsigned int n1b=0, n1a=0;
932 if (debug_gem_matching and first){
933 std::cout <<
"========================================================================" << std::endl;
934 std::cout <<
"Counting the final LCTs" << std::endl;
935 std::cout <<
"========================================================================" << std::endl;
941 if (debug_gem_matching)
942 std::cout <<
"1b LCT "<<n1b<<
" " <<
p <<std::endl;
947 if (debug_gem_matching and first){
948 std::cout <<
"========================================================================" << std::endl;
949 std::cout <<
"Counting the final LCTs" << std::endl;
950 std::cout <<
"========================================================================" << std::endl;
955 if (debug_gem_matching)
956 std::cout <<
"1a LCT "<<n1a<<
" " <<
p <<std::endl;
981 std::vector<CSCCorrelatedLCTDigi> tmpV;
990 static int lct_bins =
998 std::vector<CSCCorrelatedLCTDigi> tmp_lcts;
999 std::vector<CSCCorrelatedLCTDigi> all_lcts;
1003 case 0: all_lcts = tmp_lcts;
1005 case 1: all_lcts = tmp_lcts;
1011 default:
std::cout<<
"tmb_cross_bx_algo error" <<std::endl;
1014 std::vector <CSCCorrelatedLCTDigi>::const_iterator plct = all_lcts.begin();
1015 for (; plct != all_lcts.end(); plct++)
1017 if (!plct->isValid())
continue;
1019 int bx = (*plct).getBX();
1024 if (bx > late_tbins)
continue;
1031 tmpV.push_back(*plct);
1032 if (bx_readout == -1) bx_readout = bx;
1034 else tmpV.push_back(*plct);
1043 std::vector<CSCCorrelatedLCTDigi> tmpV;
1047 for (
int i=0;
i<2;
i++)
1056 std::vector<CSCCorrelatedLCTDigi> tmpV;
1064 for (
int i=0;
i<2;
i++)
1074 std::vector<CSCCorrelatedLCTDigi> LCTs;
1075 std::vector<CSCCorrelatedLCTDigi> tmpV;
1079 for (
int i=0;
i<2;
i++)
1080 if (allLCTs[bx][mbx][
i].isValid())
1081 LCTs.push_back(allLCTs[bx][mbx][
i]);
1091 std::vector<CSCCorrelatedLCTDigi> tmpV;
1103 std::vector<CSCCorrelatedLCTDigi> LCTs_final;
1107 std::vector<CSCCorrelatedLCTDigi> LCTs1a;
1108 std::vector<CSCCorrelatedLCTDigi> LCTs1b;
1109 std::vector<CSCCorrelatedLCTDigi> LCTs_tmp;
1110 std::vector<CSCCorrelatedLCTDigi> LCTs_tmp1;
1113 std::vector<CSCCorrelatedLCTDigi>::iterator it1a = LCTs1a.begin();
1114 std::vector<CSCCorrelatedLCTDigi>::iterator it1b = LCTs1b.begin();
1115 LCTs_tmp.insert(LCTs_tmp.begin(), LCTs1b.begin(), LCTs1b.end());
1116 LCTs_tmp.insert(LCTs_tmp.end(), LCTs1a.begin(), LCTs1a.end());
1120 std::vector<CSCCorrelatedLCTDigi>::iterator itp = LCTs_tmp1.begin();
1121 for ( ; itp != LCTs_tmp1.end(); itp++)
1123 if (me==
ME1A and it1a != LCTs1a.end() and *itp==*it1a )
1125 LCTs_final.push_back(*it1a);
1128 if (me==
ME1B and it1b != LCTs1b.end() and *itp==*it1b)
1130 LCTs_final.push_back(*it1b);
1136 if (LCTs1a.size() and LCTs1b.size() and me==
ME1A)
1137 LCTs_final.push_back(*LCTs1a.begin());
1138 else if (LCTs1a.size() and LCTs1b.size() and me==
ME1B)
1139 LCTs_final.push_back(*LCTs1b.begin());
1140 else if (LCTs1a.size() and LCTs1b.size()==0 and me==
ME1A)
1141 LCTs_final.insert(LCTs_final.end(), LCTs1a.begin(), LCTs1a.end());
1142 else if (LCTs1b.size() and LCTs1a.size()==0 and me==
ME1B)
1143 LCTs_final.insert(LCTs_final.end(), LCTs1b.begin(), LCTs1b.end());
1155 std::vector<CSCCorrelatedLCTDigi> LCTs;
1156 std::vector<CSCCorrelatedLCTDigi> tmpV;
1160 for (
int i=0;
i<2;
i++)
1161 if (allLCTs[bx][mbx][
i].isValid())
1162 LCTs.push_back(allLCTs[bx][mbx][
i]);
1172 std::vector<CSCCorrelatedLCTDigi> tmpV;
1184 std::vector<CSCCorrelatedLCTDigi> LCTs_final;
1188 std::vector<CSCCorrelatedLCTDigi> LCTs1a;
1189 std::vector<CSCCorrelatedLCTDigi> LCTs1b;
1190 std::vector<CSCCorrelatedLCTDigi> LCTs_tmp;
1191 std::vector<CSCCorrelatedLCTDigi> LCTs_tmp1;
1194 std::vector<CSCCorrelatedLCTDigi>::iterator it1a = LCTs1a.begin();
1195 std::vector<CSCCorrelatedLCTDigi>::iterator it1b = LCTs1b.begin();
1196 LCTs_tmp.insert(LCTs_tmp.begin(), LCTs1b.begin(), LCTs1b.end());
1197 LCTs_tmp.insert(LCTs_tmp.end(), LCTs1a.begin(), LCTs1a.end());
1201 std::vector<CSCCorrelatedLCTDigi>::iterator itp = LCTs_tmp1.begin();
1202 while (itp != LCTs_tmp1.end())
1204 if (me==
ME1B and it1b != LCTs1b.end() and *itp==*it1b)
1206 LCTs_final.push_back(*it1b);
1209 if (me==
ME1A and it1a != LCTs1a.end() and *itp==*it1a)
1211 LCTs_final.push_back(*it1a);
1218 if (LCTs1a.size() and LCTs1b.size() and me==
ME1A)
1219 LCTs_final.push_back(*LCTs1a.begin());
1220 else if (LCTs1a.size() and LCTs1b.size() and me==
ME1B)
1221 LCTs_final.push_back(*LCTs1b.begin());
1222 else if (LCTs1a.size() and LCTs1b.size()==0 and me==
ME1A)
1223 LCTs_final.insert(LCTs_final.end(), LCTs1a.begin(), LCTs1a.end());
1224 else if (LCTs1b.size() and LCTs1a.size()==0 and me==
ME1B)
1225 LCTs_final.insert(LCTs_final.end(), LCTs1b.begin(), LCTs1b.end());
1257 if (
theEndcap==2) key_hs = 127 - key_hs;
1271 bool anodeBestValid = bestALCT.
isValid();
1272 bool anodeSecondValid = secondALCT.
isValid();
1273 bool cathodeBestValid = bestCLCT.
isValid();
1274 bool cathodeSecondValid = secondCLCT.
isValid();
1276 if (anodeBestValid and !anodeSecondValid) secondALCT = bestALCT;
1277 if (!anodeBestValid and anodeSecondValid) bestALCT = secondALCT;
1278 if (cathodeBestValid and !cathodeSecondValid) secondCLCT = bestCLCT;
1279 if (!cathodeBestValid and cathodeSecondValid) bestCLCT = secondCLCT;
1291 if (((secondALCT != bestALCT)
or (secondCLCT != bestCLCT)) and
1308 bool anodeBestValid = bestALCT.
isValid();
1309 bool anodeSecondValid = secondALCT.
isValid();
1311 if (anodeBestValid and !anodeSecondValid) secondALCT = bestALCT;
1312 if (!anodeBestValid and anodeSecondValid) bestALCT = secondALCT;
1338 bool cathodeBestValid = bestCLCT.
isValid();
1339 bool cathodeSecondValid = secondCLCT.
isValid();
1341 if (cathodeBestValid and !cathodeSecondValid) secondCLCT = bestCLCT;
1342 if (!cathodeBestValid and cathodeSecondValid) bestCLCT = secondCLCT;
1371 if (secondALCT == bestALCT) secondALCT.
clear();
1372 if (secondCLCT == bestCLCT) secondCLCT.
clear();
1378 int code = (ok11<<3) | (ok12<<2) | (ok21<<1) | (ok22);
1384 if (dbg)
LogTrace(
"CSCMotherboardME11GEM")<<
"debug correlateLCTs in "<<did<<std::endl
1385 <<
"ALCT1: "<<bestALCT<<std::endl
1386 <<
"ALCT2: "<<secondALCT<<std::endl
1387 <<
"CLCT1: "<<bestCLCT<<std::endl
1388 <<
"CLCT2: "<<secondCLCT<<std::endl
1389 <<
"ok 11 12 21 22 code = "<<ok11<<
" "<<ok12<<
" "<<ok21<<
" "<<ok22<<
" "<<code<<std::endl;
1391 if ( code==0 )
return;
1415 if (dbg)
LogTrace(
"CSCMotherboardME11GEM")<<
"lut 0 1 = "<<lut[code][0]<<
" "<<lut[code][1]<<std::endl;
1418 const int nPads(pads.size());
1419 const int nCoPads(copads.size());
1420 const bool hasPads(nPads!=0);
1421 const bool hasCoPads(nCoPads!=0);
1425 if (
debug_gem_matching)
std::cout <<
"++Info: 2 valid ALCTs-CLCTs pairs with trigger pads. Call the GHOSTBUSTERS!!!" << std::endl;
1427 typedef std::pair<int,int> mypair;
1429 std::vector<std::tuple<mypair,mypair,mypair,mypair>>
deltas;
1433 for (
auto p : copads) {
1435 const int rollN(detId.
roll());
1436 const int padN((
p.second).pad());
1443 deltas.push_back(std::make_tuple(t11,t22,t12,t21));
1446 std::cout <<
"- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - " << std::endl;
1447 std::cout <<
"Printing (deltaRoll, deltaPad) for each (ALCT,CLCT) pair and for each trigger copad" << std::endl;
1448 for (
unsigned i =0;
i < deltas.size(); ++
i){
1449 auto c(deltas.at(
i));
1451 std::cout <<
"\t11: " <<
"(" << std::get<0>(
c).
first <<
"," << std::get<0>(
c).second <<
"); "
1452 <<
"22: " <<
"(" << std::get<1>(
c).
first <<
"," << std::get<1>(
c).second <<
"); "
1453 <<
"12: " <<
"(" << std::get<2>(
c).
first <<
"," << std::get<2>(
c).second <<
"); "
1454 <<
"21: " <<
"(" << std::get<3>(
c).
first <<
"," << std::get<3>(
c).second <<
")" << std::endl << std::endl;
1456 std::cout <<
"- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - " << std::endl;
1474 for (
auto p : pads) {
1476 const int rollN(detId.
roll());
1477 const int padN((
p.second).pad());
1484 deltas.push_back(std::make_tuple(t11,t22,t12,t21));
1487 std::cout <<
"- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - " << std::endl;
1488 std::cout <<
"Printing (deltaRoll, deltaPad) for each (ALCT,CLCT) pair and for each trigger pad" << std::endl;
1489 for (
unsigned i =0;
i < deltas.size(); ++
i){
1490 auto c(deltas.at(
i));
1492 std::cout <<
"\t11: " <<
"(" << std::get<0>(
c).
first <<
"," << std::get<0>(
c).second <<
"); "
1493 <<
"22: " <<
"(" << std::get<1>(
c).
first <<
"," << std::get<1>(
c).second <<
"); "
1494 <<
"12: " <<
"(" << std::get<2>(
c).
first <<
"," << std::get<2>(
c).second <<
"); "
1495 <<
"21: " <<
"(" << std::get<3>(
c).
first <<
"," << std::get<3>(
c).second <<
")" << std::endl << std::endl;
1497 std::cout <<
"- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - " << std::endl;
1504 switch (lut[code][0]) {
1522 if (dbg)
LogTrace(
"CSCMotherboardME11GEM")<<
"lct1: "<<lct1<<std::endl;
1524 switch (lut[code][1])
1529 if (dbg)
LogTrace(
"CSCMotherboardME11GEM")<<
"lct2: "<<lct2<<std::endl;
1534 if (dbg)
LogTrace(
"CSCMotherboardME11GEM")<<
"lct2: "<<lct2<<std::endl;
1539 if (dbg)
LogTrace(
"CSCMotherboardME11GEM")<<
"lct2: "<<lct2<<std::endl;
1544 if (dbg)
LogTrace(
"CSCMotherboardME11GEM")<<
"out of correlateLCTs"<<std::endl;
1556 for (
auto det_range = out_pads->begin(); det_range != out_pads->end(); ++det_range) {
1557 const GEMDetId&
id = (*det_range).first;
1560 id.ring() != csc_id.
ring()
or id.chamber() != csc_id.
chamber())
continue;
1563 if (
id.layer() != 1)
continue;
1568 auto co_pads_range = out_pads->get(co_id);
1570 if (co_pads_range.first == co_pads_range.second)
continue;
1573 const auto& pads_range = (*det_range).second;
1574 for (
auto p = pads_range.first;
p != pads_range.second; ++
p) {
1575 for (
auto co_p = co_pads_range.first; co_p != co_pads_range.second; ++co_p) {
1583 out_co_pads.insertDigi(
id,
GEMCoPadDigi(
id.roll(),*
p,*co_p));
1592 int ch(isEven ? 2 : 1);
1594 if (chamber==
nullptr)
return;
1598 for(
auto roll : chamber->etaPartitions()) {
1599 const float half_striplength(roll->specs()->specificTopology().stripLength()/2.);
1600 const LocalPoint lp_top(0., half_striplength, 0.);
1601 const LocalPoint lp_bottom(0., -half_striplength, 0.);
1603 const GlobalPoint gp_bottom(roll->toGlobal(lp_bottom));
1614 const float minEta((
p.second).first);
1615 const float maxEta((
p.second).second);
1616 if (minEta <= eta and eta <= maxEta) {
1627 int ME,
bool oldDataFormat)
1641 int bx = alct.
getBX();
1644 int keyStrip = mymap[gem.
pad()];
1649 if (keyStrip>wgvshs[wg][0] && keyStrip<wgvshs[wg][1])
1651 return CSCCorrelatedLCTDigi(0, 1, quality, wg, keyStrip, pattern, 0, bx, 0, 0, 0,
theTrigChamber);
1653 else return CSCCorrelatedLCTDigi(0,0,0,0,0,0,0,0,0,0,0,0);
1667 int keyStrip = mymap[gem.
pad()];
1672 if (keyStrip>wgvshs[wg][0] && keyStrip<wgvshs[wg][1])
1674 return CSCCorrelatedLCTDigi(0, 1, quality, wg, keyStrip, pattern, 0, bx, 0, 0, 0,
theTrigChamber);
1676 else return CSCCorrelatedLCTDigi(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
1682 int ME,
bool oldDataFormat)
1691 unsigned int quality = promoteCLCTGEMquality ? 14 : 11;
1700 return CSCCorrelatedLCTDigi(0, 1, quality, wg, clct.
getKeyStrip(),
pattern, clct.
getBend(), bx, 0, 0, 0,
theTrigChamber);
1716 return CSCCorrelatedLCTDigi(0, 1, quality, 0, 0, pattern, 0, bx, 0, 0, 0,
theTrigChamber);
1722 bool hasPad,
bool hasCoPad)
1749 bool hasPad,
bool hasCoPad)
1767 if (isDistrip) {quality = 4;}
1776 if (sumQual < 1 || sumQual > 6) {
1778 <<
"+++ findQuality: sumQual = " << sumQual <<
"+++ \n";
1781 if (sumQual == 2) {quality = 6;}
1782 else if (sumQual == 3) {quality = 7;}
1783 else if (sumQual == 4) {quality = 8;}
1784 else if (sumQual == 5) {quality = 9;}
1785 else if (sumQual == 6) {quality = 10;}
1788 if (sumQual == 2) {quality = 11;}
1789 else if (sumQual == 3) {quality = 12;}
1790 else if (sumQual == 4) {quality = 13;}
1791 else if (sumQual == 5) {quality = 14;}
1792 else if (sumQual == 6) {quality = 15;}
1813 if (sumQual < 1 || sumQual > 6) {
1815 <<
"+++ findQuality: Unexpected sumQual = " << sumQual <<
"+++\n";
1824 quality = offset + sumQual;
1837 if (pattern == 1) quality = 3;
1843 if (hasPad) n_gem = 1;
1844 if (hasCoPad) n_gem = 2;
1848 if (!a4 && !c4) quality = 5;
1849 else if ( a4 && !c4) quality = 6;
1850 else if (!a4 && c4) quality = 7;
1851 else if ( a4 && c4) {
1856 if (pattern == 2 || pattern == 3) quality = 11;
1857 else if (pattern == 4 || pattern == 5) quality = 12;
1858 else if (pattern == 6 || pattern == 7) quality = 13;
1859 else if (pattern == 8 || pattern == 9) quality = 14;
1860 else if (pattern == 10) quality = 15;
1863 <<
"+++ findQuality: Unexpected CLCT pattern id = "
1864 << pattern <<
"+++\n";
1885 const bool hasPads(thePads.size()!=0);
1887 std::cout <<
"------------------------------------------------------------------------" << std::endl;
1889 for (
int bx = bx_start; bx <= bx_stop; bx++) {
1892 std::vector<std::pair<unsigned int, const GEMPadDigi> > in_pads = thePads[bx];
1894 if (!iscopad)
std::cout <<
"* GEM trigger pads: " << std::endl;
1895 else std::cout <<
"* GEM trigger coincidence pads: " << std::endl;
1898 if (!iscopad)
std::cout <<
"N(pads) BX " << bx <<
" : " << in_pads.size() << std::endl;
1899 else std::cout <<
"N(copads) BX " << bx <<
" : " << in_pads.size() << std::endl;
1901 for (
auto pad : in_pads){
1903 std::cout <<
"\tdetId " << pad.first <<
" " << roll_id <<
", pad = " << pad.second.pad() <<
", BX = " << pad.second.bx() + 6;
1916 for (
auto ch : superChamber->chambers()) {
1917 for (
auto roll : ch->etaPartitions()) {
1919 auto pads_in_det = gemPads->get(roll_id);
1920 for (
auto pad = pads_in_det.first; pad != pads_in_det.second; ++pad) {
1923 pads_[bx].push_back(std::make_pair(roll_id, *pad));
1933 for (
auto ch : superChamber->chambers()) {
1934 for (
auto roll : ch->etaPartitions()) {
1936 auto pads_in_det = gemPads->get(roll_id);
1937 for (
auto pad = pads_in_det.first; pad != pads_in_det.second; ++pad) {
1941 coPads_[bx].push_back(std::make_pair(roll_id, (*pad).second()));
1952 if ((
p.first < 10)
or (
p.first > 15))
continue;
1953 if (((
p.second).first <= roll) and (roll <= (
p.second).second))
return true;
1981 const int lowPad(mymap[clct.
getKeyStrip()].first);
1982 const int highPad(mymap[clct.
getKeyStrip()].second);
1983 const bool debug(
false);
1984 if (debug)
std::cout <<
"lowpad " << lowPad <<
" highpad " << highPad <<
" delta pad " << deltaPad <<std::endl;
1986 auto padRoll((
p.second).pad());
1987 if (debug)
std::cout <<
"padRoll " << padRoll << std::endl;
1989 if (debug)
std::cout <<
"++Matches! " << std::endl;
1990 result.push_back(
p);
1991 if (first)
return result;
2004 const bool debug(
false);
2005 if (debug)
std::cout <<
"ALCT keyWG " << alct.
getKeyWG() <<
", rolls " << alctRoll.first <<
" " << alctRoll.second << std::endl;
2008 if (debug)
std::cout <<
"Candidate ALCT: " << padRoll << std::endl;
2011 if (alctRoll.first == -99 and alctRoll.second == -99)
continue;
2012 else if (alctRoll.first == -99 and !(padRoll <= alctRoll.second))
continue;
2013 else if (alctRoll.second == -99 and !(padRoll >= alctRoll.first))
continue;
2014 else if ((alctRoll.first != -99 and alctRoll.second != -99) and
2015 (alctRoll.first > padRoll
or padRoll > alctRoll.second))
continue;
2016 if (debug)
std::cout <<
"++Matches! " << std::endl;
2017 result.push_back(
p);
2018 if (first)
return result;
2034 const bool debug(
false);
2035 if (debug)
std::cout <<
"-----------------------------------------------------------------------"<<std::endl;
2037 for (
auto p : padsAlct){
2038 if (debug)
std::cout<<
"Candidate ALCT: " <<
p.first <<
" " <<
p.second << std::endl;
2039 for (
auto q: padsClct){
2040 if (debug)
std::cout<<
"++Candidate CLCT: " <<
q.first <<
" " <<
q.second << std::endl;
2043 if (debug)
std::cout <<
"++Matches! " << std::endl;
2044 result.push_back(
p);
2045 if (first)
return result;
2048 if (debug)
std::cout <<
"-----------------------------------------------------------------------"<<std::endl;
int getQuality() const
return quality of a pattern (number of layers hit!)
bool isPadInOverlap(int roll)
void retrieveGEMCoPads(const GEMCoPadDigiCollection *pads, unsigned id)
bool dropLowQualityCLCTsNoGEMs_ME1a_
T getParameter(std::string const &) const
std::map< int, std::pair< int, int > > cscHsToGemPadME1a_
CSCCorrelatedLCTDigi constructLCTs(const CSCALCTDigi &aLCT, const CSCCLCTDigi &cLCT)
std::vector< CSCCorrelatedLCTDigi > sortLCTsByQuality(int bx, enum ME11Part=ME1B)
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...
static const int lut_wg_vs_hs_me1ag[48][2]
bool dropLowQualityCLCTsNoGEMs_ME1b_
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::EventIDconst &, edm::Timestampconst & > We also list in braces which AR_WATCH_USING_METHOD_ is used for those or
static bool sortByGEMDphi(const CSCCorrelatedLCTDigi &, const CSCCorrelatedLCTDigi &)
std::vector< CSCCorrelatedLCTDigi > readoutLCTs1a()
std::vector< CSCCorrelatedLCTDigi > readoutLCTs()
unsigned int match_trig_window_size
const unsigned theTrigChamber
bool isValid() const
check ALCT validity (1 - valid ALCT)
void buildCoincidencePads(const GEMPadDigiCollection *out_pads, GEMCoPadDigiCollection &out_co_pads, CSCDetId csc_id)
unsigned int encodePatternGEM(const int ptn, const int highPt)
static const double lut_pt_vs_dphi_gemcsc[8][3]
int assignGEMRoll(double eta)
bool runME11ILT_
GEM-CSC integrated local algorithm.
std::map< int, std::pair< int, int > > cscHsToGemPadME1b_
void clear()
clear this ALCT
int deltaPad(int hs, int pad)
bool dropLowQualityALCTsNoGEMs_ME1a_
bool buildLCTfromCLCTandGEM_ME1a_
bool match_earliest_alct_me11_only
int maxDeltaPadCoPadEven_
int getStripType() const
return striptype
int getBend() const
return bend
unsigned int max_me11_lcts
unsigned int mpc_block_me1a
static const int lut_wg_vs_hs_me1b[48][2]
GEMPadsBX matchingGEMPads(const CSCCLCTDigi &cLCT, const GEMPadsBX &pads=GEMPadsBX(), enum ME11Part=ME1B, bool isCopad=false, bool first=true)
bool firstTwoLCTsInChamber_
CSCCorrelatedLCTDigi allLCTs1a[MAX_LCT_BINS][15][2]
const unsigned theStation
static CSCTriggerGeomManager * get()
void correlateLCTsGEM(CSCALCTDigi bestALCT, CSCALCTDigi secondALCT, CSCCLCTDigi bestCLCT, CSCCLCTDigi secondCLCT, CSCCorrelatedLCTDigi &lct1, CSCCorrelatedLCTDigi &lct2, int me, const GEMPadsBX &pads=GEMPadsBX(), const GEMPadsBX &copads=GEMPadsBX())
const unsigned theSubsector
int getBX() const
return BX
std::map< int, std::pair< double, double > > gemRollToEtaLimits_
unsigned int encodePattern(const int ptn, const int highPt)
Abs< T >::type abs(const T &t)
unsigned int tmb_l1a_window_size
bool isValid() const
check CLCT validity (1 - valid CLCT)
unsigned int match_trig_enable
CSCCorrelatedLCTDigi constructLCTsGEM(const CSCALCTDigi &alct, const GEMPadDigi &gem, int me, bool oldDataFormat=false)
void correlateLCTs(CSCALCTDigi bestALCT, CSCALCTDigi secondALCT, CSCCLCTDigi bestCLCT, CSCCLCTDigi secondCLCT, CSCCorrelatedLCTDigi &lct1, CSCCorrelatedLCTDigi &lct2)
std::vector< CSCCorrelatedLCTDigi > getLCTs1b()
unsigned int tmb_cross_bx_algo
int deltaRoll(int wg, int roll)
MuonDigiCollection< GEMDetId, GEMCoPadDigi > GEMCoPadDigiCollection
const GEMSuperChamber * superChamber(GEMDetId id) const
void printGEMTriggerPads(int minBX, int maxBx, bool iscopad=false)
int getBX() const
return BX - five low bits of BXN counter tagged by the ALCT
std::vector< CSCCorrelatedLCTDigi > getLCTs1a()
bool match_earliest_clct_me11_only
bool promoteCLCTGEMquality_ME1a_
static const int lut_wg_vs_hs_me1a[48][2]
short int zendcap() const
int getQuality() const
return quality of a pattern
int getAccelerator() const
bool doLCTGhostBustingWithGEMs_
std::vector< CSCALCTDigi > alctV
int getPattern() const
return pattern
void retrieveGEMPads(const GEMPadDigiCollection *pads, unsigned id)
const GEMGeometry * gem_g
const GEMChamber * chamber(GEMDetId id) const
unsigned int findQualityGEM(const CSCALCTDigi &aLCT, const GEMPadDigi &gem)
const CSCChamber * chamber(CSCDetId id) const
Return the chamber corresponding to given DetId.
std::vector< GEMCoPadDigi > gemCoPadV
bool doesALCTCrossCLCT(CSCALCTDigi &a, CSCCLCTDigi &c, int me)
std::map< int, int > gemPadToCscHsME1a_
std::map< int, std::pair< int, int > > cscWgToGemRoll_
unsigned int alct_trig_enable
bool promoteALCTGEMquality_
bool buildLCTfromCLCTandGEM_ME1b_
std::vector< CSCCorrelatedLCTDigi > readoutLCTs1b()
bool dropLowQualityALCTsNoGEMs_ME1b_
void createGEMRollEtaLUT(bool isEven)
std::unique_ptr< CSCAnodeLCTProcessor > alct
std::vector< CSCCLCTDigi > clctV1b
std::vector< CSCCLCTDigi > clctV1a
bool promoteCLCTGEMquality_ME1b_
std::unique_ptr< CSCCathodeLCTProcessor > clct
void run(const CSCWireDigiCollection *wiredc, const CSCComparatorDigiCollection *compdc, const GEMPadDigiCollection *gemPads)
void clear()
clear this CLCT
bool correctLCTtimingWithGEM_
CSCCorrelatedLCTDigi allLCTs1b[MAX_LCT_BINS][15][2]
std::map< int, int > gemPadToCscHsME1b_
bool buildLCTfromALCTandGEM_ME1b_
bool useOldLCTDataFormat_
bool promoteALCTGEMpattern_
std::unique_ptr< CSCCathodeLCTProcessor > clct1a
bool buildLCTfromALCTandGEM_ME1a_
const CSCGeometry * csc_g
std::vector< GEMCoPadDigi > readoutCoPads()
int getKeyWG() const
return key wire group
static int chamberFromTriggerLabels(int TriggerSector, int TriggerSubSector, int station, int TriggerCSCID)
static const double lut_wg_etaMin_etaMax_even[48][3]
static const double lut_wg_etaMin_etaMax_odd[48][3]
std::vector< GEMPadBX > GEMPadsBX
static bool sortByQuality(const CSCCorrelatedLCTDigi &, const CSCCorrelatedLCTDigi &)
void setConfigParameters(const CSCDBL1TPParameters *conf)
std::vector< CSCCorrelatedLCTDigi > sortLCTsByGEMDPhi(int bx, enum ME11Part=ME1B)