Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2021-02-14 12:51:17

0001 #ifndef CondFormats_L1TObjects_L1GtMuonTemplate_h
0002 #define CondFormats_L1TObjects_L1GtMuonTemplate_h
0003 
0004 /**
0005  * \class L1GtMuonTemplate
0006  *
0007  *
0008  * Description: L1 Global Trigger muon template.
0009  *
0010  * Implementation:
0011  *    <TODO: enter implementation details>
0012  *
0013  * \author: Vasile Mihai Ghete - HEPHY Vienna
0014  *
0015  * $Date$
0016  * $Revision$
0017  *
0018  */
0019 
0020 // system include files
0021 #include "CondFormats/Serialization/interface/Serializable.h"
0022 
0023 #include <string>
0024 #include <iosfwd>
0025 
0026 // user include files
0027 
0028 //   base class
0029 #include "CondFormats/L1TObjects/interface/L1GtCondition.h"
0030 
0031 // forward declarations
0032 
0033 // class declaration
0034 class L1GtMuonTemplate : public L1GtCondition {
0035 public:
0036   // constructor
0037   L1GtMuonTemplate();
0038 
0039   // constructor
0040   L1GtMuonTemplate(const std::string&);
0041 
0042   // constructor
0043   L1GtMuonTemplate(const std::string&, const L1GtConditionType&);
0044 
0045   // copy constructor
0046   L1GtMuonTemplate(const L1GtMuonTemplate&);
0047 
0048   // destructor
0049   ~L1GtMuonTemplate() override;
0050 
0051   // assign operator
0052   L1GtMuonTemplate& operator=(const L1GtMuonTemplate&);
0053 
0054 public:
0055   // typedef for a single object template
0056   struct ObjectParameter {
0057     unsigned int ptHighThreshold;
0058     unsigned int ptLowThreshold;
0059     bool enableMip;
0060     bool enableIso;
0061     bool requestIso;
0062     unsigned int qualityRange;
0063     unsigned long long etaRange;
0064     unsigned int phiHigh;
0065     unsigned int phiLow;
0066 
0067     COND_SERIALIZABLE;
0068   };
0069 
0070   // typedef for correlation parameters
0071   // chargeCorrelation is defined always
0072   // see documentation for meaning
0073   struct CorrelationParameter {
0074     unsigned int chargeCorrelation;
0075     unsigned long long deltaEtaRange;
0076 
0077     unsigned long long deltaPhiRange0Word;
0078     unsigned long long deltaPhiRange1Word;
0079     unsigned int deltaPhiMaxbits;
0080 
0081     COND_SERIALIZABLE;
0082   };
0083 
0084 public:
0085   inline const std::vector<ObjectParameter>* objectParameter() const { return &m_objectParameter; }
0086 
0087   inline const CorrelationParameter* correlationParameter() const { return &m_correlationParameter; }
0088 
0089   /// set functions
0090   void setConditionParameter(const std::vector<ObjectParameter>& objParameter,
0091                              const CorrelationParameter& corrParameter);
0092 
0093   /// print the condition
0094   void print(std::ostream& myCout) const override;
0095 
0096   /// output stream operator
0097   friend std::ostream& operator<<(std::ostream&, const L1GtMuonTemplate&);
0098 
0099 private:
0100   /// copy function for copy constructor and operator=
0101   void copy(const L1GtMuonTemplate& cp);
0102 
0103 private:
0104   /// variables containing the parameters
0105   std::vector<ObjectParameter> m_objectParameter;
0106   CorrelationParameter m_correlationParameter;
0107 
0108   COND_SERIALIZABLE;
0109 };
0110 
0111 #endif