CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
RectangularEtaPhiRegion.h
Go to the documentation of this file.
1 #ifndef DataFormats_Math_RectangularEtaPhiRegion_h
2 #define DataFormats_Math_RectangularEtaPhiRegion_h
3 
5 
7 public:
8  RectangularEtaPhiRegion(float etaLow, float etaHigh, float phiLow, float phiHigh)
9  : ceta(0.5f * (etaHigh + etaLow)), deta(0.5f * std::abs(etaHigh - etaLow)) {
10  phiHigh = proxim(phiHigh, phiLow);
11  constexpr float c1 = 2. * M_PI;
12  if (phiHigh < phiLow)
13  phiHigh += c1;
14  dphi = 0.5f * (phiHigh - phiLow);
15  cphi = phiLow + dphi;
16  }
17 
18  bool inRegion(float eta, float phi) const {
19  return std::abs(eta - ceta) < deta && std::abs(proxim(phi, cphi) - cphi) < dphi;
20  }
21 
22  auto etaLow() const { return ceta - deta; }
23  auto etaHigh() const { return ceta + deta; }
24  auto phiLow() const { return cphi - dphi; }
25  auto phiHigh() const { return cphi + dphi; }
26 
27 private:
28  float ceta;
29  float deta;
30  float cphi;
31  float dphi;
32 };
33 
34 #endif
constexpr T proxim(T b, T a)
Definition: normalizedPhi.h:14
Abs< T >::type abs(const T &t)
Definition: Abs.h:22
#define M_PI
RectangularEtaPhiRegion(float etaLow, float etaHigh, float phiLow, float phiHigh)
bool inRegion(float eta, float phi) const