ATLAS Offline Software
SubtractedCylinderSurface.icc
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
3 */
4 
5 namespace Trk {
6 inline bool
7 SubtractedCylinderSurface::insideBounds(const Amg::Vector2D& locpos,
8  double tol1,
9  double tol2) const
10 {
11  // no subtracted volume exists
12  if (!m_subtrVol.get())
13  return (this->bounds().inside(locpos, tol1, tol2));
14  // subtracted volume exists, needs to be checked
15  double rCyl = bounds().r();
16  double phiPos = locpos[Trk::locRPhi] / rCyl;
17  const Amg::Vector3D gp(
18  rCyl * cos(phiPos), rCyl * sin(phiPos), locpos[Trk::locZ]);
19 
20  bool inside_shared(this->bounds().inside(locpos, tol1, tol2) &&
21  m_subtrVol.get()->inside(gp, 0.));
22  bool inside(this->bounds().inside(locpos, tol1, tol2) &&
23  !m_subtrVol.get()->inside(gp, 0.));
24 
25  if (m_shared)
26  return inside_shared;
27  return inside;
28 }
29 
30 inline bool
31 SubtractedCylinderSurface::shared() const
32 {
33  return m_shared;
34 }
35 
36 inline SharedObject<AreaExcluder>
37 SubtractedCylinderSurface::subtractedVolume() const
38 {
39  return m_subtrVol;
40 }
41 }