File indexing completed on 2024-04-25 02:13:59
0001 #ifndef RegionalMuonRawDigiTranslator_h
0002 #define RegionalMuonRawDigiTranslator_h
0003
0004 #include "DataFormats/L1TMuon/interface/RegionalMuonCand.h"
0005 #include "DataFormats/L1TMuon/interface/RegionalMuonShower.h"
0006
0007 namespace l1t {
0008 class RegionalMuonRawDigiTranslator {
0009 public:
0010 static void fillRegionalMuonCand(RegionalMuonCand& mu,
0011 uint32_t raw_data_00_31,
0012 uint32_t raw_data_32_63,
0013 int proc,
0014 tftype tf,
0015 bool isKbmtf,
0016 bool useOmtfDisplacementInfo,
0017 bool useEmtfDisplacementInfo);
0018 static void fillRegionalMuonCand(RegionalMuonCand& mu,
0019 uint64_t dataword,
0020 int proc,
0021 tftype tf,
0022 bool isKbmtf,
0023 bool useOmtfDisplacementInfo,
0024 bool useEmtfDisplacementInfo);
0025 static bool fillRegionalMuonShower(RegionalMuonShower& muShower,
0026 std::vector<uint32_t> bxPayload,
0027 int proc,
0028 tftype tf,
0029 bool useEmtfNominalTightShowers,
0030 bool useEmtfLooseShowers);
0031 static void generatePackedDataWords(const RegionalMuonCand& mu,
0032 uint32_t& raw_data_00_31,
0033 uint32_t& raw_data_32_63,
0034 bool isKbmtf,
0035 bool useOmtfDisplacementInfo,
0036 bool useEmtfDisplacementInfo);
0037 static void generatePackedShowerPayload(const RegionalMuonShower& shower,
0038 std::array<uint32_t, 6>& payload,
0039 bool useEmtfNominalTightShowers,
0040 bool useEmtfLooseShowers);
0041 static uint64_t generate64bitDataWord(const RegionalMuonCand& mu,
0042 bool isKbmtf,
0043 bool useOmtfDisplacementInfo,
0044 bool useEmtfDisplacementInfo);
0045 static int generateRawTrkAddress(const RegionalMuonCand&, bool isKalman);
0046
0047 static constexpr unsigned ptMask_ = 0x1FF;
0048 static constexpr unsigned ptShift_ = 0;
0049 static constexpr unsigned qualMask_ = 0xF;
0050 static constexpr unsigned qualShift_ = 9;
0051 static constexpr unsigned absEtaMask_ = 0xFF;
0052 static constexpr unsigned absEtaShift_ = 13;
0053 static constexpr unsigned etaSignShift_ = 21;
0054 static constexpr unsigned hfMask_ = 0x1;
0055 static constexpr unsigned hfShift_ = 22;
0056 static constexpr unsigned absPhiMask_ = 0x7F;
0057 static constexpr unsigned absPhiShift_ = 23;
0058 static constexpr unsigned phiSignShift_ = 30;
0059 static constexpr unsigned signShift_ = 0;
0060 static constexpr unsigned signValidShift_ = 1;
0061 static constexpr unsigned dxyMask_ = 0x3;
0062 static constexpr unsigned bmtfDxyShift_ = 2;
0063 static constexpr unsigned emtfDxyShift_ = 29;
0064 static constexpr unsigned ptUnconstrainedMask_ = 0xFF;
0065 static constexpr unsigned bmtfPtUnconstrainedShift_ = 23;
0066 static constexpr unsigned kOmtfPtUnconstrainedShift_ = 20;
0067 static constexpr unsigned emtfPtUnconstrainedShift_ = 20;
0068 static constexpr unsigned trackAddressMask_ = 0x1FFFFFFF;
0069 static constexpr unsigned trackAddressShift_ = 2;
0070 static constexpr unsigned kEmtfShowerMask = 0x1;
0071 static constexpr unsigned kEmtfShowerStandardFrame = 1;
0072 static constexpr unsigned kEmtfShowerExtendedFrame = 3;
0073 static constexpr unsigned kEmtfShowerOneNominalShift = 18;
0074 static constexpr unsigned kEmtfShowerOneLooseShift = kEmtfShowerOneNominalShift;
0075 static constexpr unsigned kEmtfShowerOneTightShift = 19;
0076
0077
0078 static constexpr unsigned bmtfTrAddrSegSelMask_ = 0xF;
0079 static constexpr unsigned bmtfTrAddrSegSelShift_ = 21;
0080 static constexpr unsigned bmtfTrAddrDetSideShift_ = 20;
0081 static constexpr unsigned bmtfTrAddrWheelMask_ = 0x3;
0082 static constexpr unsigned bmtfTrAddrWheelShift_ = 18;
0083 static constexpr unsigned bmtfTrAddrStat1Mask_ = 0x3;
0084 static constexpr unsigned bmtfTrAddrStat1Shift_ = 14;
0085 static constexpr unsigned bmtfTrAddrStat2Mask_ = 0xF;
0086 static constexpr unsigned bmtfTrAddrStat2Shift_ = 10;
0087 static constexpr unsigned bmtfTrAddrStat3Mask_ = 0xF;
0088 static constexpr unsigned bmtfTrAddrStat3Shift_ = 6;
0089 static constexpr unsigned bmtfTrAddrStat4Mask_ = 0xF;
0090 static constexpr unsigned bmtfTrAddrStat4Shift_ = 2;
0091
0092 static constexpr unsigned emtfTrAddrMe1SegShift_ = 0;
0093 static constexpr unsigned emtfTrAddrMe1ChShift_ = 1;
0094 static constexpr unsigned emtfTrAddrMe1ChMask_ = 0x7;
0095 static constexpr unsigned emtfTrAddrMe2SegShift_ = 4;
0096 static constexpr unsigned emtfTrAddrMe2ChShift_ = 5;
0097 static constexpr unsigned emtfTrAddrMe2ChMask_ = 0x7;
0098 static constexpr unsigned emtfTrAddrMe3SegShift_ = 8;
0099 static constexpr unsigned emtfTrAddrMe3ChShift_ = 9;
0100 static constexpr unsigned emtfTrAddrMe3ChMask_ = 0x7;
0101 static constexpr unsigned emtfTrAddrMe4SegShift_ = 12;
0102 static constexpr unsigned emtfTrAddrMe4ChShift_ = 13;
0103 static constexpr unsigned emtfTrAddrMe4ChMask_ = 0x7;
0104 static constexpr unsigned emtfTrAddrTrkNumShift_ = 16;
0105 static constexpr unsigned emtfTrAddrTrkNumMask_ = 0x3;
0106 static constexpr unsigned emtfTrAddrBxShift_ = 18;
0107 static constexpr unsigned emtfTrAddrBxMask_ = 0x7FF;
0108
0109 static constexpr unsigned omtfTrAddrLayersShift_ = 0;
0110 static constexpr unsigned omtfTrAddrLayersMask_ = 0x3FFFF;
0111 static constexpr unsigned omtfTrAddrWeightShift_ = 18;
0112 static constexpr unsigned omtfTrAddrWeightMask_ = 0x1F;
0113 };
0114 }
0115
0116 #endif