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;
188 for (
int i=0;
i<2;
i++)
208 <<
"+++ run() called for non-existing ALCT/CLCT processor! +++ \n";
215 bool rpcGeometryAvailable(
false);
216 if (
rpc_g !=
nullptr) {
218 <<
"+++ run() called for RPC-CSC integrated trigger! +++ \n";
219 rpcGeometryAvailable =
true;
221 const bool hasCorrectRPCGeometry((not rpcGeometryAvailable)
or (rpcGeometryAvailable and not
hasRE31andRE41()));
226 const CSCDetId csc_id(cscChamber->id());
229 const CSCLayer* keyLayer(cscChamber->layer(3));
232 const bool isEven(csc_id.chamber()%2==0);
235 const int csc_trig_chid((3*(csc_trig_sect-1)+csc_trig_id)%18 +1);
236 const int rpc_trig_sect((csc_trig_chid-1)/3+1);
237 const int rpc_trig_subsect((csc_trig_chid-1)%3+1);
244 if (hasCorrectRPCGeometry) {
246 <<
"+++ run() called for RPC-CSC integrated trigger without valid RPC geometry! +++ \n";
254 std::cout <<
"RPC det " <<rpc_id<<
" CSC det "<< csc_id << std::endl;
257 std::cout <<
"roll "<<
p.first <<
" min eta " << (
p.second).
first <<
" max eta " << (
p.second).second << std::endl;
263 const int numberOfWG(keyLayerGeometry->numberOfWireGroups());
264 for (
int i = 0;
i< numberOfWG; ++
i){
276 std::cout <<
"WG "<<
p.first <<
" RPC roll " <<
p.second <<
" "
283 auto randRoll(rpcChamber->roll(2));
285 auto nStrips(keyLayerGeometry->numberOfStrips());
286 for (
float i = 0;
i< nStrips;
i =
i+0.5){
287 const LocalPoint lpCSC(keyLayerGeometry->topology()->localPosition(
i));
289 const LocalPoint lpRPC(randRoll->toLocal(gp));
291 const bool edge(HS < 5 or HS > 155);
292 const float strip(edge ? -99 : randRoll->strip(lpRPC));
297 std::cout <<
"detId " << csc_id << std::endl;
298 std::cout <<
"CSCHSToRPCStrip LUT in" << std::endl;
300 std::cout <<
"CSC HS "<<
p.first <<
" RPC Strip low " << (
p.second).
first <<
" RPC Strip high " << (
p.second).second << std::endl;
304 const int nRPCStrips(randRoll->nstrips());
305 for (
int i = 0;
i< nRPCStrips; ++
i){
306 const LocalPoint lpRPC(randRoll->centreOfStrip(
i));
308 const LocalPoint lpCSC(keyLayer->toLocal(gp));
309 const float strip(keyLayerGeometry->strip(lpCSC));
314 std::cout <<
"detId " << csc_id << std::endl;
315 std::cout <<
"RPCStripToCSCHs LUT" << std::endl;
317 std::cout <<
"RPC Strip "<<
p.first <<
" CSC HS: " <<
p.second << std::endl;
327 const bool hasRPCDigis(
rpcDigis_.size()!=0);
329 int used_clct_mask[20];
330 for (
int c=0;
c<20;++
c) used_clct_mask[
c]=0;
335 if (
alct->bestALCT[bx_alct].isValid())
340 std::cout <<
"========================================================================" << std::endl;
341 std::cout <<
"ALCT-CLCT matching in ME" <<
theStation <<
"/1 chamber: " << csc_id << std::endl;
342 std::cout <<
"------------------------------------------------------------------------" << std::endl;
344 alct->bestALCT[bx_alct].print();
345 std::cout <<
"+++ Second ALCT Details: ";
346 alct->secondALCT[bx_alct].print();
347 std::cout <<
"------------------------------------------------------------------------" << std::endl;
348 std::cout <<
"RPC Chamber " << rpc_id << std::endl;
351 std::cout <<
"------------------------------------------------------------------------" << std::endl;
352 std::cout <<
"Attempt ALCT-CLCT matching in ME" <<
theStation <<
"/1 in bx range: [" << bx_clct_start <<
"," << bx_clct_stop <<
"]" << std::endl;
356 const bool lowQualityALCT(
alct->bestALCT[bx_alct].getQuality() == 0);
359 int nSuccesFulMatches = 0;
360 for (
int bx_clct = bx_clct_start; bx_clct <= bx_clct_stop; bx_clct++) {
363 if (
clct->bestCLCT[bx_clct].isValid()) {
369 const int quality(
clct->bestCLCT[bx_clct].getQuality());
371 const bool lowQuality(
quality<4
or lowQualityALCT);
374 int nFound(matchingDigis.size());
375 const bool clctInEdge(
clct->bestCLCT[bx_clct].getKeyStrip() < 5
or clct->bestCLCT[bx_clct].getKeyStrip() > 155);
390 int mbx = bx_clct-bx_clct_start;
392 clct->bestCLCT[bx_clct],
clct->secondCLCT[bx_clct],
393 allLCTs[bx_alct][mbx][0],
allLCTs[bx_alct][mbx][1], matchingDigis);
398 <<
"Successful ALCT-CLCT match: bx_clct = " << bx_clct
399 <<
"; match window: [" << bx_clct_start <<
"; " << bx_clct_stop
400 <<
"]; bx_alct = " << bx_alct << std::endl;
402 clct->bestCLCT[bx_clct].print();
403 std::cout <<
"+++ Second CLCT Details: ";
404 clct->secondCLCT[bx_clct].print();
406 if (
allLCTs[bx_alct][mbx][0].isValid()) {
407 used_clct_mask[bx_clct] += 1;
413 int nSuccesFulRPCMatches = 0;
416 for (
int bx_rpc = bx_clct_start; bx_rpc <= bx_clct_stop; bx_rpc++) {
418 if (not hasRPCDigis)
continue;
423 if (digis.size()==0)
continue;
427 if (
allLCTs[bx_alct][0][0].isValid()) {
428 ++nSuccesFulRPCMatches;
432 std::cout <<
"Successful ALCT-RPC digi match in ME"<<
theStation<<
"1: bx_alct = " << bx_alct << std::endl << std::endl;
433 std::cout <<
"------------------------------------------------------------------------" << std::endl << std::endl;
444 int nSuccesFulMatches = 0;
449 if (
clct->bestCLCT[bx_alct].isValid())
452 std::cout <<
"========================================================================" << std::endl;
453 std::cout <<
"RPC-CLCT matching in ME" <<
theStation <<
"/1 chamber: " << cscChamber->id() <<
" in bx: "<<bx_alct<< std::endl;
454 std::cout <<
"------------------------------------------------------------------------" << std::endl;
456 const int quality(
clct->bestCLCT[bx_alct].getQuality());
462 int mbx =
std::abs(
clct->bestCLCT[bx_alct].getBX()-bx_alct);
471 clct->bestCLCT[bx_alct].print();
472 std::cout <<
"+++ Second CLCT Details: ";
473 clct->secondCLCT[bx_alct].print();
475 if (
allLCTs[bx_rpc][mbx][0].isValid()) {
476 used_clct_mask[bx_alct] += 1;
496 for (
int i=0;
i<2;
i++)
498 int cbx = bx + mbx - match_trig_window_size/2;
503 <<
"LCT"<<
i+1<<
" "<<bx<<
"/"<<cbx<<
": "<<
allLCTs[bx][mbx][
i]<<std::endl;
512 for (
int i=0;
i<2;
i++)
523 for (
int i=0;
i<2;
i++)
525 int cbx = bx + mbx - match_trig_window_size/2;
534 <<
"bx "<<bx<<
" nnLCT:"<<n<<
" "<<n<<std::endl;
542 std::cout <<
"========================================================================" << std::endl;
543 std::cout <<
"Counting the final LCTs" << std::endl;
544 std::cout <<
"========================================================================" << std::endl;
560 return aRE31 and aRE41;
566 std::map<int,std::pair<double,double> >
result;
569 if (chamber==
nullptr)
return result;
571 for(
int i = 1;
i<= chamber->nrolls(); ++
i){
572 auto roll(chamber->roll(
i));
573 if (roll==
nullptr)
continue;
575 const float half_striplength(roll->specs()->specificTopology().stripLength()/2.);
576 const LocalPoint lp_top(0., half_striplength, 0.);
577 const LocalPoint lp_bottom(0., -half_striplength, 0.);
579 const GlobalPoint gp_bottom(roll->toGlobal(lp_bottom));
591 const float minEta((
p.second).first);
592 const float maxEta((
p.second).second);
593 if (minEta <= eta and eta <= maxEta) {
605 for (
auto roll : chamber->rolls()) {
607 auto digis_in_det = rpcDigis->get(roll_id);
608 for (
auto digi = digis_in_det.first; digi != digis_in_det.second; ++digi) {
609 auto id_digi = std::make_pair(roll_id(), &(*digi));
621 std::cout <<
"------------------------------------------------------------------------" << std::endl;
623 for (
int bx = bx_start; bx <= bx_stop; bx++) {
624 std::vector<std::pair<unsigned int, const RPCDigi*> > in_strips =
rpcDigis_[bx];
626 std::cout <<
"* RPC trigger digis: " << std::endl;
629 std::cout <<
"N(digis) BX " << bx <<
" : " << in_strips.size() << std::endl;
631 for (
auto digi : in_strips){
633 std::cout <<
"\tdetId " << digi.first <<
" " << roll_id <<
", digi = " << digi.second->strip() <<
", BX = " << digi.second->bx() + 6 << std::endl;
649 const bool debug(
false);
650 if (debug)
std::cout <<
"lowStrip " << lowStrip <<
" highStrip " << highStrip <<
" delta strip " <<
maxDeltaStripRPC_ <<std::endl;
652 auto strip((
p.second)->strip());
653 if (debug)
std::cout <<
"strip " << strip << std::endl;
655 if (debug)
std::cout <<
"++Matches! " << std::endl;
670 std::vector<int> Rolls;
677 const bool debug(
false);
679 for (
auto alctRoll : Rolls)
681 if (debug)
std::cout <<
" roll " << alctRoll << std::endl;
684 if (debug)
std::cout <<
"Candidate ALCT: " << digiRoll << std::endl;
685 if (alctRoll != digiRoll)
continue;
686 if (debug)
std::cout <<
"++Matches! " << std::endl;
704 const bool debug(
false);
705 if (debug)
std::cout <<
"-----------------------------------------------------------------------"<<std::endl;
707 for (
auto p : digisAlct){
708 if (debug)
std::cout<<
"Candidate RPC digis for ALCT: " <<
p.first <<
" " << *(
p.second) << std::endl;
709 for (
auto q: digisClct){
710 if (debug)
std::cout<<
"++Candidate RPC digis for CLCT: " <<
q.first <<
" " << *(
q.second) << std::endl;
712 if (
p.first !=
q.first)
continue;
714 if (debug)
std::cout <<
"++Matches! " << std::endl;
719 if (debug)
std::cout <<
"-----------------------------------------------------------------------"<<std::endl;
741 if (isDistrip) {quality = 4;}
750 if (sumQual < 1 || sumQual > 6) {
752 <<
"+++ findQuality: sumQual = " << sumQual <<
"+++ \n";
755 if (sumQual == 2) {quality = 6;}
756 else if (sumQual == 3) {quality = 7;}
757 else if (sumQual == 4) {quality = 8;}
758 else if (sumQual == 5) {quality = 9;}
759 else if (sumQual == 6) {quality = 10;}
762 if (sumQual == 2) {quality = 11;}
763 else if (sumQual == 3) {quality = 12;}
764 else if (sumQual == 4) {quality = 13;}
765 else if (sumQual == 5) {quality = 14;}
766 else if (sumQual == 6) {quality = 15;}
787 if (sumQual < 1 || sumQual > 6) {
789 <<
"+++ findQuality: Unexpected sumQual = " << sumQual <<
"+++\n";
798 quality = offset + sumQual;
816 if (hasRPC) n_rpc = 1;
821 if (!a4 && !c4) quality = 5;
822 else if ( a4 && !c4) quality = 6;
823 else if (!a4 && c4) quality = 7;
824 else if ( a4 && c4) {
833 else if (
pattern == 10) quality = 15;
836 <<
"+++ findQuality: Unexpected CLCT pattern id = "
854 bool cathodeBestValid = bestCLCT.
isValid();
855 bool cathodeSecondValid = secondCLCT.
isValid();
857 if (cathodeBestValid and !cathodeSecondValid) secondCLCT = bestCLCT;
858 if (!cathodeBestValid and cathodeSecondValid) bestCLCT = secondCLCT;
882 bool anodeBestValid = bestALCT.
isValid();
883 bool anodeSecondValid = secondALCT.
isValid();
885 if (anodeBestValid and !anodeSecondValid) secondALCT = bestALCT;
886 if (!anodeBestValid and anodeSecondValid) bestALCT = secondALCT;
909 bool anodeBestValid = bestALCT.
isValid();
910 bool anodeSecondValid = secondALCT.
isValid();
911 bool cathodeBestValid = bestCLCT.
isValid();
912 bool cathodeSecondValid = secondCLCT.
isValid();
914 if (anodeBestValid and !anodeSecondValid) secondALCT = bestALCT;
915 if (!anodeBestValid and anodeSecondValid) bestALCT = secondALCT;
916 if (cathodeBestValid and !cathodeSecondValid) secondCLCT = bestCLCT;
917 if (!cathodeBestValid and cathodeSecondValid) bestCLCT = secondCLCT;
928 if (((secondALCT != bestALCT)
or (secondCLCT != bestCLCT)) and
976 return CSCCorrelatedLCTDigi(0, 1, quality, wg, clct.
getKeyStrip(),
pattern, clct.
getBend(), bx, 0, 0, 0,
theTrigChamber);
992 return CSCCorrelatedLCTDigi(0, 1, quality, wg, 0, pattern, 0, bx, 0, 0, 0,
theTrigChamber);
1020 return CSCCorrelatedLCTDigi(0, 1, quality, wg, keyStrip, pattern, 0, bx, 0, 0, 0,
theTrigChamber);
1038 return CSCCorrelatedLCTDigi(0, 1, quality, wg, keyStrip, pattern, 0, bx, 0, 0, 0,
theTrigChamber);
1052 std::vector<CSCCorrelatedLCTDigi>
result;
1054 std::vector<CSCCorrelatedLCTDigi> tmpV;
1057 result.insert(result.end(), tmpV.begin(), tmpV.end());
1061 for (
int i=0;
i<2;
i++) {
1062 if (
allLCTs[bx][mbx][
i].isValid()) {
1063 result.push_back(
allLCTs[bx][mbx][
i]);
1075 std::vector<CSCCorrelatedLCTDigi> LCTs;
1078 for (
int i=0;
i<2;
i++)
1080 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_
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
bool rpc_clear_nomatch_lcts
whether to throw out RPC-fiducial LCTs that have no rpc match
int assignRPCRoll(double eta)
unsigned int match_trig_window_size
const unsigned theTrigChamber
bool isValid() const
check ALCT validity (1 - valid ALCT)
bool useOldLCTDataFormat_
std::vector< CSCCorrelatedLCTDigi > readoutLCTs()
std::vector< CSCCorrelatedLCTDigi > sortLCTsByQuality(int bx)
int getStripType() const
return striptype
int rpc_match_delta_bx
delta BX for RPC pads matching
int getBend() const
return bend
int maxDeltaStripRPCEven_
uint32_t rawId() const
get the raw id
U second(std::pair< T, U > const &p)
double rpc_match_delta_phi_even
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_
double rpc_match_delta_eta
unsigned int tmb_cross_bx_algo
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_
double rpc_match_delta_phi_odd
RPC matching dphi and deta.
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 matchRPCDigis(enum MEX1Station st)
void correlateLCTsRPC(CSCALCTDigi bestALCT, CSCALCTDigi secondALCT, CSCCLCTDigi bestCLCT, CSCCLCTDigi secondCLCT, CSCCorrelatedLCTDigi &lct1, CSCCorrelatedLCTDigi &lct2, const RPCDigisBX &digis=RPCDigisBX())
bool match_earliest_clct_me3141_only
bool do_rpc_matching
Do RPC matching?
std::unique_ptr< CSCCathodeLCTProcessor > clct
~CSCMotherboardME3141RPC()
std::vector< CSCALCTDigi > alctV
double rpc_match_min_eta
min eta of LCT for which we require RPC match (we don't throw out LCTs below this min eta) ...
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]