Analysis Software
Documentation for sPHENIX simulation software
|
#include <acts/blob/sPHENIX/Core/include/Acts/Surfaces/CylinderSurface.hpp>
Protected Member Functions | |
CylinderSurface (const Transform3 &transform, double radius, double halfz, double halfphi=M_PI, double avphi=0., double bevelMinZ=0., double bevelMaxZ=0.) | |
CylinderSurface (const Transform3 &transform, std::shared_ptr< const CylinderBounds > cbounds) | |
CylinderSurface (std::shared_ptr< const CylinderBounds > cbounds, const DetectorElementBase &detelement) | |
CylinderSurface (const CylinderSurface &other) | |
CylinderSurface (const GeometryContext &gctx, const CylinderSurface &other, const Transform3 &shift) | |
Protected Member Functions inherited from Acts::Surface | |
Surface (const Transform3 &transform=Transform3::Identity()) | |
Surface (const Surface &other) | |
Surface (const DetectorElementBase &detelement) | |
Surface (const GeometryContext &gctx, const Surface &other, const Transform3 &shift) | |
Protected Attributes | |
std::shared_ptr< const CylinderBounds > | m_bounds |
bounds (shared) | |
Protected Attributes inherited from Acts::Surface | |
Transform3 | m_transform = Transform3::Identity() |
const DetectorElementBase * | m_associatedDetElement {nullptr} |
Pointer to the a DetectorElementBase. | |
const Layer * | m_associatedLayer {nullptr} |
const TrackingVolume * | m_associatedTrackingVolume {nullptr} |
std::shared_ptr< const ISurfaceMaterial > | m_surfaceMaterial |
Possibility to attach a material description. | |
Protected Attributes inherited from Acts::GeometryObject | |
GeometryIdentifier | m_geometryId |
Private Member Functions | |
detail::RealQuadraticEquation | intersectionSolver (const Transform3 &transform, const Vector3 &position, const Vector3 &direction) const |
Private Attributes | |
friend | Surface |
Additional Inherited Members | |
Public Types inherited from Acts::Surface | |
enum | SurfaceType { Cone = 0, Cylinder = 1, Disc = 2, Perigee = 3, Plane = 4, Straw = 5, Curvilinear = 6, Other = 7 } |
Static Public Member Functions inherited from Acts::Surface | |
template<class T , typename... Args> | |
static std::shared_ptr< T > | makeShared (Args &&...args) |
Static Public Attributes inherited from Acts::Surface | |
static std::array< std::string, SurfaceType::Other > | s_surfaceTypeNames |
Helper strings for screen output. | |
Class for a CylinderSurface in the TrackingGeometry. It inherits from Surface.
The cylinder surface has a special role in the TrackingGeometry, since it builds the surfaces of all TrackingVolumes at container level for a cylindrical tracking geometry.
Definition at line 43 of file CylinderSurface.hpp.
View newest version in sPHENIX GitHub at line 43 of file CylinderSurface.hpp
|
protected |
Constructor from Transform3 and CylinderBounds
transform | The transform to position the surface |
radius | The radius of the cylinder |
halfz | The half length in z |
halfphi | The half opening angle |
avphi | The phi value from which the opening angle spans (both sides) |
bevelMinZ | (optional) The bevel on the negative z side |
bevelMaxZ | (optional) The bevel on the positive z sid The bevel on the positive z side |
Definition at line 40 of file CylinderSurface.cpp.
View newest version in sPHENIX GitHub at line 40 of file CylinderSurface.cpp
|
protected |
Constructor from Transform3 and CylinderBounds arguments
transform | The transform to position the surface |
cbounds | is a shared pointer to a cylindeer bounds object, it must exist (assert test) |
Definition at line 56 of file CylinderSurface.cpp.
View newest version in sPHENIX GitHub at line 56 of file CylinderSurface.cpp
References m_bounds, and throw_assert.
|
protected |
Constructor from DetectorElementBase: Element proxy
cbounds | are the provided cylinder bounds (shared) |
detelement | is the linked detector element to this surface |
surfaces representing a detector element must have bounds
Definition at line 48 of file CylinderSurface.cpp.
View newest version in sPHENIX GitHub at line 48 of file CylinderSurface.cpp
References m_bounds, and throw_assert.
|
protected |
Copy constructor
other | is the source cylinder for the copy |
Definition at line 32 of file CylinderSurface.cpp.
View newest version in sPHENIX GitHub at line 32 of file CylinderSurface.cpp
|
protected |
Copy constructor - with shift
gctx | The current geometry context object, e.g. alignment |
other | is the source cone surface |
shift | is the additional transform applied after copying |
Definition at line 35 of file CylinderSurface.cpp.
View newest version in sPHENIX GitHub at line 35 of file CylinderSurface.cpp
|
overridedefault |
|
delete |
|
finalvirtual |
Calculate the derivative of path length at the geometry constraint or point-of-closest-approach w.r.t. alignment parameters of the surface (i.e. local frame origin in global 3D Cartesian coordinates and its rotation represented with extrinsic Euler angles)
gctx | The current geometry context object, e.g. alignment |
parameters | is the free parameters |
Reimplemented from Acts::Surface.
Definition at line 287 of file CylinderSurface.cpp.
View newest version in sPHENIX GitHub at line 287 of file CylinderSurface.cpp
References dy, dz, Acts::eAlignmentCenter0, Acts::eAlignmentRotation0, Acts::eFreeDir0, Acts::eFreePos0, norm, position, Acts::detail::rotationToLocalAxesDerivative(), and Acts::Test::transform.
|
finalvirtual |
The binning position method - is overloaded for r-type binning
gctx | The current geometry context object, e.g. alignment |
bValue | is the type of global binning to be done |
Implements Acts::GeometryObject.
Definition at line 72 of file CylinderSurface.cpp.
View newest version in sPHENIX GitHub at line 72 of file CylinderSurface.cpp
References Acts::binR, Acts::binRPhi, bounds, Acts::CylinderBounds::eAveragePhi, Acts::CylinderBounds::eR, ActsTests::PropagationDatasets::phi, and Acts::IntegrationTest::R.
|
finalvirtual |
This method returns the CylinderBounds by reference.
Implements Acts::Surface.
Definition at line 171 of file CylinderSurface.cpp.
View newest version in sPHENIX GitHub at line 171 of file CylinderSurface.cpp
Referenced by Acts::CylinderVolumeBuilder::analyzeContent().
|
finalvirtual |
Global to local transformation
gctx | The current geometry context object, e.g. alignment |
position | is the global position to be transformed |
direction | is the global momentum direction (ignored in this operation) |
tolerance | optional tolerance within which a point is considered valid on surface |
Implements Acts::Surface.
Definition at line 119 of file CylinderSurface.cpp.
View newest version in sPHENIX GitHub at line 119 of file CylinderSurface.cpp
References bounds, Acts::CylinderBounds::eR, Acts::VectorHelpers::perp(), ActsTests::PropagationDatasets::phi, Acts::s_onSurfaceTolerance, Acts::Test::tolerance, and Acts::Test::transform.
|
finalvirtual |
Straight line intersection schema from position/direction
gctx | The current geometry context object, e.g. alignment |
position | The position to start from |
direction | The direction at start |
bcheck | the Boundary Check |
tolerance | the tolerance used for the intersection |
If possible returns both solutions for the cylinder
Implements Acts::Surface.
Definition at line 219 of file CylinderSurface.cpp.
View newest version in sPHENIX GitHub at line 219 of file CylinderSurface.cpp
References Acts::Test::boundaryCheck, bounds, Acts::eBoundLoc1, Acts::CylinderBounds::eHalfLengthZ, Acts::Intersection< 3 >::invalid(), Acts::Intersection< DIM >::pathLength(), utils::status, Acts::BoundaryCheck::tolerance(), Acts::Test::transform, and Acts::BoundaryCheck::type().
|
private |
Implementation of the intersection solver
mathematical motivation:
The cylinder is given by :
Any point P on infinite cylinder if : ((P - C) x DZ)^2 = r^2 * DZ^2 We know that DZ is a unit vector: DZ^2 == 1 When expanded with the line equation, this is : ((L0 - C) x DZ + t * (DL x DZ))^2 = r^2 * DZ^2 which is a quadratic equation in the form (X + t * Y)^2 = d, where : X = (L0 - C) x DZ Y = DL x DZ d = r^2 * (DZ)^2 Now, expand the equation : t^2 * (Y . Y) + t * (2 * (X . Y)) + (X . X) - d = 0 => second order equation in the form : a*t^2 + b*t + c = 0 where a = (Y . Y) b = 2 * (X . Y) c = (X . X) - d finally solve the second order equation : a*t^2 + b*t + c = 0 reinsertion into the line equation.
Definition at line 197 of file CylinderSurface.cpp.
View newest version in sPHENIX GitHub at line 197 of file CylinderSurface.cpp
References KFPMath::a, KFPMath::b, bounds, Acts::PhysicalConstants::c, Acts::CylinderBounds::eR, and Acts::IntegrationTest::R.
|
finalvirtual |
Calculate the derivative of bound track parameters local position w.r.t. position in local 3D Cartesian coordinates
gctx | The current geometry context object, e.g. alignment |
position | The position of the parameters in global |
Implements Acts::Surface.
Definition at line 337 of file CylinderSurface.cpp.
View newest version in sPHENIX GitHub at line 337 of file CylinderSurface.cpp
References bounds, Acts::CylinderBounds::eR, Acts::VectorHelpers::perp(), ActsTests::PropagationDatasets::phi, Acts::VectorHelpers::phi(), position, Acts::IntegrationTest::R, sTransform, and Acts::Test::transform.
|
finalvirtual |
Local to global transformation
gctx | The current geometry context object, e.g. alignment |
lposition | is the local position to be transformed |
direction | is the global momentum direction (ignored in this operation) |
Implements Acts::Surface.
Definition at line 109 of file CylinderSurface.cpp.
View newest version in sPHENIX GitHub at line 109 of file CylinderSurface.cpp
References bounds, Acts::eBoundLoc0, Acts::eBoundLoc1, Acts::CylinderBounds::eR, ActsTests::PropagationDatasets::phi, position, physmon_track_finding_ttbar::r, and Acts::Test::transform.
|
overridevirtual |
Return method for properly formatted output string.
Implements Acts::Surface.
Definition at line 141 of file CylinderSurface.cpp.
View newest version in sPHENIX GitHub at line 141 of file CylinderSurface.cpp
|
finalvirtual |
Return method for surface normal information
gctx | The current geometry context object, e.g. alignment |
lposition | is the local position for which the normal vector is requested |
Implements Acts::Surface.
Definition at line 145 of file CylinderSurface.cpp.
View newest version in sPHENIX GitHub at line 145 of file CylinderSurface.cpp
References Acts::eBoundLoc0, Acts::CylinderBounds::eR, ActsTests::PropagationDatasets::phi, and Acts::Test::transform.
|
finalvirtual |
Return method for surface normal information
gctx | The current geometry context object, e.g. alignment |
position | is the global position for which the normal vector is requested |
Reimplemented from Acts::Surface.
Definition at line 152 of file CylinderSurface.cpp.
View newest version in sPHENIX GitHub at line 152 of file CylinderSurface.cpp
References position, and Acts::Test::transform.
Acts::CylinderSurface & Acts::CylinderSurface::operator= | ( | const CylinderSurface & | other | ) |
Assignment operator
other | is the source cylinder for the copy |
Definition at line 62 of file CylinderSurface.cpp.
View newest version in sPHENIX GitHub at line 62 of file CylinderSurface.cpp
References m_bounds, and Acts::Surface::operator=().
|
finalvirtual |
Path correction due to incident of the track
gctx | The current geometry context object, e.g. alignment |
position | is the global position as a starting point |
direction | is the global momentum direction at the starting point |
Implements Acts::Surface.
Definition at line 163 of file CylinderSurface.cpp.
View newest version in sPHENIX GitHub at line 163 of file CylinderSurface.cpp
|
overridevirtual |
Return a Polyhedron for a cylinder
gctx | The current geometry context object, e.g. alignment |
lseg | Number of segments along curved lines, it represents the full 2*M_PI coverange, if lseg is set to 1 only the extrema are given |
Implements Acts::Surface.
Definition at line 175 of file CylinderSurface.cpp.
View newest version in sPHENIX GitHub at line 175 of file CylinderSurface.cpp
References bounds, Acts::detail::FacesHelper::cylindricalFaceMesh(), Acts::Test::transform, and ActsExamples::HepMC3Event::vertices().
|
finalvirtual |
Return the measurement frame - this is needed for alignment, in particular The measurement frame of a cylinder is the tangential plane at a given position
gctx | The current geometry context object, e.g. alignment |
position | is the position where the measurement frame is defined |
direction | is the momentum direction vector (ignored) |
Reimplemented from Acts::Surface.
Definition at line 86 of file CylinderSurface.cpp.
View newest version in sPHENIX GitHub at line 86 of file CylinderSurface.cpp
|
virtual |
Return method for the rotational symmetry axis
gctx | The current geometry context object, e.g. alignment |
Definition at line 191 of file CylinderSurface.cpp.
View newest version in sPHENIX GitHub at line 191 of file CylinderSurface.cpp
References Acts::Test::transform.
|
overridevirtual |
Return the surface type.
Implements Acts::Surface.
Definition at line 105 of file CylinderSurface.cpp.
View newest version in sPHENIX GitHub at line 105 of file CylinderSurface.cpp
References Acts::Surface::Cylinder.
|
protected |
bounds (shared)
Definition at line 248 of file CylinderSurface.hpp.
View newest version in sPHENIX GitHub at line 248 of file CylinderSurface.hpp
Referenced by Acts::CylinderLayer::CylinderLayer(), CylinderSurface(), and operator=().
|
private |
Definition at line 45 of file CylinderSurface.hpp.
View newest version in sPHENIX GitHub at line 45 of file CylinderSurface.hpp