ECCE @ EIC Software
Reference for
ECCE @ EIC
simulation and reconstruction software on GitHub
|
#include <acts/blob/master/Core/include/Acts/Surfaces/ConeSurface.hpp>
Public Member Functions | |
~ConeSurface () override=default | |
Destructor - defaulted. | |
ConeSurface ()=delete | |
Default Constructor - deleted. | |
ConeSurface & | operator= (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 ConeBounds & | bounds () 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< Surface > | getSharedPtr () |
std::shared_ptr< const Surface > | getSharedPtr () const |
Surface & | operator= (const Surface &other) |
virtual bool | operator== (const Surface &other) const |
virtual bool | operator!= (const Surface &sf) const |
virtual const Transform3D & | transform (const GeometryContext &gctx) const |
virtual const Vector3D | center (const GeometryContext &gctx) const |
virtual const Vector3D | normal (const GeometryContext &gctx) const |
const DetectorElementBase * | associatedDetectorElement () const |
const Layer * | associatedLayer () const |
void | associateLayer (const Layer &lay) |
const ISurfaceMaterial * | surfaceMaterial () 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) | |
GeometryObject & | operator= (const GeometryObject &geoID) |
const GeometryID & | geoID () 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 ConeBounds > | m_bounds |
bounds (shared) | |
Protected Attributes inherited from Acts::Surface | |
std::shared_ptr< const Transform3D > | m_transform |
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 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< T > | makeShared (Args &&...args) |
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
|
protected |
Constructor form HepTransform and an opening angle
htrans | is the transform to place to cone in a 3D frame |
alpha | is the opening angle of the cone |
symmetric | indicates 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
|
protected |
Constructor form HepTransform and an opening angle
htrans | is the transform that places the cone in the global frame |
alpha | is the opening angle of the cone |
zmin | is the z range over which the cone spans |
zmax | is the z range over which the cone spans |
halfPhi | is 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
|
protected |
Constructor from HepTransform and ConeBounds
htrans | is the transform that places the cone in the global frame |
cbounds | is 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.
|
protected |
Copy constructor
other | is 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
|
protected |
Copy constructor - with shift
gctx | The current geometry context object, e.g. alignment |
other | is the source cone surface |
transf | is 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
|
overridedefault |
Destructor - defaulted.
|
delete |
Default Constructor - deleted.
|
finalvirtual |
The binning position method - is overloaded for r-type binning
gctx | The current geometry context object, e.g. alignment |
bValue | defines the type of binning applied 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.
|
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
|
finalvirtual |
Global to local transformation
gctx | The current geometry context object, e.g. alignment |
position | is the global position to be transformed |
momentum | is the global momentum (ignored in this operation) |
lposition | is the local position to be filled |
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.
|
inlinefinalvirtual |
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 |
If possible returns both solutions for the cylinder
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.
|
inlinefinalvirtual |
Straight line intersection schema - provides closest intersection and (signed) path length.
gctx | The current geometry context object, e.g. alignment |
position | The start position for the intersection |
direciton | The start direction for the intersection (expected normalized) |
bcheck | The boundary check to be used in this directive |
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.
|
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 where is opening half-angle of the cone the and the line by the parameter equation (with the parameter and and are points on the line) . The intersection is the given to the value of where the 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 ): Solving the above for and putting the values into the equation of the line gives the points of intersection. is also the length of the path, since we normalized to be unit length.
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.
|
finalvirtual |
Local to global transformation
gctx | The current geometry context object, e.g. alignment |
lposition | is the local position to be transformed |
momentum | is the global momentum (ignored in this operation) |
position | is 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.
|
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
|
finalvirtual |
Return method for surface normal information
gctx | The current geometry context object, e.g. alignment |
lposition | is the local position at normal vector request |
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.
|
finalvirtual |
Return method for surface normal information
gctx | The current geometry context object, e.g. alignment |
position | is the global position as normal vector base |
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
other | is 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=().
|
finalvirtual |
The pathCorrection for derived classes with thickness
gctx | The current geometry context object, e.g. alignment |
position | is the global potion at the correction point |
direction | is the momentum direction at the correction point |
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.
|
overridevirtual |
Return a Polyhedron for the surfaces
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 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.
|
finalvirtual |
Return the measurement frame - this is needed for alignment, in particular for StraightLine and Perigee Surface
gctx | The current geometry context object, e.g. alignment |
position | is the global position where the measurement frame is constructed |
momentum | is the momentum used for the measurement frame construction |
<
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
|
virtual |
gctx | The 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.
|
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.
|
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=().
|
private |
Definition at line 33 of file ConeSurface.hpp.
View newest version in sPHENIX GitHub at line 33 of file ConeSurface.hpp