ATLAS Offline Software
Loading...
Searching...
No Matches
DoubleTrapezoidVolumeBounds.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// DoubleTrapezoidVolumeBounds.h, (c) ATLAS Detector software
8
9#ifndef TRKVOLUMES_DOUBLETRAPEZOIDVOLUMESBOUNDS_H
10#define TRKVOLUMES_DOUBLETRAPEZOIDVOLUMESBOUNDS_H
11
12// Trk
16
17class MsgStream;
18
19namespace Trk {
20
21class Surface;
22class RectangleBounds;
23class TrapezoidBounds;
24class DiamondBounds;
25
65
67 public:
70
73 DoubleTrapezoidVolumeBounds(double minhlenghtx, double medhlengthx,
74 double maxhlengthx, double hlenghty1,
75 double hlenghty2, double hlengthz);
76
79
82
85 const DoubleTrapezoidVolumeBounds& bobo);
86
88 DoubleTrapezoidVolumeBounds* clone() const override final;
89
92 bool inside(const Amg::Vector3D&, double tol = 0.) const override final;
93
96 (const Amg::Transform3D& transform) override final;
97
100 const Amg::Vector3D& gp, const Amg::Vector3D& dir,
101 bool forceInside = false) const override final;
102
104 double minHalflengthX() const;
105
107 double medHalflengthX() const;
108
110 double maxHalflengthX() const;
111
113 double halflengthY1() const;
114
116 double halflengthY2() const;
117
119 double halflengthZ() const;
120
122 double alpha1() const;
123
125 double alpha2() const;
126
128 MsgStream& dump(MsgStream& sl) const override final;
130 std::ostream& dump(std::ostream& sl) const override final;
131
132 private:
136
141
146
150
154
155#ifdef TRKDETDESCR_USEFLOATPRECISON
156#define double float
157#endif
158 double m_minHalfX;
159 double m_medHalfX;
160 double m_maxHalfX;
161 double m_halfY1;
162 double m_halfY2;
163 double m_halfZ;
164
165 double m_alpha1;
166 double m_alpha2;
167#ifdef TRKDETDESCR_USEFLOATPRECISON
168#undef double
169#endif
170
174};
175
179
181 return m_minHalfX;
182}
183
185 return m_medHalfX;
186}
187
189 return m_maxHalfX;
190}
191
193 return m_halfY1;
194}
195
197 return m_halfY2;
198}
199
201 return m_halfZ;
202}
203
204inline double DoubleTrapezoidVolumeBounds::alpha1() const { return m_alpha1; }
205
206inline double DoubleTrapezoidVolumeBounds::alpha2() const { return m_alpha2; }
207
212
213} // namespace Trk
214
215#endif // TRKVOLUMES_DOUBLETRAPEZOIDVOLUMESBOUNDS_H
216
Eigen::Affine3d Transform3D
Eigen::Matrix< double, 3, 1 > Vector3D
Bounds for a double trapezoidal ("diamond"), planar Surface.
double minHalflengthX() const
This method returns the X halflength at minimal Y.
std::shared_ptr< DiamondBounds > faceXYDiamondBounds() const
This method returns the associated DoubleTrapezoidBounds of the face PlaneSurface parallel to local x...
double m_alpha1
opening angle alpha (in point A)
double alpha2() const
This method returns the opening angle in point A' (negative local x)
Trk::EightObjectsAccessor m_objectAccessor
There's only one single object Acessor for the moment has to be implemented if Cuboids are used more ...
DoubleTrapezoidVolumeBounds & operator=(const DoubleTrapezoidVolumeBounds &bobo)
Assignment operator.
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.
double m_alpha2
opening angle alpha (in point A')
std::shared_ptr< RectangleBounds > faceBeta1RectangleBounds() const
This method returns the associated RecantleBounds of the face PlaneSurface attached to beta (positive...
double halflengthZ() const
This method returns the halflength in local z.
double m_minHalfX
minimal Y halflength in x
DoubleTrapezoidVolumeBounds * clone() const override final
Virtual constructor.
std::shared_ptr< RectangleBounds > faceZXRectangleBoundsBottom() const
This method returns the associated RecantleBounds of the face PlaneSurface parallel to local zx plane...
virtual std::vector< std::unique_ptr< Trk::Surface > > decomposeToSurfaces(const Amg::Transform3D &transform) override final
Method to decompose the Bounds into Surfaces.
double halflengthY1() const
This method returns the halflength1 in local y.
std::shared_ptr< RectangleBounds > faceZXRectangleBoundsTop() const
This method returns the associated RecantleBounds of the face PlaneSurface parallel to local zx plane...
double alpha1() const
This method returns the opening angle in point A (negative local x)
double halflengthY2() const
This method returns the halflength2 in local y.
double m_maxHalfX
maximal Y halflength in x
std::shared_ptr< RectangleBounds > faceAlpha2RectangleBounds() const
double maxHalflengthX() const
This method returns the X halflength at maximal Y (local coordinates)
std::shared_ptr< RectangleBounds > faceBeta2RectangleBounds() const
double medHalflengthX() const
This method returns the (maximal) halflength in local x.
ObjectAccessor boundarySurfaceAccessor(const Amg::Vector3D &gp, const Amg::Vector3D &dir, bool forceInside=false) const override final
Provide accessor for BoundarySurfaces.
virtual ~DoubleTrapezoidVolumeBounds()
Destructor.
std::shared_ptr< RectangleBounds > faceAlpha1RectangleBounds() const
This method returns the associated RecantleBounds of the face PlaneSurface attached to alpha (negativ...
Bounds for a rectangular, planar surface.
Abstract Base Class for tracking surfaces.
Bounds for a trapezoidal, planar Surface.
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, 8 > EightObjectsAccessor
-event-from-file
STL namespace.
#define private