Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2021-02-14 14:22:16

0001 //-------------------------------------------------
0002 //
0003 /** \class L1MuGMTMipIsoAU
0004  *  L1 Global Muon Trigger MIP and ISO bit Assignment Unit.
0005  *
0006  *  It projects muons form the muon system to the calorimeter
0007  *  or vertex in order to assign a MIP (minimum ionizing particle) 
0008  *  and an ISO (isolation) bit to each muon candidate.
0009  *
0010  *  there is 1 barrel MIP & ISO bit Assignment unit and 
0011  *           1 endcap MIP & ISO bit Assignment unit
0012  */
0013 //
0014 //
0015 //   Author :
0016 //   H. Sakulin            CERN EP
0017 //
0018 //   Migrated to CMSSW:
0019 //   I. Mikulec
0020 //
0021 //--------------------------------------------------
0022 #ifndef L1TriggerGlobalMuonTrigger_L1MuGMTMipIsoAU_h
0023 #define L1TriggerGlobalMuonTrigger_L1MuGMTMipIsoAU_h
0024 
0025 //---------------
0026 // C++ Headers --
0027 //---------------
0028 
0029 #include <vector>
0030 
0031 //----------------------
0032 // Base Class Headers --
0033 //----------------------
0034 
0035 //------------------------------------
0036 // Collaborating Class Declarations --
0037 //------------------------------------
0038 
0039 #include "L1Trigger/GlobalMuonTrigger/src/L1MuGMTConfig.h"
0040 #include "DataFormats/L1GlobalMuonTrigger/interface/L1MuRegionalCand.h"
0041 
0042 class L1MuGlobalMuonTrigger;
0043 class L1MuGMTCand;
0044 class L1MuGMTPhiProjectionUnit;
0045 class L1MuGMTEtaProjectionUnit;
0046 
0047 //              ---------------------
0048 //              -- Class Interface --
0049 //              ---------------------
0050 
0051 class L1MuGMTMipIsoAU {
0052 public:
0053   /// constructor
0054   L1MuGMTMipIsoAU(const L1MuGlobalMuonTrigger& gmt, int id);
0055 
0056   /// destructor
0057   virtual ~L1MuGMTMipIsoAU();
0058 
0059   /// run GMT MIP & ISO bit assignment unit
0060   void run();
0061 
0062   /// clear MIP & ISO bit assignment unit
0063   void reset();
0064 
0065   /// print results after MIP & ISO bit assignment
0066   void print() const;
0067 
0068   /// return identifier (0: barrel, 1: endcap)
0069   inline int id() const { return m_id; }
0070 
0071   /// return input muon (idx: 0..3: DT/CSC, 4..7: RPC)
0072   inline const L1MuRegionalCand* muon(int idx) const { return m_muons[idx]; }
0073 
0074   /// return select matrix (idx 0..3: DT/CSC, idx 4..7: RPC)
0075   inline bool MIP(int idx) const { return m_MIP[idx]; }
0076 
0077   /// return select matrix (idx 0..3: DT/CSC, idx 4..7: RPC)
0078   inline bool ISO(int idx) const { return m_ISO[idx]; }
0079 
0080   const L1MuGlobalMuonTrigger& GMT() const { return m_gmt; };
0081 
0082 private:
0083   void load();
0084   void assignMIP();
0085   void assignISO();
0086 
0087 private:
0088   const L1MuGlobalMuonTrigger& m_gmt;
0089   int m_id;
0090 
0091   std::vector<const L1MuRegionalCand*> m_muons;
0092 
0093   std::vector<bool> m_MIP;
0094   std::vector<bool> m_ISO;
0095 
0096   std::vector<L1MuGMTPhiProjectionUnit*> m_MIP_PPUs;
0097   std::vector<L1MuGMTEtaProjectionUnit*> m_MIP_EPUs;
0098 
0099   std::vector<L1MuGMTPhiProjectionUnit*> m_ISO_PPUs;
0100   std::vector<L1MuGMTEtaProjectionUnit*> m_ISO_EPUs;
0101 };
0102 
0103 #endif