18 int minBX,
int maxBX,
int bxWindow,
int bxShiftCSC,
int bxShiftRPC,
int bxShiftGEM,
20 const std::vector<int>& zoneBoundaries,
int zoneOverlap,
21 bool includeNeighbor,
bool duplicateTheta,
bool fixZonePhi,
bool useNewZones,
bool fixME11Edges,
22 const std::vector<std::string>& pattDefinitions,
const std::vector<std::string>& symPattDefinitions,
bool useSymPatterns,
23 int thetaWindow,
int thetaWindowZone0,
bool useRPC,
bool useSingleHits,
bool bugSt2PhDiff,
bool bugME11Dupes,
bool bugAmbigThetaWin,
bool twoStationSameBX,
24 int maxRoadsPerZone,
int maxTracks,
bool useSecondEarliest,
bool bugSameSectorPt0,
25 bool readPtLUTFile,
bool fixMode15HighPt,
bool bug9BitDPhi,
bool bugMode7CLCT,
bool bugNegPt,
bool bugGMTPhi,
bool promoteMode7,
int modeQualVer
30 <<
", endcap = " <<
endcap;
return; }
34 <<
", endcap = " << sector;
return; }
35 if (not(tp_geom !=
nullptr))
37 if (not(cond !=
nullptr))
39 if (not(lut !=
nullptr))
41 if (not(pt_assign_engine !=
nullptr))
42 {
edm::LogError(
"L1T") <<
"pt_assign_engine = nullptr";
return; }
101 std::cout <<
"Configure SectorProcessor with fw_version: " << fw_version << std::endl;
104 if (fw_version == 0 || fw_version == 123456)
114 if (fw_version >= 1514764800) {
161 else if (fw_version >= 50000) {
211 if (fw_version >= 1496792995)
284 maxBX_ = (fw_version < 47109) ? +4 : +3;
347 bugSt2PhDiff_ = (47109 <= fw_version && fw_version < 47249) ?
true :
false;
356 bugNegPt_ = (fw_version < 47864) ?
true :
false;
375 std::deque<EMTFHitCollection> extended_conv_hits;
378 std::deque<EMTFTrackCollection> extended_best_track_cands;
381 std::map<pattern_ref_t, int> patt_lifetime_map;
390 std::cout <<
"Endcap: " <<
endcap_ <<
" Sector: " <<
sector_ <<
" Event: " << ievent <<
" BX: " << bx << std::endl;
399 extended_best_track_cands,
404 if (bx >=
minBX_ + delayBX) {
405 extended_conv_hits.pop_front();
408 extended_best_track_cands.erase(extended_best_track_cands.end()-
n, extended_best_track_cands.end());
420 std::deque<EMTFHitCollection>& extended_conv_hits,
421 std::deque<EMTFTrackCollection>& extended_best_track_cands,
422 std::map<pattern_ref_t, int>& patt_lifetime_map
493 std::map<int, TriggerPrimitiveCollection> selected_csc_map;
494 std::map<int, TriggerPrimitiveCollection> selected_rpc_map;
495 std::map<int, TriggerPrimitiveCollection> selected_gem_map;
496 std::map<int, TriggerPrimitiveCollection> selected_prim_map;
497 std::map<int, TriggerPrimitiveCollection> inclusive_selected_prim_map;
515 prim_sel.
process(
CSCTag(), muon_primitives, selected_csc_map);
517 prim_sel.
process(
RPCTag(), muon_primitives, selected_rpc_map);
519 prim_sel.
process(
GEMTag(), muon_primitives, selected_gem_map);
520 prim_sel.
merge(selected_csc_map, selected_rpc_map, selected_gem_map, selected_prim_map);
525 prim_conv.
process(selected_prim_map, conv_hits);
526 extended_conv_hits.push_back(conv_hits);
531 prim_sel.
merge_no_truncate(selected_csc_map, selected_rpc_map, selected_gem_map, inclusive_selected_prim_map);
532 prim_conv.
process(inclusive_selected_prim_map, inclusive_conv_hits);
535 selected_csc_map.clear();
536 selected_rpc_map.clear();
537 selected_gem_map.clear();
542 patt_recog.
process(extended_conv_hits, patt_lifetime_map, zone_roads);
546 prim_match.
process(extended_conv_hits, zone_roads, zone_tracks);
550 angle_calc.
process(zone_tracks);
551 extended_best_track_cands.insert(extended_best_track_cands.begin(), zone_tracks.begin(), zone_tracks.end());
555 btrack_sel.
process(extended_best_track_cands, best_tracks);
559 single_hit.
process(conv_hits, best_tracks);
563 pt_assign.
process(best_tracks);
568 out_hits.insert(out_hits.end(), inclusive_conv_hits.begin(), inclusive_conv_hits.end());
569 out_tracks.insert(out_tracks.end(), best_tracks.begin(), best_tracks.end());
void configure_by_fw_version(unsigned fw_version)
std::vector< std::string > pattDefinitions_
void process_single_bx(int bx, const TriggerPrimitiveCollection &muon_primitives, EMTFHitCollection &out_hits, EMTFTrackCollection &out_tracks, std::deque< EMTFHitCollection > &extended_conv_hits, std::deque< EMTFTrackCollection > &extended_best_track_cands, std::map< pattern_ref_t, int > &patt_lifetime_map) const
void process(const std::deque< EMTFTrackCollection > &extended_best_track_cands, EMTFTrackCollection &best_tracks) const
std::vector< int > zoneBoundaries_
const ConditionHelper * cond_
void configure(const GeometryTranslator *tp_geom, const SectorProcessorLUT *lut, int verbose, int endcap, int sector, int bx, int bxShiftCSC, int bxShiftRPC, int bxShiftGEM, const std::vector< int > &zoneBoundaries, int zoneOverlap, bool duplicateTheta, bool fixZonePhi, bool useNewZones, bool fixME11Edges, bool bugME11Dupes)
void process(emtf::zone_array< EMTFTrackCollection > &zone_tracks) const
unsigned long long EventNumber_t
void process(const EMTFHitCollection &conv_hits, EMTFTrackCollection &best_tracks) const
std::vector< std::string > symPattDefinitions_
void configure(const GeometryTranslator *tp_geom, const ConditionHelper *cond, const SectorProcessorLUT *lut, PtAssignmentEngine *pt_assign_engine, int verbose, int endcap, int sector, int minBX, int maxBX, int bxWindow, int bxShiftCSC, int bxShiftRPC, int bxShiftGEM, std::string era, const std::vector< int > &zoneBoundaries, int zoneOverlap, bool includeNeighbor, bool duplicateTheta, bool fixZonePhi, bool useNewZones, bool fixME11Edges, const std::vector< std::string > &pattDefinitions, const std::vector< std::string > &symPattDefinitions, bool useSymPatterns, int thetaWindow, int thetaWindowZone0, bool useRPC, bool useSingleHits, bool bugSt2PhDiff, bool bugME11Dupes, bool bugAmbigThetaWin, bool twoStationSameBX, int maxRoadsPerZone, int maxTracks, bool useSecondEarliest, bool bugSameSectorPt0, bool readPtLUTFile, bool fixMode15HighPt, bool bug9BitDPhi, bool bugMode7CLCT, bool bugNegPt, bool bugGMTPhi, bool promoteMode7, int modeQualVer)
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
void configure(int verbose, int endcap, int sector, int bx, int bxShiftCSC, int bxShiftRPC, int bxShiftGEM, bool includeNeighbor, bool duplicateTheta, bool bugME11Dupes)
const GeometryTranslator * tp_geom_
l1t::EMTFTrackCollection EMTFTrackCollection
void process(const std::deque< EMTFHitCollection > &extended_conv_hits, std::map< pattern_ref_t, int > &patt_lifetime_map, emtf::zone_array< EMTFRoadCollection > &zone_roads) const
void configure(int verbose, int endcap, int sector, int bx, int bxWindow, int thetaWindow, int thetaWindowZone0, bool bugME11Dupes, bool bugAmbigThetaWin, bool twoStationSameBX)
const SectorProcessorLUT * lut_
std::array< T, NUM_ZONES > zone_array
void process(T tag, const TriggerPrimitiveCollection &muon_primitives, std::map< int, TriggerPrimitiveCollection > &selected_prim_map) const
l1t::EMTFHitCollection EMTFHitCollection
void process(EventNumber_t ievent, const TriggerPrimitiveCollection &muon_primitives, EMTFHitCollection &out_hits, EMTFTrackCollection &out_tracks) const
void configure(PtAssignmentEngine *pt_assign_engine, int verbose, int endcap, int sector, int bx, bool readPtLUTFile, bool fixMode15HighPt, bool bug9BitDPhi, bool bugMode7CLCT, bool bugNegPt, bool bugGMTPhi, bool promoteMode7, int modeQualVer)
void configure(int verbose, int endcap, int sector, int bx, int bxWindow, const std::vector< std::string > &pattDefinitions, const std::vector< std::string > &symPattDefinitions, bool useSymPatterns, int maxRoadsPerZone, bool useSecondEarliest)
PtAssignmentEngine * pt_assign_engine_
void configure(int verbose, int endcap, int sector, int bx, int bxWindow, int maxRoadsPerZone, int maxTracks, bool useSecondEarliest, bool bugSameSectorPt0)
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
void process(const std::map< int, TriggerPrimitiveCollection > &selected_prim_map, EMTFHitCollection &conv_hits) const
L1TMuon::TriggerPrimitiveCollection TriggerPrimitiveCollection
void process(EMTFTrackCollection &best_tracks)
void configure(int verbose, int endcap, int sector, int bx, int maxTracks, bool useSingleHits)
void process(const std::deque< EMTFHitCollection > &extended_conv_hits, const emtf::zone_array< EMTFRoadCollection > &zone_roads, emtf::zone_array< EMTFTrackCollection > &zone_tracks) const
void configure(int verbose, int endcap, int sector, int bx, bool fixZonePhi, bool useNewZones, bool bugSt2PhDiff, bool bugME11Dupes)