![]() |
EIC Software
Reference for
EIC
simulation and reconstruction software on GitHub
|
#include <acts/blob/sPHENIX/Core/include/Acts/Surfaces/CylinderSurface.hpp>
Inheritance diagram for Acts::CylinderSurface:
Collaboration diagram for Acts::CylinderSurface:Public Member Functions | |
| ~CylinderSurface () override=default | |
| CylinderSurface ()=delete | |
| CylinderSurface & | operator= (const CylinderSurface &other) |
| Vector3D | binningPosition (const GeometryContext &gctx, BinningValue bValue) const final |
| RotationMatrix3D | referenceFrame (const GeometryContext &gctx, const Vector3D &position, const Vector3D &momentum) const final |
| SurfaceType | type () const override |
| Return the surface type. | |
| 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 CylinderBounds & | bounds () const final |
| This method returns the CylinderBounds 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 |
| std::string | name () const override |
| Return method for properly formatted output string. | |
| Polyhedron | polyhedronRepresentation (const GeometryContext &gctx, size_t lseg) const override |
| 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 | |
| CylinderSurface (std::shared_ptr< const CylinderBounds > cbounds, const DetectorElementBase &detelement) | |
| CylinderSurface (const Transform3D &transform, double radius, double halfz, double halfphi=M_PI, double avphi=0.) | |
| CylinderSurface (const Transform3D &transform, const std::shared_ptr< const CylinderBounds > &cbounds) | |
| CylinderSurface (const CylinderSurface &other) | |
| CylinderSurface (const GeometryContext &gctx, const CylinderSurface &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 CylinderBounds > | 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 Transform3D &transform, 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 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 34 of file CylinderSurface.hpp.
View newest version in sPHENIX GitHub at line 34 of file CylinderSurface.hpp
|
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 38 of file CylinderSurface.cpp.
View newest version in sPHENIX GitHub at line 38 of file CylinderSurface.cpp
|
protected |
Constructor from Transform3D 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) |
Definition at line 31 of file CylinderSurface.cpp.
View newest version in sPHENIX GitHub at line 31 of file CylinderSurface.cpp
|
protected |
Constructor from Transform3D 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 46 of file CylinderSurface.cpp.
View newest version in sPHENIX GitHub at line 46 of file CylinderSurface.cpp
References throw_assert.
|
protected |
Copy constructor
| other | is the source cylinder for the copy |
Definition at line 23 of file CylinderSurface.cpp.
View newest version in sPHENIX GitHub at line 23 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 transfrom applied after copying |
Definition at line 26 of file CylinderSurface.cpp.
View newest version in sPHENIX GitHub at line 26 of file CylinderSurface.cpp
|
overridedefault |
|
delete |
|
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 63 of file CylinderSurface.cpp.
View newest version in sPHENIX GitHub at line 63 of file CylinderSurface.cpp
References Acts::binR, Acts::binRPhi, cos(), Acts::CylinderBounds::eAveragePhi, Acts::CylinderBounds::eR, phi, and Acts::IntegrationTest::R.
Here is the call graph for this function:
|
finalvirtual |
This method returns the CylinderBounds by reference.
Implements Acts::Surface.
Definition at line 160 of file CylinderSurface.cpp.
View newest version in sPHENIX GitHub at line 160 of file CylinderSurface.cpp
Referenced by Acts::CylinderVolumeBuilder::analyzeContent().
Here is the caller graph for this function:
|
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 CylinderSurface.cpp.
View newest version in sPHENIX GitHub at line 112 of file CylinderSurface.cpp
References kdfinder::abs(), Acts::CylinderBounds::eR, Acts::VectorHelpers::perp(), phi, 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 37 of file CylinderSurface.ipp.
View newest version in sPHENIX GitHub at line 37 of file CylinderSurface.ipp
References Acts::ObjectIntersection< object_t, representation_t >::alternative, Acts::Test::boundaryCheck, Acts::eBoundLoc1, Acts::ObjectIntersection< object_t, representation_t >::intersection, Acts::s_onSurfaceTolerance, Acts::Test::tolerance, Acts::BoundaryCheck::tolerance(), Acts::Test::transform, and Acts::BoundaryCheck::type().
Here is the call graph for this function:
|
inlineprivate |
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 15 of file CylinderSurface.ipp.
View newest version in sPHENIX GitHub at line 15 of file CylinderSurface.ipp
References c, charm_jet_strange_helicity::pc, and Acts::IntegrationTest::R.
|
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 116 of file CylinderSurface.ipp.
View newest version in sPHENIX GitHub at line 116 of file CylinderSurface.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 CylinderSurface.cpp.
View newest version in sPHENIX GitHub at line 102 of file CylinderSurface.cpp
References cos(), Acts::eBoundLoc0, Acts::eBoundLoc1, Acts::CylinderBounds::eR, phi, Acts::VectorHelpers::position(), and Acts::Test::transform.
Here is the call graph for this function:
|
overridevirtual |
Return method for properly formatted output string.
Implements Acts::Surface.
Definition at line 130 of file CylinderSurface.cpp.
View newest version in sPHENIX GitHub at line 130 of file CylinderSurface.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 postion for which the normal vector is requested |
Implements Acts::Surface.
Definition at line 134 of file CylinderSurface.cpp.
View newest version in sPHENIX GitHub at line 134 of file CylinderSurface.cpp
References cos(), Acts::eBoundLoc0, Acts::CylinderBounds::eR, matrix(), 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 postion for which the normal vector is requested |
Reimplemented from Acts::Surface.
Definition at line 141 of file CylinderSurface.cpp.
View newest version in sPHENIX GitHub at line 141 of file CylinderSurface.cpp
References Acts::VectorHelpers::position(), and Acts::Test::transform.
Here is the call graph for this function:| Acts::CylinderSurface & Acts::CylinderSurface::operator= | ( | const CylinderSurface & | other | ) |
Assignment operator
| other | is the source cylinder for the copy |
Definition at line 53 of file CylinderSurface.cpp.
View newest version in sPHENIX GitHub at line 53 of file CylinderSurface.cpp
References m_bounds, and Acts::Surface::operator=().
Here is the call graph for this function:
|
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 at the starting point |
Implements Acts::Surface.
Definition at line 152 of file CylinderSurface.cpp.
View newest version in sPHENIX GitHub at line 152 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 |
Helper method to create the segment
Implements Acts::Surface.
Definition at line 164 of file CylinderSurface.cpp.
View newest version in sPHENIX GitHub at line 164 of file CylinderSurface.cpp
References Acts::detail::VerticesHelper::createSegment(), Acts::detail::FacesHelper::cylindricalFaceMesh(), Acts::CylinderBounds::eAveragePhi, Acts::CylinderBounds::eHalfLengthZ, Acts::CylinderBounds::eHalfPhiSector, Acts::CylinderBounds::eR, Acts::detail::VerticesHelper::phiSegments(), and Acts::Test::transform.
Here is the call graph for this function:
|
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 |
| momentum | is the momentum vector (ignored) |
Reimplemented from Acts::Surface.
Definition at line 79 of file CylinderSurface.cpp.
View newest version in sPHENIX GitHub at line 79 of file CylinderSurface.cpp
|
inlinevirtual |
Return method for the rotational symmetry axis
| gctx | The current geometry context object, e.g. alignment |
Definition at line 9 of file CylinderSurface.ipp.
View newest version in sPHENIX GitHub at line 9 of file CylinderSurface.ipp
References Acts::Test::transform.
|
overridevirtual |
Return the surface type.
Implements Acts::Surface.
Definition at line 98 of file CylinderSurface.cpp.
View newest version in sPHENIX GitHub at line 98 of file CylinderSurface.cpp
References Acts::Surface::Cylinder.
|
protected |
bounds (shared)
Definition at line 218 of file CylinderSurface.hpp.
View newest version in sPHENIX GitHub at line 218 of file CylinderSurface.hpp
Referenced by Acts::CylinderLayer::CylinderLayer(), and operator=().
|
private |
Definition at line 35 of file CylinderSurface.hpp.
View newest version in sPHENIX GitHub at line 35 of file CylinderSurface.hpp