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";
227 pref[
m-1] = pref[0] -
m/2;
228 pref[
m] = pref[0] +
m/2;
318 for (
int i=0;
i<2;
i++)
340 alct->setConfigParameters(conf);
341 clct->setConfigParameters(conf);
342 clct1a->setConfigParameters(conf);
356 <<
"+++ run() called for non-existing ALCT/CLCT processor! +++ \n";
365 bool gemGeometryAvailable(
false);
366 if (
gem_g !=
nullptr) {
368 <<
"+++ run() called for GEM-CSC integrated trigger! +++ \n";
369 gemGeometryAvailable =
true;
372 int used_clct_mask[20], used_clct_mask_1a[20];
373 for (
int b=0;
b<20;
b++)
374 used_clct_mask[
b] = used_clct_mask_1a[
b] = 0;
379 const CSCDetId me1bId(cscChamberME1b->id());
380 const CSCDetId me1aId(me1bId.endcap(), 1, 4, me1bId.chamber());
386 if (not gemGeometryAvailable){
388 <<
"+++ run() called for GEM-CSC integrated trigger without valid GEM geometry! +++ \n";
393 const CSCLayer* keyLayerME1b(cscChamberME1b->layer(3));
395 const CSCLayer* keyLayerME1a(cscChamberME1a->layer(3));
398 const bool isEven(me1bId.chamber()%2==0);
399 const int region((
theEndcap == 1) ? 1: -1);
412 LogDebug(
"CSCMotherboardME11GEM") <<
"me1b Det "<< me1bId<<
" "<< me1bId.rawId() <<
" " 413 << (isEven ?
"Even":
"odd") <<
" chamber "<< me1bId.chamber()<<std::endl;
416 LogDebug(
"CSCMotherboardME11GEM") <<
"pad "<<
p.first <<
" min eta " << (
p.second).
first <<
" max eta " << (
p.second).second << std::endl;
420 const int numberOfWG(keyLayerGeometryME1b->numberOfWireGroups());
421 for (
int i = 0;
i< numberOfWG; ++
i){
428 LogDebug(
"CSCMotherboardME11GEM") <<
"WG "<<
p.first <<
" GEM pads " << (
p.second).
first <<
" " << (
p.second).second << std::endl;
433 auto randRoll(gemChamber->chamber(1)->etaPartition(2));
436 auto nStripsME1a(keyLayerGeometryME1a->numberOfStrips());
437 for (
float i = 0;
i< nStripsME1a;
i =
i+0.5){
438 const LocalPoint lpCSC(keyLayerGeometryME1a->topology()->localPosition(
i));
442 const bool edge(HS < 4 or HS > 93);
443 const float pad(edge ? -99 : randRoll->pad(lpGEM));
448 auto nStripsME1b(keyLayerGeometryME1b->numberOfStrips());
449 for (
float i = 0;
i< nStripsME1b;
i =
i+0.5){
450 const LocalPoint lpCSC(keyLayerGeometryME1b->topology()->localPosition(
i));
454 const bool edge(HS < 5 or HS > 124);
455 const float pad(edge ? -99 : randRoll->pad(lpGEM));
460 LogDebug(
"CSCMotherboardME11GEM") <<
"detId " << me1bId;
461 LogDebug(
"CSCMotherboardME11GEM") <<
"CSCHSToGEMPad LUT in ME1a";
463 LogDebug(
"CSCMotherboardME11GEM") <<
"CSC HS "<<
p.first <<
" GEM Pad low " << (
p.second).
first <<
" GEM Pad high " << (
p.second).second;
465 LogDebug(
"CSCMotherboardME11GEM") <<
"CSCHSToGEMPad LUT in ME1b";
467 LogDebug(
"CSCMotherboardME11GEM") <<
"CSC HS "<<
p.first <<
" GEM Pad low " << (
p.second).
first <<
" GEM Pad high " << (
p.second).second;
471 const int nGEMPads(randRoll->npads());
472 for (
int i = 0;
i< nGEMPads; ++
i){
477 const float stripME1a(keyLayerGeometryME1a->strip(lpCSCME1a));
478 const float stripME1b(keyLayerGeometryME1b->strip(lpCSCME1b));
484 LogDebug(
"CSCMotherboardME11GEM") <<
"detId " << me1bId;
485 LogDebug(
"CSCMotherboardME11GEM") <<
"GEMPadToCSCHs LUT in ME1a";
487 LogDebug(
"CSCMotherboardME11GEM") <<
"GEM Pad "<<
p.first <<
" CSC HS: " <<
p.second;
489 LogDebug(
"CSCMotherboardME11GEM") <<
"GEMPadToCSCHs LUT in ME1b";
491 LogDebug(
"CSCMotherboardME11GEM") <<
"GEM Pad "<<
p.first <<
" CSC HS: " <<
p.second;
502 const bool hasPads(
pads_.size()!=0);
503 const bool hasCoPads(hasPads and
coPads_.size()!=0);
509 if (
alct->bestALCT[bx_alct].isValid())
517 std::cout <<
"========================================================================" << std::endl;
518 std::cout <<
"ALCT-CLCT matching in ME1/1 chamber: " << cscChamberME1b->id() << std::endl;
519 std::cout <<
"------------------------------------------------------------------------" << std::endl;
521 alct->bestALCT[bx_alct].print();
522 std::cout <<
"+++ Second ALCT Details: ";
523 alct->secondALCT[bx_alct].print();
528 std::cout <<
"------------------------------------------------------------------------" << std::endl;
529 std::cout <<
"Attempt ALCT-CLCT matching in ME1/b in bx range: [" << bx_clct_start <<
"," << bx_clct_stop <<
"]" << std::endl;
533 int nSuccesFulMatches = 0;
534 for (
int bx_clct = bx_clct_start; bx_clct <= bx_clct_stop; bx_clct++)
538 if (
clct->bestCLCT[bx_clct].isValid())
540 const int quality(
clct->bestCLCT[bx_clct].getQuality());
547 int nFound(matchingPads.size());
548 const bool clctInEdge(
clct->bestCLCT[bx_clct].getKeyStrip() < 5
or clct->bestCLCT[bx_clct].getKeyStrip() > 124);
565 int nFound(matchingCoPads.size());
566 if (nFound != 0 and bx_alct == 6 and bx_clct != 6){
576 int mbx = bx_clct-bx_clct_start;
578 clct->bestCLCT[bx_clct],
clct->secondCLCT[bx_clct],
581 std::cout <<
"Successful ALCT-CLCT match in ME1b: bx_alct = " << bx_alct
582 <<
"; match window: [" << bx_clct_start <<
"; " << bx_clct_stop
583 <<
"]; bx_clct = " << bx_clct << std::endl;
585 clct->bestCLCT[bx_clct].print();
586 std::cout <<
"+++ Second CLCT Details: ";
587 clct->secondCLCT[bx_clct].print();
590 if (
allLCTs1b[bx_alct][mbx][0].isValid()) {
591 used_clct_mask[bx_clct] += 1;
598 int nSuccesFulGEMMatches = 0;
601 for (
int bx_gem = bx_copad_start; bx_gem <= bx_copad_stop; bx_gem++) {
609 if (copads.size()==0) {
615 if (allLCTs1b[bx_alct][0][0].isValid()) {
616 ++nSuccesFulGEMMatches;
620 std::cout <<
"Successful ALCT-GEM CoPad match in ME1b: bx_alct = " << bx_alct << std::endl << std::endl;
621 std::cout <<
"------------------------------------------------------------------------" << std::endl << std::endl;
627 std::cout <<
"========================================================================" << std::endl;
629 if (nSuccesFulMatches>1)
630 std::cout <<
"Too many successful ALCT-CLCT matches in ME1b: " << nSuccesFulMatches
631 <<
", CSCDetId " << cscChamberME1b->id()
632 <<
", bx_alct = " << bx_alct
633 <<
"; match window: [" << bx_clct_start <<
"; " << bx_clct_stop <<
"]" << std::endl;
634 else if (nSuccesFulMatches==1)
635 std::cout <<
"1 successful ALCT-CLCT match in ME1b: " 636 <<
" CSCDetId " << cscChamberME1b->id()
637 <<
", bx_alct = " << bx_alct
638 <<
"; match window: [" << bx_clct_start <<
"; " << bx_clct_stop <<
"]" << std::endl;
639 else if (nSuccesFulGEMMatches==1)
640 std::cout <<
"1 successful ALCT-GEM match in ME1b: " 641 <<
" CSCDetId " << cscChamberME1b->id()
642 <<
", bx_alct = " << bx_alct
643 <<
"; match window: [" << bx_clct_start <<
"; " << bx_clct_stop <<
"]" << std::endl;
645 std::cout <<
"Unsuccessful ALCT-CLCT match in ME1b: " 646 <<
"CSCDetId " << cscChamberME1b->id()
647 <<
", bx_alct = " << bx_alct
648 <<
"; match window: [" << bx_clct_start <<
"; " << bx_clct_stop <<
"]" << std::endl;
650 std::cout <<
"------------------------------------------------------------------------" << std::endl;
651 std::cout <<
"Attempt ALCT-CLCT matching in ME1/a in bx range: [" << bx_clct_start <<
"," << bx_clct_stop <<
"]" << std::endl;
655 nSuccesFulMatches = 0;
656 for (
int bx_clct = bx_clct_start; bx_clct <= bx_clct_stop; bx_clct++)
660 if (
clct1a->bestCLCT[bx_clct].isValid())
669 int nFound(matchingPads.size());
670 const bool clctInEdge(
clct1a->bestCLCT[bx_clct].getKeyStrip() < 4
or clct1a->bestCLCT[bx_clct].getKeyStrip() > 93);
685 int mbx = bx_clct-bx_clct_start;
690 std::cout <<
"Successful ALCT-CLCT match in ME1a: bx_alct = " << bx_alct
691 <<
"; match window: [" << bx_clct_start <<
"; " << bx_clct_stop
692 <<
"]; bx_clct = " << bx_clct << std::endl;
694 clct1a->bestCLCT[bx_clct].print();
695 std::cout <<
"+++ Second CLCT Details: ";
696 clct1a->secondCLCT[bx_clct].print();
698 if (
allLCTs1a[bx_alct][mbx][0].isValid()){
699 used_clct_mask_1a[bx_clct] += 1;
706 nSuccesFulGEMMatches = 0;
709 for (
int bx_gem = bx_copad_start; bx_gem <= bx_copad_stop; bx_gem++) {
717 if (copads.size()==0) {
723 if (allLCTs1a[bx_alct][0][0].isValid()) {
724 ++nSuccesFulGEMMatches;
728 std::cout <<
"Successful ALCT-GEM CoPad match in ME1a: bx_alct = " << bx_alct << std::endl << std::endl;
729 std::cout <<
"------------------------------------------------------------------------" << std::endl << std::endl;
735 std::cout <<
"========================================================================" << std::endl;
737 if (nSuccesFulMatches>1)
738 std::cout <<
"Too many successful ALCT-CLCT matches in ME1a: " << nSuccesFulMatches
739 <<
", CSCDetId " << cscChamberME1a->id()
740 <<
", bx_alct = " << bx_alct
741 <<
"; match window: [" << bx_clct_start <<
"; " << bx_clct_stop <<
"]" << std::endl;
742 else if (nSuccesFulMatches==1)
743 std::cout <<
"1 successful ALCT-CLCT match in ME1a: " 744 <<
" CSCDetId " << cscChamberME1a->id()
745 <<
", bx_alct = " << bx_alct
746 <<
"; match window: [" << bx_clct_start <<
"; " << bx_clct_stop <<
"]" << std::endl;
747 else if (nSuccesFulGEMMatches==1)
748 std::cout <<
"1 successful ALCT-GEM match in ME1a: " 749 <<
" CSCDetId " << cscChamberME1a->id()
750 <<
", bx_alct = " << bx_alct
751 <<
"; match window: [" << bx_clct_start <<
"; " << bx_clct_stop <<
"]" << std::endl;
753 std::cout <<
"Unsuccessful ALCT-CLCT match in ME1a: " 754 <<
"CSCDetId " << cscChamberME1a->id()
755 <<
", bx_alct = " << bx_alct
756 <<
"; match window: [" << bx_clct_start <<
"; " << bx_clct_stop <<
"]" << std::endl;
769 for (
int bx_clct = bx_clct_start; bx_clct <= bx_clct_stop; bx_clct++) {
772 if (
clct->bestCLCT[bx_clct].isValid()) {
773 const int quality(
clct->bestCLCT[bx_clct].getQuality());
776 int mbx = bx_clct-bx_clct_start;
781 std::cout <<
"Successful GEM-CLCT match in ME1b: bx_alct = " << bx_alct
782 <<
"; match window: [" << bx_clct_start <<
"; " << bx_clct_stop
783 <<
"]; bx_clct = " << bx_clct << std::endl;
785 clct->bestCLCT[bx_clct].print();
786 std::cout <<
"+++ Second CLCT Details: ";
787 clct->secondCLCT[bx_clct].print();
789 if (
allLCTs1b[bx_alct][mbx][0].isValid()) {
790 used_clct_mask[bx_clct] += 1;
799 for (
int bx_clct = bx_clct_start; bx_clct <= bx_clct_stop; bx_clct++) {
802 if (
clct1a->bestCLCT[bx_clct].isValid()){
806 int mbx = bx_clct-bx_clct_start;
811 std::cout <<
"Successful GEM-CLCT match in ME1a: bx_alct = " << bx_alct
812 <<
"; match window: [" << bx_clct_start <<
"; " << bx_clct_stop
813 <<
"]; bx_clct = " << bx_clct << std::endl;
815 clct1a->bestCLCT[bx_clct].print();
816 std::cout <<
"+++ Second CLCT Details: ";
817 clct1a->secondCLCT[bx_clct].print();
819 if (
allLCTs1a[bx_alct][mbx][0].isValid()){
820 used_clct_mask_1a[bx_clct] += 1;
831 std::cout <<
"========================================================================" << std::endl;
832 std::cout <<
"Counting the LCTs" << std::endl;
833 std::cout <<
"========================================================================" << std::endl;
840 unsigned int n1a=0, n1b=0;
842 for (
int i=0;
i<2;
i++)
844 int cbx = bx + mbx - match_trig_window_size/2;
849 <<
"1b LCT"<<
i+1<<
" "<<bx<<
"/"<<cbx<<
": "<<
allLCTs1b[bx][mbx][
i]<<std::endl;
855 <<
"1a LCT"<<
i+1<<
" "<<bx<<
"/"<<cbx<<
": "<<
allLCTs1a[bx][mbx][
i]<<std::endl;
859 <<
"bx "<<bx<<
" nLCT:"<<n1a<<
" "<<n1b<<
" "<<n1a+n1b<<std::endl;
866 for (
int i=0;
i<2;
i++)
882 for (
int i=0;
i<2;
i++)
884 int cbx = bx + mbx - match_trig_window_size/2;
899 <<
"bx "<<bx<<
" nnLCT:"<<n1a<<
" "<<n1b<<
" "<<n1a+n1b<<std::endl;
907 unsigned int nLCT=n1b;
911 for (
int i=0;
i<2;
i++)
923 unsigned int n1b=0, n1a=0;
926 if (debug_gem_matching and first){
927 std::cout <<
"========================================================================" << std::endl;
928 std::cout <<
"Counting the final LCTs" << std::endl;
929 std::cout <<
"========================================================================" << std::endl;
935 if (debug_gem_matching)
936 std::cout <<
"1b LCT "<<n1b<<
" " <<
p <<std::endl;
941 if (debug_gem_matching and first){
942 std::cout <<
"========================================================================" << std::endl;
943 std::cout <<
"Counting the final LCTs" << std::endl;
944 std::cout <<
"========================================================================" << std::endl;
949 if (debug_gem_matching)
950 std::cout <<
"1a LCT "<<n1a<<
" " <<
p <<std::endl;
975 std::vector<CSCCorrelatedLCTDigi> tmpV;
984 static int lct_bins =
992 std::vector<CSCCorrelatedLCTDigi> tmp_lcts;
993 std::vector<CSCCorrelatedLCTDigi> all_lcts;
997 case 0: all_lcts = tmp_lcts;
999 case 1: all_lcts = tmp_lcts;
1005 default:
std::cout<<
"tmb_cross_bx_algo error" <<std::endl;
1008 std::vector <CSCCorrelatedLCTDigi>::const_iterator plct = all_lcts.begin();
1009 for (; plct != all_lcts.end(); plct++)
1011 if (!plct->isValid())
continue;
1013 int bx = (*plct).getBX();
1018 if (bx > late_tbins)
continue;
1025 tmpV.push_back(*plct);
1026 if (bx_readout == -1) bx_readout = bx;
1028 else tmpV.push_back(*plct);
1037 std::vector<CSCCorrelatedLCTDigi> tmpV;
1041 for (
int i=0;
i<2;
i++)
1050 std::vector<CSCCorrelatedLCTDigi> tmpV;
1058 for (
int i=0;
i<2;
i++)
1068 std::vector<CSCCorrelatedLCTDigi> LCTs;
1069 std::vector<CSCCorrelatedLCTDigi> tmpV;
1073 for (
int i=0;
i<2;
i++)
1074 if (allLCTs[bx][mbx][
i].isValid())
1075 LCTs.push_back(allLCTs[bx][mbx][
i]);
1085 std::vector<CSCCorrelatedLCTDigi> tmpV;
1097 std::vector<CSCCorrelatedLCTDigi> LCTs_final;
1101 std::vector<CSCCorrelatedLCTDigi> LCTs1a;
1102 std::vector<CSCCorrelatedLCTDigi> LCTs1b;
1103 std::vector<CSCCorrelatedLCTDigi> LCTs_tmp;
1104 std::vector<CSCCorrelatedLCTDigi> LCTs_tmp1;
1107 std::vector<CSCCorrelatedLCTDigi>::iterator it1a = LCTs1a.begin();
1108 std::vector<CSCCorrelatedLCTDigi>::iterator it1b = LCTs1b.begin();
1109 LCTs_tmp.insert(LCTs_tmp.begin(), LCTs1b.begin(), LCTs1b.end());
1110 LCTs_tmp.insert(LCTs_tmp.end(), LCTs1a.begin(), LCTs1a.end());
1114 std::vector<CSCCorrelatedLCTDigi>::iterator itp = LCTs_tmp1.begin();
1115 for ( ; itp != LCTs_tmp1.end(); itp++)
1117 if (me==
ME1A and it1a != LCTs1a.end() and *itp==*it1a )
1119 LCTs_final.push_back(*it1a);
1122 if (me==
ME1B and it1b != LCTs1b.end() and *itp==*it1b)
1124 LCTs_final.push_back(*it1b);
1130 if (LCTs1a.size() and LCTs1b.size() and me==
ME1A)
1131 LCTs_final.push_back(*LCTs1a.begin());
1132 else if (LCTs1a.size() and LCTs1b.size() and me==
ME1B)
1133 LCTs_final.push_back(*LCTs1b.begin());
1134 else if (LCTs1a.size() and LCTs1b.size()==0 and me==
ME1A)
1135 LCTs_final.insert(LCTs_final.end(), LCTs1a.begin(), LCTs1a.end());
1136 else if (LCTs1b.size() and LCTs1a.size()==0 and me==
ME1B)
1137 LCTs_final.insert(LCTs_final.end(), LCTs1b.begin(), LCTs1b.end());
1149 std::vector<CSCCorrelatedLCTDigi> LCTs;
1150 std::vector<CSCCorrelatedLCTDigi> tmpV;
1154 for (
int i=0;
i<2;
i++)
1155 if (allLCTs[bx][mbx][
i].isValid())
1156 LCTs.push_back(allLCTs[bx][mbx][
i]);
1166 std::vector<CSCCorrelatedLCTDigi> tmpV;
1178 std::vector<CSCCorrelatedLCTDigi> LCTs_final;
1182 std::vector<CSCCorrelatedLCTDigi> LCTs1a;
1183 std::vector<CSCCorrelatedLCTDigi> LCTs1b;
1184 std::vector<CSCCorrelatedLCTDigi> LCTs_tmp;
1185 std::vector<CSCCorrelatedLCTDigi> LCTs_tmp1;
1188 std::vector<CSCCorrelatedLCTDigi>::iterator it1a = LCTs1a.begin();
1189 std::vector<CSCCorrelatedLCTDigi>::iterator it1b = LCTs1b.begin();
1190 LCTs_tmp.insert(LCTs_tmp.begin(), LCTs1b.begin(), LCTs1b.end());
1191 LCTs_tmp.insert(LCTs_tmp.end(), LCTs1a.begin(), LCTs1a.end());
1195 std::vector<CSCCorrelatedLCTDigi>::iterator itp = LCTs_tmp1.begin();
1196 while (itp != LCTs_tmp1.end())
1198 if (me==
ME1B and it1b != LCTs1b.end() and *itp==*it1b)
1200 LCTs_final.push_back(*it1b);
1203 if (me==
ME1A and it1a != LCTs1a.end() and *itp==*it1a)
1205 LCTs_final.push_back(*it1a);
1212 if (LCTs1a.size() and LCTs1b.size() and me==
ME1A)
1213 LCTs_final.push_back(*LCTs1a.begin());
1214 else if (LCTs1a.size() and LCTs1b.size() and me==
ME1B)
1215 LCTs_final.push_back(*LCTs1b.begin());
1216 else if (LCTs1a.size() and LCTs1b.size()==0 and me==
ME1A)
1217 LCTs_final.insert(LCTs_final.end(), LCTs1a.begin(), LCTs1a.end());
1218 else if (LCTs1b.size() and LCTs1a.size()==0 and me==
ME1B)
1219 LCTs_final.insert(LCTs_final.end(), LCTs1b.begin(), LCTs1b.end());
1251 if (
theEndcap==2) key_hs = 127 - key_hs;
1265 bool anodeBestValid = bestALCT.
isValid();
1266 bool anodeSecondValid = secondALCT.
isValid();
1267 bool cathodeBestValid = bestCLCT.
isValid();
1268 bool cathodeSecondValid = secondCLCT.
isValid();
1270 if (anodeBestValid and !anodeSecondValid) secondALCT = bestALCT;
1271 if (!anodeBestValid and anodeSecondValid) bestALCT = secondALCT;
1272 if (cathodeBestValid and !cathodeSecondValid) secondCLCT = bestCLCT;
1273 if (!cathodeBestValid and cathodeSecondValid) bestCLCT = secondCLCT;
1285 if (((secondALCT != bestALCT)
or (secondCLCT != bestCLCT)) and
1302 bool anodeBestValid = bestALCT.
isValid();
1303 bool anodeSecondValid = secondALCT.
isValid();
1305 if (anodeBestValid and !anodeSecondValid) secondALCT = bestALCT;
1306 if (!anodeBestValid and anodeSecondValid) bestALCT = secondALCT;
1332 bool cathodeBestValid = bestCLCT.
isValid();
1333 bool cathodeSecondValid = secondCLCT.
isValid();
1335 if (cathodeBestValid and !cathodeSecondValid) secondCLCT = bestCLCT;
1336 if (!cathodeBestValid and cathodeSecondValid) bestCLCT = secondCLCT;
1365 if (secondALCT == bestALCT) secondALCT.
clear();
1366 if (secondCLCT == bestCLCT) secondCLCT.
clear();
1372 int code = (ok11<<3) | (ok12<<2) | (ok21<<1) | (ok22);
1378 if (dbg)
LogTrace(
"CSCMotherboardME11GEM")<<
"debug correlateLCTs in "<<did<<std::endl
1379 <<
"ALCT1: "<<bestALCT<<std::endl
1380 <<
"ALCT2: "<<secondALCT<<std::endl
1381 <<
"CLCT1: "<<bestCLCT<<std::endl
1382 <<
"CLCT2: "<<secondCLCT<<std::endl
1383 <<
"ok 11 12 21 22 code = "<<ok11<<
" "<<ok12<<
" "<<ok21<<
" "<<ok22<<
" "<<code<<std::endl;
1385 if ( code==0 )
return;
1409 if (dbg)
LogTrace(
"CSCMotherboardME11GEM")<<
"lut 0 1 = "<<lut[code][0]<<
" "<<lut[code][1]<<std::endl;
1412 const int nPads(pads.size());
1413 const int nCoPads(copads.size());
1414 const bool hasPads(nPads!=0);
1415 const bool hasCoPads(nCoPads!=0);
1419 if (
debug_gem_matching)
std::cout <<
"++Info: 2 valid ALCTs-CLCTs pairs with trigger pads. Call the GHOSTBUSTERS!!!" << std::endl;
1421 typedef std::pair<int,int> mypair;
1423 std::vector<std::tuple<mypair,mypair,mypair,mypair>>
deltas;
1427 for (
const auto&
p : copads) {
1429 const int rollN(detId.
roll());
1430 const int padN((
p.second).pad());
1437 deltas.push_back(std::make_tuple(t11,t22,t12,t21));
1440 std::cout <<
"- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - " << std::endl;
1441 std::cout <<
"Printing (deltaRoll, deltaPad) for each (ALCT,CLCT) pair and for each trigger copad" << std::endl;
1442 for (
unsigned i =0;
i < deltas.size(); ++
i){
1443 auto c(deltas.at(
i));
1445 std::cout <<
"\t11: " <<
"(" << std::get<0>(
c).
first <<
"," << std::get<0>(
c).second <<
"); " 1446 <<
"22: " <<
"(" << std::get<1>(
c).
first <<
"," << std::get<1>(
c).second <<
"); " 1447 <<
"12: " <<
"(" << std::get<2>(
c).
first <<
"," << std::get<2>(
c).second <<
"); " 1448 <<
"21: " <<
"(" << std::get<3>(
c).
first <<
"," << std::get<3>(
c).second <<
")" << std::endl << std::endl;
1450 std::cout <<
"- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - " << std::endl;
1468 for (
const auto&
p : pads) {
1470 const int rollN(detId.
roll());
1471 const int padN((
p.second).pad());
1478 deltas.push_back(std::make_tuple(t11,t22,t12,t21));
1481 std::cout <<
"- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - " << std::endl;
1482 std::cout <<
"Printing (deltaRoll, deltaPad) for each (ALCT,CLCT) pair and for each trigger pad" << std::endl;
1483 for (
unsigned i =0;
i < deltas.size(); ++
i){
1484 auto c(deltas.at(
i));
1486 std::cout <<
"\t11: " <<
"(" << std::get<0>(
c).
first <<
"," << std::get<0>(
c).second <<
"); " 1487 <<
"22: " <<
"(" << std::get<1>(
c).
first <<
"," << std::get<1>(
c).second <<
"); " 1488 <<
"12: " <<
"(" << std::get<2>(
c).
first <<
"," << std::get<2>(
c).second <<
"); " 1489 <<
"21: " <<
"(" << std::get<3>(
c).
first <<
"," << std::get<3>(
c).second <<
")" << std::endl << std::endl;
1491 std::cout <<
"- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - " << std::endl;
1498 switch (lut[code][0]) {
1516 if (dbg)
LogTrace(
"CSCMotherboardME11GEM")<<
"lct1: "<<lct1<<std::endl;
1518 switch (lut[code][1])
1523 if (dbg)
LogTrace(
"CSCMotherboardME11GEM")<<
"lct2: "<<lct2<<std::endl;
1528 if (dbg)
LogTrace(
"CSCMotherboardME11GEM")<<
"lct2: "<<lct2<<std::endl;
1533 if (dbg)
LogTrace(
"CSCMotherboardME11GEM")<<
"lct2: "<<lct2<<std::endl;
1538 if (dbg)
LogTrace(
"CSCMotherboardME11GEM")<<
"out of correlateLCTs"<<std::endl;
1546 int ch(isEven ? 2 : 1);
1552 for(
auto roll :
chamber->etaPartitions()) {
1553 const float half_striplength(roll->specs()->specificTopology().stripLength()/2.);
1554 const LocalPoint lp_top(0., half_striplength, 0.);
1555 const LocalPoint lp_bottom(0., -half_striplength, 0.);
1557 const GlobalPoint gp_bottom(roll->toGlobal(lp_bottom));
1568 const float minEta((
p.second).first);
1569 const float maxEta((
p.second).second);
1570 if (minEta <= eta and eta <= maxEta) {
1581 int ME,
bool oldDataFormat)
1595 int bx = alct.
getBX();
1598 int keyStrip = mymap[gem.
pad()];
1603 if (keyStrip>wgvshs[wg][0] && keyStrip<wgvshs[wg][1])
1605 return CSCCorrelatedLCTDigi(0, 1, quality, wg, keyStrip, pattern, 0, bx, 0, 0, 0,
theTrigChamber);
1607 else return CSCCorrelatedLCTDigi(0,0,0,0,0,0,0,0,0,0,0,0);
1621 int keyStrip = mymap[gem.
pad()];
1626 if (keyStrip>wgvshs[wg][0] && keyStrip<wgvshs[wg][1])
1628 return CSCCorrelatedLCTDigi(0, 1, quality, wg, keyStrip, pattern, 0, bx, 0, 0, 0,
theTrigChamber);
1630 else return CSCCorrelatedLCTDigi(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
1636 int ME,
bool oldDataFormat)
1645 unsigned int quality = promoteCLCTGEMquality ? 14 : 11;
1654 return CSCCorrelatedLCTDigi(0, 1, quality, wg, clct.
getKeyStrip(),
pattern, clct.
getBend(), bx, 0, 0, 0,
theTrigChamber);
1670 return CSCCorrelatedLCTDigi(0, 1, quality, wg, 0, pattern, 0, bx, 0, 0, 0,
theTrigChamber);
1676 bool hasPad,
bool hasCoPad)
1703 bool hasPad,
bool hasCoPad)
1721 if (isDistrip) {quality = 4;}
1730 if (sumQual < 1 || sumQual > 6) {
1732 <<
"+++ findQuality: sumQual = " << sumQual <<
"+++ \n";
1735 if (sumQual == 2) {quality = 6;}
1736 else if (sumQual == 3) {quality = 7;}
1737 else if (sumQual == 4) {quality = 8;}
1738 else if (sumQual == 5) {quality = 9;}
1739 else if (sumQual == 6) {quality = 10;}
1742 if (sumQual == 2) {quality = 11;}
1743 else if (sumQual == 3) {quality = 12;}
1744 else if (sumQual == 4) {quality = 13;}
1745 else if (sumQual == 5) {quality = 14;}
1746 else if (sumQual == 6) {quality = 15;}
1767 if (sumQual < 1 || sumQual > 6) {
1769 <<
"+++ findQuality: Unexpected sumQual = " << sumQual <<
"+++\n";
1778 quality = offset + sumQual;
1791 if (pattern == 1) quality = 3;
1797 if (hasPad) n_gem = 1;
1798 if (hasCoPad) n_gem = 2;
1802 if (!a4 && !c4) quality = 5;
1803 else if ( a4 && !c4) quality = 6;
1804 else if (!a4 && c4) quality = 7;
1805 else if ( a4 && c4) {
1810 if (pattern == 2 || pattern == 3) quality = 11;
1811 else if (pattern == 4 || pattern == 5) quality = 12;
1812 else if (pattern == 6 || pattern == 7) quality = 13;
1813 else if (pattern == 8 || pattern == 9) quality = 14;
1814 else if (pattern == 10) quality = 15;
1817 <<
"+++ findQuality: Unexpected CLCT pattern id = " 1818 << pattern <<
"+++\n";
1839 const bool hasPads(thePads.size()!=0);
1841 std::cout <<
"------------------------------------------------------------------------" << std::endl;
1843 for (
int bx = bx_start; bx <= bx_stop; bx++) {
1846 std::vector<std::pair<unsigned int, const GEMPadDigi> > in_pads = thePads[bx];
1848 if (!iscopad)
std::cout <<
"* GEM trigger pads: " << std::endl;
1849 else std::cout <<
"* GEM trigger coincidence pads: " << std::endl;
1852 if (!iscopad)
std::cout <<
"N(pads) BX " << bx <<
" : " << in_pads.size() << std::endl;
1853 else std::cout <<
"N(copads) BX " << bx <<
" : " << in_pads.size() << std::endl;
1855 for (
const auto& pad : in_pads){
1857 std::cout <<
"\tdetId " << pad.first <<
" " << roll_id <<
", pad = " << pad.second.pad() <<
", BX = " << pad.second.bx() + 6;
1870 for (
const auto& ch : superChamber->chambers()) {
1871 for (
const auto& roll : ch->etaPartitions()) {
1873 auto pads_in_det = gemPads->get(roll_id);
1874 for (
auto pad = pads_in_det.first; pad != pads_in_det.second; ++pad) {
1877 pads_[bx].push_back(std::make_pair(roll_id, *pad));
1888 coPads_[copad.bx(1)].push_back(std::make_pair(copad.roll(), copad.first()));
1889 coPads_[copad.bx(1)].push_back(std::make_pair(copad.roll(), copad.second()));
1897 if ((
p.first < 10)
or (
p.first > 15))
continue;
1898 if (((
p.second).first <= roll) and (roll <= (
p.second).second))
return true;
1926 const int lowPad(mymap[clct.
getKeyStrip()].first);
1927 const int highPad(mymap[clct.
getKeyStrip()].second);
1928 const bool debug(
false);
1929 if (debug)
std::cout <<
"lowpad " << lowPad <<
" highpad " << highPad <<
" delta pad " << deltaPad <<std::endl;
1930 for (
const auto&
p: pads){
1934 auto padRoll((
p.second).pad());
1935 if (debug)
std::cout <<
"padRoll " << padRoll << std::endl;
1937 if (debug)
std::cout <<
"++Matches! " << std::endl;
1938 result.push_back(
p);
1939 if (first)
return result;
1952 const bool debug(
false);
1953 if (debug)
std::cout <<
"ALCT keyWG " << alct.
getKeyWG() <<
", rolls " << alctRoll.first <<
" " << alctRoll.second << std::endl;
1954 for (
const auto&
p: pads){
1959 if (debug)
std::cout <<
"Candidate ALCT: " << padRoll << std::endl;
1962 if (alctRoll.first == -99 and alctRoll.second == -99)
continue;
1963 else if (alctRoll.first == -99 and !(padRoll <= alctRoll.second))
continue;
1964 else if (alctRoll.second == -99 and !(padRoll >= alctRoll.first))
continue;
1965 else if ((alctRoll.first != -99 and alctRoll.second != -99) and
1966 (alctRoll.first > padRoll
or padRoll > alctRoll.second))
continue;
1967 if (debug)
std::cout <<
"++Matches! " << std::endl;
1968 result.push_back(
p);
1969 if (first)
return result;
1985 const bool debug(
false);
1986 if (debug)
std::cout <<
"-----------------------------------------------------------------------"<<std::endl;
1988 for (
const auto&
p : padsAlct){
1989 if (debug)
std::cout<<
"Candidate ALCT: " <<
p.first <<
" " <<
p.second << std::endl;
1990 for (
const auto&
q: padsClct){
1991 if (debug)
std::cout<<
"++Candidate CLCT: " <<
q.first <<
" " <<
q.second << std::endl;
1994 if (debug)
std::cout <<
"++Matches! " << std::endl;
1995 result.push_back(
p);
1996 if (first)
return result;
1999 if (debug)
std::cout <<
"-----------------------------------------------------------------------"<<std::endl;
2004 std::vector<GEMCoPadDigi>
int getQuality() const
return quality of a pattern (number of layers hit!)
bool isPadInOverlap(int roll)
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_
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)
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())
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
std::map< int, std::pair< double, double > > gemRollToEtaLimits_
unsigned int encodePattern(const int ptn, const int highPt)
Abs< T >::type abs(const T &t)
std::unique_ptr< GEMCoPadProcessor > coPadProcessor
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 subdetId() const
get the contents of the subdetector field (not cast into any detector's numbering enum) ...
int deltaRoll(int wg, int roll)
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]
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
Detector det() const
get the detector field from this detid
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)