ECCE @ EIC Software
Reference for
ECCE @ EIC
simulation and reconstruction software on GitHub
|
#include <acts/blob/master/Core/include/Acts/Surfaces/CylinderSurface.hpp>
Public Member Functions | |
~CylinderSurface () override=default | |
Destructor - defaulted. | |
CylinderSurface ()=delete | |
Deleted default constructor. | |
CylinderSurface & | operator= (const CylinderSurface &other) |
const Vector3D | binningPosition (const GeometryContext &gctx, BinningValue bValue) const final |
const RotationMatrix3D | referenceFrame (const GeometryContext &gctx, const Vector3D &position, const Vector3D &momentum) const final |
SurfaceType | type () const override |
Return the surface type. | |
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 CylinderBounds & | bounds () const final |
This method returns the CylinderBounds 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) 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 |
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 | |
CylinderSurface (std::shared_ptr< const CylinderBounds > cbounds, const DetectorElementBase &detelement) | |
CylinderSurface (std::shared_ptr< const Transform3D > htrans, double radius, double halfz, double halfphi=M_PI, double avphi=0.) | |
CylinderSurface (std::shared_ptr< const Transform3D > htrans, const std::shared_ptr< const CylinderBounds > &cbounds) | |
CylinderSurface (const CylinderSurface &other) | |
CylinderSurface (const GeometryContext &gctx, const CylinderSurface &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 CylinderBounds > | 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 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 40 of file CylinderSurface.cpp.
View newest version in sPHENIX GitHub at line 40 of file CylinderSurface.cpp
|
protected |
Constructor from Transform3D and CylinderBounds
htrans | transform to position the surface, can be nullptr |
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 33 of file CylinderSurface.cpp.
View newest version in sPHENIX GitHub at line 33 of file CylinderSurface.cpp
|
protected |
Constructor from Transform3D and CylinderBounds arguments
htrans | transform to position the surface, can be nullptr |
cbounds | is a shared pointer to a cylindeer bounds object, it must exist (assert test) |
Definition at line 48 of file CylinderSurface.cpp.
View newest version in sPHENIX GitHub at line 48 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 |
transf | 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 |
Destructor - defaulted.
|
delete |
Deleted default constructor.
|
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 65 of file CylinderSurface.cpp.
View newest version in sPHENIX GitHub at line 65 of file CylinderSurface.cpp
References Acts::binR, Acts::binRPhi, Acts::CylinderBounds::eAveragePhi, Acts::CylinderBounds::eR, phi, and Acts::IntegrationTest::R.
|
finalvirtual |
This method returns the CylinderBounds by reference.
Implements Acts::Surface.
Definition at line 171 of file CylinderSurface.cpp.
View newest version in sPHENIX GitHub at line 171 of file CylinderSurface.cpp
Referenced by Acts::CylinderVolumeBuilder::analyzeContent(), and Acts::ProtoLayer::measure().
|
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 115 of file CylinderSurface.cpp.
View newest version in sPHENIX GitHub at line 115 of file CylinderSurface.cpp
References kdfinder::abs(), Acts::CylinderBounds::eR, Acts::VectorHelpers::perp(), phi, radius, 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 71 of file CylinderSurface.ipp.
View newest version in sPHENIX GitHub at line 71 of file CylinderSurface.ipp
References Acts::ObjectIntersection< object_t, representation_t >::alternative, Acts::Test::boundaryCheck, Acts::eLOC_Z, Acts::ObjectIntersection< object_t, representation_t >::intersection, Acts::s_onSurfaceTolerance, second, Acts::BoundaryCheck::tolerance(), Acts::Test::transform, and Acts::BoundaryCheck::type().
|
inlinefinalvirtual |
Straight line intersection schema - provides closest intersection and (signed) path length
gctx | The current geometry context object, e.g. alignment |
position | The global position as a starting point |
direction | The global direction at starting point ( |
bcheck | The boundary check presection |
Implements Acts::Surface.
Definition at line 41 of file CylinderSurface.ipp.
View newest version in sPHENIX GitHub at line 41 of file CylinderSurface.ipp
References Acts::s_onSurfaceTolerance, and Acts::Test::transform.
|
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 19 of file CylinderSurface.ipp.
View newest version in sPHENIX GitHub at line 19 of file CylinderSurface.ipp
References a, b, c, pc, and Acts::IntegrationTest::R.
|
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 104 of file CylinderSurface.cpp.
View newest version in sPHENIX GitHub at line 104 of file CylinderSurface.cpp
References Acts::eLOC_RPHI, Acts::eLOC_Z, Acts::CylinderBounds::eR, phi, position, r, and Acts::Test::transform.
|
overridevirtual |
Return method for properly formatted output string.
Implements Acts::Surface.
Definition at line 141 of file CylinderSurface.cpp.
View newest version in sPHENIX GitHub at line 141 of file CylinderSurface.cpp
|
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 145 of file CylinderSurface.cpp.
View newest version in sPHENIX GitHub at line 145 of file CylinderSurface.cpp
References Acts::eLOC_RPHI, Acts::CylinderBounds::eR, 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 postion for which the normal vector is requested |
Reimplemented from Acts::Surface.
Definition at line 152 of file CylinderSurface.cpp.
View newest version in sPHENIX GitHub at line 152 of file CylinderSurface.cpp
References position, and Acts::Test::transform.
Acts::CylinderSurface & Acts::CylinderSurface::operator= | ( | const CylinderSurface & | other | ) |
Assignment operator
other | is the source cylinder for the copy |
Definition at line 55 of file CylinderSurface.cpp.
View newest version in sPHENIX GitHub at line 55 of file CylinderSurface.cpp
References m_bounds, and Acts::Surface::operator=().
|
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 163 of file CylinderSurface.cpp.
View newest version in sPHENIX GitHub at line 163 of file CylinderSurface.cpp
References CLHEP::normal().
|
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 175 of file CylinderSurface.cpp.
View newest version in sPHENIX GitHub at line 175 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.
Referenced by Acts::ProtoLayer::measure().
|
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 81 of file CylinderSurface.cpp.
View newest version in sPHENIX GitHub at line 81 of file CylinderSurface.cpp
References CLHEP::normal().
|
inlinevirtual |
Return method for the rotational symmetry axis
gctx | The current geometry context object, e.g. alignment |
Definition at line 13 of file CylinderSurface.ipp.
View newest version in sPHENIX GitHub at line 13 of file CylinderSurface.ipp
References Acts::Test::transform.
|
overridevirtual |
Return the surface type.
Implements Acts::Surface.
Definition at line 100 of file CylinderSurface.cpp.
View newest version in sPHENIX GitHub at line 100 of file CylinderSurface.cpp
References Acts::Surface::Cylinder.
|
protected |
bounds (shared)
Definition at line 223 of file CylinderSurface.hpp.
View newest version in sPHENIX GitHub at line 223 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