ATLAS Offline Software
Loading...
Searching...
No Matches
InvalidBounds.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// CylinderBounds.h, (c) ATLAS Detector software
8
9#ifndef TRKSURFACES_INVALIDBOUNDS_H
10#define TRKSURFACES_INVALIDBOUNDS_H
11
14
15// Eigen
17
18class MsgStream;
19
20namespace Trk {
21
28
30{
31public:
33 InvalidBounds() = default;
34
35 InvalidBounds(const InvalidBounds&) = default;
37 InvalidBounds(InvalidBounds&&) noexcept = default;
38 InvalidBounds& operator=(InvalidBounds&&) noexcept = default;
40 virtual ~InvalidBounds() = default;
41
43 virtual bool operator==(const SurfaceBounds&) const override { return false; }
44
46 virtual bool operator!=(const SurfaceBounds&) const override { return true; }
47
49 InvalidBounds* operator&() { return nullptr; }
50
52 virtual SurfaceBounds::BoundsType type() const override { return SurfaceBounds::Other; }
53
55 virtual bool inside(const Amg::Vector2D&, double = 0., double = 0.) const override { return false; }
56 virtual bool inside(const Amg::Vector2D&, const BoundaryCheck&) const override { return false; }
59 virtual bool insideLoc1(const Amg::Vector2D&, double = 0.) const override { return false; }
60
63 virtual bool insideLoc2(const Amg::Vector2D&, double = 0.) const override { return false; }
64
66 virtual double minDistance(const Amg::Vector2D&) const override { return std::nan(""); }
67
69 virtual InvalidBounds* clone() const override { return nullptr; }
70
72 virtual double r() const override { return std::nan(""); }
73
75 virtual MsgStream& dump(MsgStream& sl) const override;
76
78 virtual std::ostream& dump(std::ostream& sl) const override;
79
80private:
81};
82
83inline MsgStream&
84InvalidBounds::dump(MsgStream& sl) const
85{
86 sl << "Trk::InvalidBounds ... invalid surface" << endmsg;
87 return sl;
88}
89
90inline std::ostream&
91InvalidBounds::dump(std::ostream& sl) const
92{
93 sl << "Trk::InvalidBounds ... invalid surface" << std::endl;
94 return sl;
95}
96
97} // end of namespace
98
99#endif // TRKSURFACES_INVALIDBOUNDS_H
#define endmsg
The BoundaryCheck class allows to steer the way surface boundaries are used for inside/outside checks...
virtual bool inside(const Amg::Vector2D &, const BoundaryCheck &) const override
virtual double minDistance(const Amg::Vector2D &) const override
Minimal distance to boundary (=0 if inside)
virtual SurfaceBounds::BoundsType type() const override
Return SurfaceBounds for persistency.
virtual InvalidBounds * clone() const override
Invalidate cloning of an invalid object.
InvalidBounds(const InvalidBounds &)=default
virtual bool operator!=(const SurfaceBounds &) const override
Non-Equality operator.
InvalidBounds()=default
Default Constructor.
InvalidBounds & operator=(const InvalidBounds &)=default
virtual bool inside(const Amg::Vector2D &, double=0., double=0.) const override
Method inside() returns false for any case.
virtual bool insideLoc1(const Amg::Vector2D &, double=0.) const override
This method checks inside bounds in loc1.
InvalidBounds(InvalidBounds &&) noexcept=default
InvalidBounds * operator&()
'address of' will return nullptr
virtual MsgStream & dump(MsgStream &sl) const override
Output Method for MsgStream.
virtual bool insideLoc2(const Amg::Vector2D &, double=0.) const override
This method checks inside bounds in loc2.
virtual double r() const override
r() method to complete inherited interface
SurfaceBounds()=default
Default Constructor.
BoundsType
This enumerator simplifies the persistency, by saving a dynamic_cast to happen.
Eigen::Matrix< double, 2, 1 > Vector2D
Ensure that the ATLAS eigen extensions are properly loaded.
-event-from-file