Back to home page

Project CMSSW displayed by LXR

 
 

    


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

0001 //-------------------------------------------------
0002 //
0003 /** \class L1MuGMTConfig
0004  *  Configuration parameters for L1GlobalMuonTrigger.
0005 */
0006 //
0007 //
0008 //   Author :
0009 //   N. Neumeister             CERN EP
0010 //
0011 //   Migrated to CMSSW:
0012 //   I. Mikulec
0013 //
0014 //--------------------------------------------------
0015 #ifndef L1TriggerGlobalMuonTrigger_L1MuGMTConfig_h
0016 #define L1TriggerGlobalMuonTrigger_L1MuGMTConfig_h
0017 
0018 //---------------
0019 // C++ Headers --
0020 //---------------
0021 
0022 #include <string>
0023 
0024 //----------------------
0025 // Base Class Headers --
0026 //----------------------
0027 
0028 //------------------------------------
0029 // Collaborating Class Declarations --
0030 //------------------------------------
0031 #include "FWCore/ParameterSet/interface/ParameterSet.h"
0032 
0033 namespace edm {
0034   class InputTag;
0035 }
0036 
0037 class L1MuGMTRegCDLConfig;
0038 class L1MuGMTRegMMConfigPhi;
0039 class L1MuGMTRegMMConfigEta;
0040 class L1MuGMTRegMMConfigPt;
0041 class L1MuGMTRegMMConfigCharge;
0042 class L1MuGMTRegMMConfigMIP;
0043 class L1MuGMTRegMMConfigISO;
0044 class L1MuGMTRegMMConfigSRK;
0045 class L1MuGMTRegSortRankOffset;
0046 
0047 class L1MuGMTEtaLUT;
0048 class L1MuGMTLFCOUDeltaEtaLUT;
0049 class L1MuGMTLFDeltaEtaLUT;
0050 class L1MuGMTLFDisableHotLUT;
0051 class L1MuGMTLFEtaConvLUT;
0052 class L1MuGMTLFMatchQualLUT;
0053 class L1MuGMTLFMergeRankCombineLUT;
0054 class L1MuGMTLFMergeRankEtaPhiLUT;
0055 class L1MuGMTLFMergeRankEtaQLUT;
0056 class L1MuGMTLFMergeRankPtQLUT;
0057 class L1MuGMTLFOvlEtaConvLUT;
0058 class L1MuGMTLFPhiProEtaConvLUT;
0059 class L1MuGMTLFPhiProLUT;
0060 class L1MuGMTLFPtMixLUT;
0061 class L1MuGMTLFSortRankCombineLUT;
0062 class L1MuGMTLFSortRankEtaPhiLUT;
0063 class L1MuGMTLFSortRankEtaQLUT;
0064 class L1MuGMTLFSortRankPtQLUT;
0065 class L1MuGMTMIAUEtaConvLUT;
0066 class L1MuGMTMIAUEtaProLUT;
0067 class L1MuGMTMIAUPhiPro1LUT;
0068 class L1MuGMTMIAUPhiPro2LUT;
0069 class L1MuGMTPhiLUT;
0070 
0071 class L1MuGMTScales;
0072 class L1MuTriggerScales;
0073 class L1MuTriggerPtScale;
0074 class L1MuGMTParameters;
0075 class L1MuGMTChannelMask;
0076 
0077 class L1CaloGeometry;
0078 
0079 //              ---------------------
0080 //              -- Class Interface --
0081 //              ---------------------
0082 
0083 class L1MuGMTConfig {
0084 public:
0085   static const unsigned int MAXRPC = 8, MAXRPCbarrel = 4, MAXRPCendcap = 4, MAXDTBX = 4, MAXCSC = 4;
0086 
0087   static const unsigned int MaxMuons = 4;
0088 
0089   /// constructor
0090   L1MuGMTConfig(const edm::ParameterSet& ps);
0091 
0092   /// destructor
0093   virtual ~L1MuGMTConfig();
0094 
0095   static edm::InputTag getDTInputTag() { return m_DTInputTag; }
0096   static edm::InputTag getCSCInputTag() { return m_CSCInputTag; }
0097   static edm::InputTag getRPCbInputTag() { return m_RPCbInputTag; }
0098   static edm::InputTag getRPCfInputTag() { return m_RPCfInputTag; }
0099   static edm::InputTag getMipIsoInputTag() { return m_MipIsoInputTag; }
0100 
0101   static bool Debug() { return m_debug; }
0102   static bool Debug(int level) { return (m_debug && m_dbgLevel >= level); }
0103 
0104   static void setDebugLevel(int level) { m_dbgLevel = level; }
0105   static int getDebugLevel() { return m_dbgLevel; }
0106 
0107   static int getBxMin() { return m_BxMin; }
0108   static int getBxMax() { return m_BxMax; }
0109 
0110   static int getBxMinRo() { return m_BxMinRo; }
0111   static int getBxMaxRo() { return m_BxMaxRo; }
0112 
0113   static float getEtaWeightBarrel() { return m_EtaWeight_barrel; }
0114   static float getPhiWeightBarrel() { return m_PhiWeight_barrel; }
0115   static float getEtaPhiThresholdBarrel() { return m_EtaPhiThreshold_barrel; }
0116   static float getEtaWeightEndcap() { return m_EtaWeight_endcap; }
0117   static float getPhiWeightEndcap() { return m_PhiWeight_endcap; }
0118   static float getEtaPhiThresholdEndcap() { return m_EtaPhiThreshold_endcap; }
0119   static float getEtaWeightCOU() { return m_EtaWeight_COU; }
0120   static float getPhiWeightCOU() { return m_PhiWeight_COU; }
0121   static float getEtaPhiThresholdCOU() { return m_EtaPhiThreshold_COU; }
0122 
0123   static bool getCaloTrigger() { return m_CaloTrigger; }
0124   static int getIsolationCellSizeEta() { return m_IsolationCellSizeEta; }
0125   static int getIsolationCellSizePhi() { return m_IsolationCellSizePhi; }
0126 
0127   /// require DT/CSC candidates to be confirmed by the RPC in the overlap region
0128   static bool getDoOvlRpcAnd() { return m_DoOvlRpcAnd; }
0129 
0130   static bool getPropagatePhi() { return m_PropagatePhi; }
0131 
0132   static unsigned getVersionSortRankEtaQLUT() { return m_VersionSortRankEtaQLUT; }
0133   static unsigned getVersionLUTs() { return m_VersionLUTs; }
0134 
0135   // Register getters
0136   static L1MuGMTRegCDLConfig* getRegCDLConfig() { return m_RegCDLConfig; }
0137   static L1MuGMTRegMMConfigPhi* getRegMMConfigPhi() { return m_RegMMConfigPhi; }
0138   static L1MuGMTRegMMConfigEta* getRegMMConfigEta() { return m_RegMMConfigEta; }
0139   static L1MuGMTRegMMConfigPt* getRegMMConfigPt() { return m_RegMMConfigPt; }
0140   static L1MuGMTRegMMConfigCharge* getRegMMConfigCharge() { return m_RegMMConfigCharge; }
0141   static L1MuGMTRegMMConfigMIP* getRegMMConfigMIP() { return m_RegMMConfigMIP; }
0142   static L1MuGMTRegMMConfigISO* getRegMMConfigISO() { return m_RegMMConfigISO; }
0143   static L1MuGMTRegMMConfigSRK* getRegMMConfigSRK() { return m_RegMMConfigSRK; }
0144   static L1MuGMTRegSortRankOffset* getRegSortRankOffset() { return m_RegSortRankOffset; }
0145 
0146   // LUT getters
0147   static L1MuGMTEtaLUT* getEtaLUT() { return m_EtaLUT; }
0148   static L1MuGMTLFCOUDeltaEtaLUT* getLFCOUDeltaEtaLUT() { return m_LFCOUDeltaEtaLUT; }
0149   static L1MuGMTLFDeltaEtaLUT* getLFDeltaEtaLUT() { return m_LFDeltaEtaLUT; }
0150   static L1MuGMTLFDisableHotLUT* getLFDisableHotLUT() { return m_LFDisableHotLUT; }
0151   static L1MuGMTLFEtaConvLUT* getLFEtaConvLUT() { return m_LFEtaConvLUT; }
0152   static L1MuGMTLFMatchQualLUT* getLFMatchQualLUT() { return m_LFMatchQualLUT; }
0153   static L1MuGMTLFMergeRankCombineLUT* getLFMergeRankCombineLUT() { return m_LFMergeRankCombineLUT; }
0154   static L1MuGMTLFMergeRankEtaPhiLUT* getLFMergeRankEtaPhiLUT() { return m_LFMergeRankEtaPhiLUT; }
0155   static L1MuGMTLFMergeRankEtaQLUT* getLFMergeRankEtaQLUT() { return m_LFMergeRankEtaQLUT; }
0156   static L1MuGMTLFMergeRankPtQLUT* getLFMergeRankPtQLUT() { return m_LFMergeRankPtQLUT; }
0157   static L1MuGMTLFOvlEtaConvLUT* getLFOvlEtaConvLUT() { return m_LFOvlEtaConvLUT; }
0158   static L1MuGMTLFPhiProEtaConvLUT* getLFPhiProEtaConvLUT() { return m_LFPhiProEtaConvLUT; }
0159   static L1MuGMTLFPhiProLUT* getLFPhiProLUT() { return m_LFPhiProLUT; }
0160   static L1MuGMTLFPtMixLUT* getLFPtMixLUT() { return m_LFPtMixLUT; }
0161   static L1MuGMTLFSortRankCombineLUT* getLFSortRankCombineLUT() { return m_LFSortRankCombineLUT; }
0162   static L1MuGMTLFSortRankEtaPhiLUT* getLFSortRankEtaPhiLUT() { return m_LFSortRankEtaPhiLUT; }
0163   static L1MuGMTLFSortRankEtaQLUT* getLFSortRankEtaQLUT() { return m_LFSortRankEtaQLUT; }
0164   static L1MuGMTLFSortRankPtQLUT* getLFSortRankPtQLUT() { return m_LFSortRankPtQLUT; }
0165   static L1MuGMTMIAUEtaConvLUT* getMIAUEtaConvLUT() { return m_MIAUEtaConvLUT; }
0166   static L1MuGMTMIAUEtaProLUT* getMIAUEtaProLUT() { return m_MIAUEtaProLUT; }
0167   static L1MuGMTMIAUPhiPro1LUT* getMIAUPhiPro1LUT() { return m_MIAUPhiPro1LUT; }
0168   static L1MuGMTMIAUPhiPro2LUT* getMIAUPhiPro2LUT() { return m_MIAUPhiPro2LUT; }
0169   static L1MuGMTPhiLUT* getPhiLUT() { return m_PhiLUT; }
0170 
0171   void setGMTScales(const L1MuGMTScales* gmtscales) { m_GMTScales = gmtscales; }
0172   static const L1MuGMTScales* getGMTScales() { return m_GMTScales; }
0173 
0174   void setCaloGeom(const L1CaloGeometry* caloGeom) { m_caloGeom = caloGeom; }
0175   static const L1CaloGeometry* getCaloGeom() { return m_caloGeom; }
0176 
0177   void setTriggerScales(const L1MuTriggerScales* trigscales) { m_TriggerScales = trigscales; }
0178   static const L1MuTriggerScales* getTriggerScales() { return m_TriggerScales; }
0179 
0180   void setTriggerPtScale(const L1MuTriggerPtScale* trigptscale) { m_TriggerPtScale = trigptscale; }
0181   static const L1MuTriggerPtScale* getTriggerPtScale() { return m_TriggerPtScale; }
0182 
0183   void setGMTParams(const L1MuGMTParameters* gmtparams) { m_GMTParams = gmtparams; }
0184   static const L1MuGMTParameters* getGMTParams() { return m_GMTParams; }
0185 
0186   void setGMTChanMask(const L1MuGMTChannelMask* gmtchanmask) { m_GMTChanMask = gmtchanmask; }
0187   static const L1MuGMTChannelMask* getGMTChanMask() { return m_GMTChanMask; }
0188 
0189   void createLUTsRegs();
0190   void clearLUTsRegs();
0191   void dumpLUTs(std::string dir);
0192   void dumpRegs(std::string dir);
0193 
0194   void setDefaults();
0195 
0196 private:
0197   static const L1MuGMTParameters* m_GMTParams;
0198   static const L1MuGMTChannelMask* m_GMTChanMask;
0199 
0200   static edm::InputTag m_DTInputTag;
0201   static edm::InputTag m_CSCInputTag;
0202   static edm::InputTag m_RPCbInputTag;
0203   static edm::InputTag m_RPCfInputTag;
0204   static edm::InputTag m_MipIsoInputTag;
0205 
0206   static bool m_debug;    // debug flag
0207   static int m_dbgLevel;  // debug level
0208 
0209   static int m_BxMin;
0210   static int m_BxMax;
0211 
0212   static int m_BxMinRo;
0213   static int m_BxMaxRo;
0214 
0215   static float m_EtaWeight_barrel;
0216   static float m_PhiWeight_barrel;
0217   static float m_EtaPhiThreshold_barrel;
0218   static float m_EtaWeight_endcap;
0219   static float m_PhiWeight_endcap;
0220   static float m_EtaPhiThreshold_endcap;
0221   static float m_EtaWeight_COU;
0222   static float m_PhiWeight_COU;
0223   static float m_EtaPhiThreshold_COU;
0224 
0225   static bool m_CaloTrigger;
0226   static int m_IsolationCellSizeEta;
0227   static int m_IsolationCellSizePhi;
0228 
0229   static bool m_DoOvlRpcAnd;
0230 
0231   static bool m_PropagatePhi;
0232 
0233   static unsigned m_VersionSortRankEtaQLUT;
0234   static unsigned m_VersionLUTs;
0235 
0236   // Register pointers
0237   static L1MuGMTRegCDLConfig* m_RegCDLConfig;
0238   static L1MuGMTRegMMConfigPhi* m_RegMMConfigPhi;
0239   static L1MuGMTRegMMConfigEta* m_RegMMConfigEta;
0240   static L1MuGMTRegMMConfigPt* m_RegMMConfigPt;
0241   static L1MuGMTRegMMConfigCharge* m_RegMMConfigCharge;
0242   static L1MuGMTRegMMConfigMIP* m_RegMMConfigMIP;
0243   static L1MuGMTRegMMConfigISO* m_RegMMConfigISO;
0244   static L1MuGMTRegMMConfigSRK* m_RegMMConfigSRK;
0245   static L1MuGMTRegSortRankOffset* m_RegSortRankOffset;
0246 
0247   // LUT pointers
0248   static L1MuGMTEtaLUT* m_EtaLUT;
0249   static L1MuGMTLFCOUDeltaEtaLUT* m_LFCOUDeltaEtaLUT;
0250   static L1MuGMTLFDeltaEtaLUT* m_LFDeltaEtaLUT;
0251   static L1MuGMTLFDisableHotLUT* m_LFDisableHotLUT;
0252   static L1MuGMTLFEtaConvLUT* m_LFEtaConvLUT;
0253   static L1MuGMTLFMatchQualLUT* m_LFMatchQualLUT;
0254   static L1MuGMTLFMergeRankCombineLUT* m_LFMergeRankCombineLUT;
0255   static L1MuGMTLFMergeRankEtaPhiLUT* m_LFMergeRankEtaPhiLUT;
0256   static L1MuGMTLFMergeRankEtaQLUT* m_LFMergeRankEtaQLUT;
0257   static L1MuGMTLFMergeRankPtQLUT* m_LFMergeRankPtQLUT;
0258   static L1MuGMTLFOvlEtaConvLUT* m_LFOvlEtaConvLUT;
0259   static L1MuGMTLFPhiProEtaConvLUT* m_LFPhiProEtaConvLUT;
0260   static L1MuGMTLFPhiProLUT* m_LFPhiProLUT;
0261   static L1MuGMTLFPtMixLUT* m_LFPtMixLUT;
0262   static L1MuGMTLFSortRankCombineLUT* m_LFSortRankCombineLUT;
0263   static L1MuGMTLFSortRankEtaPhiLUT* m_LFSortRankEtaPhiLUT;
0264   static L1MuGMTLFSortRankEtaQLUT* m_LFSortRankEtaQLUT;
0265   static L1MuGMTLFSortRankPtQLUT* m_LFSortRankPtQLUT;
0266   static L1MuGMTMIAUEtaConvLUT* m_MIAUEtaConvLUT;
0267   static L1MuGMTMIAUEtaProLUT* m_MIAUEtaProLUT;
0268   static L1MuGMTMIAUPhiPro1LUT* m_MIAUPhiPro1LUT;
0269   static L1MuGMTMIAUPhiPro2LUT* m_MIAUPhiPro2LUT;
0270   static L1MuGMTPhiLUT* m_PhiLUT;
0271 
0272   // scales pointers
0273   static const L1MuGMTScales* m_GMTScales;
0274   static const L1MuTriggerScales* m_TriggerScales;
0275   static const L1MuTriggerPtScale* m_TriggerPtScale;
0276 
0277   static const L1CaloGeometry* m_caloGeom;
0278 };
0279 
0280 #endif