ECCE @ EIC Software
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
Acts::ConeSurface Class Reference

#include <acts/blob/master/Core/include/Acts/Surfaces/ConeSurface.hpp>

+ Inheritance diagram for Acts::ConeSurface:
+ Collaboration diagram for Acts::ConeSurface:

Public Member Functions

 ~ConeSurface () override=default
 Destructor - defaulted.
 
 ConeSurface ()=delete
 Default Constructor - deleted.
 
ConeSurfaceoperator= (const ConeSurface &other)
 
const Vector3D binningPosition (const GeometryContext &gctx, BinningValue bValue) const final
 
SurfaceType type () const override
 Return the surface type.
 
const RotationMatrix3D referenceFrame (const GeometryContext &gctx, const Vector3D &position, const Vector3D &momentum) const final
 
const Vector3D normal (const GeometryContext &gctx, const Vector2D &lposition) const final
 
const Vector3D normal (const GeometryContext &gctx, const Vector3D &position) const final
 
virtual const Vector3D rotSymmetryAxis (const GeometryContext &gctx) const
 
const ConeBoundsbounds () const final
 This method returns the ConeBounds by reference.
 
void localToGlobal (const GeometryContext &gctx, const Vector2D &lposition, const Vector3D &momentum, Vector3D &position) const final
 
bool globalToLocal (const GeometryContext &gctx, const Vector3D &position, const Vector3D &momentum, Vector2D &lposition) const final
 
Intersection intersectionEstimate (const GeometryContext &gctx, const Vector3D &position, const Vector3D &direction, const BoundaryCheck &bcheck=false) const final
 Straight line intersection schema - provides closest intersection and (signed) path length.
 
SurfaceIntersection intersect (const GeometryContext &gctx, const Vector3D &position, const Vector3D &direction, const BoundaryCheck &bcheck) const final
 
double pathCorrection (const GeometryContext &gctx, const Vector3D &position, const Vector3D &direction) const final
 
Polyhedron polyhedronRepresentation (const GeometryContext &gctx, size_t lseg) const override
 
std::string name () const override
 Return properly formatted class name for screen output.
 
- Public Member Functions inherited from Acts::Surface
virtual ~Surface ()
 
std::shared_ptr< SurfacegetSharedPtr ()
 
std::shared_ptr< const SurfacegetSharedPtr () const
 
Surfaceoperator= (const Surface &other)
 
virtual bool operator== (const Surface &other) const
 
virtual bool operator!= (const Surface &sf) const
 
virtual const Transform3Dtransform (const GeometryContext &gctx) const
 
virtual const Vector3D center (const GeometryContext &gctx) const
 
virtual const Vector3D normal (const GeometryContext &gctx) const
 
const DetectorElementBaseassociatedDetectorElement () const
 
const LayerassociatedLayer () const
 
void associateLayer (const Layer &lay)
 
const ISurfaceMaterialsurfaceMaterial () const
 
const std::shared_ptr< const
ISurfaceMaterial > & 
surfaceMaterialSharedPtr () const
 
void assignSurfaceMaterial (std::shared_ptr< const ISurfaceMaterial > material)
 
bool isOnSurface (const GeometryContext &gctx, const Vector3D &position, const Vector3D &momentum, const BoundaryCheck &bcheck=true) const
 
virtual bool insideBounds (const Vector2D &lposition, const BoundaryCheck &bcheck=true) const
 
virtual void initJacobianToGlobal (const GeometryContext &gctx, BoundToFreeMatrix &jacobian, const Vector3D &position, const Vector3D &direction, const BoundVector &pars) const
 
virtual const RotationMatrix3D initJacobianToLocal (const GeometryContext &gctx, FreeToBoundMatrix &jacobian, const Vector3D &position, const Vector3D &direction) const
 
virtual const BoundRowVector derivativeFactors (const GeometryContext &gctx, const Vector3D &position, const Vector3D &direction, const RotationMatrix3D &rft, const BoundToFreeMatrix &jacobian) const
 
virtual std::ostream & toStream (const GeometryContext &gctx, std::ostream &sl) const
 
