Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2021-02-14 23:30:20

0001 #ifndef L1Trigger_L1TGlobal_MuonTemplate_h
0002 #define L1Trigger_L1TGlobal_MuonTemplate_h
0003 
0004 /**
0005  * \class MuonTemplate
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  *          Vladimir Rekovic - extend for indexing
0015  *
0016  * $Date$
0017  * $Revision$
0018  *
0019  */
0020 
0021 // system include files
0022 #include <string>
0023 #include <iosfwd>
0024 
0025 // user include files
0026 
0027 //   base class
0028 #include "L1Trigger/L1TGlobal/interface/GlobalCondition.h"
0029 
0030 // forward declarations
0031 
0032 // class declaration
0033 class MuonTemplate : public GlobalCondition {
0034 public:
0035   // constructor
0036   MuonTemplate();
0037 
0038   // constructor
0039   MuonTemplate(const std::string&);
0040 
0041   // constructor
0042   MuonTemplate(const std::string&, const l1t::GtConditionType&);
0043 
0044   // copy constructor
0045   MuonTemplate(const MuonTemplate&);
0046 
0047   // destructor
0048   ~MuonTemplate() override;
0049 
0050   // assign operator
0051   MuonTemplate& operator=(const MuonTemplate&);
0052 
0053 public:
0054   // typedef for a single object template
0055   struct ObjectParameter {
0056     unsigned int unconstrainedPtHigh;
0057     unsigned int unconstrainedPtLow;
0058     unsigned int impactParameterHigh;
0059     unsigned int impactParameterLow;
0060     unsigned int ptHighThreshold;
0061     unsigned int ptLowThreshold;
0062     unsigned int indexHigh;
0063     unsigned int indexLow;
0064     bool enableMip;
0065     bool enableIso;
0066     bool requestIso;
0067     unsigned int qualityLUT;
0068     unsigned int isolationLUT;
0069     unsigned int impactParameterLUT;
0070     unsigned long long etaRange;
0071     unsigned int phiHigh;
0072     unsigned int phiLow;
0073 
0074     int charge;
0075 
0076     unsigned int etaWindow1Lower;
0077     unsigned int etaWindow1Upper;
0078     unsigned int etaWindow2Lower;
0079     unsigned int etaWindow2Upper;
0080 
0081     unsigned int phiWindow1Lower;
0082     unsigned int phiWindow1Upper;
0083     unsigned int phiWindow2Lower;
0084     unsigned int phiWindow2Upper;
0085   };
0086 
0087   // typedef for correlation parameters
0088   // chargeCorrelation is defined always
0089   // see documentation for meaning
0090   struct CorrelationParameter {
0091     unsigned int chargeCorrelation;
0092     //unsigned long long deltaEtaRange;
0093 
0094     unsigned long long deltaPhiRange0Word;
0095     unsigned long long deltaPhiRange1Word;
0096     //unsigned int deltaPhiMaxbits;
0097 
0098     unsigned long long deltaEtaRange;
0099 
0100     unsigned long long deltaPhiRange;
0101     unsigned int deltaPhiMaxbits;
0102 
0103     unsigned int deltaEtaRangeLower;
0104     unsigned int deltaEtaRangeUpper;
0105 
0106     unsigned int deltaPhiRangeLower;
0107     unsigned int deltaPhiRangeUpper;
0108   };
0109 
0110 public:
0111   inline const std::vector<ObjectParameter>* objectParameter() const { return &m_objectParameter; }
0112 
0113   inline const CorrelationParameter* correlationParameter() const { return &m_correlationParameter; }
0114 
0115   /// set functions
0116   void setConditionParameter(const std::vector<ObjectParameter>& objParameter,
0117                              const CorrelationParameter& corrParameter);
0118 
0119   /// print the condition
0120   void print(std::ostream& myCout) const override;
0121 
0122   /// output stream operator
0123   friend std::ostream& operator<<(std::ostream&, const MuonTemplate&);
0124 
0125 private:
0126   /// copy function for copy constructor and operator=
0127   void copy(const MuonTemplate& cp);
0128 
0129 private:
0130   /// variables containing the parameters
0131   std::vector<ObjectParameter> m_objectParameter;
0132   CorrelationParameter m_correlationParameter;
0133 };
0134 
0135 #endif