00001 //------------------------------------------------- 00002 // 00006 // 00007 // $Date: 2009/12/04 04:11:48 $ 00008 // $Revision: 1.13 $ 00009 // 00010 // Author : 00011 // N. Neumeister CERN EP 00012 // 00013 // Migrated to CMSSW: 00014 // I. Mikulec 00015 // 00016 //-------------------------------------------------- 00017 #ifndef L1TriggerGlobalMuonTrigger_L1MuGMTConfig_h 00018 #define L1TriggerGlobalMuonTrigger_L1MuGMTConfig_h 00019 00020 //--------------- 00021 // C++ Headers -- 00022 //--------------- 00023 00024 #include <string> 00025 00026 //---------------------- 00027 // Base Class Headers -- 00028 //---------------------- 00029 00030 //------------------------------------ 00031 // Collaborating Class Declarations -- 00032 //------------------------------------ 00033 #include "FWCore/ParameterSet/interface/ParameterSet.h" 00034 00035 namespace edm { 00036 class InputTag; 00037 } 00038 00039 class L1MuGMTRegCDLConfig; 00040 class L1MuGMTRegMMConfigPhi; 00041 class L1MuGMTRegMMConfigEta; 00042 class L1MuGMTRegMMConfigPt; 00043 class L1MuGMTRegMMConfigCharge; 00044 class L1MuGMTRegMMConfigMIP; 00045 class L1MuGMTRegMMConfigISO; 00046 class L1MuGMTRegMMConfigSRK; 00047 class L1MuGMTRegSortRankOffset; 00048 00049 class L1MuGMTEtaLUT; 00050 class L1MuGMTLFCOUDeltaEtaLUT; 00051 class L1MuGMTLFDeltaEtaLUT; 00052 class L1MuGMTLFDisableHotLUT; 00053 class L1MuGMTLFEtaConvLUT; 00054 class L1MuGMTLFMatchQualLUT; 00055 class L1MuGMTLFMergeRankCombineLUT; 00056 class L1MuGMTLFMergeRankEtaPhiLUT; 00057 class L1MuGMTLFMergeRankEtaQLUT; 00058 class L1MuGMTLFMergeRankPtQLUT; 00059 class L1MuGMTLFOvlEtaConvLUT; 00060 class L1MuGMTLFPhiProEtaConvLUT; 00061 class L1MuGMTLFPhiProLUT; 00062 class L1MuGMTLFPtMixLUT; 00063 class L1MuGMTLFSortRankCombineLUT; 00064 class L1MuGMTLFSortRankEtaPhiLUT; 00065 class L1MuGMTLFSortRankEtaQLUT; 00066 class L1MuGMTLFSortRankPtQLUT; 00067 class L1MuGMTMIAUEtaConvLUT; 00068 class L1MuGMTMIAUEtaProLUT; 00069 class L1MuGMTMIAUPhiPro1LUT; 00070 class L1MuGMTMIAUPhiPro2LUT; 00071 class L1MuGMTPhiLUT; 00072 00073 class L1MuGMTScales; 00074 class L1MuTriggerScales; 00075 class L1MuTriggerPtScale; 00076 class L1MuGMTParameters; 00077 class L1MuGMTChannelMask; 00078 00079 class L1CaloGeometry ; 00080 00081 // --------------------- 00082 // -- Class Interface -- 00083 // --------------------- 00084 00085 00086 class L1MuGMTConfig { 00087 00088 public: 00089 00090 static const unsigned int MAXRPC = 8, MAXRPCbarrel = 4, MAXRPCendcap = 4, 00091 MAXDTBX = 4, MAXCSC = 4 ; 00092 00093 static const unsigned int MaxMuons = 4; 00094 00096 L1MuGMTConfig(const edm::ParameterSet& ps); 00097 00099 virtual ~L1MuGMTConfig(); 00100 00101 static edm::InputTag getDTInputTag() { return m_DTInputTag; } 00102 static edm::InputTag getCSCInputTag() { return m_CSCInputTag; } 00103 static edm::InputTag getRPCbInputTag() { return m_RPCbInputTag; } 00104 static edm::InputTag getRPCfInputTag() { return m_RPCfInputTag; } 00105 static edm::InputTag getMipIsoInputTag() { return m_MipIsoInputTag; } 00106 00107 static bool Debug() { return m_debug; } 00108 static bool Debug(int level) { return ( m_debug && m_dbgLevel >= level ); } 00109 00110 static void setDebugLevel(int level) { m_dbgLevel = level; } 00111 static int getDebugLevel() { return m_dbgLevel; } 00112 00113 static int getBxMin() { return m_BxMin; } 00114 static int getBxMax() { return m_BxMax; } 00115 00116 static int getBxMinRo() { return m_BxMinRo; } 00117 static int getBxMaxRo() { return m_BxMaxRo; } 00118 00119 static float getEtaWeightBarrel() { return m_EtaWeight_barrel; } 00120 static float getPhiWeightBarrel() { return m_PhiWeight_barrel; } 00121 static float getEtaPhiThresholdBarrel() { return m_EtaPhiThreshold_barrel; } 00122 static float getEtaWeightEndcap() { return m_EtaWeight_endcap; } 00123 static float getPhiWeightEndcap() { return m_PhiWeight_endcap; } 00124 static float getEtaPhiThresholdEndcap() { return m_EtaPhiThreshold_endcap; } 00125 static float getEtaWeightCOU() { return m_EtaWeight_COU; } 00126 static float getPhiWeightCOU() { return m_PhiWeight_COU; } 00127 static float getEtaPhiThresholdCOU() { return m_EtaPhiThreshold_COU; } 00128 00129 static bool getCaloTrigger() { return m_CaloTrigger; } 00130 static int getIsolationCellSizeEta() { return m_IsolationCellSizeEta; } 00131 static int getIsolationCellSizePhi() { return m_IsolationCellSizePhi; } 00132 00134 static bool getDoOvlRpcAnd() { return m_DoOvlRpcAnd; } 00135 00136 static bool getPropagatePhi() { return m_PropagatePhi; } 00137 00138 static unsigned getVersionSortRankEtaQLUT() { return m_VersionSortRankEtaQLUT; } 00139 00140 // Register getters 00141 static L1MuGMTRegCDLConfig* getRegCDLConfig() { return m_RegCDLConfig; } 00142 static L1MuGMTRegMMConfigPhi* getRegMMConfigPhi() { return m_RegMMConfigPhi; } 00143 static L1MuGMTRegMMConfigEta* getRegMMConfigEta() { return m_RegMMConfigEta; } 00144 static L1MuGMTRegMMConfigPt* getRegMMConfigPt() { return m_RegMMConfigPt; } 00145 static L1MuGMTRegMMConfigCharge* getRegMMConfigCharge() { return m_RegMMConfigCharge; } 00146 static L1MuGMTRegMMConfigMIP* getRegMMConfigMIP() { return m_RegMMConfigMIP; } 00147 static L1MuGMTRegMMConfigISO* getRegMMConfigISO() { return m_RegMMConfigISO; } 00148 static L1MuGMTRegMMConfigSRK* getRegMMConfigSRK() { return m_RegMMConfigSRK; } 00149 static L1MuGMTRegSortRankOffset* getRegSortRankOffset() { return m_RegSortRankOffset; } 00150 00151 // LUT getters 00152 static L1MuGMTEtaLUT* getEtaLUT() { return m_EtaLUT; } 00153 static L1MuGMTLFCOUDeltaEtaLUT* getLFCOUDeltaEtaLUT() { return m_LFCOUDeltaEtaLUT; } 00154 static L1MuGMTLFDeltaEtaLUT* getLFDeltaEtaLUT() { return m_LFDeltaEtaLUT; } 00155 static L1MuGMTLFDisableHotLUT* getLFDisableHotLUT() { return m_LFDisableHotLUT; } 00156 static L1MuGMTLFEtaConvLUT* getLFEtaConvLUT() { return m_LFEtaConvLUT; } 00157 static L1MuGMTLFMatchQualLUT* getLFMatchQualLUT() { return m_LFMatchQualLUT; } 00158 static L1MuGMTLFMergeRankCombineLUT* getLFMergeRankCombineLUT() { return m_LFMergeRankCombineLUT; } 00159 static L1MuGMTLFMergeRankEtaPhiLUT* getLFMergeRankEtaPhiLUT() { return m_LFMergeRankEtaPhiLUT; } 00160 static L1MuGMTLFMergeRankEtaQLUT* getLFMergeRankEtaQLUT() { return m_LFMergeRankEtaQLUT; } 00161 static L1MuGMTLFMergeRankPtQLUT* getLFMergeRankPtQLUT() { return m_LFMergeRankPtQLUT; } 00162 static L1MuGMTLFOvlEtaConvLUT* getLFOvlEtaConvLUT() { return m_LFOvlEtaConvLUT; } 00163 static L1MuGMTLFPhiProEtaConvLUT* getLFPhiProEtaConvLUT() { return m_LFPhiProEtaConvLUT; } 00164 static L1MuGMTLFPhiProLUT* getLFPhiProLUT() { return m_LFPhiProLUT; } 00165 static L1MuGMTLFPtMixLUT* getLFPtMixLUT() { return m_LFPtMixLUT; } 00166 static L1MuGMTLFSortRankCombineLUT* getLFSortRankCombineLUT() { return m_LFSortRankCombineLUT; } 00167 static L1MuGMTLFSortRankEtaPhiLUT* getLFSortRankEtaPhiLUT() { return m_LFSortRankEtaPhiLUT; } 00168 static L1MuGMTLFSortRankEtaQLUT* getLFSortRankEtaQLUT() { return m_LFSortRankEtaQLUT; } 00169 static L1MuGMTLFSortRankPtQLUT* getLFSortRankPtQLUT() { return m_LFSortRankPtQLUT; } 00170 static L1MuGMTMIAUEtaConvLUT* getMIAUEtaConvLUT() { return m_MIAUEtaConvLUT; } 00171 static L1MuGMTMIAUEtaProLUT* getMIAUEtaProLUT() { return m_MIAUEtaProLUT; } 00172 static L1MuGMTMIAUPhiPro1LUT* getMIAUPhiPro1LUT() { return m_MIAUPhiPro1LUT; } 00173 static L1MuGMTMIAUPhiPro2LUT* getMIAUPhiPro2LUT() { return m_MIAUPhiPro2LUT; } 00174 static L1MuGMTPhiLUT* getPhiLUT() { return m_PhiLUT; } 00175 00176 void setGMTScales(const L1MuGMTScales* gmtscales) { m_GMTScales = gmtscales; } 00177 static const L1MuGMTScales* getGMTScales() { return m_GMTScales; } 00178 00179 void setCaloGeom( const L1CaloGeometry* caloGeom ) { m_caloGeom = caloGeom ; } 00180 static const L1CaloGeometry* getCaloGeom() { return m_caloGeom ; } 00181 00182 void setTriggerScales(const L1MuTriggerScales* trigscales) { m_TriggerScales = trigscales; } 00183 static const L1MuTriggerScales* getTriggerScales() { return m_TriggerScales; } 00184 00185 void setTriggerPtScale(const L1MuTriggerPtScale* trigptscale) { m_TriggerPtScale = trigptscale; } 00186 static const L1MuTriggerPtScale* getTriggerPtScale() { return m_TriggerPtScale; } 00187 00188 void setGMTParams(const L1MuGMTParameters* gmtparams) { m_GMTParams = gmtparams; } 00189 static const L1MuGMTParameters* getGMTParams() { return m_GMTParams; } 00190 00191 void setGMTChanMask(const L1MuGMTChannelMask* gmtchanmask) { m_GMTChanMask = gmtchanmask; } 00192 static const L1MuGMTChannelMask* getGMTChanMask() { return m_GMTChanMask; } 00193 00194 00195 static const edm::ParameterSet* getParameterSet() { return m_ps; } 00196 00197 void createLUTsRegs(); 00198 void clearLUTsRegs(); 00199 void dumpLUTs(std::string dir); 00200 void dumpRegs(std::string dir); 00201 00202 void setDefaults(); 00203 00204 private: 00205 00206 static const edm::ParameterSet* m_ps; 00207 static const L1MuGMTParameters* m_GMTParams; 00208 static const L1MuGMTChannelMask* m_GMTChanMask; 00209 00210 static edm::InputTag m_DTInputTag; 00211 static edm::InputTag m_CSCInputTag; 00212 static edm::InputTag m_RPCbInputTag; 00213 static edm::InputTag m_RPCfInputTag; 00214 static edm::InputTag m_MipIsoInputTag; 00215 00216 static bool m_debug; // debug flag 00217 static int m_dbgLevel; // debug level 00218 00219 static int m_BxMin; 00220 static int m_BxMax; 00221 00222 static int m_BxMinRo; 00223 static int m_BxMaxRo; 00224 00225 static float m_EtaWeight_barrel; 00226 static float m_PhiWeight_barrel; 00227 static float m_EtaPhiThreshold_barrel; 00228 static float m_EtaWeight_endcap; 00229 static float m_PhiWeight_endcap; 00230 static float m_EtaPhiThreshold_endcap; 00231 static float m_EtaWeight_COU; 00232 static float m_PhiWeight_COU; 00233 static float m_EtaPhiThreshold_COU; 00234 00235 static bool m_CaloTrigger; 00236 static int m_IsolationCellSizeEta; 00237 static int m_IsolationCellSizePhi; 00238 00239 static bool m_DoOvlRpcAnd; 00240 00241 static bool m_PropagatePhi; 00242 00243 static unsigned m_VersionSortRankEtaQLUT; 00244 00245 // Register pointers 00246 static L1MuGMTRegCDLConfig* m_RegCDLConfig; 00247 static L1MuGMTRegMMConfigPhi* m_RegMMConfigPhi; 00248 static L1MuGMTRegMMConfigEta* m_RegMMConfigEta; 00249 static L1MuGMTRegMMConfigPt* m_RegMMConfigPt; 00250 static L1MuGMTRegMMConfigCharge* m_RegMMConfigCharge; 00251 static L1MuGMTRegMMConfigMIP* m_RegMMConfigMIP; 00252 static L1MuGMTRegMMConfigISO* m_RegMMConfigISO; 00253 static L1MuGMTRegMMConfigSRK* m_RegMMConfigSRK; 00254 static L1MuGMTRegSortRankOffset* m_RegSortRankOffset; 00255 00256 // LUT pointers 00257 static L1MuGMTEtaLUT* m_EtaLUT; 00258 static L1MuGMTLFCOUDeltaEtaLUT* m_LFCOUDeltaEtaLUT; 00259 static L1MuGMTLFDeltaEtaLUT* m_LFDeltaEtaLUT; 00260 static L1MuGMTLFDisableHotLUT* m_LFDisableHotLUT; 00261 static L1MuGMTLFEtaConvLUT* m_LFEtaConvLUT; 00262 static L1MuGMTLFMatchQualLUT* m_LFMatchQualLUT; 00263 static L1MuGMTLFMergeRankCombineLUT* m_LFMergeRankCombineLUT; 00264 static L1MuGMTLFMergeRankEtaPhiLUT* m_LFMergeRankEtaPhiLUT; 00265 static L1MuGMTLFMergeRankEtaQLUT* m_LFMergeRankEtaQLUT; 00266 static L1MuGMTLFMergeRankPtQLUT* m_LFMergeRankPtQLUT; 00267 static L1MuGMTLFOvlEtaConvLUT* m_LFOvlEtaConvLUT; 00268 static L1MuGMTLFPhiProEtaConvLUT* m_LFPhiProEtaConvLUT; 00269 static L1MuGMTLFPhiProLUT* m_LFPhiProLUT; 00270 static L1MuGMTLFPtMixLUT* m_LFPtMixLUT; 00271 static L1MuGMTLFSortRankCombineLUT* m_LFSortRankCombineLUT; 00272 static L1MuGMTLFSortRankEtaPhiLUT* m_LFSortRankEtaPhiLUT; 00273 static L1MuGMTLFSortRankEtaQLUT* m_LFSortRankEtaQLUT; 00274 static L1MuGMTLFSortRankPtQLUT* m_LFSortRankPtQLUT; 00275 static L1MuGMTMIAUEtaConvLUT* m_MIAUEtaConvLUT; 00276 static L1MuGMTMIAUEtaProLUT* m_MIAUEtaProLUT; 00277 static L1MuGMTMIAUPhiPro1LUT* m_MIAUPhiPro1LUT; 00278 static L1MuGMTMIAUPhiPro2LUT* m_MIAUPhiPro2LUT; 00279 static L1MuGMTPhiLUT* m_PhiLUT; 00280 00281 // scales pointers 00282 static const L1MuGMTScales* m_GMTScales; 00283 static const L1MuTriggerScales* m_TriggerScales; 00284 static const L1MuTriggerPtScale* m_TriggerPtScale; 00285 00286 static const L1CaloGeometry* m_caloGeom ; 00287 }; 00288 00289 #endif 00290 00291