Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2022-02-16 06:15:49

0001 #ifndef L1Trigger_L1TGlobal_CaloTemplate_h
0002 #define L1Trigger_L1TGlobal_CaloTemplate_h
0003 
0004 /**
0005  * \class CaloTemplate
0006  *
0007  *
0008  * Description: L1 Global Trigger calo template.
0009  *
0010  * Implementation:
0011  *    <TODO: enter implementation details>
0012  *
0013  * \author: Vasile Mihai Ghete - HEPHY Vienna
0014  *          Vladimir Rekovic - exted for indexing
0015 
0016  * \new features: R. Cavanaugh
0017  *          - added LUT bit for LLP displaced jets
0018  *            Note: Calo Trig considers the DISP bit part of the 
0019  *                  quality word, but uGT firmware considers the 
0020  *                  DISP bit to be distinct from the quality word.
0021  *
0022  * $Date$
0023  * $Revision$
0024  *
0025  */
0026 
0027 // system include files
0028 #include <string>
0029 #include <iosfwd>
0030 
0031 // user include files
0032 
0033 //   base class
0034 #include "L1Trigger/L1TGlobal/interface/GlobalCondition.h"
0035 
0036 // forward declarations
0037 
0038 // class declaration
0039 class CaloTemplate : public GlobalCondition {
0040 public:
0041   // constructor
0042   CaloTemplate();
0043 
0044   // constructor
0045   CaloTemplate(const std::string&);
0046 
0047   // constructor
0048   CaloTemplate(const std::string&, const l1t::GtConditionType&);
0049 
0050   // copy constructor
0051   CaloTemplate(const CaloTemplate&);
0052 
0053   // destructor
0054   ~CaloTemplate() override;
0055 
0056   // assign operator
0057   CaloTemplate& operator=(const CaloTemplate&);
0058 
0059 public:
0060   /// typedef for a single object template
0061   struct ObjectParameter {
0062     unsigned int etLowThreshold;
0063     unsigned int etHighThreshold;
0064     unsigned int indexLow;
0065     unsigned int indexHigh;
0066     unsigned int etaRange;
0067     unsigned int phiRange;
0068 
0069     unsigned int isolationLUT;
0070     unsigned int qualityLUT;
0071     unsigned int displacedLUT;  // Added for LLP Jets
0072 
0073     unsigned int etaWindow1Lower;
0074     unsigned int etaWindow1Upper;
0075     unsigned int etaWindow2Lower;
0076     unsigned int etaWindow2Upper;
0077 
0078     unsigned int phiWindow1Lower;
0079     unsigned int phiWindow1Upper;
0080     unsigned int phiWindow2Lower;
0081     unsigned int phiWindow2Upper;
0082   };
0083 
0084   /// typedef for correlation parameters
0085   struct CorrelationParameter {
0086     unsigned long long deltaEtaRange;
0087 
0088     unsigned long long deltaPhiRange;
0089     unsigned int deltaPhiMaxbits;
0090 
0091     unsigned int deltaEtaRangeLower;
0092     unsigned int deltaEtaRangeUpper;
0093 
0094     unsigned int deltaPhiRangeLower;
0095     unsigned int deltaPhiRangeUpper;
0096   };
0097 
0098 public:
0099   inline const std::vector<ObjectParameter>* objectParameter() const { return &m_objectParameter; }
0100 
0101   inline const CorrelationParameter* correlationParameter() const { return &m_correlationParameter; }
0102 
0103   /// set functions
0104   void setConditionParameter(const std::vector<ObjectParameter>& objParameter,
0105                              const CorrelationParameter& corrParameter);
0106 
0107   /// print the condition
0108   void print(std::ostream& myCout) const override;
0109 
0110   /// output stream operator
0111   friend std::ostream& operator<<(std::ostream&, const CaloTemplate&);
0112 
0113 protected:
0114   /// copy function for copy constructor and operator=
0115   void copy(const CaloTemplate& cp);
0116 
0117 protected:
0118   /// variables containing the parameters
0119   std::vector<ObjectParameter> m_objectParameter;
0120   CorrelationParameter m_correlationParameter;
0121 };
0122 
0123 #endif