Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2024-04-06 12:19:57

0001 //-------------------------------------------------
0002 //
0003 
0004 /** \class L1MuGMTPhiProjectionUnit
0005  *  L1 Global Muon Trigger Phi projection unit.
0006  *
0007  *  Projects a muon from the muon system to the 
0008  *  calorimeter or vertex and selects one or more
0009  *  calorimeter regions in phi to be checked for 
0010  *  MIP and Isolation.
0011  */
0012 //
0013 //
0014 //   Author :
0015 //   H. Sakulin            CERN EP
0016 //
0017 //   Migrated to CMSSW:
0018 //   I. Mikulec
0019 //
0020 //--------------------------------------------------
0021 #ifndef L1TriggerGlobalMuonTrigger_L1MuGMTPhiProjectionUnit_h
0022 #define L1TriggerGlobalMuonTrigger_L1MuGMTPhiProjectionUnit_h
0023 
0024 //---------------
0025 // C++ Headers --
0026 //---------------
0027 
0028 #include <vector>
0029 #include <bitset>
0030 
0031 //----------------------
0032 // Base Class Headers --
0033 //----------------------
0034 
0035 //------------------------------------
0036 // Collaborating Class Declarations --
0037 //------------------------------------
0038 
0039 #include "L1Trigger/GlobalMuonTrigger/src/L1MuGMTConfig.h"
0040 #include "L1Trigger/GlobalMuonTrigger/src/L1MuGMTMatrix.h"
0041 #include "DataFormats/L1GlobalMuonTrigger/interface/L1MuRegionalCand.h"
0042 
0043 class L1MuGMTMipIsoAU;
0044 class L1MuGMTCand;
0045 
0046 //              ---------------------
0047 //              -- Class Interface --
0048 //              ---------------------
0049 
0050 class L1MuGMTPhiProjectionUnit {
0051 public:
0052   /// constructor
0053   L1MuGMTPhiProjectionUnit(const L1MuGMTMipIsoAU& miau, int id);
0054 
0055   /// destructor
0056   virtual ~L1MuGMTPhiProjectionUnit();
0057 
0058   /// run phi projection unit
0059   void run();
0060 
0061   /// clear phi projection unit
0062   void reset();
0063 
0064   /// print results after phi projection
0065   void print() const;
0066 
0067   /// return identifier
0068   inline int id() const { return m_id; }
0069 
0070   /// return phi select bit (idx: 0..17)
0071   inline bool isSelected(int idx) const { return m_phi_select[idx]; }
0072 
0073 private:
0074   void load();
0075 
0076 private:
0077   typedef std::bitset<18> TPhiBits;
0078 
0079   const L1MuGMTMipIsoAU& m_MIAU;
0080 
0081   // index: (0..31: 16*isFWD + 8*isISO + 4* isRPC + nr )
0082   int m_id;
0083 
0084   const L1MuRegionalCand* m_mu;
0085 
0086   int m_iphi;    // region index of central region
0087   float m_fphi;  // fine grain phi inside central region
0088 
0089   TPhiBits m_phi_select;
0090 };
0091 
0092 #endif