16 #include "GaudiKernel/MsgStream.h"
17 #include "GaudiKernel/SystemOfUnits.h"
44 , m_minHalfX(minhalex)
45 , m_medHalfX(medhalex)
46 , m_maxHalfX(maxhalex)
61 , m_minHalfX(trabo.m_minHalfX)
62 , m_medHalfX(trabo.m_medHalfX)
63 , m_maxHalfX(trabo.m_maxHalfX)
64 , m_halfY1(trabo.m_halfY1)
65 , m_halfY2(trabo.m_halfY2)
66 , m_halfZ(trabo.m_halfZ)
67 , m_alpha1(trabo.m_alpha1)
68 , m_alpha2(trabo.m_alpha2)
69 , m_objectAccessor(trabo.m_objectAccessor)
92 std::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>(
112 this->faceXYDiamondBounds()));
114 retsf.push_back(std::make_unique<Trk::PlaneSurface>(
118 this->faceXYDiamondBounds()));
123 Amg::Vector3D A(- this->minHalflengthX(), -this->halflengthY1(), 0.);
133 std::shared_ptr<RectangleBounds> faceAlpha1Bounds = this->faceAlpha1RectangleBounds();
135 retsf.push_back(std::make_unique<Trk::PlaneSurface>(
141 Amg::Vector3D B(this->minHalflengthX(), -this->halflengthY1(), 0.);
147 std::shared_ptr<RectangleBounds> faceBeta1Bounds = this->faceBeta1RectangleBounds();
149 retsf.push_back(std::make_unique<Trk::PlaneSurface>(
156 Amg::Vector3D AA(- this->maxHalflengthX(), this->halflengthY2(), 0.);
162 std::shared_ptr<RectangleBounds> faceAlpha2Bounds = this->faceAlpha2RectangleBounds();
165 retsf.push_back(std::make_unique<Trk::PlaneSurface>(
171 Amg::Vector3D BB( this->maxHalflengthX(),this->halflengthY2(), 0.);
177 std::shared_ptr<RectangleBounds> faceBeta2Bounds = this->faceBeta2RectangleBounds();
179 retsf.push_back(std::make_unique<Trk::PlaneSurface>(
184 retsf.push_back(std::make_unique<Trk::PlaneSurface>(
191 this->faceZXRectangleBoundsBottom()));
193 retsf.push_back(std::make_unique<Trk::PlaneSurface>(
199 this->faceZXRectangleBoundsTop()));
205 std::shared_ptr<Trk::DiamondBounds>
208 return std::make_shared<Trk::DiamondBounds>(
209 m_minHalfX, m_medHalfX, m_maxHalfX, m_halfY1, m_halfY2);
212 std::shared_ptr<Trk::RectangleBounds>
215 return std::make_shared<Trk::RectangleBounds>(m_halfY1 /
cos(m_alpha1), m_halfZ);
218 std::shared_ptr<Trk::RectangleBounds>
221 return std::make_shared<Trk::RectangleBounds>(m_halfY2 /
cos(m_alpha2), m_halfZ);
224 std::shared_ptr<Trk::RectangleBounds>
227 return std::make_shared<Trk::RectangleBounds>(m_halfY1 /
cos(m_alpha1), m_halfZ);
230 std::shared_ptr<Trk::RectangleBounds>
233 return std::make_shared<Trk::RectangleBounds>(m_halfY2 /
cos(m_alpha2), m_halfZ);
236 std::shared_ptr<Trk::RectangleBounds>
239 return std::make_shared<Trk::RectangleBounds>(m_halfZ, m_minHalfX);
242 std::shared_ptr<Trk::RectangleBounds>
245 return std::make_shared<Trk::RectangleBounds>(m_halfZ, m_maxHalfX);
260 if (std::abs(
pos.z()) > m_halfZ + tol)
262 if (
pos.y() < -2 * m_halfY1 - tol)
264 if (
pos.y() > 2 * m_halfY2 + tol)
266 std::shared_ptr<Trk::DiamondBounds> faceXYBounds = this->faceXYDiamondBounds();
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) = ";
281 temp_sl <<
"(" << m_minHalfX <<
", " << m_medHalfX <<
", " << m_maxHalfX;
282 temp_sl <<
", " << m_halfY1 <<
", " << m_halfY2 <<
", " << m_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) ";
295 temp_sl <<
"(" << m_minHalfX <<
", " << m_medHalfX <<
", " << m_maxHalfX;
296 temp_sl <<
", " << m_halfY1 <<
", " << m_halfY2 <<
", " << m_halfZ <<
")";