Processing math: 100%
 |
ATLAS Offline Software
|
#include <BevelledCylinderVolumeBounds.h>
Bounds for a cylindrical Volume, the decomposeToSurfaces method creates a vector of up to 6 surfaces:
case A) 3 Surfaces (full cylindrical tube): BoundarySurfaceFace [index]:
case B) 4 Surfaces (tube with inner and outer radius): BoundarySurfaceFace [index]:
case C) 6 Surfaces (sectoral tube with inner and outer radius): BoundarySurfaceFace [index]:
- negativeFaceXY [0] : Trk::DiscSurface with r_{inner}>0 and \phi < \pi , parallel to xy plane at negative z
- positiveFaceXY [1] : Trk::DiscSurface with r_{inner}>0 and \phi < \pi , parallel to xy plane at positive z
- tubeSectorOuterCover [2] : Trk::CylinderSurface with r = r_{outer}
- tubeSectorInnerCover [3] : Trk::CylinderSurface with r = r_{inner}
- tubeSectorNegativePhi [4] : Rectangular Trk::PlaneSurface attached to [0] and [1] at negative \phi
- tubeSectorNegativePhi [5] : Rectangular Trk::PlaneSurface attached to [0] and [1] at positive \phi
case D) 6 Surfaces (sectoral bevelled tube with inner and/or outer radius replaced by plane surface): BoundarySurfaceFace [index]:
- negativeFaceXY [0] : Trk::DiscSurface with r_{inner}>0 and \phi < \pi , parallel to xy plane at negative z
- positiveFaceXY [1] : Trk::DiscSurface with r_{inner}>0 and \phi < \pi , parallel to xy plane at positive z
- tubeSectorOuterCover [2] : Trk::CylinderSurface with r = r_{outer} OR rectangular plane surface
- tubeSectorInnerCover [3] : Trk::CylinderSurface with r = r_{inner} OR rectangular plane surface
- tubeSectorNegativePhi [4] : Rectangular Trk::PlaneSurface attached to [0] and [1] at negative \phi
- tubeSectorNegativePhi [5] : Rectangular Trk::PlaneSurface attached to [0] and [1] at positive \phi
- Author
- Andre.nosp@m.as.S.nosp@m.alzbu.nosp@m.rger.nosp@m.@cern.nosp@m..ch
Definition at line 100 of file BevelledCylinderVolumeBounds.h.
◆ BevelledCylinderVolumeBounds() [1/3]
Trk::BevelledCylinderVolumeBounds::BevelledCylinderVolumeBounds |
( |
| ) |
|
◆ BevelledCylinderVolumeBounds() [2/3]
Trk::BevelledCylinderVolumeBounds::BevelledCylinderVolumeBounds |
( |
double |
rinner, |
|
|
double |
router, |
|
|
double |
halfPhiSector, |
|
|
double |
halez, |
|
|
int |
type |
|
) |
| |
◆ BevelledCylinderVolumeBounds() [3/3]
◆ ~BevelledCylinderVolumeBounds()
Trk::BevelledCylinderVolumeBounds::~BevelledCylinderVolumeBounds |
( |
| ) |
|
|
virtualdefault |
◆ bottomEllipseBounds()
std::shared_ptr< Trk::EllipseBounds > Trk::BevelledCylinderVolumeBounds::bottomEllipseBounds |
( |
| ) |
const |
|
private |
◆ boundarySurfaceAccessor()
Provide accessor for BoundarySurfaces.
Implements Trk::VolumeBounds.
Definition at line 249 of file BevelledCylinderVolumeBounds.cxx.
257 double posZ = gp.z();
258 double posR = gp.perp();
266 bool isOnFace =
false;
267 bool intersectionIndicator = (
deltaR > 0.);
268 bool choiceIndicator =
false;
283 (posR < m_innerRadius && deltaR > 0.)) {
300 if (intersectionIndicator) {
304 double zOfIntersect = intersectRmax.yOfX;
306 if (std::abs(zOfIntersect) <=
m_halfZ)
307 return {(choiceIndicator || zOfIntersect > 0.)
313 return {(choiceIndicator || zOfIntersect > 0.)
322 double zOfIntersect = intersectRmin.yOfX;
324 if (std::abs(zOfIntersect) <=
m_halfZ)
325 return {(choiceIndicator || zOfIntersect > 0.)
331 return {(choiceIndicator || zOfIntersect > 0.)
360 double zOfIntersect = intersectRmax.yOfX;
362 if (std::abs(zOfIntersect) <=
m_halfZ && zOfIntersect > 0.)
365 if (std::abs(zOfIntersect) <=
m_halfZ && zOfIntersect < 0.)
368 if (std::abs(zOfIntersect) >
m_halfZ && zOfIntersect < 0.)
371 if (std::abs(zOfIntersect) >
m_halfZ && zOfIntersect > 0.)
379 double zOfIntersect = intersectRmin.yOfX;
381 if (std::abs(zOfIntersect) <=
m_halfZ && zOfIntersect > 0.)
384 if (std::abs(zOfIntersect) <=
m_halfZ && zOfIntersect < 0.)
387 if (std::abs(zOfIntersect) >
m_halfZ && zOfIntersect > 0.)
397 double posZ = gp.z();
398 double posR = gp.perp();
409 double zOfIntersect = intersectR.yOfX;
411 if (std::abs(zOfIntersect) <=
m_halfZ && zOfIntersect > 0.)
414 if (std::abs(zOfIntersect) <=
m_halfZ && zOfIntersect < 0.)
417 if (std::abs(zOfIntersect) >
m_halfZ && zOfIntersect > 0.)
◆ clone()
◆ createBoundarySurfaceAccessors()
void Trk::BevelledCylinderVolumeBounds::createBoundarySurfaceAccessors |
( |
| ) |
|
|
private |
Private method to construct the accessors.
◆ decomposeToSurfaces()
Method to decompose the Bounds into boundarySurfaces.
Implements Trk::VolumeBounds.
Definition at line 99 of file BevelledCylinderVolumeBounds.cxx.
102 auto retsf = std::vector<std::unique_ptr<Trk::Surface>>();
116 retsf.push_back(std::make_unique<Trk::PlaneSurface>(
132 retsf.push_back(std::make_unique<Trk::SubtractedDiscSurface>(
133 bottomDisc, std::make_shared<Trk::VolumeExcluder>(std::move(subtrVol)),
false));
135 retsf.push_back(std::make_unique<Trk::DiscSurface>(
144 retsf.push_back(std::make_unique<Trk::PlaneSurface>(
158 retsf.push_back(std::make_unique<Trk::SubtractedDiscSurface>(
159 topDisc, std::make_shared<Trk::VolumeExcluder>(std::move(subtrVol)),
false));
161 retsf.push_back(std::make_unique<Trk::DiscSurface>(
169 retsf.push_back(std::make_unique<Trk::CylinderSurface>(
172 retsf.push_back(std::make_unique<Trk::CylinderSurface>(
175 retsf.push_back(std::make_unique<Trk::PlaneSurface>(
186 retsf.push_back(std::make_unique<Trk::CylinderSurface>(
189 retsf.push_back(std::make_unique<Trk::CylinderSurface>(
192 retsf.push_back(std::make_unique<Trk::PlaneSurface>(
205 retsf.push_back(std::make_unique<Trk::PlaneSurface>(
213 retsf.push_back(std::make_unique<Trk::PlaneSurface>(
228 retsf.push_back(std::make_unique<Trk::PlaneSurface>(
236 retsf.push_back(std::make_unique<Trk::PlaneSurface>(
◆ deltaRadius()
double Trk::BevelledCylinderVolumeBounds::deltaRadius |
( |
| ) |
const |
|
inline |
◆ discBounds()
std::shared_ptr< Trk::DiscBounds > Trk::BevelledCylinderVolumeBounds::discBounds |
( |
| ) |
const |
|
private |
◆ dump() [1/2]
MsgStream & Trk::BevelledCylinderVolumeBounds::dump |
( |
MsgStream & |
sl | ) |
const |
|
overridevirtual |
Output Method for MsgStream.
Implements Trk::VolumeBounds.
Definition at line 553 of file BevelledCylinderVolumeBounds.cxx.
555 std::stringstream sl_temp;
556 sl_temp << std::setiosflags(std::ios::fixed);
557 sl_temp << std::setprecision(7);
558 sl_temp <<
"Trk::BevelledCylinderVolumeBounds: (innerR, outerR, "
559 "halfPhiSector, halflengthInZ, thetaMinus, thetaPlus) = ";
◆ dump() [2/2]
std::ostream & Trk::BevelledCylinderVolumeBounds::dump |
( |
std::ostream & |
sl | ) |
const |
|
overridevirtual |
Output Method for std::ostream.
Implements Trk::VolumeBounds.
Definition at line 568 of file BevelledCylinderVolumeBounds.cxx.
570 std::stringstream sl_temp;
571 sl_temp << std::setiosflags(std::ios::fixed);
572 sl_temp << std::setprecision(7);
573 sl_temp <<
"Trk::BevelledCylinderVolumeBounds: (innerR, outerR, "
574 "halfPhiSector, halflengthInZ, thetaMinus, thetaPlus) = ";
◆ halflengthZ()
double Trk::BevelledCylinderVolumeBounds::halflengthZ |
( |
| ) |
const |
|
inline |
◆ halfPhiSector()
double Trk::BevelledCylinderVolumeBounds::halfPhiSector |
( |
| ) |
const |
|
inline |
◆ innerBevelledCylinderBounds()
std::shared_ptr< Trk::CylinderBounds > Trk::BevelledCylinderVolumeBounds::innerBevelledCylinderBounds |
( |
| ) |
const |
|
private |
◆ innerBevelledPlaneBounds()
std::shared_ptr< Trk::RectangleBounds > Trk::BevelledCylinderVolumeBounds::innerBevelledPlaneBounds |
( |
| ) |
const |
|
private |
◆ innerCylinderBounds()
std::shared_ptr< Trk::CylinderBounds > Trk::BevelledCylinderVolumeBounds::innerCylinderBounds |
( |
| ) |
const |
|
private |
◆ innerRadius()
double Trk::BevelledCylinderVolumeBounds::innerRadius |
( |
| ) |
const |
|
inline |
◆ inside()
bool Trk::BevelledCylinderVolumeBounds::inside |
( |
const Amg::Vector3D & |
pos, |
|
|
double |
tol = 0. |
|
) |
| const |
|
inlineoverridevirtual |
◆ mediumRadius()
double Trk::BevelledCylinderVolumeBounds::mediumRadius |
( |
| ) |
const |
|
inline |
◆ operator=()
◆ outerBevelledCylinderBounds()
std::shared_ptr< Trk::CylinderBounds > Trk::BevelledCylinderVolumeBounds::outerBevelledCylinderBounds |
( |
| ) |
const |
|
private |
◆ outerBevelledPlaneBounds()
std::shared_ptr< Trk::RectangleBounds > Trk::BevelledCylinderVolumeBounds::outerBevelledPlaneBounds |
( |
| ) |
const |
|
private |
◆ outerCylinderBounds()
std::shared_ptr< Trk::CylinderBounds > Trk::BevelledCylinderVolumeBounds::outerCylinderBounds |
( |
| ) |
const |
|
private |
◆ outerRadius()
double Trk::BevelledCylinderVolumeBounds::outerRadius |
( |
| ) |
const |
|
inline |
◆ sectorPlaneBounds()
std::shared_ptr< Trk::RectangleBounds > Trk::BevelledCylinderVolumeBounds::sectorPlaneBounds |
( |
| ) |
const |
|
private |
◆ sectorTrdBounds()
std::shared_ptr< Trk::TrapezoidBounds > Trk::BevelledCylinderVolumeBounds::sectorTrdBounds |
( |
| ) |
const |
|
private |
This method returns the associated PlaneBounds limiting a sectoral BevelledCylinderVolume.
Definition at line 500 of file BevelledCylinderVolumeBounds.cxx.
502 return std::make_shared<Trk::TrapezoidBounds>(
◆ subtractedVolume()
Trk::Volume * Trk::BevelledCylinderVolumeBounds::subtractedVolume |
( |
| ) |
const |
|
private |
This method returns the bevelled area volume.
Definition at line 520 of file BevelledCylinderVolumeBounds.cxx.
526 std::unique_ptr<Trk::Volume> volIn;
527 std::unique_ptr<Trk::Volume> volOut;
529 volIn = std::make_unique<Trk::Volume>(
535 volOut = std::make_unique<Trk::Volume>(
541 return volOut.release();
544 return volIn.release();
547 nullptr, std::make_shared<Trk::CombinedVolumeBounds>(std::move(volIn), std::move(volOut),
false));
◆ thetaMinus()
double Trk::BevelledCylinderVolumeBounds::thetaMinus |
( |
| ) |
const |
|
inline |
◆ thetaPlus()
double Trk::BevelledCylinderVolumeBounds::thetaPlus |
( |
| ) |
const |
|
inline |
◆ topEllipseBounds()
std::shared_ptr< Trk::EllipseBounds > Trk::BevelledCylinderVolumeBounds::topEllipseBounds |
( |
| ) |
const |
|
private |
◆ type()
int Trk::BevelledCylinderVolumeBounds::type |
( |
| ) |
const |
|
inline |
◆ m_boundaryAccessors
◆ m_halfPhiSector
double Trk::BevelledCylinderVolumeBounds::m_halfPhiSector |
|
private |
◆ m_halfZ
double Trk::BevelledCylinderVolumeBounds::m_halfZ |
|
private |
◆ m_innerRadius
double Trk::BevelledCylinderVolumeBounds::m_innerRadius |
|
private |
◆ m_outerRadius
double Trk::BevelledCylinderVolumeBounds::m_outerRadius |
|
private |
◆ m_subtractedVolume
◆ m_thetaMinus
double Trk::BevelledCylinderVolumeBounds::m_thetaMinus |
|
private |
◆ m_thetaPlus
double Trk::BevelledCylinderVolumeBounds::m_thetaPlus |
|
private |
◆ m_type
int Trk::BevelledCylinderVolumeBounds::m_type |
|
private |
◆ s_numericalStable
const double Trk::BevelledCylinderVolumeBounds::s_numericalStable |
|
staticprivate |
The documentation for this class was generated from the following files:
std::shared_ptr< DiscBounds > discBounds() const
This method returns the associated DiscBounds for the bottom/top DiscSurface.
const SixObjectsAccessor & sectoralBevelledTubeAccessor(SectoralBevelledTubeAccessorType stat) const
Return the accessor for the sectoral tube case.
double mediumRadius() const
This method returns the medium radius.
double outerRadius() const
This method returns the outer radius.
const ThreeObjectsAccessor & bevelledcylinderAccessor(BevelledCylinderAccessorType cat) const
Return the accessor for the cylindrical case.
@ BevelledTubeRincreaseZincrease
Accessor type [ 2,1,0,3 ].
const FiveObjectsAccessor & sectoralBevelledCylinderAccessor(SectoralBevelledCylinderAccessorType scat) const
Return the accessor for the sectoral cylinciracl case.
int type() const
This method returns the type.
@ BevelledTubeRdecreaseZincrease
Accessor type [ 3,1,0,2 ].
@ BevelledCylinderPositiveFace
Pos.
@ BevelledCylinderNegativeFace
Neg.
static const double s_numericalStable
numerical stability
BevelledCylinderVolumeBounds()
Default Constructor.
@ BevelledTubeZincreaseRincrease
Accessor type [ 1,2,0,3 ].
@ BevelledTubeOutsideRminRdecrease
Accessor type [ 3,1,0,2] - inverse case.
std::shared_ptr< RectangleBounds > sectorPlaneBounds() const
@ BevelledTubeOutsideRmaxRincrease
Accessor type [ 2,1,0,3 ] - inverse case.
@ BevelledTubeOutsideZminZdecrease
Accessor type [ 0,3,2,1 ] - inverse case.
std::shared_ptr< CylinderBounds > outerBevelledCylinderBounds() const
This method returns the associated BevelledCylinderBounds of the outer BevelledCylinderSurfaces.
std::shared_ptr< CylinderBounds > outerCylinderBounds() const
This method returns the associated CylinderBounds of the outer CylinderSurfaces.
float millimeter
Copyright (C) 2002-2023 CERN for the benefit of the ATLAS collaboration # This software is distribute...
std::shared_ptr< EllipseBounds > bottomEllipseBounds() const
This method returns the associated EllipseBounds for the bottom/top EllipseSurface.
@ BevelledTubeZdecreaseRincrease
Accessor type [ 0,2,1,3 ].
@ StandardSectoralBevelledCylinder
@ BevelledTubeRdecreaseZdecrease
Accessor type [ 3,0,1,2 ].
Eigen::Affine3d Transform3D
Amg::Vector3D transform(Amg::Vector3D &v, Amg::Transform3D &tr)
Transform a point from a Trasformation3D.
@ BevelledTubeRincreaseZdecrease
Accessor type [ 2,0,1,3 ].
@ BevelledTubeZdecreaseRdecrease
Accessor type [ 0,3,1,2 ].
@ BevelledTubeZincreaseRdecrease
Accessor type [ 1,3,0,2 ].
const FourObjectsAccessor & bevelledtubeAccessor(BevelledTubeAccessorType tat) const
Return the accessor for the tube case.
std::shared_ptr< EllipseBounds > topEllipseBounds() const
This method returns the associated EllipseBounds for the bottom/top EllipseSurface.
@ BevelledCylinderZincrease
Cylinder hit, then pos.
std::shared_ptr< RectangleBounds > innerBevelledPlaneBounds() const
This method returns the associated plane surface bounds of the inner bevelled surface.
Eigen::Matrix< double, 3, 1 > Vector3D
double innerRadius() const
This method returns the inner radius.
CxxUtils::CachedUniquePtr< Trk::Volume > m_subtractedVolume
std::shared_ptr< TrapezoidBounds > sectorTrdBounds() const
This method returns the associated PlaneBounds limiting a sectoral BevelledCylinderVolume.
Eigen::Matrix< double, 3, 3 > RotationMatrix3D
std::shared_ptr< CylinderBounds > innerCylinderBounds() const
This method returns the associated CylinderBounds of the inner CylinderSurfaces.
std::shared_ptr< CylinderBounds > innerBevelledCylinderBounds() const
This method returns the associated BevelledCylinderBounds of the inner BevelledCylinderSurfaces.
Eigen::Translation< double, 3 > Translation3D
@ BevelledTubeOutsideZmaxZincrease
Accessor type [ 1,3,2,0 ] - inverse case.
Volume * subtractedVolume() const
This method returns the bevelled area volume.
Eigen::AngleAxisd AngleAxis3D
double halflengthZ() const
This method returns the halflengthZ.
@ BevelledCylinderZdecrease
Cylinder hit, the neg.
double halfPhiSector() const
This method returns the halfPhiSector angle.
std::shared_ptr< RectangleBounds > outerBevelledPlaneBounds() const
This method returns the associated BevelledCylinderBounds of the outer BevelledCylinderSurfaces.
BevelledCylinderVolumeBoundaryAccessors m_boundaryAccessors
Accessors for Boundary surface access - static is not possible due to mismatched delete() / free () w...
@ StandardSectoralBevelledTube
VolumeBounds()
Default Constructor.