- Public Member Functions inherited from Acts::GeometryObject
 GeometryObject ()=default
 Defaulted construrctor.
 
 GeometryObject (const GeometryObject &)=default
 Defaulted copy constructor.
 
 GeometryObject (const GeometryID &geoID)
 
GeometryObjectoperator= (const GeometryObject &geoID)
 
const GeometryIDgeoID () const
 
virtual double binningPositionValue (const GeometryContext &gctx, BinningValue bValue) const
 
void assignGeoID (const GeometryID &geoID)
 

Protected Member Functions

 ConeSurface (std::shared_ptr< const Transform3D > htrans, double alpha, bool symmetric=false)
 
 ConeSurface (std::shared_ptr< const Transform3D > htrans, double alpha, double zmin, double zmax, double halfPhi=M_PI)
 
 ConeSurface (std::shared_ptr< const Transform3D > htrans, const std::shared_ptr< const ConeBounds > &cbounds)
 
 ConeSurface (const ConeSurface &other)
 
 ConeSurface (const GeometryContext &gctx, const ConeSurface &other, const Transform3D &transf)
 
- Protected Member Functions inherited from Acts::Surface
 Surface (std::shared_ptr< const Transform3D > tform=nullptr)
 
 Surface (const Surface &other)
 
 Surface (const DetectorElementBase &detelement)
 
 Surface (const GeometryContext &gctx, const Surface &other, const Transform3D &shift)
 

Protected Attributes

std::shared_ptr< const ConeBoundsm_bounds
 bounds (shared)
 
- Protected Attributes inherited from Acts::Surface
std::shared_ptr< const
Transform3D
m_transform
 
const DetectorElementBasem_associatedDetElement {nullptr}
 Pointer to the a DetectorElementBase.
 
const Layerm_associatedLayer {nullptr}
 
const TrackingVolumem_associatedTrackingVolume {nullptr}
 
std::shared_ptr< const
ISurfaceMaterial
m_surfaceMaterial
 Possibility to attach a material descrption.
 
- Protected Attributes inherited from Acts::GeometryObject
GeometryID m_geoID
 

Private Member Functions

