![]() |
EIC Software
Reference for
EIC
simulation and reconstruction software on GitHub
|
#include <acts/blob/sPHENIX/Core/include/Acts/Surfaces/ConeSurface.hpp>
Inheritance diagram for Acts::ConeSurface:
Collaboration diagram for Acts::ConeSurface:Public Member Functions | |
| ~ConeSurface () override=default | |
| ConeSurface ()=delete | |
| ConeSurface & | operator= (const ConeSurface &other) |
| Vector3D | binningPosition (const GeometryContext &gctx, BinningValue bValue) const final |
| SurfaceType | type () const override |
| Return the surface type. | |
| RotationMatrix3D | referenceFrame (const GeometryContext &gctx, const Vector3D &position, const Vector3D &momentum) const final |
| Vector3D | normal (const GeometryContext &gctx, const Vector2D &lposition) const final |
| Vector3D | normal (const GeometryContext &gctx, const Vector3D &position) const final |
| virtual Vector3D | rotSymmetryAxis (const GeometryContext &gctx) const |
| const ConeBounds & | bounds () const final |
| This method returns the ConeBounds by reference. | |
| Vector3D | localToGlobal (const GeometryContext &gctx, const Vector2D &lposition, const Vector3D &momentum) const final |
| Result< Vector2D > | globalToLocal (const GeometryContext &gctx, const Vector3D &position, const Vector3D &momentum) const final |
| 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. | |
| LocalCartesianToBoundLocalMatrix | localCartesianToBoundLocalDerivative (const GeometryContext &gctx, const Vector3D &position) const final |
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 Vector3D | center (const GeometryContext &gctx) const |
| virtual 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 RotationMatrix3D | initJacobianToLocal (const GeometryContext &gctx, FreeToBoundMatrix &jacobian, const Vector3D &position, const Vector3D &direction) const |
| virtual 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 |
| AlignmentToBoundMatrix | alignmentToBoundDerivative (const GeometryContext &gctx, const FreeVector &derivatives, const Vector3D &position, const Vector3D &direction) const |
| virtual AlignmentRowVector | alignmentToPathDerivative (const GeometryContext &gctx, const RotationMatrix3D &rotToLocalZAxis, const Vector3D &position, const Vector3D &direction) const |
Public Member Functions inherited from Acts::GeometryObject | |
| GeometryObject ()=default | |
| Defaulted construrctor. | |
| GeometryObject (const GeometryObject &)=default | |
| Defaulted copy constructor. | |
| GeometryObject (const GeometryIdentifier &geometryId) | |
| GeometryObject & | operator= (const GeometryObject &geometryId) |
| const GeometryIdentifier & | geometryId () const |
| virtual double | binningPositionValue (const GeometryContext &gctx, BinningValue bValue) const |
| void | assignGeometryId (const GeometryIdentifier &geometryId) |
Protected Member Functions | |
| ConeSurface (const Transform3D &transform, double alpha, bool symmetric=false) | |
| ConeSurface (const Transform3D &transform, double alpha, double zmin, double zmax, double halfPhi=M_PI) | |
| ConeSurface (const Transform3D &transform, const std::shared_ptr< const ConeBounds > &cbounds) | |
| ConeSurface (const ConeSurface &other) | |
| ConeSurface (const GeometryContext &gctx, const ConeSurface &other, const Transform3D &shift) | |
Protected Member Functions inherited from Acts::Surface | |
| Surface (const Transform3D &transform=Transform3D::Identity()) | |
| 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 | |
| Transform3D | m_transform = Transform3D::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 descrption. | |
Protected Attributes inherited from Acts::GeometryObject | |
| GeometryIdentifier | m_geometryId |
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
| transform | 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 31 of file ConeSurface.cpp.
View newest version in sPHENIX GitHub at line 31 of file ConeSurface.cpp
|
protected |
Constructor form HepTransform and an opening angle
| transform | 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 37 of file ConeSurface.cpp.
View newest version in sPHENIX GitHub at line 37 of file ConeSurface.cpp
|
protected |
Constructor from HepTransform and ConeBounds
| transform | is the transform that places the cone in the global frame |
| cbounds | is the boundary class, the bounds must exit |
Definition at line 44 of file ConeSurface.cpp.
View newest version in sPHENIX GitHub at line 44 of file ConeSurface.cpp
References throw_assert.
|
protected |
Copy constructor
| other | is the source cone surface |
Definition at line 23 of file ConeSurface.cpp.
View newest version in sPHENIX GitHub at line 23 of file ConeSurface.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 transfrom applied after copying |
Definition at line 26 of file ConeSurface.cpp.
View newest version in sPHENIX GitHub at line 26 of file ConeSurface.cpp
|
overridedefault |
|
delete |
|
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 50 of file ConeSurface.cpp.
View newest version in sPHENIX GitHub at line 50 of file ConeSurface.cpp
References Acts::binR, and Acts::binRPhi.
|
finalvirtual |
This method returns the ConeBounds by reference.
Implements Acts::Surface.
Definition at line 166 of file ConeSurface.cpp.
View newest version in sPHENIX GitHub at line 166 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) |
Implements Acts::Surface.
Definition at line 112 of file ConeSurface.cpp.
View newest version in sPHENIX GitHub at line 112 of file ConeSurface.cpp
References kdfinder::abs(), Acts::VectorHelpers::perp(), Acts::VectorHelpers::position(), Acts::s_onSurfaceTolerance, and Acts::Test::transform.
Here is the call graph for this function:
|
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
Implements Acts::Surface.
Definition at line 32 of file ConeSurface.ipp.
View newest version in sPHENIX GitHub at line 32 of file ConeSurface.ipp
References Acts::ObjectIntersection< object_t, representation_t >::alternative, Acts::ObjectIntersection< object_t, representation_t >::intersection, 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 9 of file ConeSurface.ipp.
View newest version in sPHENIX GitHub at line 9 of file ConeSurface.ipp
References Acts::UnitConstants::C, Acts::UnitConstants::e, Acts::VectorHelpers::position(), and Acts::Test::transform.
Here is the call graph for this function:
|
inlinefinalvirtual |
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 paramters in global |
Implements Acts::Surface.
Definition at line 91 of file ConeSurface.ipp.
View newest version in sPHENIX GitHub at line 91 of file ConeSurface.ipp
References cos(), Acts::VectorHelpers::perp(), phi, Acts::VectorHelpers::position(), Acts::IntegrationTest::R, and Acts::Test::transform.
Here is the call graph for this function:
|
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) |
Implements Acts::Surface.
Definition at line 102 of file ConeSurface.cpp.
View newest version in sPHENIX GitHub at line 102 of file ConeSurface.cpp
References cos(), Acts::eBoundLoc0, Acts::eBoundLoc1, phi, and Acts::Test::transform.
Here is the call graph for this function:
|
overridevirtual |
Return properly formatted class name for screen output.
Implements Acts::Surface.
Definition at line 140 of file ConeSurface.cpp.
View newest version in sPHENIX GitHub at line 140 of file ConeSurface.cpp
Referenced by eicpy.verify.PythiaHistograms::__init__(), and eicpy.verify.DjangohHistograms::__init__().
Here is the caller graph for this function:
|
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 144 of file ConeSurface.cpp.
View newest version in sPHENIX GitHub at line 144 of file ConeSurface.cpp
References cos(), Acts::ConeBounds::eAlpha, Acts::eBoundLoc0, Acts::eBoundLoc1, phi, and Acts::Test::transform.
Here is the call graph for this function:
|
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 157 of file ConeSurface.cpp.
View newest version in sPHENIX GitHub at line 157 of file ConeSurface.cpp
References Acts::VectorHelpers::position(), and Acts::Test::transform.
Here is the call graph for this function:| Acts::ConeSurface & Acts::ConeSurface::operator= | ( | const ConeSurface & | other | ) |
Assignment operator
| other | is the source surface for the assignment |
Definition at line 68 of file ConeSurface.cpp.
View newest version in sPHENIX GitHub at line 68 of file ConeSurface.cpp
References m_bounds, and Acts::Surface::operator=().
Here is the call graph for this function:
|
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 124 of file ConeSurface.cpp.
View newest version in sPHENIX GitHub at line 124 of file ConeSurface.cpp
References kdfinder::abs(), cos(), Acts::ConeBounds::eAlpha, Acts::VectorHelpers::phi(), phi, Acts::VectorHelpers::position(), and Acts::Test::transform.
Here is the call graph for this function:
|
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 171 of file ConeSurface.cpp.
View newest version in sPHENIX GitHub at line 171 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, one, Acts::detail::VerticesHelper::phiSegments(), Acts::s_onSurfaceTolerance, boost::swap(), three, Acts::Test::transform, two, and z.
Here is the call graph for this function:
|
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 81 of file ConeSurface.cpp.
View newest version in sPHENIX GitHub at line 81 of file ConeSurface.cpp
|
virtual |
| gctx | The current geometry context object, e.g. alignment |
Definition at line 76 of file ConeSurface.cpp.
View newest version in sPHENIX GitHub at line 76 of file ConeSurface.cpp
References matrix(), and Acts::Test::transform.
Here is the call graph for this function:
|
overridevirtual |
Return the surface type.
Implements Acts::Surface.
Definition at line 64 of file ConeSurface.cpp.
View newest version in sPHENIX GitHub at line 64 of file ConeSurface.cpp
References Acts::Surface::Cone.
|
protected |
bounds (shared)
Definition at line 211 of file ConeSurface.hpp.
View newest version in sPHENIX GitHub at line 211 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