Back to home page

Project CMSSW displayed by LXR

 
 

    


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     // relative shifts within track address
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 }  // namespace l1t
0115 
0116 #endif