detail::RealQuadraticEquation intersectionSolver (const GeometryContext &gctx, const Vector3D &position, const Vector3D &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< TmakeShared (Args &&...args)
 

Detailed Description

Class for a conical surface in the Tracking geometry. It inherits from Surface.

The ConeSurface is special since no corresponding Track parameters exist since they're numerical instable at the tip of the cone. Propagations to a cone surface will be returned in curvilinear coordinates.

Definition at line 32 of file ConeSurface.hpp.

View newest version in sPHENIX GitHub at line 32 of file ConeSurface.hpp

Constructor & Destructor Documentation

Acts::ConeSurface::ConeSurface ( std::shared_ptr< const Transform3D htrans,
double  alpha,
bool  symmetric = false 
)
protected

Constructor form HepTransform and an opening angle

Parameters
htransis the transform to place to cone in a 3D frame
alphais the opening angle of the cone
symmetricindicates if the cones are built to +/1 z

Definition at line 34 of file ConeSurface.cpp.

View newest version in sPHENIX GitHub at line 34 of file ConeSurface.cpp

Acts::ConeSurface::ConeSurface ( std::shared_ptr< const Transform3D htrans,
double  alpha,
double  zmin,
double  zmax,
double  halfPhi = M_PI 
)
protected

Constructor form HepTransform and an opening angle

Parameters
htransis the transform that places the cone in the global frame
alphais the opening angle of the cone
zminis the z range over which the cone spans
zmaxis the z range over which the cone spans
halfPhiis the openen angle for cone ssectors

Definition at line 40 of file ConeSurface.cpp.

View newest version in sPHENIX GitHub at line 40 of file ConeSurface.cpp

Acts::ConeSurface::ConeSurface ( std::shared_ptr< const Transform3D htrans,
const std::shared_ptr< const ConeBounds > &  cbounds 
)
protected

Constructor from HepTransform and ConeBounds

Parameters
htransis the transform that places the cone in the global frame
cboundsis the boundary class, the bounds must exit

Definition at line 48 of file ConeSurface.cpp.

View newest version in sPHENIX GitHub at line 48 of file ConeSurface.cpp

References throw_assert.

Acts::ConeSurface::ConeSurface ( const ConeSurface other)
protected

Copy constructor

Parameters
otheris the source cone surface

Definition at line 24 of file ConeSurface.cpp.

View newest version in sPHENIX GitHub at line 24 of file ConeSurface.cpp

Acts::ConeSurface::ConeSurface ( const GeometryContext gctx,
const ConeSurface other,
const Transform3D transf 
)
protected

Copy constructor - with shift

Parameters
gctxThe current geometry context object, e.g. alignment
otheris the source cone surface
transfis the additional transfrom applied after copying

Definition at line 27 of file ConeSurface.cpp.

View newest version in sPHENIX GitHub at line 27 of file ConeSurface.cpp

Acts::ConeSurface::~ConeSurface ( )
overridedefault

Destructor - defaulted.

Acts::ConeSurface::ConeSurface ( )
delete

Default Constructor - deleted.

Member Function Documentation

const Acts::Vector3D Acts::ConeSurface::binningPosition ( const GeometryContext gctx,
Acts::BinningValue  bValue 
) const
finalvirtual

The binning position method - is overloaded for r-type binning

Parameters
gctxThe current geometry context object, e.g. alignment
bValuedefines the type of binning applied in the global frame
Returns
The return type is a vector for positioning in the global frame

Implements Acts::GeometryObject.

Definition at line 54 of file ConeSurface.cpp.

View newest version in sPHENIX GitHub at line 54 of file ConeSurface.cpp

References Acts::binR, and Acts::binRPhi.

const Acts::ConeBounds & Acts::ConeSurface::bounds ( ) const
finalvirtual

This method returns the ConeBounds by reference.

Implements Acts::Surface.

Definition at line 184 of file ConeSurface.cpp.

View newest version in sPHENIX GitHub at line 184 of file ConeSurface.cpp

bool Acts::ConeSurface::globalToLocal ( const GeometryContext gctx,
const Vector3D position,
const Vector3D momentum,
Vector2D lposition 
) const
finalvirtual

Global to local transformation

Parameters
gctxThe current geometry context object, e.g. alignment
positionis the global position to be transformed
momentumis the global momentum (ignored in this operation)
lpositionis the local position to be filled
Returns
is a boolean indicating if the transformation succeeded

Implements Acts::Surface.

Definition at line 120 of file ConeSurface.cpp.

View newest version in sPHENIX GitHub at line 120 of file ConeSurface.cpp

References kdfinder::abs(), Acts::VectorHelpers::perp(), position, r, and Acts::Test::transform.

+ Here is the call graph for this function:

SurfaceIntersection ConeSurface::intersect ( const GeometryContext gctx,
const Vector3D position,
const Vector3D direction,
const BoundaryCheck bcheck 
) const
inlinefinalvirtual

Straight line intersection schema from position/direction

Parameters
gctxThe current geometry context object, e.g. alignment
positionThe position to start from
directionThe direction at start
bcheckthe Boundary Check

If possible returns both solutions for the cylinder

Returns
SurfaceIntersection object (contains intersection & surface)

Reimplemented from Acts::Surface.

Definition at line 65 of file ConeSurface.ipp.

View newest version in sPHENIX GitHub at line 65 of file ConeSurface.ipp

References Acts::ObjectIntersection< object_t, representation_t >::alternative, Acts::ObjectIntersection< object_t, representation_t >::intersection, Acts::s_onSurfaceTolerance, second, and Acts::Test::transform.

Intersection ConeSurface::intersectionEstimate ( const GeometryContext gctx,
const Vector3D position,
const Vector3D direction,
const BoundaryCheck bcheck = false 
) const
inlinefinalvirtual

Straight line intersection schema - provides closest intersection and (signed) path length.

Parameters
gctxThe current geometry context object, e.g. alignment
positionThe start position for the intersection
direcitonThe start direction for the intersection (expected normalized)
bcheckThe boundary check to be used in this directive
Returns
is the Intersection object

Implements Acts::Surface.

Definition at line 36 of file ConeSurface.ipp.

View newest version in sPHENIX GitHub at line 36 of file ConeSurface.ipp

References Acts::s_onSurfaceTolerance, and Acts::Test::transform.

detail::RealQuadraticEquation ConeSurface::intersectionSolver ( const GeometryContext gctx,
const Vector3D position,
const Vector3D direction 
) const
inlineprivate

Implementation of the intersection solver

mathematical motivation:

The calculation will be done in the 3-dim frame of the cone, i.e. the symmetry axis of the cone is the z-axis, x- and y-axis are perpendicular to the the z-axis. In this frame the cone is centered around the origin. Therefore the two points describing the line have to be first recalculated into the new frame. Suppose, this is done, the points of intersection can be obtained as follows:

The cone is described by the implicit equation $x^2 + y^2 = z^2 \tan \alpha$ where $\alpha$ is opening half-angle of the cone the and the line by the parameter equation (with $t$ the parameter and $x_1$ and $x_2$ are points on the line) $(x,y,z) = \vec x_1 + (\vec x_2 - \vec x_2) t $. The intersection is the given to the value of $t$ where the $(x,y,z)$ coordinates of the line satisfy the implicit equation of the cone. Inserting the expression for the points on the line into the equation of the cone and rearranging to the form of a gives (letting $ \vec x_d = \frac{\vec x_2 - \vec x_1}{|\vec x_2 - \vec x_1|} $): $t^2 (x_d^2 + y_d^2 - z_d^2 \tan^2 \alpha) + 2 t (x_1 x_d + y_1 y_d - z_1 z_d \tan^2 \alpha) + (x_1^2 + y_1^2 - z_1^2 \tan^2 \alpha) = 0 $ Solving the above for $t$ and putting the values into the equation of the line gives the points of intersection. $t$ is also the length of the path, since we normalized $x_d$ to be unit length.

Returns
the quadratic equation

Definition at line 13 of file ConeSurface.ipp.

View newest version in sPHENIX GitHub at line 13 of file ConeSurface.ipp

References A(), B(), C(), e, position, and Acts::Test::transform.

+ Here is the call graph for this function:

void Acts::ConeSurface::localToGlobal ( const GeometryContext gctx,
const Vector2D lposition,
const Vector3D momentum,
Vector3D position 
) const
finalvirtual

Local to global transformation

Parameters
gctxThe current geometry context object, e.g. alignment
lpositionis the local position to be transformed
momentumis the global momentum (ignored in this operation)
positionis the global position which is filled

Implements Acts::Surface.

Definition at line 106 of file ConeSurface.cpp.

View newest version in sPHENIX GitHub at line 106 of file ConeSurface.cpp

References Acts::eLOC_RPHI, Acts::eLOC_Z, phi, r, and Acts::Test::transform.

std::string Acts::ConeSurface::name ( ) const
overridevirtual

Return properly formatted class name for screen output.

Implements Acts::Surface.

Definition at line 154 of file ConeSurface.cpp.

View newest version in sPHENIX GitHub at line 154 of file ConeSurface.cpp

const Acts::Vector3D Acts::ConeSurface::normal ( const GeometryContext gctx,
const Vector2D lposition 
) const
finalvirtual

Return method for surface normal information

Parameters
gctxThe current geometry context object, e.g. alignment
lpositionis the local position at normal vector request
Returns
Vector3D normal vector in global frame

Implements Acts::Surface.

Definition at line 158 of file ConeSurface.cpp.

View newest version in sPHENIX GitHub at line 158 of file ConeSurface.cpp

References Acts::ConeBounds::eAlpha, Acts::eLOC_RPHI, Acts::eLOC_Z, phi, and Acts::Test::transform.

const Acts::Vector3D Acts::ConeSurface::normal ( const GeometryContext gctx,
const Vector3D position 
) const
finalvirtual

Return method for surface normal information

Parameters
gctxThe current geometry context object, e.g. alignment
positionis the global position as normal vector base
Returns
Vector3D normal vector in global frame

Reimplemented from Acts::Surface.

Definition at line 172 of file ConeSurface.cpp.

View newest version in sPHENIX GitHub at line 172 of file ConeSurface.cpp

References position, and Acts::Test::transform.

Acts::ConeSurface & Acts::ConeSurface::operator= ( const ConeSurface other)

Assignment operator

Parameters
otheris the source surface for the assignment

Definition at line 72 of file ConeSurface.cpp.

View newest version in sPHENIX GitHub at line 72 of file ConeSurface.cpp

References m_bounds, and Acts::Surface::operator=().

+ Here is the call graph for this function:

double Acts::ConeSurface::pathCorrection ( const GeometryContext gctx,
const Vector3D position,
const Vector3D direction 
) const
finalvirtual

The pathCorrection for derived classes with thickness

Parameters
gctxThe current geometry context object, e.g. alignment
positionis the global potion at the correction point
directionis the momentum direction at the correction point
Returns
is the path correction due to incident angle

Implements Acts::Surface.

Definition at line 135 of file ConeSurface.cpp.

View newest version in sPHENIX GitHub at line 135 of file ConeSurface.cpp

References kdfinder::abs(), Acts::ConeBounds::eAlpha, Acts::VectorHelpers::phi(), phi, position, and Acts::Test::transform.

+ Here is the call graph for this function:

Acts::Polyhedron Acts::ConeSurface::polyhedronRepresentation ( const GeometryContext gctx,
size_t  lseg 
) const
overridevirtual

Return a Polyhedron for the surfaces

Parameters
gctxThe current geometry context object, e.g. alignment
lsegNumber of segments along curved lines, it represents the full 2*M_PI coverange, if lseg is set to 1 only the extrema are given
Note
that a surface transform can invalidate the extrema in the transformed space
Returns
A list of vertices and a face/facett description of it

Implements Acts::Surface.

Definition at line 189 of file ConeSurface.cpp.

View newest version in sPHENIX GitHub at line 189 of file ConeSurface.cpp

References kdfinder::abs(), Acts::detail::VerticesHelper::createSegment(), Acts::detail::FacesHelper::cylindricalFaceMesh(), Acts::ConeBounds::eAveragePhi, Acts::ConeBounds::eHalfPhiSector, Acts::ConeBounds::eMaxZ, Acts::ConeBounds::eMinZ, M_PI, maxZ, one, Acts::detail::VerticesHelper::phiSegments(), r, Acts::s_onSurfaceTolerance, boost::swap(), three, Acts::Test::transform, two, and z.

+ Here is the call graph for this function:

const Acts::RotationMatrix3D Acts::ConeSurface::referenceFrame ( const GeometryContext gctx,
const Vector3D position,
const Vector3D momentum 
) const
finalvirtual

Return the measurement frame - this is needed for alignment, in particular for StraightLine and Perigee Surface

  • the default implementation is the the RotationMatrix3D of the transform
Parameters
gctxThe current geometry context object, e.g. alignment
positionis the global position where the measurement frame is constructed
momentumis the momentum used for the measurement frame construction
Returns
matrix that indicates the measurement frame

<

Reimplemented from Acts::Surface.

Definition at line 85 of file ConeSurface.cpp.

View newest version in sPHENIX GitHub at line 85 of file ConeSurface.cpp

const Acts::Vector3D Acts::ConeSurface::rotSymmetryAxis ( const GeometryContext gctx) const
virtual
Parameters
gctxThe current geometry context object, e.g. alignment

Definition at line 80 of file ConeSurface.cpp.

View newest version in sPHENIX GitHub at line 80 of file ConeSurface.cpp

References Acts::Test::transform.

Acts::Surface::SurfaceType Acts::ConeSurface::type ( ) const
overridevirtual

Return the surface type.

Implements Acts::Surface.

Definition at line 68 of file ConeSurface.cpp.

View newest version in sPHENIX GitHub at line 68 of file ConeSurface.cpp

References Acts::Surface::Cone.

Member Data Documentation

std::shared_ptr<const ConeBounds> Acts::ConeSurface::m_bounds
protected

bounds (shared)

Definition at line 216 of file ConeSurface.hpp.

View newest version in sPHENIX GitHub at line 216 of file ConeSurface.hpp

Referenced by operator=().

friend Acts::ConeSurface::Surface
private

Definition at line 33 of file ConeSurface.hpp.

View newest version in sPHENIX GitHub at line 33 of file ConeSurface.hpp


The documentation for this class was generated from the following files: