8 #include "boost/container/flat_set.hpp" 11 { 0,2.421},{ 1,2.415},{ 2,2.406},{ 3,2.397},{ 4,2.388},{ 5,2.379},{ 6,2.371},{ 7,2.362},
12 { 8,2.353},{ 9,2.345},{10,2.336},{11,2.328},{12,2.319},{13,2.311},{14,2.303},{15,2.295},
13 {16,2.287},{17,2.279},{18,2.271},{19,2.263},{20,2.255},{21,2.248},{22,2.240},{23,2.232},
14 {24,2.225},{25,2.217},{26,2.210},{27,2.203},{28,2.195},{29,2.188},{30,2.181},{31,2.174},
15 {32,2.169},{33,2.157},{34,2.151},{35,2.142},{36,2.134},{37,2.126},{38,2.118},{39,2.110},
16 {40,2.102},{41,2.094},{42,2.087},{43,2.079},{44,2.071},{45,2.064},{46,2.056},{47,2.049},
17 {48,2.041},{49,2.034},{50,2.027},{51,2.019},{52,2.012},{53,2.005},{54,1.998},{55,1.991},
18 {56,1.984},{57,1.977},{58,1.970},{59,1.964},{60,1.957},{61,1.950},{62,1.944},{63,1.937},
19 {64,1.932},{65,1.922},{66,1.917},{67,1.911},{68,1.905},{69,1.898},{70,1.892},{71,1.886},
20 {72,1.880},{73,1.874},{74,1.868},{75,1.861},{76,1.855},{77,1.850},{78,1.844},{79,1.838},
21 {80,1.832},{81,1.826},{82,1.820},{83,1.815},{84,1.809},{85,1.803},{86,1.798},{87,1.792},
22 {88,1.787},{89,1.781},{90,1.776},{91,1.770},{92,1.765},{93,1.759},{94,1.754},{95,1.749},
26 { 0,2.447},{ 1,2.441},{ 2,2.432},{ 3,2.423},{ 4,2.414},{ 5,2.405},{ 6,2.396},{ 7,2.388},
27 { 8,2.379},{ 9,2.371},{10,2.362},{11,2.354},{12,2.345},{13,2.337},{14,2.329},{15,2.321},
28 {16,2.313},{17,2.305},{18,2.297},{19,2.289},{20,2.281},{21,2.273},{22,2.266},{23,2.258},
29 {24,2.251},{25,2.243},{26,2.236},{27,2.228},{28,2.221},{29,2.214},{30,2.207},{31,2.200},
30 {32,2.195},{33,2.183},{34,2.176},{35,2.168},{36,2.160},{37,2.152},{38,2.144},{39,2.136},
31 {40,2.128},{41,2.120},{42,2.112},{43,2.104},{44,2.097},{45,2.089},{46,2.082},{47,2.074},
32 {48,2.067},{49,2.059},{50,2.052},{51,2.045},{52,2.038},{53,2.031},{54,2.023},{55,2.016},
33 {56,2.009},{57,2.003},{58,1.996},{59,1.989},{60,1.982},{61,1.975},{62,1.969},{63,1.962},
34 {64,1.957},{65,1.948},{66,1.943},{67,1.936},{68,1.930},{69,1.924},{70,1.917},{71,1.911},
35 {72,1.905},{73,1.899},{74,1.893},{75,1.887},{76,1.881},{77,1.875},{78,1.869},{79,1.863},
36 {80,1.857},{81,1.851},{82,1.845},{83,1.840},{84,1.834},{85,1.828},{86,1.823},{87,1.817},
37 {88,1.811},{89,1.806},{90,1.800},{91,1.795},{92,1.790},{93,1.784},{94,1.779},{95,1.774},
41 { 0,2.399},{ 1,2.394},{ 2,2.386},{ 3,2.378},{ 4,2.370},{ 5,2.362},{ 6,2.354},{ 7,2.346},
42 { 8,2.339},{ 9,2.331},{10,2.323},{11,2.316},{12,2.308},{13,2.301},{14,2.293},{15,2.286},
43 {16,2.279},{17,2.272},{18,2.264},{19,2.257},{20,2.250},{21,2.243},{22,2.236},{23,2.229},
44 {24,2.223},{25,2.216},{26,2.209},{27,2.202},{28,2.196},{29,2.189},{30,2.183},{31,2.176},
45 {32,2.172},{33,2.161},{34,2.157},{35,2.150},{36,2.144},{37,2.138},{38,2.132},{39,2.126},
46 {40,2.119},{41,2.113},{42,2.107},{43,2.101},{44,2.095},{45,2.089},{46,2.083},{47,2.078},
47 {48,2.072},{49,2.066},{50,2.060},{51,2.055},{52,2.049},{53,2.043},{54,2.038},{55,2.032},
48 {56,2.027},{57,2.021},{58,2.016},{59,2.010},{60,2.005},{61,1.999},{62,1.994},{63,1.989},
49 {64,1.985},{65,1.977},{66,1.973},{67,1.968},{68,1.963},{69,1.958},{70,1.953},{71,1.947},
50 {72,1.942},{73,1.937},{74,1.932},{75,1.928},{76,1.923},{77,1.918},{78,1.913},{79,1.908},
51 {80,1.903},{81,1.898},{82,1.894},{83,1.889},{84,1.884},{85,1.879},{86,1.875},{87,1.870},
52 {88,1.866},{89,1.861},{90,1.856},{91,1.852},{92,1.847},{93,1.843},{94,1.838},{95,1.834},
56 { 0,2.423},{ 1,2.418},{ 2,2.410},{ 3,2.402},{ 4,2.394},{ 5,2.386},{ 6,2.378},{ 7,2.370},
57 { 8,2.362},{ 9,2.355},{10,2.347},{11,2.339},{12,2.332},{13,2.324},{14,2.317},{15,2.310},
58 {16,2.302},{17,2.295},{18,2.288},{19,2.281},{20,2.274},{21,2.267},{22,2.260},{23,2.253},
59 {24,2.246},{25,2.239},{26,2.233},{27,2.226},{28,2.219},{29,2.213},{30,2.206},{31,2.199},
60 {32,2.195},{33,2.185},{34,2.180},{35,2.174},{36,2.168},{37,2.161},{38,2.155},{39,2.149},
61 {40,2.143},{41,2.137},{42,2.131},{43,2.125},{44,2.119},{45,2.113},{46,2.107},{47,2.101},
62 {48,2.095},{49,2.089},{50,2.084},{51,2.078},{52,2.072},{53,2.067},{54,2.061},{55,2.055},
63 {56,2.050},{57,2.044},{58,2.039},{59,2.033},{60,2.028},{61,2.023},{62,2.017},{63,2.012},
64 {64,2.008},{65,2.000},{66,1.996},{67,1.991},{68,1.986},{69,1.981},{70,1.976},{71,1.971},
65 {72,1.966},{73,1.961},{74,1.956},{75,1.951},{76,1.946},{77,1.941},{78,1.936},{79,1.931},
66 {80,1.926},{81,1.921},{82,1.917},{83,1.912},{84,1.907},{85,1.902},{86,1.898},{87,1.893},
67 {88,1.889},{89,1.884},{90,1.879},{91,1.875},{92,1.870},{93,1.866},{94,1.861},{95,1.857},
75 {3., 0.02203511, 0.00930056},
76 {5., 0.02203511, 0.00930056},
77 {7 , 0.0182579 , 0.00790009},
78 {10., 0.01066000, 0.00483286},
79 {15., 0.00722795, 0.00363230},
80 {20., 0.00562598, 0.00304878},
81 {30., 0.00416544, 0.00253782},
82 {40., 0.00342827, 0.00230833} };
85 {3., 0.02203511, 0.00930056},
86 {5., 0.02203511, 0.00930056},
87 {7 , 0.0182579 , 0.00790009},
88 {10., 0.01066000, 0.00483286},
89 {15., 0.00722795, 0.00363230},
90 {20., 0.00562598, 0.00304878},
91 {30., 0.00416544, 0.00253782},
92 {40., 0.00342827, 0.00230833} };
95 unsigned sector,
unsigned subsector,
104 <<
"+++ Upgrade CSCMotherboardME3141RPC constructed while isSLHC is not set! +++\n";
122 pref[
m-1] = pref[0] -
m/2;
123 pref[
m] = pref[0] +
m/2;
171 for (
int i=0;
i<2;
i++)
191 <<
"+++ run() called for non-existing ALCT/CLCT processor! +++ \n";
198 bool rpcGeometryAvailable(
false);
199 if (
rpc_g !=
nullptr) {
201 <<
"+++ run() called for RPC-CSC integrated trigger! +++ \n";
202 rpcGeometryAvailable =
true;
204 const bool hasCorrectRPCGeometry((not rpcGeometryAvailable)
or (rpcGeometryAvailable and not
hasRE31andRE41()));
209 const CSCDetId csc_id(cscChamber->id());
212 const CSCLayer* keyLayer(cscChamber->layer(3));
214 const int region((
theEndcap == 1) ? 1: -1);
215 const bool isEven(csc_id.chamber()%2==0);
218 const int csc_trig_chid((3*(csc_trig_sect-1)+csc_trig_id)%18 +1);
219 const int rpc_trig_sect((csc_trig_chid-1)/3+1);
220 const int rpc_trig_subsect((csc_trig_chid-1)%3+1);
227 if (hasCorrectRPCGeometry) {
229 <<
"+++ run() called for RPC-CSC integrated trigger without valid RPC geometry! +++ \n";
237 std::cout <<
"RPC det " <<rpc_id<<
" CSC det "<< csc_id << std::endl;
239 std::cout <<
"roll "<<
p.first <<
" min eta " << (
p.second).
first <<
" max eta " << (
p.second).second << std::endl;
244 const int numberOfWG(keyLayerGeometry->numberOfWireGroups());
245 for (
int i = 0;
i< numberOfWG; ++
i){
257 std::cout <<
"WG "<<
p.first <<
" RPC roll " <<
p.second <<
" " 264 auto randRoll(rpcChamber->roll(2));
266 auto nStrips(keyLayerGeometry->numberOfStrips());
267 for (
float i = 0;
i< nStrips;
i =
i+0.5){
268 const LocalPoint lpCSC(keyLayerGeometry->topology()->localPosition(
i));
272 const bool edge(HS < 5 or HS > 155);
273 const float strip(edge ? -99 : randRoll->strip(lpRPC));
278 std::cout <<
"detId " << csc_id << std::endl;
279 std::cout <<
"CSCHSToRPCStrip LUT in" << std::endl;
281 std::cout <<
"CSC HS "<<
p.first <<
" RPC Strip low " << (
p.second).
first <<
" RPC Strip high " << (
p.second).second << std::endl;
285 const int nRPCStrips(randRoll->nstrips());
286 for (
int i = 0;
i< nRPCStrips; ++
i){
287 const LocalPoint lpRPC(randRoll->centreOfStrip(
i));
290 const float strip(keyLayerGeometry->strip(lpCSC));
295 std::cout <<
"detId " << csc_id << std::endl;
296 std::cout <<
"RPCStripToCSCHs LUT" << std::endl;
298 std::cout <<
"RPC Strip "<<
p.first <<
" CSC HS: " <<
p.second << std::endl;
308 const bool hasRPCDigis(!
rpcDigis_.empty());
310 int used_clct_mask[20];
311 for (
int c=0;
c<20;++
c) used_clct_mask[
c]=0;
316 if (
alct->bestALCT[bx_alct].isValid())
321 std::cout <<
"========================================================================" << std::endl;
322 std::cout <<
"ALCT-CLCT matching in ME" <<
theStation <<
"/1 chamber: " << csc_id << std::endl;
323 std::cout <<
"------------------------------------------------------------------------" << std::endl;
324 std::cout <<
"+++ Best ALCT Details: " <<
alct->bestALCT[bx_alct] << std::endl;
325 std::cout <<
"+++ Second ALCT Details: " <<
alct->secondALCT[bx_alct] << std::endl;
326 std::cout <<
"------------------------------------------------------------------------" << std::endl;
327 if (hasRPCDigis)
std::cout <<
"RPC Chamber " << rpc_id << std::endl;
330 std::cout <<
"------------------------------------------------------------------------" << std::endl;
331 std::cout <<
"Attempt ALCT-CLCT matching in ME" <<
theStation <<
"/1 in bx range: [" << bx_clct_start <<
"," << bx_clct_stop <<
"]" << std::endl;
335 const bool lowQualityALCT(
alct->bestALCT[bx_alct].getQuality() == 0);
338 int nSuccesFulMatches = 0;
339 for (
int bx_clct = bx_clct_start; bx_clct <= bx_clct_stop; bx_clct++) {
342 if (
clct->bestCLCT[bx_clct].isValid()) {
348 const int quality(
clct->bestCLCT[bx_clct].getQuality());
350 const bool lowQuality(
quality<4
or lowQualityALCT);
353 int nFound(!matchingDigis.empty());
354 const bool clctInEdge(
clct->bestCLCT[bx_clct].getKeyStrip() < 5
or clct->bestCLCT[bx_clct].getKeyStrip() > 155);
369 int mbx = bx_clct-bx_clct_start;
371 clct->bestCLCT[bx_clct],
clct->secondCLCT[bx_clct],
372 allLCTs[bx_alct][mbx][0],
allLCTs[bx_alct][mbx][1], matchingDigis);
377 <<
"Successful ALCT-CLCT match: bx_clct = " << bx_clct
378 <<
"; match window: [" << bx_clct_start <<
"; " << bx_clct_stop
379 <<
"]; bx_alct = " << bx_alct << std::endl;
380 std::cout <<
"+++ Best CLCT Details: " <<
clct->secondCLCT[bx_clct]<< std::endl;
381 std::cout <<
"+++ Second CLCT Details: " <<
clct->secondCLCT[bx_clct]<< std::endl;
383 if (
allLCTs[bx_alct][mbx][0].isValid()) {
384 used_clct_mask[bx_clct] += 1;
390 int nSuccesFulRPCMatches = 0;
393 for (
int bx_rpc = bx_clct_start; bx_rpc <= bx_clct_stop; bx_rpc++) {
395 if (not hasRPCDigis)
continue;
400 if (digis.empty())
continue;
403 digis.at(0).second,
allLCTs[bx_alct][0][0],
allLCTs[bx_alct][0][1]);
404 if (
allLCTs[bx_alct][0][0].isValid()) {
405 ++nSuccesFulRPCMatches;
409 std::cout <<
"Successful ALCT-RPC digi match in ME"<<
theStation<<
"1: bx_alct = " << bx_alct << std::endl << std::endl;
410 std::cout <<
"------------------------------------------------------------------------" << std::endl << std::endl;
421 int nSuccesFulMatches = 0;
426 if (
clct->bestCLCT[bx_alct].isValid())
429 std::cout <<
"========================================================================" << std::endl;
430 std::cout <<
"RPC-CLCT matching in ME" <<
theStation <<
"/1 chamber: " << cscChamber->id() <<
" in bx: "<<bx_alct<< std::endl;
431 std::cout <<
"------------------------------------------------------------------------" << std::endl;
433 const int quality(
clct->bestCLCT[bx_alct].getQuality());
439 int mbx =
std::abs(
clct->bestCLCT[bx_alct].getBX()-bx_alct);
447 std::cout <<
"+++ Best CLCT Details: "<<
clct->bestCLCT[bx_alct]<< std::endl;
448 std::cout <<
"+++ Second CLCT Details: " <<
clct->secondCLCT[bx_alct]<< std::endl;
450 if (
allLCTs[bx_rpc][mbx][0].isValid()) {
451 used_clct_mask[bx_alct] += 1;
465 for (
int i=0;
i<2;
i++)
467 int cbx = bx + mbx - match_trig_window_size/2;
472 <<
"LCT"<<
i+1<<
" "<<bx<<
"/"<<cbx<<
": "<<
allLCTs[bx][mbx][
i]<<std::endl;
481 for (
int i=0;
i<2;
i++)
492 for (
int i=0;
i<2;
i++)
494 int cbx = bx + mbx - match_trig_window_size/2;
499 <<
"LCT"<<
i+1<<
" "<<bx<<
"/"<<cbx<<
": "<<
allLCTs[bx][mbx][
i]<<std::endl;
503 <<
"bx "<<bx<<
" nnLCT:"<<n<<
" "<<n<<std::endl;
511 std::cout <<
"========================================================================" << std::endl;
512 std::cout <<
"Counting the final LCTs" << std::endl;
513 std::cout <<
"========================================================================" << std::endl;
529 return aRE31 and aRE41;
535 std::map<int,std::pair<double,double> >
result;
542 if (roll==
nullptr)
continue;
544 const float half_striplength(roll->specs()->specificTopology().stripLength()/2.);
545 const LocalPoint lp_top(0., half_striplength, 0.);
546 const LocalPoint lp_bottom(0., -half_striplength, 0.);
548 const GlobalPoint gp_bottom(roll->toGlobal(lp_bottom));
560 const float minEta((
p.second).first);
561 const float maxEta((
p.second).second);
562 if (minEta <= eta and eta <= maxEta) {
573 if (rpcDigis ==
nullptr)
return;
576 for (
auto roll :
chamber->rolls()) {
578 auto digis_in_det = rpcDigis->get(roll_id);
579 for (
auto digi = digis_in_det.first; digi != digis_in_det.second; ++digi) {
582 rpcDigis_[bx].push_back(std::make_pair(roll_id(), *digi));
591 std::cout <<
"------------------------------------------------------------------------" << std::endl;
593 for (
int bx = bx_start; bx <= bx_stop; bx++) {
594 std::vector<std::pair<unsigned int, const RPCDigi> > in_strips =
rpcDigis_[bx];
596 std::cout <<
"* RPC trigger digis: " << std::endl;
599 std::cout <<
"N(digis) BX " << bx <<
" : " << in_strips.size() << std::endl;
600 for (
const auto& digi : in_strips){
601 const auto roll_id(
RPCDetId(digi.first));
602 std::cout <<
"\tdetId " << digi.first <<
" " << roll_id <<
", digi = " << digi.second.strip() <<
", BX = " << digi.second.bx() + 6 << std::endl;
615 const bool debug(
false);
616 if (debug)
std::cout <<
"lowStrip " << lowStrip <<
" highStrip " << highStrip <<
" delta strip " <<
maxDeltaStripRPC_ <<std::endl;
617 for (
const auto&
p: digis){
618 auto strip((
p.second).strip());
621 if (debug)
std::cout <<
"++Matches! " << std::endl;
636 std::vector<int> Rolls;
643 const bool debug(
false);
645 for (
auto alctRoll : Rolls)
647 if (debug)
std::cout <<
" roll " << alctRoll << std::endl;
648 for (
const auto&
p: digis){
650 if (debug)
std::cout <<
"Candidate ALCT: " << digiRoll << std::endl;
651 if (alctRoll != digiRoll)
continue;
652 if (debug)
std::cout <<
"++Matches! " << std::endl;
670 const bool debug(
false);
671 if (debug)
std::cout <<
"-----------------------------------------------------------------------"<<std::endl;
673 for (
const auto&
p : digisAlct){
674 if (debug)
std::cout<<
"Candidate RPC digis for ALCT: " <<
p.first <<
" " <<
p.second << std::endl;
675 for (
auto q: digisClct){
676 if (debug)
std::cout<<
"++Candidate RPC digis for CLCT: " <<
q.first <<
" " <<
q.second << std::endl;
678 if (
p.first !=
q.first)
continue;
680 if (debug)
std::cout <<
"++Matches! " << std::endl;
685 if (debug)
std::cout <<
"-----------------------------------------------------------------------"<<std::endl;
707 if (isDistrip) {quality = 4;}
716 if (sumQual < 1 || sumQual > 6) {
718 <<
"+++ findQuality: sumQual = " << sumQual <<
"+++ \n";
721 if (sumQual == 2) {quality = 6;}
722 else if (sumQual == 3) {quality = 7;}
723 else if (sumQual == 4) {quality = 8;}
724 else if (sumQual == 5) {quality = 9;}
725 else if (sumQual == 6) {quality = 10;}
728 if (sumQual == 2) {quality = 11;}
729 else if (sumQual == 3) {quality = 12;}
730 else if (sumQual == 4) {quality = 13;}
731 else if (sumQual == 5) {quality = 14;}
732 else if (sumQual == 6) {quality = 15;}
753 if (sumQual < 1 || sumQual > 6) {
755 <<
"+++ findQuality: Unexpected sumQual = " << sumQual <<
"+++\n";
764 quality = offset + sumQual;
782 if (hasRPC) n_rpc = 1;
787 if (!a4 && !c4) quality = 5;
788 else if ( a4 && !c4) quality = 6;
789 else if (!a4 && c4) quality = 7;
790 else if ( a4 && c4) {
799 else if (
pattern == 10) quality = 15;
802 <<
"+++ findQuality: Unexpected CLCT pattern id = " 820 bool cathodeBestValid = bestCLCT.
isValid();
821 bool cathodeSecondValid = secondCLCT.
isValid();
823 if (cathodeBestValid and !cathodeSecondValid) secondCLCT = bestCLCT;
824 if (!cathodeBestValid and cathodeSecondValid) bestCLCT = secondCLCT;
848 bool anodeBestValid = bestALCT.
isValid();
849 bool anodeSecondValid = secondALCT.
isValid();
851 if (anodeBestValid and !anodeSecondValid) secondALCT = bestALCT;
852 if (!anodeBestValid and anodeSecondValid) bestALCT = secondALCT;
875 bool anodeBestValid = bestALCT.
isValid();
876 bool anodeSecondValid = secondALCT.
isValid();
877 bool cathodeBestValid = bestCLCT.
isValid();
878 bool cathodeSecondValid = secondCLCT.
isValid();
880 if (anodeBestValid and !anodeSecondValid) secondALCT = bestALCT;
881 if (!anodeBestValid and anodeSecondValid) bestALCT = secondALCT;
882 if (cathodeBestValid and !cathodeSecondValid) secondCLCT = bestCLCT;
883 if (!cathodeBestValid and cathodeSecondValid) bestCLCT = secondCLCT;
894 if (((secondALCT != bestALCT)
or (secondCLCT != bestCLCT)) and
942 return CSCCorrelatedLCTDigi(0, 1, quality, wg, clct.
getKeyStrip(),
pattern, clct.
getBend(), bx, 0, 0, 0,
theTrigChamber);
958 return CSCCorrelatedLCTDigi(0, 1, quality, wg, 0, pattern, 0, bx, 0, 0, 0,
theTrigChamber);
986 return CSCCorrelatedLCTDigi(0, 1, quality, wg, keyStrip, pattern, 0, bx, 0, 0, 0,
theTrigChamber);
1004 return CSCCorrelatedLCTDigi(0, 1, quality, wg, keyStrip, pattern, 0, bx, 0, 0, 0,
theTrigChamber);
1018 std::vector<CSCCorrelatedLCTDigi>
result;
1020 std::vector<CSCCorrelatedLCTDigi> tmpV;
1023 result.insert(result.end(), tmpV.begin(), tmpV.end());
1027 for (
int i=0;
i<2;
i++) {
1028 if (
allLCTs[bx][mbx][
i].isValid()) {
1029 result.push_back(
allLCTs[bx][mbx][
i]);
1041 std::vector<CSCCorrelatedLCTDigi> LCTs;
1044 for (
int i=0;
i<2;
i++)
1046 LCTs.push_back(
allLCTs[bx][mbx][
i]);
int getQuality() const
return quality of a pattern (number of layers hit!)
T getParameter(std::string const &) const
unsigned int max_me3141_lcts
static const double lut_wg_me41_eta_odd[96][2]
std::map< int, int > cscWgToRpcRoll_
CSCMotherboardME3141RPC(unsigned endcap, unsigned station, unsigned sector, unsigned subsector, unsigned chamber, const edm::ParameterSet &conf)
std::map< int, int > rpcStripToCscHs_
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...
std::vector< CSCCLCTDigi > clctV
bool buildLCTfromCLCTandRPC_
int assignRPCRoll(double eta)
unsigned int match_trig_window_size
const unsigned theTrigChamber
bool isValid() const
check ALCT validity (1 - valid ALCT)
bool useOldLCTDataFormat_
~CSCMotherboardME3141RPC() override
std::vector< CSCCorrelatedLCTDigi > readoutLCTs()
std::vector< CSCCorrelatedLCTDigi > sortLCTsByQuality(int bx)
int getStripType() const
return striptype
int getBend() const
return bend
int maxDeltaStripRPCEven_
uint32_t rawId() const
get the raw id
U second(std::pair< T, U > const &p)
const RPCChamber * chamber(RPCDetId id) const
void printRPCTriggerDigis(int minBX, int maxBx)
const unsigned theStation
static CSCTriggerGeomManager * get()
std::map< int, std::pair< double, double > > createRPCRollLUT(RPCDetId id)
bool promoteALCTRPCpattern_
unsigned int tmb_cross_bx_algo
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
std::map< int, std::pair< int, int > > cscHsToRpcStrip_
const unsigned theSubsector
int getBX() const
return BX
static const double lut_wg_me41_eta_even[96][2]
unsigned int encodePattern(const int ptn, const int highPt)
bool promoteCLCTRPCquality_
static const double lut_pt_vs_dphi_rpccsc_me41[8][3]
Abs< T >::type abs(const T &t)
bool isValid() const
check CLCT validity (1 - valid CLCT)
unsigned int match_trig_enable
static const double lut_wg_me31_eta_odd[96][2]
static int triggerCscIdFromLabels(int station, int ring, int chamber)
static const double lut_pt_vs_dphi_rpccsc_me31[8][3]
int getBX() const
return BX - five low bits of BXN counter tagged by the ALCT
std::map< int, std::pair< double, double > > rpcRollToEtaLimits_
int getQuality() const
return quality of a pattern
CSCCorrelatedLCTDigi allLCTs[MAX_LCT_BINS][15][2]
int getAccelerator() const
bool buildLCTfromLowQstubandRPC_
static int triggerSectorFromLabels(int station, int ring, int chamber)
int getPattern() const
return pattern
const RPCGeometry * rpc_g
RPCDigisBX matchingRPCDigis(const CSCCLCTDigi &cLCT, const RPCDigisBX &digis=RPCDigisBX(), bool first=true)
unsigned int alct_trig_enable
bool buildLCTfromALCTandRPC_
std::vector< RPCDigiBX > RPCDigisBX
std::unique_ptr< CSCAnodeLCTProcessor > alct
void correlateLCTsRPC(CSCALCTDigi bestALCT, CSCALCTDigi secondALCT, CSCCLCTDigi bestCLCT, CSCCLCTDigi secondCLCT, CSCCorrelatedLCTDigi &lct1, CSCCorrelatedLCTDigi &lct2, const RPCDigisBX &digis=RPCDigisBX())
bool match_earliest_clct_me3141_only
std::unique_ptr< CSCCathodeLCTProcessor > clct
std::vector< CSCALCTDigi > alctV
std::vector< CSCCorrelatedLCTDigi > getLCTs()
void run(const CSCWireDigiCollection *wiredc, const CSCComparatorDigiCollection *compdc, const RPCDigiCollection *rpcDigis)
bool dropLowQualityCLCTsNoRPCs_
void retrieveRPCDigis(const RPCDigiCollection *digis, unsigned id)
unsigned int findQualityRPC(const CSCALCTDigi &aLCT, const CSCCLCTDigi &cLCT, bool hasRPC)
int getKeyWG() const
return key wire group
CSCCorrelatedLCTDigi constructLCTsRPC(const CSCALCTDigi &alct, const CSCCLCTDigi &clct, const RPCDigisBX &digis=RPCDigisBX())
static bool sortByQuality(const CSCCorrelatedLCTDigi &, const CSCCorrelatedLCTDigi &)
bool promoteALCTRPCquality_
static const double lut_wg_me31_eta_even[96][2]