ATLAS Offline Software
Loading...
Searching...
No Matches
TrapezoidVolumeBounds.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// TrapezoidVolumeBounds.h, (c) ATLAS Detector software
8
9#ifndef TRKVOLUMES_TRAPEZOIDVOLUMESBOUNDS_H
10#define TRKVOLUMES_TRAPEZOIDVOLUMESBOUNDS_H
11
12// Trk
16
17class MsgStream;
18
19namespace Trk {
20
21class Surface;
22class RectangleBounds;
23class TrapezoidBounds;
24
56
58 public:
61
63 TrapezoidVolumeBounds(double minhlenghtx, double maxhlengthx, double hlenghty,
64 double hlengthz);
65
67 TrapezoidVolumeBounds(double minhlenghtx, double hlenghty, double hlengthz,
68 double alpha, double beta);
69
72
75
78
80 TrapezoidVolumeBounds* clone() const override final;
81
84 bool inside(const Amg::Vector3D&, double tol = 0.) const override final;
85
88 (const Amg::Transform3D& transform) override final;
89
92 const Amg::Vector3D& gp, const Amg::Vector3D& dir,
93 bool forceInside = false) const override;
94
96 double minHalflengthX() const;
97
99 double maxHalflengthX() const;
100
102 double halflengthY() const;
103
105 double halflengthZ() const;
106
108 double alpha() const;
109
111 double beta() const;
112
114 MsgStream& dump(MsgStream& sl) const override final;
115
117 std::ostream& dump(std::ostream& sl) const override final;
118
119 private:
123
127
131
135
139
140 double m_minHalfX;
141 double m_maxHalfX;
142 double m_halfY;
143 double m_halfZ;
144
145 double m_alpha;
146 double m_beta;
147
151};
152
154 return new TrapezoidVolumeBounds(*this);
155}
156
158 return m_minHalfX;
159}
161 return m_maxHalfX;
162}
163inline double TrapezoidVolumeBounds::halflengthY() const { return m_halfY; }
164inline double TrapezoidVolumeBounds::halflengthZ() const { return m_halfZ; }
165inline double TrapezoidVolumeBounds::alpha() const { return m_alpha; }
166inline double TrapezoidVolumeBounds::beta() const { return m_beta; }
167
172
173} // namespace Trk
174
175#endif // TRKVOLUMES_TRAPEZOIDVOLUMESBOUNDS_H
176
Eigen::Affine3d Transform3D
Eigen::Matrix< double, 3, 1 > Vector3D
Bounds for a rectangular, planar surface.
Abstract Base Class for tracking surfaces.
Bounds for a trapezoidal, planar Surface.
double halflengthZ() const
This method returns the halflength in local z.
std::shared_ptr< RectangleBounds > faceAlphaRectangleBounds() const
This method returns the associated RecantleBounds of the face PlaneSurface attached to alpha (negativ...
ObjectAccessor boundarySurfaceAccessor(const Amg::Vector3D &gp, const Amg::Vector3D &dir, bool forceInside=false) const override
Provide accessor for BoundarySurfaces.
std::shared_ptr< RectangleBounds > faceZXRectangleBoundsBottom() const
This method returns the associated RecantleBounds of the face PlaneSurface parallel to local zx plane...
double minHalflengthX() const
This method returns the minimal halflength in local x.
double halflengthY() const
This method returns the halflength in local y.
virtual std::vector< std::unique_ptr< Trk::Surface > > decomposeToSurfaces(const Amg::Transform3D &transform) override final
Method to decompose the Bounds into Surfaces.
double m_alpha
opening angle alpha (in point A)
SixObjectsAccessor m_objectAccessor
There's only one single object Acessor for the moment has to be implemented if Cuboids are used more ...
TrapezoidVolumeBounds()
Default Constructor.
std::shared_ptr< RectangleBounds > faceZXRectangleBoundsTop() const
This method returns the associated RecantleBounds of the face PlaneSurface parallel to local zx plane...
double alpha() const
This method returns the opening angle in point A (negative local x)
std::shared_ptr< TrapezoidBounds > faceXYTrapezoidBounds() const
This method returns the associated TrapezoidBounds of the face PlaneSurface parallel to local xy plan...
TrapezoidVolumeBounds & operator=(const TrapezoidVolumeBounds &bobo)
Assignment operator.
double m_maxHalfX
maximal halflength in x
double m_beta
opening angle beta (in point B)
virtual ~TrapezoidVolumeBounds()
Destructor.
double m_minHalfX
minimal halflength in x
double beta() const
This method returns the opening angle in point B (negative local x)
std::shared_ptr< RectangleBounds > faceBetaRectangleBounds() const
This method returns the associated RecantleBounds of the face PlaneSurface attached to beta (positive...
double maxHalflengthX() const
This method returns the maximal halflength in local x.
bool inside(const Amg::Vector3D &, double tol=0.) const override final
This method checks if position in the 3D volume frame is inside the cylinder.
TrapezoidVolumeBounds * clone() const override final
Virtual constructor.
VolumeBounds()
Default Constructor.
STL class.
STL class.
Definition of ATLAS Math & Geometry primitives (Amg)
Eigen::Matrix< double, 3, 1 > Vector3D
Ensure that the ATLAS eigen extensions are properly loaded.
std::array< ObjectAccessor::value_type, 6 > SixObjectsAccessor
-event-from-file
STL namespace.
#define private