|
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()
◆ boundarySurfaceAccessor()
Provide accessor for BoundarySurfaces.
Implements Trk::VolumeBounds.
Definition at line 250 of file BevelledCylinderVolumeBounds.cxx.
258 double posZ = gp.z();
259 double posR = gp.perp();
267 bool isOnFace =
false;
268 bool intersectionIndicator = (
deltaR > 0.);
269 bool choiceIndicator =
false;
284 (posR < m_innerRadius && deltaR > 0.)) {
301 if (intersectionIndicator) {
305 double zOfIntersect = intersectRmax.yOfX;
307 if (std::abs(zOfIntersect) <=
m_halfZ)
308 return {(choiceIndicator || zOfIntersect > 0.)
314 return {(choiceIndicator || zOfIntersect > 0.)
323 double zOfIntersect = intersectRmin.yOfX;
325 if (std::abs(zOfIntersect) <=
m_halfZ)
326 return {(choiceIndicator || zOfIntersect > 0.)
332 return {(choiceIndicator || zOfIntersect > 0.)
361 double zOfIntersect = intersectRmax.yOfX;
363 if (std::abs(zOfIntersect) <=
m_halfZ && zOfIntersect > 0.)
366 if (std::abs(zOfIntersect) <=
m_halfZ && zOfIntersect < 0.)
369 if (std::abs(zOfIntersect) >
m_halfZ && zOfIntersect < 0.)
372 if (std::abs(zOfIntersect) >
m_halfZ && zOfIntersect > 0.)
380 double zOfIntersect = intersectRmin.yOfX;
382 if (std::abs(zOfIntersect) <=
m_halfZ && zOfIntersect > 0.)
385 if (std::abs(zOfIntersect) <=
m_halfZ && zOfIntersect < 0.)
388 if (std::abs(zOfIntersect) >
m_halfZ && zOfIntersect > 0.)
398 double posZ = gp.z();
399 double posR = gp.perp();
410 double zOfIntersect = intersectR.yOfX;
412 if (std::abs(zOfIntersect) <=
m_halfZ && zOfIntersect > 0.)
415 if (std::abs(zOfIntersect) <=
m_halfZ && zOfIntersect < 0.)
418 if (std::abs(zOfIntersect) >
m_halfZ && zOfIntersect > 0.)
◆ clone()
◆ createBoundarySurfaceAccessors()
void Trk::BevelledCylinderVolumeBounds::createBoundarySurfaceAccessors |
( |
| ) |
|
|
private |
Private method to construct the accessors.
◆ decomposeToSurfaces()
◆ deltaRadius()
double Trk::BevelledCylinderVolumeBounds::deltaRadius |
( |
| ) |
const |
|
inline |
◆ discBounds()
◆ dump() [1/2]
MsgStream & Trk::BevelledCylinderVolumeBounds::dump |
( |
MsgStream & |
sl | ) |
const |
|
overridevirtual |
Output Method for MsgStream.
Implements Trk::VolumeBounds.
Definition at line 562 of file BevelledCylinderVolumeBounds.cxx.
564 std::stringstream sl_temp;
565 sl_temp << std::setiosflags(std::ios::fixed);
566 sl_temp << std::setprecision(7);
567 sl_temp <<
"Trk::BevelledCylinderVolumeBounds: (innerR, outerR, "
568 "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 577 of file BevelledCylinderVolumeBounds.cxx.
579 std::stringstream sl_temp;
580 sl_temp << std::setiosflags(std::ios::fixed);
581 sl_temp << std::setprecision(7);
582 sl_temp <<
"Trk::BevelledCylinderVolumeBounds: (innerR, outerR, "
583 "halfPhiSector, halflengthInZ, thetaMinus, thetaPlus) = ";
◆ halflengthZ()
double Trk::BevelledCylinderVolumeBounds::halflengthZ |
( |
| ) |
const |
|
inline |
◆ halfPhiSector()
double Trk::BevelledCylinderVolumeBounds::halfPhiSector |
( |
| ) |
const |
|
inline |
◆ innerBevelledCylinderBounds()
◆ innerBevelledPlaneBounds()
◆ innerCylinderBounds()
◆ 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()
◆ outerBevelledPlaneBounds()
◆ outerCylinderBounds()
◆ outerRadius()
double Trk::BevelledCylinderVolumeBounds::outerRadius |
( |
| ) |
const |
|
inline |
◆ sectorPlaneBounds()
◆ sectorTrdBounds()
◆ subtractedVolume()
Trk::Volume * Trk::BevelledCylinderVolumeBounds::subtractedVolume |
( |
| ) |
const |
|
private |
◆ thetaMinus()
double Trk::BevelledCylinderVolumeBounds::thetaMinus |
( |
| ) |
const |
|
inline |
◆ thetaPlus()
double Trk::BevelledCylinderVolumeBounds::thetaPlus |
( |
| ) |
const |
|
inline |
◆ topEllipseBounds()
◆ 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:
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
DiscBounds * discBounds() const
This method returns the associated DiscBounds for the bottom/top DiscSurface.
BevelledCylinderVolumeBounds()
Default Constructor.
@ BevelledTubeZincreaseRincrease
Accessor type [ 1,2,0,3 ].
@ BevelledTubeOutsideRminRdecrease
Accessor type [ 3,1,0,2] - inverse case.
@ BevelledTubeOutsideRmaxRincrease
Accessor type [ 2,1,0,3 ] - inverse case.
@ BevelledTubeOutsideZminZdecrease
Accessor type [ 0,3,2,1 ] - inverse case.
@ BevelledTubeZdecreaseRincrease
Accessor type [ 0,2,1,3 ].
@ StandardSectoralBevelledCylinder
EllipseBounds * topEllipseBounds() const
This method returns the associated EllipseBounds for the bottom/top EllipseSurface.
@ BevelledTubeRdecreaseZdecrease
Accessor type [ 3,0,1,2 ].
EllipseBounds * bottomEllipseBounds() const
This method returns the associated EllipseBounds for the bottom/top EllipseSurface.
TrapezoidBounds * sectorTrdBounds() const
This method returns the associated PlaneBounds limiting a sectoral BevelledCylinderVolume.
RectangleBounds * outerBevelledPlaneBounds() const
This method returns the associated BevelledCylinderBounds of the outer BevelledCylinderSurfaces.
Eigen::Affine3d Transform3D
Amg::Vector3D transform(Amg::Vector3D &v, Amg::Transform3D &tr)
Transform a point from a Trasformation3D.
CylinderBounds * outerBevelledCylinderBounds() const
This method returns the associated BevelledCylinderBounds of the outer BevelledCylinderSurfaces.
@ BevelledTubeRincreaseZdecrease
Accessor type [ 2,0,1,3 ].
CylinderBounds * outerCylinderBounds() const
This method returns the associated CylinderBounds of the outer CylinderSurfaces.
@ 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.
@ BevelledCylinderZincrease
Cylinder hit, then pos.
RectangleBounds * sectorPlaneBounds() const
Eigen::Matrix< double, 3, 1 > Vector3D
double innerRadius() const
This method returns the inner radius.
CxxUtils::CachedUniquePtr< Trk::Volume > m_subtractedVolume
CylinderBounds * innerCylinderBounds() const
This method returns the associated CylinderBounds of the inner CylinderSurfaces.
Eigen::Matrix< double, 3, 3 > RotationMatrix3D
Eigen::Translation< double, 3 > Translation3D
@ BevelledTubeOutsideZmaxZincrease
Accessor type [ 1,3,2,0 ] - inverse case.
RectangleBounds * innerBevelledPlaneBounds() const
This method returns the associated plane surface bounds of the inner bevelled surface.
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.
CylinderBounds * innerBevelledCylinderBounds() const
This method returns the associated BevelledCylinderBounds of the inner BevelledCylinderSurfaces.
BevelledCylinderVolumeBoundaryAccessors m_boundaryAccessors
Accessors for Boundary surface access - static is not possible due to mismatched delete() / free () w...
@ StandardSectoralBevelledTube
VolumeBounds()
Default Constructor.