CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
Stage1Layer2EtSumAlgorithmImp.h
Go to the documentation of this file.
1 
10 //
11 // This header file contains the class definitions for all of the concrete
12 // implementations of the firmware interface. The Stage1Layer2FirmwareFactory
13 // selects the appropriate implementation based on the firmware version in the
14 // configuration.
15 //
16 
17 #ifndef L1TCALOSTAGE1ETSUMSALGORITHMIMP_H
18 #define L1TCALOSTAGE1ETSUMSALGORITHMIMP_H
19 
24 #include <array>
25 #include <vector>
26 
27 
28 namespace l1t {
29 
31  public:
34  virtual void processEvent(const std::vector<l1t::CaloRegion> & regions,
35  const std::vector<l1t::CaloEmCand> & EMCands,
36  const std::vector<l1t::Jet> * jets,
37  std::vector<l1t::EtSum> * sums);
38 
39  private:
41 
42  int DiJetPhi(const std::vector<l1t::Jet> * jets) const;
43  uint16_t MHToverHT(uint16_t,uint16_t) const;
44  std::vector<double> sinPhi;
45  std::vector<double> cosPhi;
46 
47  };
48 
50  public:
53  virtual void processEvent(const std::vector<l1t::CaloRegion> & regions,
54  const std::vector<l1t::CaloEmCand> & EMCands,
55  const std::vector<l1t::Jet> * jets,
56  std::vector<l1t::EtSum> * sums);
57 
58  private:
60 
61  int DiJetPhi(const std::vector<l1t::Jet> * jets) const;
62  uint16_t MHToverHT(uint16_t,uint16_t) const;
63 
64  struct SimpleRegion {
65  int ieta;
66  int iphi;
67  int et;
68  };
69  enum class ETSumType {
71  kEmSum
72  };
73  std::tuple<int, int, int> doSumAndMET(const std::vector<SimpleRegion>& regionEt, ETSumType sumType);
74 
75  // Converts 3Q16 fixed-point phase from CORDIC
76  // to 0-71 appropriately
77  int cordicToMETPhi(int phase);
78  // Array used in above function
79  std::array<int, 73> cordicPhiValues;
80 
82 
83  // for converting region et to x and y components
84  std::array<long, 5> cosines;
85  std::array<long, 5> sines;
86  };
87 
89  public:
92  virtual void processEvent(const std::vector<l1t::CaloRegion> & regions,
93  const std::vector<l1t::CaloEmCand> & EMCands,
94  const std::vector<l1t::Jet> * jets,
95  std::vector<l1t::EtSum> * sums);
96 
97  private:
99 
100  int DiJetPhi(const std::vector<l1t::Jet> * jets) const;
101  uint16_t MHToverHT(uint16_t,uint16_t) const;
102 
103  struct SimpleRegion {
104  int ieta;
105  int iphi;
106  int et;
107  };
108  enum class ETSumType {
109  kHadronicSum,
110  kEmSum
111  };
112  std::tuple<int, int, int> doSumAndMET(const std::vector<SimpleRegion>& regionEt, ETSumType sumType);
113 
114  // Converts 3Q16 fixed-point phase from CORDIC
115  // to 0-71 appropriately
116  int cordicToMETPhi(int phase);
117  // Array used in above function
118  std::array<int, 73> cordicPhiValues;
119 
121 
122  // for converting region et to x and y components
123  std::array<long, 5> cosines;
124  std::array<long, 5> sines;
125  };
126 
127 
128  /* class Stage1Layer2CentralityAlgorithm : public Stage1Layer2EtSumAlgorithm { */
129  /* public: */
130  /* Stage1Layer2CentralityAlgorithm(CaloParamsHelper* params); */
131  /* virtual ~Stage1Layer2CentralityAlgorithm(); */
132  /* virtual void processEvent(const std::vector<l1t::CaloRegion> & regions, */
133  /* const std::vector<l1t::CaloEmCand> & EMCands, */
134  /* std::vector<l1t::EtSum> * sums); */
135  /* private: */
136  /* CaloParamsHelper* const params_; */
137  /* }; */
138 }
139 
140 #endif
std::tuple< int, int, int > doSumAndMET(const std::vector< SimpleRegion > &regionEt, ETSumType sumType)
virtual void processEvent(const std::vector< l1t::CaloRegion > &regions, const std::vector< l1t::CaloEmCand > &EMCands, const std::vector< l1t::Jet > *jets, std::vector< l1t::EtSum > *sums)
int DiJetPhi(const std::vector< l1t::Jet > *jets) const
std::tuple< int, int, int > doSumAndMET(const std::vector< SimpleRegion > &regionEt, ETSumType sumType)
virtual void processEvent(const std::vector< l1t::CaloRegion > &regions, const std::vector< l1t::CaloEmCand > &EMCands, const std::vector< l1t::Jet > *jets, std::vector< l1t::EtSum > *sums)
int DiJetPhi(const std::vector< l1t::Jet > *jets) const
vector< PseudoJet > jets
uint16_t MHToverHT(uint16_t, uint16_t) const
uint16_t MHToverHT(uint16_t, uint16_t) const
uint16_t MHToverHT(uint16_t, uint16_t) const
virtual void processEvent(const std::vector< l1t::CaloRegion > &regions, const std::vector< l1t::CaloEmCand > &EMCands, const std::vector< l1t::Jet > *jets, std::vector< l1t::EtSum > *sums)
int DiJetPhi(const std::vector< l1t::Jet > *jets) const