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