EIC Software
Reference for
EIC
simulation and reconstruction software on GitHub
|
#include <acts/blob/sPHENIX/Core/include/Acts/Surfaces/ConeSurface.hpp>
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.
|
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.
|
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.
|
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.
|
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__().
|
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.
|
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.
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=().
|
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.
|
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.
|
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.
|
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