File indexing completed on 2024-04-06 12:21:01
0001 #ifndef L1Trigger_L1TMuonEndCapPhase2_EMTFTypes_h
0002 #define L1Trigger_L1TMuonEndCapPhase2_EMTFTypes_h
0003
0004 #include <array>
0005 #include <vector>
0006
0007 #include "ap_int.h"
0008 #include "ap_fixed.h"
0009 #include "DataFormats/L1TMuonPhase2/interface/EMTFHit.h"
0010 #include "DataFormats/L1TMuonPhase2/interface/EMTFTrack.h"
0011 #include "DataFormats/L1TMuonPhase2/interface/EMTFInput.h"
0012 #include "L1Trigger/L1TMuon/interface/GeometryTranslator.h"
0013 #include "L1Trigger/L1TMuon/interface/MuonTriggerPrimitive.h"
0014 #include "L1Trigger/L1TMuonEndCapPhase2/interface/EMTFfwd.h"
0015 #include "L1Trigger/L1TMuonEndCapPhase2/interface/EMTFConstants.h"
0016
0017 namespace emtf::phase2 {
0018
0019
0020 typedef L1TMuon::TriggerPrimitive TriggerPrimitive;
0021 typedef std::vector<TPEntry> TPCollection;
0022 typedef std::map<int, TPCollection> BXTPCMap;
0023 typedef std::map<int, TPCollection> ILinkTPCMap;
0024
0025
0026 typedef l1t::phase2::EMTFHit EMTFHit;
0027 typedef l1t::phase2::EMTFHitCollection EMTFHitCollection;
0028
0029
0030 typedef l1t::phase2::EMTFTrack EMTFTrack;
0031 typedef l1t::phase2::EMTFTrackCollection EMTFTrackCollection;
0032
0033
0034 typedef l1t::phase2::EMTFInput EMTFInput;
0035 typedef l1t::phase2::EMTFInputCollection EMTFInputCollection;
0036
0037
0038 typedef ap_uint<1> flag_t;
0039
0040
0041 enum class site_id_t {
0042 kME11 = 0,
0043 kME12 = 1,
0044 kME2 = 2,
0045 kME3 = 3,
0046 kME4 = 4,
0047 kRE1 = 5,
0048 kRE2 = 6,
0049 kRE3 = 7,
0050 kRE4 = 8,
0051 kGE11 = 9,
0052 kGE21 = 10,
0053 kME0 = 11,
0054 size,
0055 begin = 0,
0056 end = size
0057 };
0058
0059 enum class feature_id_t { kPhi = 0, kTheta = 1, kBend = 2, kQuality = 3, kTime = 4, size, begin = 0, end = size };
0060
0061 enum class theta_id_t { kTheta1 = 0, kTheta2 = 1, size, begin = 0, end = size };
0062
0063 enum class reduced_site_id_t { kME1 = 0, kME2 = 1, kME3 = 2, kME4 = 3, kME0 = 4, size, begin = 0, end = size };
0064
0065 typedef ap_uint<13> seg_phi_t;
0066 typedef ap_int<10> seg_bend_t;
0067 typedef ap_uint<8> seg_theta_t;
0068 typedef ap_uint<4> seg_qual_t;
0069 typedef ap_int<4> seg_time_t;
0070 typedef ap_uint<3> seg_zones_t;
0071 typedef ap_uint<3> seg_tzones_t;
0072 typedef ap_uint<1> seg_cscfr_t;
0073 typedef ap_uint<1> seg_layer_t;
0074 typedef ap_int<2> seg_bx_t;
0075 typedef ap_uint<1> seg_valid_t;
0076
0077 struct segment_t {
0078 seg_phi_t phi;
0079 seg_bend_t bend;
0080 seg_theta_t theta1;
0081 seg_theta_t theta2;
0082 seg_qual_t qual1;
0083 seg_qual_t qual2;
0084 seg_time_t time;
0085 seg_zones_t zones;
0086 seg_tzones_t tzones;
0087 seg_cscfr_t cscfr;
0088 seg_layer_t layer;
0089 seg_bx_t bx;
0090 seg_valid_t valid;
0091 };
0092
0093 typedef std::array<segment_t, v3::kNumSegments> segment_collection_t;
0094
0095
0096 typedef ap_uint<2> trk_zone_t;
0097 typedef ap_uint<2> trk_tzone_t;
0098 typedef ap_uint<9> trk_col_t;
0099 typedef ap_uint<3> trk_patt_t;
0100 typedef ap_uint<6> trk_qual_t;
0101 typedef ap_uint<2> trk_gate_t;
0102 typedef ap_uint<1> trk_q_t;
0103 typedef ap_uint<13> trk_pt_t;
0104 typedef ap_uint<7> trk_rels_t;
0105 typedef ap_int<7> trk_dxy_t;
0106 typedef ap_int<5> trk_z0_t;
0107 typedef ap_int<13> trk_phi_t;
0108 typedef ap_int<13> trk_eta_t;
0109 typedef ap_uint<4> trk_beta_t;
0110 typedef ap_uint<1> trk_valid_t;
0111 typedef ap_uint<8> trk_site_seg_t;
0112 typedef ap_uint<1> trk_site_bit_t;
0113 typedef ap_int<13> trk_feature_t;
0114 typedef ap_int<10> trk_nn_address_t;
0115
0116 struct track_t {
0117 typedef std::array<trk_site_seg_t, v3::kNumTrackSites> site_segs_t;
0118 typedef std::array<trk_site_bit_t, v3::kNumTrackSites> site_mask_t;
0119 typedef std::array<trk_feature_t, v3::kNumTrackFeatures> features_t;
0120
0121 trk_zone_t zone;
0122 trk_col_t col;
0123 trk_patt_t pattern;
0124 trk_qual_t quality;
0125 trk_q_t q;
0126 trk_pt_t pt;
0127 trk_rels_t rels;
0128 trk_dxy_t dxy;
0129 trk_z0_t z0;
0130 seg_phi_t phi;
0131 seg_theta_t theta;
0132 trk_eta_t eta;
0133 trk_beta_t beta;
0134 trk_valid_t valid;
0135 site_segs_t site_segs;
0136 site_mask_t site_mask;
0137 site_mask_t site_rm_mask;
0138 features_t features;
0139 trk_nn_address_t pt_address;
0140 trk_nn_address_t rels_address;
0141 trk_nn_address_t dxy_address;
0142 };
0143
0144
0145 typedef ap_uint<v3::kHitmapNCols> hitmap_row_t;
0146 typedef std::array<hitmap_row_t, v3::kHitmapNRows> hitmap_t;
0147
0148
0149 struct road_t {
0150 trk_zone_t zone;
0151 trk_col_t col;
0152 trk_patt_t pattern;
0153 trk_qual_t quality;
0154 };
0155
0156 typedef std::array<road_t, v3::kHitmapNCols> road_collection_t;
0157
0158
0159 struct reduced_track_t {
0160 typedef std::array<trk_site_seg_t, v3::kNumTrackSitesRM> site_segs_t;
0161 typedef std::array<trk_site_bit_t, v3::kNumTrackSitesRM> site_mask_t;
0162
0163 trk_valid_t valid;
0164 site_segs_t site_segs;
0165 site_mask_t site_mask;
0166 };
0167 }
0168
0169 typedef L1TMuon::subsystem_type SubsystemType;
0170 typedef L1TMuon::GeometryTranslator GeometryTranslator;
0171
0172 typedef L1TMuon::TriggerPrimitive::DTData DTData;
0173 typedef L1TMuon::TriggerPrimitive::CSCData CSCData;
0174 typedef L1TMuon::TriggerPrimitive::RPCData RPCData;
0175 typedef L1TMuon::TriggerPrimitive::GEMData GEMData;
0176 typedef L1TMuon::TriggerPrimitive::ME0Data ME0Data;
0177
0178 #endif