File indexing completed on 2024-04-06 12:20:54
0001 #ifndef L1TMuonEndCap_PrimitiveConversion_h
0002 #define L1TMuonEndCap_PrimitiveConversion_h
0003
0004 #include "L1Trigger/L1TMuonEndCap/interface/Common.h"
0005
0006 class SectorProcessorLUT;
0007
0008 class PrimitiveConversion {
0009 public:
0010 void configure(const GeometryTranslator* tp_geom,
0011 const SectorProcessorLUT* pc_lut,
0012 int verbose,
0013 int endcap,
0014 int sector,
0015 int bx,
0016 int bxShiftCSC,
0017 int bxShiftRPC,
0018 int bxShiftGEM,
0019 int bxShiftME0,
0020 const std::vector<int>& zoneBoundaries,
0021 int zoneOverlap,
0022 bool duplicateTheta,
0023 bool fixZonePhi,
0024 bool useNewZones,
0025 bool fixME11Edges,
0026 bool bugME11Dupes,
0027 bool useRun3CCLUT_OTMB,
0028 bool useRun3CCLUT_TMB);
0029
0030 void process(const std::map<int, TriggerPrimitiveCollection>& selected_prim_map, EMTFHitCollection& conv_hits) const;
0031
0032 const SectorProcessorLUT& pc_lut() const { return *pc_lut_; }
0033
0034
0035 void convert_csc(int pc_sector,
0036 int pc_station,
0037 int pc_chamber,
0038 int pc_segment,
0039 const TriggerPrimitive& muon_primitive,
0040 EMTFHit& conv_hit) const;
0041
0042 void convert_csc_details(EMTFHit& conv_hit) const;
0043
0044
0045 void convert_rpc(int pc_sector,
0046 int pc_station,
0047 int pc_chamber,
0048 int pc_segment,
0049 const TriggerPrimitive& muon_primitive,
0050 EMTFHit& conv_hit) const;
0051
0052 void convert_rpc_details(EMTFHit& conv_hit, bool isCPPF) const;
0053
0054
0055 void convert_gem(int pc_sector,
0056 int pc_station,
0057 int pc_chamber,
0058 int pc_segment,
0059 const TriggerPrimitive& muon_primitive,
0060 EMTFHit& conv_hit) const;
0061
0062 void convert_other_details(EMTFHit& conv_hit) const;
0063
0064
0065 void convert_me0(int pc_sector,
0066 int pc_station,
0067 int pc_chamber,
0068 int pc_segment,
0069 const TriggerPrimitive& muon_primitive,
0070 EMTFHit& conv_hit) const;
0071
0072
0073 void convert_dt(int pc_sector,
0074 int pc_station,
0075 int pc_chamber,
0076 int pc_segment,
0077 const TriggerPrimitive& muon_primitive,
0078 EMTFHit& conv_hit) const;
0079
0080
0081 int get_zone_code(const EMTFHit& conv_hit, int th) const;
0082
0083 int get_phzvl(const EMTFHit& conv_hit, int zone_code) const;
0084
0085 int get_fs_zone_code(const EMTFHit& conv_hit) const;
0086
0087 int get_fs_segment(const EMTFHit& conv_hit, int fw_station, int fw_cscid, int pc_segment) const;
0088
0089 int get_bt_station(const EMTFHit& conv_hit, int fw_station, int fw_cscid, int pc_segment) const;
0090
0091 int get_bt_segment(const EMTFHit& conv_hit, int fw_station, int fw_cscid, int pc_segment) const;
0092
0093 bool is_valid_for_run2(const EMTFHit& conv_hit) const;
0094
0095 private:
0096 const GeometryTranslator* tp_geom_;
0097
0098 const SectorProcessorLUT* pc_lut_;
0099
0100 int verbose_, endcap_, sector_, bx_;
0101
0102 int bxShiftCSC_, bxShiftRPC_, bxShiftGEM_, bxShiftME0_;
0103
0104 std::vector<int> zoneBoundaries_;
0105 int zoneOverlap_;
0106 bool duplicateTheta_, fixZonePhi_, useNewZones_, fixME11Edges_;
0107 bool bugME11Dupes_;
0108
0109 bool useRun3CCLUT_OTMB_;
0110 bool useRun3CCLUT_TMB_;
0111 };
0112
0113 #endif