16#include "GaudiKernel/MsgStream.h"
17#include "GaudiKernel/SystemOfUnits.h"
92std::vector<std::unique_ptr<Trk::Surface>>
96 auto retsf = std::vector<std::unique_ptr<Trk::Surface>>();
106 retsf.push_back(std::make_unique<Trk::PlaneSurface>(
114 retsf.push_back(std::make_unique<Trk::PlaneSurface>(
135 retsf.push_back(std::make_unique<Trk::PlaneSurface>(
149 retsf.push_back(std::make_unique<Trk::PlaneSurface>(
165 retsf.push_back(std::make_unique<Trk::PlaneSurface>(
179 retsf.push_back(std::make_unique<Trk::PlaneSurface>(
184 retsf.push_back(std::make_unique<Trk::PlaneSurface>(
193 retsf.push_back(std::make_unique<Trk::PlaneSurface>(
205std::shared_ptr<Trk::DiamondBounds>
208 return std::make_shared<Trk::DiamondBounds>(
212std::shared_ptr<Trk::RectangleBounds>
218std::shared_ptr<Trk::RectangleBounds>
224std::shared_ptr<Trk::RectangleBounds>
230std::shared_ptr<Trk::RectangleBounds>
236std::shared_ptr<Trk::RectangleBounds>
242std::shared_ptr<Trk::RectangleBounds>
260 if (std::abs(pos.z()) >
m_halfZ + tol)
268 bool inside(faceXYBounds->inside(locp, tol, tol));
276 std::stringstream temp_sl;
277 temp_sl << std::setiosflags(std::ios::fixed);
278 temp_sl << std::setprecision(7);
279 temp_sl <<
"Trk::DoubleTrapezoidVolumeBounds: (minhalfX, medhalfX, maxhalfX, "
280 "halfY1, halfY2, halfZ) = ";
290 std::stringstream temp_sl;
291 temp_sl << std::setiosflags(std::ios::fixed);
292 temp_sl << std::setprecision(7);
293 temp_sl <<
"Trk::DoubleTrapezoidVolumeBounds: ) =(minhalfX, medhalfX, "
294 "maxhalfX, halfY1, halfY2, halfZ) ";
Bounds for a double trapezoidal shaped Volume, the decomposeToSurfaces method creates a vector of 8 s...
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)
MsgStream & dump(MsgStream &sl) const override final
Output Method for MsgStream.
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_medHalfX
maximal halflength in x
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
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 m_halfZ
halflength in z
DoubleTrapezoidVolumeBounds()
Default Constructor.
double m_halfY2
halflength in y
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_halfY1
halflength in 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
virtual ~DoubleTrapezoidVolumeBounds()
Destructor.
std::shared_ptr< RectangleBounds > faceAlpha1RectangleBounds() const
This method returns the associated RecantleBounds of the face PlaneSurface attached to alpha (negativ...
VolumeBounds()
Default Constructor.
Eigen::AngleAxisd AngleAxis3D
Eigen::Matrix< double, 3, 3 > RotationMatrix3D
Eigen::Affine3d Transform3D
Eigen::Matrix< double, 2, 1 > Vector2D
Eigen::Matrix< double, 3, 1 > Vector3D
Eigen::Translation< double, 3 > Translation3D
hold the test vectors and ease the comparison