CMS 3D CMS Logo

/afs/cern.ch/work/a/aaltunda/public/www/CMSSW_5_3_14/src/L1Trigger/GlobalMuonTrigger/src/L1MuGMTConfig.h

Go to the documentation of this file.
00001 //-------------------------------------------------
00002 //
00006 //
00007 //   $Date: 2012/02/10 14:19:28 $
00008 //   $Revision: 1.14 $
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     static unsigned getVersionLUTs() { return m_VersionLUTs; }
00140 
00141     // Register getters
00142     static L1MuGMTRegCDLConfig* getRegCDLConfig() { return m_RegCDLConfig; }
00143     static L1MuGMTRegMMConfigPhi* getRegMMConfigPhi() { return m_RegMMConfigPhi; }
00144     static L1MuGMTRegMMConfigEta* getRegMMConfigEta() { return m_RegMMConfigEta; }
00145     static L1MuGMTRegMMConfigPt* getRegMMConfigPt() { return m_RegMMConfigPt; }
00146     static L1MuGMTRegMMConfigCharge* getRegMMConfigCharge() { return m_RegMMConfigCharge; }
00147     static L1MuGMTRegMMConfigMIP* getRegMMConfigMIP() { return m_RegMMConfigMIP; }
00148     static L1MuGMTRegMMConfigISO* getRegMMConfigISO() { return m_RegMMConfigISO; }
00149     static L1MuGMTRegMMConfigSRK* getRegMMConfigSRK() { return m_RegMMConfigSRK; }
00150     static L1MuGMTRegSortRankOffset* getRegSortRankOffset() { return m_RegSortRankOffset; }
00151 
00152     // LUT getters
00153     static L1MuGMTEtaLUT* getEtaLUT() { return m_EtaLUT; }
00154     static L1MuGMTLFCOUDeltaEtaLUT* getLFCOUDeltaEtaLUT() { return m_LFCOUDeltaEtaLUT; }
00155     static L1MuGMTLFDeltaEtaLUT* getLFDeltaEtaLUT() { return m_LFDeltaEtaLUT; }
00156     static L1MuGMTLFDisableHotLUT* getLFDisableHotLUT() { return m_LFDisableHotLUT; }
00157     static L1MuGMTLFEtaConvLUT* getLFEtaConvLUT() { return m_LFEtaConvLUT; }
00158     static L1MuGMTLFMatchQualLUT* getLFMatchQualLUT() { return m_LFMatchQualLUT; }
00159     static L1MuGMTLFMergeRankCombineLUT* getLFMergeRankCombineLUT() { return m_LFMergeRankCombineLUT; }
00160     static L1MuGMTLFMergeRankEtaPhiLUT* getLFMergeRankEtaPhiLUT() { return m_LFMergeRankEtaPhiLUT; }
00161     static L1MuGMTLFMergeRankEtaQLUT* getLFMergeRankEtaQLUT() { return m_LFMergeRankEtaQLUT; }
00162     static L1MuGMTLFMergeRankPtQLUT* getLFMergeRankPtQLUT() { return m_LFMergeRankPtQLUT; }
00163     static L1MuGMTLFOvlEtaConvLUT* getLFOvlEtaConvLUT() { return m_LFOvlEtaConvLUT; }
00164     static L1MuGMTLFPhiProEtaConvLUT* getLFPhiProEtaConvLUT() { return m_LFPhiProEtaConvLUT; }
00165     static L1MuGMTLFPhiProLUT* getLFPhiProLUT() { return m_LFPhiProLUT; }
00166     static L1MuGMTLFPtMixLUT* getLFPtMixLUT() { return m_LFPtMixLUT; }
00167     static L1MuGMTLFSortRankCombineLUT* getLFSortRankCombineLUT() { return m_LFSortRankCombineLUT; }
00168     static L1MuGMTLFSortRankEtaPhiLUT* getLFSortRankEtaPhiLUT() { return m_LFSortRankEtaPhiLUT; }
00169     static L1MuGMTLFSortRankEtaQLUT* getLFSortRankEtaQLUT() { return m_LFSortRankEtaQLUT; }
00170     static L1MuGMTLFSortRankPtQLUT* getLFSortRankPtQLUT() { return m_LFSortRankPtQLUT; }
00171     static L1MuGMTMIAUEtaConvLUT* getMIAUEtaConvLUT() { return m_MIAUEtaConvLUT; }
00172     static L1MuGMTMIAUEtaProLUT* getMIAUEtaProLUT() { return m_MIAUEtaProLUT; }
00173     static L1MuGMTMIAUPhiPro1LUT* getMIAUPhiPro1LUT() { return m_MIAUPhiPro1LUT; }
00174     static L1MuGMTMIAUPhiPro2LUT* getMIAUPhiPro2LUT() { return m_MIAUPhiPro2LUT; }
00175     static L1MuGMTPhiLUT* getPhiLUT() { return m_PhiLUT; }
00176 
00177     void setGMTScales(const L1MuGMTScales* gmtscales) { m_GMTScales = gmtscales; }
00178     static const L1MuGMTScales* getGMTScales() { return m_GMTScales; }
00179 
00180     void setCaloGeom( const L1CaloGeometry* caloGeom ) { m_caloGeom = caloGeom ; }
00181     static const L1CaloGeometry* getCaloGeom() { return m_caloGeom ; }
00182 
00183     void setTriggerScales(const L1MuTriggerScales* trigscales) { m_TriggerScales = trigscales; }
00184     static const L1MuTriggerScales* getTriggerScales() { return m_TriggerScales; }
00185 
00186     void setTriggerPtScale(const L1MuTriggerPtScale* trigptscale) { m_TriggerPtScale = trigptscale; }
00187     static const L1MuTriggerPtScale* getTriggerPtScale() { return m_TriggerPtScale; }
00188 
00189     void setGMTParams(const L1MuGMTParameters* gmtparams) { m_GMTParams = gmtparams; }
00190     static const L1MuGMTParameters* getGMTParams() { return m_GMTParams; }
00191     
00192     void setGMTChanMask(const L1MuGMTChannelMask* gmtchanmask) { m_GMTChanMask = gmtchanmask; }
00193     static const L1MuGMTChannelMask* getGMTChanMask() { return m_GMTChanMask; }
00194 
00195     
00196     static const edm::ParameterSet* getParameterSet() { return m_ps; }
00197     
00198     void createLUTsRegs();
00199     void clearLUTsRegs();
00200     void dumpLUTs(std::string dir);
00201     void dumpRegs(std::string dir);
00202 
00203     void setDefaults();
00204   
00205   private:
00206 
00207     static const edm::ParameterSet* m_ps;
00208     static const L1MuGMTParameters* m_GMTParams;
00209     static const L1MuGMTChannelMask* m_GMTChanMask;
00210 
00211     static edm::InputTag m_DTInputTag;
00212     static edm::InputTag m_CSCInputTag;
00213     static edm::InputTag m_RPCbInputTag;
00214     static edm::InputTag m_RPCfInputTag;
00215     static edm::InputTag m_MipIsoInputTag;
00216 
00217     static bool m_debug;     // debug flag 
00218     static int  m_dbgLevel;  // debug level
00219 
00220     static int m_BxMin;
00221     static int m_BxMax;
00222 
00223     static int m_BxMinRo;
00224     static int m_BxMaxRo;
00225 
00226     static float m_EtaWeight_barrel;
00227     static float m_PhiWeight_barrel;
00228     static float m_EtaPhiThreshold_barrel;
00229     static float m_EtaWeight_endcap;
00230     static float m_PhiWeight_endcap;
00231     static float m_EtaPhiThreshold_endcap;
00232     static float m_EtaWeight_COU;
00233     static float m_PhiWeight_COU;
00234     static float m_EtaPhiThreshold_COU;
00235   
00236     static bool m_CaloTrigger;
00237     static int  m_IsolationCellSizeEta;
00238     static int  m_IsolationCellSizePhi;
00239     
00240     static bool m_DoOvlRpcAnd;
00241 
00242     static bool m_PropagatePhi;
00243     
00244     static unsigned m_VersionSortRankEtaQLUT;
00245     static unsigned m_VersionLUTs;
00246     
00247     // Register pointers
00248     static L1MuGMTRegCDLConfig* m_RegCDLConfig;
00249     static L1MuGMTRegMMConfigPhi* m_RegMMConfigPhi;
00250     static L1MuGMTRegMMConfigEta* m_RegMMConfigEta;
00251     static L1MuGMTRegMMConfigPt* m_RegMMConfigPt;
00252     static L1MuGMTRegMMConfigCharge* m_RegMMConfigCharge;
00253     static L1MuGMTRegMMConfigMIP* m_RegMMConfigMIP;
00254     static L1MuGMTRegMMConfigISO* m_RegMMConfigISO;
00255     static L1MuGMTRegMMConfigSRK* m_RegMMConfigSRK;
00256     static L1MuGMTRegSortRankOffset* m_RegSortRankOffset;
00257 
00258     // LUT pointers
00259     static L1MuGMTEtaLUT* m_EtaLUT;
00260     static L1MuGMTLFCOUDeltaEtaLUT* m_LFCOUDeltaEtaLUT;
00261     static L1MuGMTLFDeltaEtaLUT* m_LFDeltaEtaLUT;
00262     static L1MuGMTLFDisableHotLUT* m_LFDisableHotLUT;
00263     static L1MuGMTLFEtaConvLUT* m_LFEtaConvLUT;
00264     static L1MuGMTLFMatchQualLUT* m_LFMatchQualLUT;
00265     static L1MuGMTLFMergeRankCombineLUT* m_LFMergeRankCombineLUT;
00266     static L1MuGMTLFMergeRankEtaPhiLUT* m_LFMergeRankEtaPhiLUT;
00267     static L1MuGMTLFMergeRankEtaQLUT* m_LFMergeRankEtaQLUT;
00268     static L1MuGMTLFMergeRankPtQLUT* m_LFMergeRankPtQLUT;
00269     static L1MuGMTLFOvlEtaConvLUT* m_LFOvlEtaConvLUT;
00270     static L1MuGMTLFPhiProEtaConvLUT* m_LFPhiProEtaConvLUT;
00271     static L1MuGMTLFPhiProLUT* m_LFPhiProLUT;
00272     static L1MuGMTLFPtMixLUT* m_LFPtMixLUT;
00273     static L1MuGMTLFSortRankCombineLUT* m_LFSortRankCombineLUT;
00274     static L1MuGMTLFSortRankEtaPhiLUT* m_LFSortRankEtaPhiLUT;
00275     static L1MuGMTLFSortRankEtaQLUT* m_LFSortRankEtaQLUT;
00276     static L1MuGMTLFSortRankPtQLUT* m_LFSortRankPtQLUT;
00277     static L1MuGMTMIAUEtaConvLUT* m_MIAUEtaConvLUT;
00278     static L1MuGMTMIAUEtaProLUT* m_MIAUEtaProLUT;
00279     static L1MuGMTMIAUPhiPro1LUT* m_MIAUPhiPro1LUT;
00280     static L1MuGMTMIAUPhiPro2LUT* m_MIAUPhiPro2LUT;
00281     static L1MuGMTPhiLUT* m_PhiLUT;
00282 
00283     // scales pointers
00284     static const L1MuGMTScales* m_GMTScales;
00285     static const L1MuTriggerScales* m_TriggerScales;
00286     static const L1MuTriggerPtScale* m_TriggerPtScale;
00287 
00288     static const L1CaloGeometry* m_caloGeom ;
00289 };
00290 
00291 #endif
00292 
00293