00001 #ifndef CondFormats_L1TObjects_L1GtMuonTemplate_h 00002 #define CondFormats_L1TObjects_L1GtMuonTemplate_h 00003 00020 // system include files 00021 #include <string> 00022 #include <iosfwd> 00023 00024 // user include files 00025 00026 // base class 00027 #include "CondFormats/L1TObjects/interface/L1GtCondition.h" 00028 00029 // forward declarations 00030 00031 // class declaration 00032 class L1GtMuonTemplate : public L1GtCondition 00033 { 00034 00035 public: 00036 00037 // constructor 00038 L1GtMuonTemplate(); 00039 00040 // constructor 00041 L1GtMuonTemplate(const std::string& ); 00042 00043 // constructor 00044 L1GtMuonTemplate(const std::string&, const L1GtConditionType& ); 00045 00046 // copy constructor 00047 L1GtMuonTemplate( const L1GtMuonTemplate& ); 00048 00049 // destructor 00050 virtual ~L1GtMuonTemplate(); 00051 00052 // assign operator 00053 L1GtMuonTemplate& operator= (const L1GtMuonTemplate&); 00054 00055 public: 00056 00057 // typedef for a single object template 00058 struct ObjectParameter 00059 { 00060 unsigned int ptHighThreshold; 00061 unsigned int ptLowThreshold; 00062 bool enableMip; 00063 bool enableIso; 00064 bool requestIso; 00065 unsigned int qualityRange; 00066 unsigned long long etaRange; 00067 unsigned int phiHigh; 00068 unsigned int phiLow; 00069 }; 00070 00071 // typedef for correlation parameters 00072 // chargeCorrelation is defined always 00073 // see documentation for meaning 00074 struct CorrelationParameter 00075 { 00076 unsigned int chargeCorrelation; 00077 unsigned long long deltaEtaRange; 00078 00079 unsigned long long deltaPhiRange0Word; 00080 unsigned long long deltaPhiRange1Word; 00081 unsigned int deltaPhiMaxbits; 00082 }; 00083 00084 public: 00085 00086 inline const std::vector<ObjectParameter>* objectParameter() const 00087 { 00088 return &m_objectParameter; 00089 } 00090 00091 inline const CorrelationParameter* correlationParameter() const 00092 { 00093 return &m_correlationParameter; 00094 } 00095 00096 00098 void setConditionParameter(const std::vector<ObjectParameter>& objParameter, 00099 const CorrelationParameter& corrParameter); 00100 00101 00103 virtual void print(std::ostream& myCout) const; 00104 00106 friend std::ostream& operator<<(std::ostream&, const L1GtMuonTemplate&); 00107 00108 00109 private: 00110 00112 void copy( const L1GtMuonTemplate& cp); 00113 00114 00115 private: 00116 00118 std::vector<ObjectParameter> m_objectParameter; 00119 CorrelationParameter m_correlationParameter; 00120 00121 }; 00122 00123 #endif