Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2024-04-06 12:20:29

0001 #ifndef L1Trigger_L1TGlobal_CorrWithOverlapRemovalCondition_h
0002 #define L1Trigger_L1TGlobal_CorrWithOverlapRemovalCondition_h
0003 
0004 /**
0005  * \class CorrWithOverlapRemovalCondition
0006  * 
0007  * 
0008  * Description: evaluation of a correlation with overlap removal condition.
0009  * 
0010  * Implementation:
0011  *    <TODO: enter implementation details>
0012  *   
0013  * \author: Vladimir Rekovic
0014  *
0015  * 
0016  *
0017  */
0018 
0019 // system include files
0020 #include <iosfwd>
0021 #include <string>
0022 
0023 // user include files
0024 //   base classes
0025 #include "L1Trigger/L1TGlobal/interface/ConditionEvaluation.h"
0026 #include "L1Trigger/L1TGlobal/interface/GlobalScales.h"
0027 
0028 // forward declarations
0029 class GlobalCondition;
0030 class CorrelationWithOverlapRemovalTemplate;
0031 
0032 namespace l1t {
0033 
0034   class L1Candidate;
0035 
0036   class GlobalBoard;
0037 
0038   // class declaration
0039   class CorrWithOverlapRemovalCondition : public ConditionEvaluation {
0040   public:
0041     /// constructors
0042     ///     default
0043     CorrWithOverlapRemovalCondition();
0044 
0045     ///     from base template condition (from event setup usually)
0046     CorrWithOverlapRemovalCondition(const GlobalCondition*,
0047                                     const GlobalCondition*,
0048                                     const GlobalCondition*,
0049                                     const GlobalCondition*,
0050                                     const GlobalBoard*
0051 
0052     );
0053 
0054     // copy constructor
0055     CorrWithOverlapRemovalCondition(const CorrWithOverlapRemovalCondition&);
0056 
0057     // destructor
0058     ~CorrWithOverlapRemovalCondition() override;
0059 
0060     // assign operator
0061     CorrWithOverlapRemovalCondition& operator=(const CorrWithOverlapRemovalCondition&);
0062 
0063   public:
0064     /// the core function to check if the condition matches
0065     const bool evaluateCondition(const int bxEval) const override;
0066 
0067     /// print condition
0068     void print(std::ostream& myCout) const override;
0069 
0070   public:
0071     ///   get / set the pointer to a Condition
0072     inline const CorrelationWithOverlapRemovalTemplate* gtCorrelationWithOverlapRemovalTemplate() const {
0073       return m_gtCorrelationWithOverlapRemovalTemplate;
0074     }
0075 
0076     void setGtCorrelationWithOverlapRemovalTemplate(const CorrelationWithOverlapRemovalTemplate*);
0077 
0078     ///   get / set the pointer to uGt GlobalBoard
0079     inline const GlobalBoard* getuGtB() const { return m_uGtB; }
0080 
0081     void setuGtB(const GlobalBoard*);
0082 
0083     void setScales(const GlobalScales*);
0084 
0085     /*   //BLW Comment out for now
0086     ///   get / set the number of bits for eta of calorimeter objects
0087     inline const int gtIfCaloEtaNumberBits() const {
0088         return m_ifCaloEtaNumberBits;
0089     }
0090 
0091 
0092     void setGtIfCaloEtaNumberBits(const int&);
0093 
0094     ///   get / set maximum number of bins for the delta phi scales
0095     inline const int gtCorrParDeltaPhiNrBins() const {
0096         return m_corrParDeltaPhiNrBins;
0097     }
0098 
0099     void setGtCorrParDeltaPhiNrBins(const int&);
0100 */
0101   private:
0102     ///  copy function for copy constructor and operator=
0103     void copy(const CorrWithOverlapRemovalCondition& cp);
0104 
0105     /// load  candidates
0106     const l1t::L1Candidate* getCandidate(const int bx, const int indexCand) const;
0107 
0108     /// function to check a single object if it matches a condition
0109     const bool checkObjectParameter(const int iCondition, const l1t::L1Candidate& cand) const;
0110 
0111   private:
0112     /// pointer to a CorrelationWithOverlapRemovalTemplate
0113     const CorrelationWithOverlapRemovalTemplate* m_gtCorrelationWithOverlapRemovalTemplate;
0114 
0115     // pointer to subconditions
0116     const GlobalCondition* m_gtCond0;
0117     const GlobalCondition* m_gtCond1;
0118     const GlobalCondition* m_gtCond2;  // used for overlap removal
0119 
0120     /// pointer to uGt GlobalBoard, to be able to get the trigger objects
0121     const GlobalBoard* m_uGtB;
0122 
0123     const GlobalScales* m_gtScales;
0124 
0125     /*   //BLW comment out for now
0126     /// number of bits for eta of calorimeter objects
0127     int m_ifCaloEtaNumberBits;
0128 
0129     // maximum number of bins for the delta phi scales
0130     unsigned int m_corrParDeltaPhiNrBins;
0131 */
0132   };
0133 
0134 }  // namespace l1t
0135 #endif