Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2024-04-06 12:20:46

0001 #ifndef __l1microgmtcanceloutunit_h
0002 #define __l1microgmtcanceloutunit_h
0003 
0004 #include "MicroGMTConfiguration.h"
0005 #include "MicroGMTMatchQualLUT.h"
0006 
0007 #include "L1Trigger/L1TMuon/interface/L1TMuonGlobalParamsHelper.h"
0008 #include "L1Trigger/L1TMuon/interface/MicroGMTLUTFactories.h"
0009 
0010 namespace l1t {
0011   enum cancelmode { tracks, kftracks, coordinate };
0012 
0013   class MicroGMTCancelOutUnit {
0014   public:
0015     MicroGMTCancelOutUnit();
0016     virtual ~MicroGMTCancelOutUnit();
0017 
0018     /// Initialisation from ES record
0019     void initialise(L1TMuonGlobalParamsHelper*);
0020     /// Cancel out between sectors/wedges in one track finder
0021     void setCancelOutBits(GMTInternalWedges&, tftype, cancelmode);
0022     /// Cancel-out between overlap and barrel track finders
0023     void setCancelOutBitsOverlapBarrel(GMTInternalWedges&, GMTInternalWedges&, cancelmode);
0024     /// Cancel-out between overlap and endcap track finders
0025     void setCancelOutBitsOverlapEndcap(GMTInternalWedges&, GMTInternalWedges&, cancelmode);
0026 
0027   private:
0028     /// Compares all muons from coll1 with all muons from coll2 and sets the cancel-bits based on eta/phi coordinates
0029     void getCoordinateCancelBits(std::vector<std::shared_ptr<GMTInternalMuon>>&,
0030                                  std::vector<std::shared_ptr<GMTInternalMuon>>&);
0031     /// Compares all muons from coll1 with all muons from coll2 and sets the cancel-bits based on track addresses
0032     void getTrackAddrCancelBits(cancelmode,
0033                                 std::vector<std::shared_ptr<GMTInternalMuon>>&,
0034                                 std::vector<std::shared_ptr<GMTInternalMuon>>&);
0035 
0036     /// Do the track address-based cancel-out for the original BMTF algorithm
0037     void getTrackAddrCancelBitsOrigBMTF(std::vector<std::shared_ptr<GMTInternalMuon>>&,
0038                                         std::vector<std::shared_ptr<GMTInternalMuon>>&);
0039 
0040     /// Do the track address-based cancel-out for the BMTF algorithm using the Kalman Filter
0041     void getTrackAddrCancelBitsKfBMTF(std::vector<std::shared_ptr<GMTInternalMuon>>&,
0042                                       std::vector<std::shared_ptr<GMTInternalMuon>>&);
0043 
0044     std::shared_ptr<MicroGMTMatchQualLUT> m_boPosMatchQualLUT;
0045     std::shared_ptr<MicroGMTMatchQualLUT> m_boNegMatchQualLUT;
0046     std::shared_ptr<MicroGMTMatchQualLUT> m_foPosMatchQualLUT;
0047     std::shared_ptr<MicroGMTMatchQualLUT> m_foNegMatchQualLUT;
0048     std::shared_ptr<MicroGMTMatchQualLUT> m_brlSingleMatchQualLUT;
0049     std::shared_ptr<MicroGMTMatchQualLUT> m_ovlPosSingleMatchQualLUT;
0050     std::shared_ptr<MicroGMTMatchQualLUT> m_ovlNegSingleMatchQualLUT;
0051     std::shared_ptr<MicroGMTMatchQualLUT> m_fwdPosSingleMatchQualLUT;
0052     std::shared_ptr<MicroGMTMatchQualLUT> m_fwdNegSingleMatchQualLUT;
0053     std::map<int, std::shared_ptr<MicroGMTMatchQualLUT>> m_lutDict;
0054   };
0055 }  // namespace l1t
0056 #endif /* defined(__l1microgmtcanceloutunit_h) */