13 #define NUM_CSC_CHAMBERS 6*9 // 18 in ME1; 9x3 in ME2,3,4; 9 from neighbor sector. 15 #define NUM_RPC_CHAMBERS 7*8 // 6x2 in RE1,2; 12x2 in RE3,4; 6 from neighbor sector. 17 #define NUM_GEM_CHAMBERS 6*9 // 6 in GE1/1; 3 in GE2/1; 2 from neighbor sector. 23 int bxShiftCSC,
int bxShiftRPC,
int bxShiftGEM,
24 bool includeNeighbor,
bool duplicateTheta,
48 std::map<int, TriggerPrimitiveCollection>& selected_csc_map
50 TriggerPrimitiveCollection::const_iterator tp_it = muon_primitives.begin();
51 TriggerPrimitiveCollection::const_iterator tp_end = muon_primitives.end();
53 for (; tp_it != tp_end; ++tp_it) {
58 bool patchPattern =
true;
68 bool patchQuality =
true;
78 if (selected_csc >= 0) {
82 if (selected_csc_map[selected_csc].
size() < 2) {
83 selected_csc_map[selected_csc].push_back(new_tp);
86 edm::LogWarning(
"L1T") <<
"\n******************* EMTF EMULATOR: SUPER-BIZZARE CASE *******************";
87 edm::LogWarning(
"L1T") <<
"Found 3 CSC trigger primitives in the same chamber";
88 for (
int ii = 0;
ii < 3;
ii++) {
96 edm::LogWarning(
"L1T") <<
"************************* ONLY KEEP FIRST TWO *************************\n\n";
106 std::map<int, TriggerPrimitiveCollection>::iterator map_tp_it = selected_csc_map.begin();
107 std::map<int, TriggerPrimitiveCollection>::iterator map_tp_end = selected_csc_map.end();
109 for (; map_tp_it != map_tp_end; ++map_tp_it) {
110 int selected = map_tp_it->first;
113 if (tmp_primitives.size() >= 4) {
114 edm::LogWarning(
"L1T") <<
"EMTF found 4 or more CSC LCTs in one chamber: keeping only two";
115 tmp_primitives.erase(tmp_primitives.begin() + 4, tmp_primitives.end());
116 tmp_primitives.erase(tmp_primitives.begin() + 2);
117 tmp_primitives.erase(tmp_primitives.begin() + 1);
118 }
else if (tmp_primitives.size() == 3) {
119 edm::LogWarning(
"L1T") <<
"EMTF found 3 CSC LCTs in one chamber: keeping only two";
120 tmp_primitives.erase(tmp_primitives.begin() + 2);
122 if (not(tmp_primitives.size() <= 2))
123 {
edm::LogError(
"L1T") <<
"tmp_primitives.size() = " << tmp_primitives.size() ;
return; }
125 if (tmp_primitives.size() == 2) {
127 (tmp_primitives.at(0).getStrip() != tmp_primitives.at(1).getStrip()) &&
128 (tmp_primitives.at(0).getWire() != tmp_primitives.at(1).getWire())
137 tmp_primitives.insert(tmp_primitives.begin()+1, tp1);
138 tmp_primitives.insert(tmp_primitives.begin()+2, tp0);
141 const bool is_csc_me11 = (0 <= selected && selected <= 2) || (9 <= selected && selected <= 11) || (selected == 45);
145 if (tmp_primitives.size() == 2) {
153 tmp_primitives.insert(tmp_primitives.begin()+1, tp1);
154 tmp_primitives.insert(tmp_primitives.begin()+2, tp0);
156 if (not(tmp_primitives.size() == 1 || tmp_primitives.size() == 4))
157 {
edm::LogError(
"L1T") <<
"tmp_primitives.size() = " << tmp_primitives.size();
return; }
172 std::map<int, TriggerPrimitiveCollection>& selected_rpc_map
174 TriggerPrimitiveCollection::const_iterator tp_it = muon_primitives.begin();
175 TriggerPrimitiveCollection::const_iterator tp_end = muon_primitives.end();
177 for (; tp_it != tp_end; ++tp_it) {
180 if (selected_rpc >= 0) {
183 selected_rpc_map[selected_rpc].push_back(*tp_it);
195 bool apply_truncation =
true;
196 if (apply_truncation) {
199 bool operator()(
const value_type&
x)
const {
200 int sz = x.getRPCData().strip_hi - x.getRPCData().strip_low + 1;
205 std::map<int, TriggerPrimitiveCollection>::iterator map_tp_it = selected_rpc_map.begin();
206 std::map<int, TriggerPrimitiveCollection>::iterator map_tp_end = selected_rpc_map.end();
208 for (; map_tp_it != map_tp_end; ++map_tp_it) {
213 if (tmp_primitives.size() > 2)
214 tmp_primitives.erase(tmp_primitives.begin()+2, tmp_primitives.end());
217 tmp_primitives.erase(
218 std::remove_if(tmp_primitives.begin(), tmp_primitives.end(), cluster_size_cut),
226 bool map_rpc_to_csc =
true;
227 if (map_rpc_to_csc) {
228 std::map<int, TriggerPrimitiveCollection> tmp_selected_rpc_map;
230 std::map<int, TriggerPrimitiveCollection>::iterator map_tp_it = selected_rpc_map.begin();
231 std::map<int, TriggerPrimitiveCollection>::iterator map_tp_end = selected_rpc_map.end();
233 for (; map_tp_it != map_tp_end; ++map_tp_it) {
234 int selected = map_tp_it->first;
237 int rpc_sub = selected / 8;
238 int rpc_chm = selected % 8;
245 if (0 <= rpc_sub && rpc_sub < 3) {
247 pc_chamber = 3 + rpc_sub;
248 }
else if (3 <= rpc_sub && rpc_sub < 6) {
250 pc_chamber = 3 + (rpc_sub - 3);
252 }
else if (rpc_chm == 1) {
254 pc_chamber = 3 + rpc_sub;
255 }
else if (2 <= rpc_chm && rpc_chm <= 3) {
257 pc_chamber = 3 + rpc_sub;
258 }
else if (4 <= rpc_chm && rpc_chm <= 5) {
260 pc_chamber = 3 + rpc_sub;
267 }
else if (rpc_chm == 1) {
269 }
else if (2 <= rpc_chm && rpc_chm <= 3) {
271 }
else if (4 <= rpc_chm && rpc_chm <= 5) {
276 if (not(pc_station != -1 && pc_chamber != -1))
277 {
edm::LogError(
"L1T") <<
"pc_station = " << pc_station <<
", pc_chamber = " << pc_chamber;
return; }
279 selected = (pc_station * 9) + pc_chamber;
281 bool ignore_this_rpc_chm =
false;
282 if (rpc_chm == 3 || rpc_chm == 5) {
285 if (tmp_selected_rpc_map.find(selected) != tmp_selected_rpc_map.end())
286 ignore_this_rpc_chm =
true;
289 if (ignore_this_rpc_chm) {
291 for (
auto&& tp : tmp_primitives) {
292 tp.accessRPCData().valid = 0;
296 if (tmp_selected_rpc_map.find(selected) == tmp_selected_rpc_map.end()) {
297 tmp_selected_rpc_map[selected] = tmp_primitives;
299 tmp_selected_rpc_map[selected].insert(tmp_selected_rpc_map[selected].
end(), tmp_primitives.begin(), tmp_primitives.end());
303 std::swap(selected_rpc_map, tmp_selected_rpc_map);
314 std::map<int, TriggerPrimitiveCollection>& selected_gem_map
316 TriggerPrimitiveCollection::const_iterator tp_it = muon_primitives.begin();
317 TriggerPrimitiveCollection::const_iterator tp_end = muon_primitives.end();
319 for (; tp_it != tp_end; ++tp_it) {
322 if (selected_gem >= 0) {
325 selected_gem_map[selected_gem].push_back(*tp_it);
330 bool apply_truncation =
true;
331 if (apply_truncation) {
334 bool operator()(
const value_type&
x)
const {
335 int sz = x.getGEMData().pad_hi - x.getGEMData().pad_low + 1;
340 std::map<int, TriggerPrimitiveCollection>::iterator map_tp_it = selected_gem_map.begin();
341 std::map<int, TriggerPrimitiveCollection>::iterator map_tp_end = selected_gem_map.end();
343 for (; map_tp_it != map_tp_end; ++map_tp_it) {
348 tmp_primitives.erase(
349 std::remove_if(tmp_primitives.begin(), tmp_primitives.end(), cluster_size_cut),
354 if (tmp_primitives.size() > 8)
355 tmp_primitives.erase(tmp_primitives.begin()+8, tmp_primitives.end());
382 const std::map<int, TriggerPrimitiveCollection>& selected_csc_map,
383 const std::map<int, TriggerPrimitiveCollection>& selected_rpc_map,
384 const std::map<int, TriggerPrimitiveCollection>& selected_gem_map,
385 std::map<int, TriggerPrimitiveCollection>& selected_prim_map
388 std::map<int, TriggerPrimitiveCollection>::const_iterator map_tp_it = selected_csc_map.begin();
389 std::map<int, TriggerPrimitiveCollection>::const_iterator map_tp_end = selected_csc_map.end();
391 for (; map_tp_it != map_tp_end; ++map_tp_it) {
392 int selected_csc = map_tp_it->first;
394 if (not(csc_primitives.size() <= 4))
395 {
edm::LogError(
"L1T") <<
"csc_primitives.size() = " << csc_primitives.size();
return; }
398 selected_prim_map[selected_csc] = csc_primitives;
402 map_tp_it = selected_gem_map.begin();
403 map_tp_end = selected_gem_map.end();
405 for (; map_tp_it != map_tp_end; ++map_tp_it) {
406 int selected_gem = map_tp_it->first;
408 if (gem_primitives.empty())
continue;
409 if (not(gem_primitives.size() <= 8))
410 {
edm::LogError(
"L1T") <<
"gem_primitives.size() = " << gem_primitives.size();
return; }
412 bool found = (selected_prim_map.find(selected_gem) != selected_prim_map.end());
415 selected_prim_map[selected_gem] = gem_primitives;
423 map_tp_it = selected_rpc_map.begin();
424 map_tp_end = selected_rpc_map.end();
426 for (; map_tp_it != map_tp_end; ++map_tp_it) {
427 int selected_rpc = map_tp_it->first;
429 if (rpc_primitives.empty())
continue;
430 if (not(rpc_primitives.size() <= 4))
431 {
edm::LogError(
"L1T") <<
"rpc_primitives.size() = " << rpc_primitives.size();
return; }
433 bool found = (selected_prim_map.find(selected_rpc) != selected_prim_map.end());
440 for (
const auto& tp : rpc_primitives) {
441 if (tp.getRPCData().valid != 0) {
442 tmp_rpc_primitives.push_back(tp);
445 if (not(rpc_primitives.size() <= 2))
446 {
edm::LogError(
"L1T") <<
"rpc_primitives.size() = " << rpc_primitives.size();
return; }
447 selected_prim_map[selected_rpc] = tmp_rpc_primitives;
462 const std::map<int, TriggerPrimitiveCollection>& selected_csc_map,
463 const std::map<int, TriggerPrimitiveCollection>& selected_rpc_map,
464 const std::map<int, TriggerPrimitiveCollection>& selected_gem_map,
465 std::map<int, TriggerPrimitiveCollection>& selected_prim_map
468 merge_map_into_map(selected_csc_map, selected_prim_map);
471 merge_map_into_map(selected_gem_map, selected_prim_map);
474 merge_map_into_map(selected_rpc_map, selected_prim_map);
487 int tp_endcap = tp_detId.
endcap();
489 int tp_station = tp_detId.
station();
490 int tp_ring = tp_detId.
ring();
491 int tp_chamber = tp_detId.
chamber();
493 int tp_bx = tp_data.bx;
494 int tp_csc_ID = tp_data.cscID;
497 edm::LogWarning(
"L1T") <<
"EMTF CSC format error: tp_endcap = " << tp_endcap;
return selected; }
499 edm::LogWarning(
"L1T") <<
"EMTF CSC format error: tp_sector = " << tp_sector;
return selected; }
500 if ( !(1 <= tp_station && tp_station <= 4) ) {
501 edm::LogWarning(
"L1T") <<
"EMTF CSC format error: tp_station = " << tp_station;
return selected; }
502 if ( !(1 <= tp_csc_ID && tp_csc_ID <= 9) ) {
503 edm::LogWarning(
"L1T") <<
"EMTF CSC format error: tp_csc_ID = " << tp_csc_ID;
return selected; }
504 if ( !(tp_data.valid ==
true) ) {
505 edm::LogWarning(
"L1T") <<
"EMTF CSC format error: tp_data.valid = " << tp_data.valid ;
return selected; }
506 if ( !(tp_data.pattern <= 10) ) {
507 edm::LogWarning(
"L1T") <<
"EMTF CSC format error: tp_data.pattern = " << tp_data.pattern;
return selected; }
508 if ( !(tp_data.quality > 0) ) {
509 edm::LogWarning(
"L1T") <<
"EMTF CSC format error: tp_data.quality = " << tp_data.quality;
return selected; }
513 if (tp_station == 1 && tp_ring == 4) {
516 }
else if (tp_station == 1 && tp_ring == 1) {
519 }
else if (tp_station == 1 && tp_ring == 2) {
522 }
else if (tp_station == 1 && tp_ring == 3) {
525 }
else if (tp_station == 2 && tp_ring == 1) {
528 }
else if (tp_station >= 3 && tp_ring == 1) {
531 }
else if (tp_station >= 2 && tp_ring == 2) {
536 if ( !(tp_data.strip < max_strip) ) {
537 edm::LogWarning(
"L1T") <<
"EMTF CSC format error in station " << tp_station <<
", ring " << tp_ring
538 <<
": tp_data.strip = " << tp_data.strip <<
" (max = " << max_strip - 1 <<
")" << std::endl;
540 if ( !(tp_data.keywire < max_wire) ) {
541 edm::LogWarning(
"L1T") <<
"EMTF CSC format error in station " << tp_station <<
", ring " << tp_ring
542 <<
": tp_data.keywire = " << tp_data.keywire <<
" (max = " << max_wire - 1 <<
")" << std::endl;
548 int tp_subsector = (tp_station != 1) ? 0 : ((tp_chamber%6 > 2) ? 1 : 2);
553 selected =
get_index_csc(tp_subsector, tp_station, tp_csc_ID,
false);
555 selected =
get_index_csc(tp_subsector, tp_station, tp_csc_ID,
true);
567 auto get_neighbor = [](
int sector) {
568 return (sector == 1) ? 6 : sector - 1;
572 if ((
endcap_ == tp_endcap) && (get_neighbor(
sector_) == tp_sector)) {
573 if (tp_station == 1) {
574 if ((tp_subsector == 2) && (tp_csc_ID == 3 || tp_csc_ID == 6 || tp_csc_ID == 9))
578 if (tp_csc_ID == 3 || tp_csc_ID == 9)
588 return (
bx_ == tp_bx);
596 if (tp_station == 1) {
597 selected = (tp_subsector-1) * 9 + (tp_csc_ID-1);
599 selected = (tp_station) * 9 + (tp_csc_ID-1);
603 if (tp_station == 1) {
604 selected = (5) * 9 + (tp_csc_ID-1)/3;
606 selected = (5) * 9 + (tp_station) * 2 - 1 + (tp_csc_ID-1 < 3 ? 0 : 1);
622 int tp_region = tp_detId.
region();
623 int tp_endcap = (tp_region == -1) ? 2 : tp_region;
624 int tp_sector = tp_detId.
sector();
626 int tp_station = tp_detId.
station();
627 int tp_ring = tp_detId.
ring();
628 int tp_roll = tp_detId.
roll();
631 int tp_bx = tp_data.bx;
632 int tp_strip = tp_data.strip;
634 if ( !(tp_region != 0) ) {
635 edm::LogWarning(
"L1T") <<
"EMTF RPC format error: tp_region = " << tp_region;
return selected; }
637 edm::LogWarning(
"L1T") <<
"EMTF RPC format error: tp_endcap = " << tp_endcap;
return selected; }
639 edm::LogWarning(
"L1T") <<
"EMTF RPC format error: tp_sector = " << tp_sector;
return selected; }
640 if ( !(1 <= tp_subsector && tp_subsector <= 6) ) {
641 edm::LogWarning(
"L1T") <<
"EMTF RPC format error: tp_subsector = " << tp_subsector;
return selected; }
642 if ( !(1 <= tp_station && tp_station <= 4) ) {
643 edm::LogWarning(
"L1T") <<
"EMTF RPC format error: tp_station = " << tp_station;
return selected; }
644 if ( !(2 <= tp_ring && tp_ring <= 3) ) {
645 edm::LogWarning(
"L1T") <<
"EMTF RPC format error: tp_ring = " << tp_ring;
return selected; }
646 if ( !(1 <= tp_roll && tp_roll <= 3) ) {
647 edm::LogWarning(
"L1T") <<
"EMTF RPC format error: tp_roll = " << tp_roll;
return selected; }
648 if ( !(1 <= tp_strip && tp_strip <= 32) ) {
649 edm::LogWarning(
"L1T") <<
"EMTF RPC format error: tp_data.strip = " << tp_data.strip;
return selected; }
650 if ( !(tp_station > 2 || tp_ring != 3) ) {
651 edm::LogWarning(
"L1T") <<
"EMTF RPC format error: tp_station = " << tp_station <<
", tp_ring = " << tp_ring;
return selected; }
656 if (
is_in_sector_rpc(tp_endcap, tp_station, tp_ring, tp_sector, tp_subsector)) {
657 selected =
get_index_rpc(tp_station, tp_ring, tp_subsector,
false);
659 selected =
get_index_rpc(tp_station, tp_ring, tp_subsector,
true);
669 auto get_csc_sector = [](
int tp_station,
int tp_ring,
int tp_sector,
int tp_subsector) {
671 int corr = (tp_subsector < 3) ? (tp_sector == 1 ? +5 : -1) : 0;
672 return tp_sector +
corr;
674 return ((
endcap_ == tp_endcap) && (
sector_ == get_csc_sector(tp_station, tp_ring, tp_sector, tp_subsector)));
678 auto get_csc_neighbor_subsector = [](
int tp_station,
int tp_ring) {
682 return (
includeNeighbor_ && (
endcap_ == tp_endcap) && (
sector_ == tp_sector) && (tp_subsector == get_csc_neighbor_subsector(tp_station, tp_ring)));
687 return (
bx_ == tp_bx);
706 rpc_sub = ((tp_subsector + 3) % 6);
711 if (tp_station <= 2) {
712 rpc_chm = (tp_station - 1);
714 rpc_chm = 2 + (tp_station - 3)*2 + (tp_ring - 2);
717 if (not(rpc_sub != -1 && rpc_chm != -1))
718 {
edm::LogError(
"L1T") <<
"rpc_sub = " << rpc_sub <<
", rpc_chm = " << rpc_chm;
return selected; }
720 selected = (rpc_sub * 8) + rpc_chm;
734 int tp_region = tp_detId.
region();
735 int tp_endcap = (tp_region == -1) ? 2 : tp_region;
736 int tp_station = tp_detId.
station();
737 int tp_ring = tp_detId.
ring();
738 int tp_roll = tp_detId.
roll();
739 int tp_layer = tp_detId.
layer();
740 int tp_chamber = tp_detId.
chamber();
742 int tp_bx = tp_data.
bx;
743 int tp_pad = tp_data.
pad;
749 if( station > 1 && ring > 1 ) {
750 result = ((
static_cast<unsigned>(
chamber-3) & 0x7f) / 6) + 1;
752 else if( station == 1 && ring != 4 ) {
753 result = ((
static_cast<unsigned>(
chamber-3) & 0x7f) / 6) + 1;
756 result = ((
static_cast<unsigned>(
chamber-2) & 0x1f) / 3) + 1;
758 return (result <= 6) ? result : 6;
789 int tp_sector = get_trigger_sector(tp_ring, tp_station, tp_chamber);
790 int tp_csc_ID = get_trigger_csc_ID(tp_ring, tp_station, tp_chamber);
794 int tp_subsector = (tp_station != 1) ? 0 : ((tp_chamber%6 > 2) ? 1 : 2);
798 edm::LogWarning(
"L1T") <<
"EMTF GEM format error: tp_endcap = " << tp_endcap;
return selected; }
800 edm::LogWarning(
"L1T") <<
"EMTF GEM format error: tp_sector = " << tp_sector;
return selected; }
801 if ( !(1 <= tp_station && tp_station <= 2) ) {
802 edm::LogWarning(
"L1T") <<
"EMTF GEM format error: tp_station = " << tp_station;
return selected; }
803 if ( !(1 <= tp_ring && tp_ring <= 1) ) {
804 edm::LogWarning(
"L1T") <<
"EMTF GEM format error: tp_ring = " << tp_ring;
return selected; }
805 if ( !(1 <= tp_csc_ID && tp_csc_ID <= 9) ) {
806 edm::LogWarning(
"L1T") <<
"EMTF GEM format error: tp_csc_ID = " << tp_csc_ID;
return selected; }
807 if (!(tp_station == 1 && 1 <= tp_roll && tp_roll <= 8) || (tp_station != 1)) {
808 edm::LogWarning(
"L1T") <<
"EMTF GEM format error: tp_station = " << tp_station
809 <<
", tp_roll = " << tp_roll;
return selected; }
810 if ( !(tp_station == 2 && 1 <= tp_roll && tp_roll <= 12) || (tp_station != 2)) {
811 edm::LogWarning(
"L1T") <<
"EMTF GEM format error: tp_station = " << tp_station
812 <<
", tp_roll = " << tp_roll;
return selected; }
813 if ( !(1 <= tp_layer && tp_layer <= 2)) {
814 edm::LogWarning(
"L1T") <<
"EMTF GEM format error: tp_layer = " << tp_layer;
return selected; }
815 if ( !((tp_station == 1 && 1 <= tp_pad && tp_pad <= 192) || (tp_station != 1))) {
816 edm::LogWarning(
"L1T") <<
"EMTF GEM format error: tp_station = " << tp_station
817 <<
", tp_pad = " << tp_pad;
return selected; }
818 if ( !((tp_station == 2 && 1 <= tp_pad && tp_pad <= 192) || (tp_station != 2))) {
819 edm::LogWarning(
"L1T") <<
"EMTF GEM format error: tp_station = " << tp_station
820 <<
", tp_pad = " << tp_pad;
return selected; }
825 selected =
get_index_gem(tp_subsector, tp_station, tp_csc_ID,
false);
827 selected =
get_index_gem(tp_subsector, tp_station, tp_csc_ID,
true);
846 return (
bx_ == tp_bx);
851 return get_index_csc(tp_subsector, tp_station, tp_csc_ID, is_neighbor);
const subsystem_type subsystem() const
bool is_in_sector_csc(int tp_endcap, int tp_sector) const
const GEMData getGEMData() const
int get_index_gem(int tp_subsector, int tp_station, int tp_csc_ID, bool is_neighbor) const
const CSCData getCSCData() const
int select_gem(const TriggerPrimitive &muon_primitive) const
bool is_in_sector_gem(int tp_endcap, int tp_sector) const
void merge_no_truncate(const std::map< int, TriggerPrimitiveCollection > &selected_csc_map, const std::map< int, TriggerPrimitiveCollection > &selected_rpc_map, const std::map< int, TriggerPrimitiveCollection > &selected_gem_map, std::map< int, TriggerPrimitiveCollection > &selected_prim_map) const
const RPCData getRPCData() const
void configure(int verbose, int endcap, int sector, int bx, int bxShiftCSC, int bxShiftRPC, int bxShiftGEM, bool includeNeighbor, bool duplicateTheta, bool bugME11Dupes)
bool is_in_sector_rpc(int tp_endcap, int tp_station, int tp_ring, int tp_sector, int tp_subsector) const
const int getStrip() const
Container::value_type value_type
bool is_in_bx_gem(int tp_bx) const
int region() const
The identifiers.
void swap(edm::DataFrameContainer &lhs, edm::DataFrameContainer &rhs)
CSCData & accessCSCData()
int select_rpc(const TriggerPrimitive &muon_primitive) const
int select_csc(const TriggerPrimitive &muon_primitive) const
void process(T tag, const TriggerPrimitiveCollection &muon_primitives, std::map< int, TriggerPrimitiveCollection > &selected_prim_map) const
bool is_in_neighbor_sector_csc(int tp_endcap, int tp_sector, int tp_subsector, int tp_station, int tp_csc_ID) const
bool is_in_bx_csc(int tp_bx) const
int get_index_csc(int tp_subsector, int tp_station, int tp_csc_ID, bool is_neighbor) const
EMTFGEMDetId construct_EMTFGEMDetId(const TriggerPrimitive &tp)
void merge(const std::map< int, TriggerPrimitiveCollection > &selected_csc_map, const std::map< int, TriggerPrimitiveCollection > &selected_rpc_map, const std::map< int, TriggerPrimitiveCollection > &selected_gem_map, std::map< int, TriggerPrimitiveCollection > &selected_prim_map) const
bool is_in_bx_rpc(int tp_bx) const
L1TMuon::TriggerPrimitiveCollection TriggerPrimitiveCollection
int triggerSector() const
int sector() const
Sector id: the group of chambers at same phi (and increasing r)
int subsector() const
SubSector id : some sectors are divided along the phi direction in subsectors (from 1 to 4 in Barrel...
const int getWire() const
int get_index_rpc(int tp_station, int tp_ring, int tp_subsector, bool is_neighbor) const
Int_t triggerSector(Int_t station, Int_t ring, Int_t chamber) const
bool is_in_neighbor_sector_rpc(int tp_endcap, int tp_station, int tp_ring, int tp_sector, int tp_subsector) const
bool is_in_neighbor_sector_gem(int tp_endcap, int tp_sector, int tp_subsector, int tp_station, int tp_csc_ID) const
int region() const
Region id: 0 for Barrel, +/-1 For +/- Endcap.