ATLAS Offline Software
DiscBounds.h
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration
3 */
4 
6 // DiscBounds.h, c) ATLAS Detector software
8 
9 #ifndef TRKSURFACES_DISCBOUNDS_H
10 #define TRKSURFACES_DISCBOUNDS_H
11 
12 // Trk
15 //
16 #include <cmath>
17 #include <math.h>
18 // Eigen
20 
21 class MsgStream;
22 
23 #ifdef TRKDETDESCR_USEFLOATPRECISON
24 typedef float TDD_real_t;
25 #else
26 typedef double TDD_real_t;
27 #endif
28 
29 namespace Trk {
30 
43 class DiscBounds final: public SurfaceBounds
44 {
45 
46 public:
49  {
50  bv_rMin = 0,
51  bv_rMax = 1,
54  bv_length = 4
55  };
57  DiscBounds();
58 
60  DiscBounds(const DiscBounds&) = default;
61 
63  DiscBounds& operator=(const DiscBounds& discbo) = default;
64 
66  DiscBounds(DiscBounds&& discbo) noexcept = default;
67 
69  DiscBounds& operator=(DiscBounds&& discbo) noexcept = default;
70 
72  virtual ~DiscBounds() = default;
73 
75  DiscBounds(double minrad, double maxrad, double hphisec = M_PI);
76 
78  DiscBounds(double minrad, double maxrad, double avephi, double hphisec);
79 
81  virtual bool operator==(const SurfaceBounds& sbo) const override;
82 
84  virtual DiscBounds* clone() const override final;
85 
87  virtual SurfaceBounds::BoundsType type() const override final { return SurfaceBounds::Disc; }
88 
91  virtual bool inside(const Amg::Vector2D& locpo, double tol1 = 0., double tol2 = 0.) const override final;
92  virtual bool inside(const Amg::Vector2D& locpo, const BoundaryCheck& bchk) const override final;
93 
96  virtual bool insideLoc1(const Amg::Vector2D& locpo, double tol1 = 0.) const override final;
97 
100  virtual bool insideLoc2(const Amg::Vector2D& locpo, double tol2 = 0.) const override final;
101 
103  virtual double minDistance(const Amg::Vector2D& pos) const override final;
104 
106  double rMin() const;
107 
109  double rMax() const;
110 
112  virtual double r() const override final;
113 
115  double averagePhi() const;
116 
119 
121  virtual MsgStream& dump(MsgStream& sl) const override;
122 
124  virtual std::ostream& dump(std::ostream& sl) const override;
125 
126 private:
129 };
130 
131 } // end of namespace
132 
133 #include "TrkSurfaces/DiscBounds.icc"
134 #endif // TRKSURFACES_DISCBOUNDS_H
Trk::DiscBounds::DiscBounds
DiscBounds(const DiscBounds &)=default
Default copy constructor.
Trk::SurfaceBounds::BoundsType
BoundsType
Definition: SurfaceBounds.h:59
Trk::DiscBounds::type
virtual SurfaceBounds::BoundsType type() const override final
Return the type - mainly for persistency.
Definition: DiscBounds.h:87
Trk::DiscBounds::averagePhi
double averagePhi() const
This method returns the average phi.
Trk::DiscBounds::BoundValues
BoundValues
enumeration for readability
Definition: DiscBounds.h:49
Amg::Vector2D
Eigen::Matrix< double, 2, 1 > Vector2D
Definition: GeoPrimitives.h:48
Trk::SurfaceBounds
Definition: SurfaceBounds.h:47
Trk::DiscBounds::operator=
DiscBounds & operator=(const DiscBounds &discbo)=default
Default assignment operator.
Trk::DiscBounds::insideLoc2
virtual bool insideLoc2(const Amg::Vector2D &locpo, double tol2=0.) const override final
This method checks inside bounds in loc2.
Trk::DiscBounds::halfPhiSector
double halfPhiSector() const
This method returns the halfPhiSector which is covered by the disc.
M_PI
#define M_PI
Definition: ActiveFraction.h:11
Trk::DiscBounds::bv_rMin
@ bv_rMin
Definition: DiscBounds.h:50
const
bool const RAWDATA *ch2 const
Definition: LArRodBlockPhysicsV0.cxx:562
Trk::DiscBounds::bv_halfPhiSector
@ bv_halfPhiSector
Definition: DiscBounds.h:53
ParamDefs.h
Trk::DiscBounds::rMax
double rMax() const
This method returns outer radius.
Trk::DiscBounds::inside
virtual bool inside(const Amg::Vector2D &locpo, double tol1=0., double tol2=0.) const override final
This method cheks if the radius given in the LocalPosition is inside [rMin,rMax] if only tol1 is give...
Definition: DiscBounds.cxx:55
Trk::DiscBounds::dump
virtual MsgStream & dump(MsgStream &sl) const override
Output Method for MsgStream.
Definition: DiscBounds.cxx:310
GeoPrimitives.h
SurfaceBounds.h
Trk::DiscBounds::insideLoc1
virtual bool insideLoc1(const Amg::Vector2D &locpo, double tol1=0.) const override final
This method checks inside bounds in loc1.
Trk::DiscBounds::rMin
double rMin() const
This method returns inner radius.
Trk::DiscBounds::m_boundValues
std::vector< TDD_real_t > m_boundValues
Internal members of the bounds (float/double)
Definition: DiscBounds.h:128
Trk::DiscBounds::clone
virtual DiscBounds * clone() const override final
Virtual constructor.
Trk::DiscBounds::bv_rMax
@ bv_rMax
Definition: DiscBounds.h:51
vector
Definition: MultiHisto.h:13
Trk::DiscBounds::operator==
virtual bool operator==(const SurfaceBounds &sbo) const override
Equality operator.
Definition: DiscBounds.cxx:45
Trk::DiscBounds::minDistance
virtual double minDistance(const Amg::Vector2D &pos) const override final
Minimal distance to boundary ( > 0 if outside and <=0 if inside)
Definition: DiscBounds.cxx:259
Trk::DiscBounds::~DiscBounds
virtual ~DiscBounds()=default
Destructor.
Trk::DiscBounds::bv_averagePhi
@ bv_averagePhi
Definition: DiscBounds.h:52
TDD_real_t
double TDD_real_t
Definition: DiscBounds.h:21
Trk::DiscBounds::operator=
DiscBounds & operator=(DiscBounds &&discbo) noexcept=default
Default move assignment operator.
Trk
Ensure that the ATLAS eigen extensions are properly loaded.
Definition: FakeTrackBuilder.h:9
Amg
Definition of ATLAS Math & Geometry primitives (Amg)
Definition: AmgStringHelpers.h:19
private
#define private
Definition: DetDescrConditionsDict_dict_fixes.cxx:13
Trk::DiscBounds::DiscBounds
DiscBounds(DiscBounds &&discbo) noexcept=default
Default move constructor.
python.LumiBlobConversion.pos
pos
Definition: LumiBlobConversion.py:18
Trk::SurfaceBounds::Disc
@ Disc
Definition: SurfaceBounds.h:63
Trk::BoundaryCheck
Definition: BoundaryCheck.h:51
Trk::DiscBounds::DiscBounds
DiscBounds()
Default Constructor.
Definition: DiscBounds.cxx:17
Trk::DiscBounds::r
virtual double r() const override final
This method returns the maximum expansion on the plane (=rMax)
Trk::DiscBounds::bv_length
@ bv_length
Definition: DiscBounds.h:54
Trk::DiscBounds
Definition: DiscBounds.h:44
TDD_real_t
double TDD_real_t
Definition: AnnulusBounds.h:20