File indexing completed on 2024-04-06 12:20:54
0001 #ifndef L1TMuonEndCap_PatternRecognition_h
0002 #define L1TMuonEndCap_PatternRecognition_h
0003
0004 #include "L1Trigger/L1TMuonEndCap/interface/Common.h"
0005 #include "L1Trigger/L1TMuonEndCap/interface/PhiMemoryImage.h"
0006
0007 class PatternRecognition {
0008 public:
0009
0010 typedef std::array<int, 3> pattern_ref_t;
0011
0012 void configure(int verbose,
0013 int endcap,
0014 int sector,
0015 int bx,
0016 int bxWindow,
0017 const std::vector<std::string>& pattDefinitions,
0018 const std::vector<std::string>& symPattDefinitions,
0019 bool useSymPatterns,
0020 int maxRoadsPerZone,
0021 bool useSecondEarliest);
0022
0023 void configure_details();
0024
0025 void process(const std::deque<EMTFHitCollection>& extended_conv_hits,
0026 std::map<pattern_ref_t, int>& patt_lifetime_map,
0027 emtf::zone_array<EMTFRoadCollection>& zone_roads) const;
0028
0029 bool is_zone_empty(int zone,
0030 const std::deque<EMTFHitCollection>& extended_conv_hits,
0031 const std::map<pattern_ref_t, int>& patt_lifetime_map) const;
0032
0033 void make_zone_image(int zone, const std::deque<EMTFHitCollection>& extended_conv_hits, PhiMemoryImage& image) const;
0034
0035 void process_single_zone(int zone,
0036 PhiMemoryImage cloned_image,
0037 std::map<pattern_ref_t, int>& patt_lifetime_map,
0038 EMTFRoadCollection& roads) const;
0039
0040 void sort_single_zone(EMTFRoadCollection& roads) const;
0041
0042 private:
0043 int verbose_, endcap_, sector_, bx_;
0044
0045 int bxWindow_;
0046 std::vector<std::string> pattDefinitions_, symPattDefinitions_;
0047 bool useSymPatterns_;
0048 int maxRoadsPerZone_;
0049 bool useSecondEarliest_;
0050
0051 std::vector<PhiMemoryImage> patterns_;
0052 };
0053
0054 #endif