Analysis Software
Documentation for sPHENIX simulation software
|
#include <acts/blob/sPHENIX/Core/include/Acts/Surfaces/LineSurface.hpp>
Protected Member Functions | |
LineSurface (const Transform3 &transform, double radius, double halez) | |
LineSurface (const Transform3 &transform, std::shared_ptr< const LineBounds > lbounds=nullptr) | |
LineSurface (std::shared_ptr< const LineBounds > lbounds, const DetectorElementBase &detelement) | |
LineSurface (const LineSurface &other) | |
LineSurface (const GeometryContext &gctx, const LineSurface &other, const Transform3 &shift) | |
Protected Member Functions inherited from Acts::Surface | |
Surface (const Transform3 &transform=Transform3::Identity()) | |
Surface (const Surface &other) | |
Surface (const DetectorElementBase &detelement) | |
Surface (const GeometryContext &gctx, const Surface &other, const Transform3 &shift) | |
Protected Attributes | |
std::shared_ptr< const LineBounds > | m_bounds |
bounds (shared) | |
Protected Attributes inherited from Acts::Surface | |
Transform3 | m_transform = Transform3::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 description. | |
Protected Attributes inherited from Acts::GeometryObject | |
GeometryIdentifier | m_geometryId |
Private Member Functions | |
bool | globalToLocalPlain (const GeometryContext &gctx, const Vector3 &position, const Vector3 &direction, Vector2 &lposition) 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) |
Static Public Attributes inherited from Acts::Surface | |
static std::array< std::string, SurfaceType::Other > | s_surfaceTypeNames |
Helper strings for screen output. | |
Base class for a linear surfaces in the TrackingGeometry to describe dirft tube, straw like detectors or the Perigee It inherits from Surface.
Definition at line 41 of file LineSurface.hpp.
View newest version in sPHENIX GitHub at line 41 of file LineSurface.hpp
|
protected |
Constructor from Transform3 and bounds
transform | The transform that positions the surface in the global frame |
radius | The straw radius |
halez | The half length in z |
Definition at line 33 of file LineSurface.cpp.
View newest version in sPHENIX GitHub at line 33 of file LineSurface.cpp
|
protected |
Constructor from Transform3 and a shared bounds object
transform | The transform that positions the surface in the global frame |
lbounds | The bounds describing the straw dimensions, can be optionally nullptr |
Definition at line 39 of file LineSurface.cpp.
View newest version in sPHENIX GitHub at line 39 of file LineSurface.cpp
|
protected |
Constructor from DetectorElementBase : Element proxy
lbounds | The bounds describing the straw dimensions |
detelement | for which this surface is (at least) one representation |
Definition at line 43 of file LineSurface.cpp.
View newest version in sPHENIX GitHub at line 43 of file LineSurface.cpp
References m_bounds, and throw_assert.
|
protected |
Copy constructor
other | The source surface for copying |
Definition at line 49 of file LineSurface.cpp.
View newest version in sPHENIX GitHub at line 49 of file LineSurface.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 transform applied after copying |
Definition at line 52 of file LineSurface.cpp.
View newest version in sPHENIX GitHub at line 52 of file LineSurface.cpp
|
overridedefault |
|
delete |
|
finalvirtual |
Calculate the derivative of path length at the geometry constraint or point-of-closest-approach w.r.t. alignment parameters of the surface (i.e. local frame origin in global 3D Cartesian coordinates and its rotation represented with extrinsic Euler angles)
gctx | The current geometry context object, e.g. alignment |
parameters | is the free parameters |
Reimplemented from Acts::Surface.
Definition at line 280 of file LineSurface.cpp.
View newest version in sPHENIX GitHub at line 280 of file LineSurface.cpp
References dz, Acts::eAlignmentCenter0, Acts::eAlignmentRotation0, Acts::eFreeDir0, Acts::eFreePos0, norm, position, Acts::detail::rotationToLocalAxesDerivative(), and Acts::Test::transform.
Referenced by Acts::Test::BOOST_AUTO_TEST_CASE().
|
finalvirtual |
The binning position is the position calculated for a certain binning type
gctx | The current geometry context object, e.g. alignment |
bValue | is the binning type to be used |
Implements Acts::GeometryObject.
Definition at line 130 of file LineSurface.cpp.
View newest version in sPHENIX GitHub at line 130 of file LineSurface.cpp
Referenced by Acts::Test::BOOST_AUTO_TEST_CASE().
|
finalvirtual |
This method returns the bounds of the surface by reference.
Implements Acts::Surface.
Definition at line 141 of file LineSurface.cpp.
View newest version in sPHENIX GitHub at line 141 of file LineSurface.cpp
References Acts::s_noBounds.
Referenced by Acts::Test::BOOST_AUTO_TEST_CASE().
|
finalvirtual |
Calculate the jacobian from local to global which the surface knows best, hence the calculation is done here.
gctx | The current geometry context object, e.g. alignment |
boundParams | is the bound parameters vector |
Reimplemented from Acts::Surface.
Definition at line 197 of file LineSurface.cpp.
View newest version in sPHENIX GitHub at line 197 of file LineSurface.cpp
References Acts::VectorHelpers::cross(), Acts::eBoundLoc0, Acts::eBoundPhi, Acts::eBoundQOverP, Acts::eBoundTheta, Acts::eBoundTime, Acts::eFreeDir0, Acts::eFreeDir1, Acts::eFreeDir2, Acts::eFreePos0, Acts::eFreeQOverP, Acts::eFreeTime, position, and Acts::detail::transformBoundToFreeParameters().
|
finalvirtual |
Calculate the derivative of path length at the geometry constraint or point-of-closest-approach w.r.t. free parameters
gctx | The current geometry context object, e.g. alignment |
parameters | is the free parameters |
Reimplemented from Acts::Surface.
Definition at line 250 of file LineSurface.cpp.
View newest version in sPHENIX GitHub at line 250 of file LineSurface.cpp
References dz, Acts::eFreeDir0, Acts::eFreePos0, norm, and position.
|
finalvirtual |
Specified for LineSurface
: global to local method without dynamic memory allocation.
This method is the true global -> local transformation. It makes use of globalToLocal
and indicates the sign of the Acts::eBoundLoc0
by the given momentum direction.
The calculation of the sign of the radius (or ) can be done as follows: May denote the difference between the center of the line and the global position of the measurement/predicted state. Then, lies in the so-called measurement plane. The latter is determined by the two orthogonal vectors and .
The sign of the radius (or ) is then defined by the projection of on :
gctx | The current geometry context object, e.g. alignment |
position | global 3D position - considered to be on surface but not inside bounds (check is done) |
direction | global 3D momentum direction (optionally ignored) |
tolerance | (unused) |
Result<Vector2>
, which is set to !ok()
if the position
is not the point of closest approach to the line surface. Implements Acts::Surface.
Definition at line 79 of file LineSurface.cpp.
View newest version in sPHENIX GitHub at line 79 of file LineSurface.cpp
References Acts::VectorHelpers::perp(), and Acts::Test::transform.
Referenced by Acts::Test::BOOST_AUTO_TEST_CASE().
|
private |
helper function to apply the globalToLocal with out transform
gctx | The current geometry context object, e.g. alignment |
position | is the global position |
direction | is the momentum direction |
lposition | is the local position to be filled |
|
finalvirtual |
Calculate the straight-line intersection with the line surface.
Mathematical motivation:
Given two lines in parameteric form:
The vector between any two points on the two lines is given by:
,
where .
denotes the vector between the two closest points
and
and is perpendicular to both, and .
This results in a system of two linear equations:
Solving (i) and (ii) for and yields:
The function checks if to check if the current position
is at the point of closest approach, i.e. the intersection point, in which case it will return an onSurace
intersection result. Otherwise, the path length from position
to the point of closest approach ( ) is returned in a reachable
intersection.
gctx | The current geometry context object, e.g. alignment |
position | The global position as a starting point |
direction | The global direction at the starting point |
bcheck | The boundary check directive for the estimate |
tolerance | the tolerance used for the intersection |
Implements Acts::Surface.
Definition at line 148 of file LineSurface.cpp.
View newest version in sPHENIX GitHub at line 148 of file LineSurface.cpp
References Acts::LineBounds::eHalfLengthZ, Acts::LineBounds::eR, Acts::Intersection< 3 >::invalid(), norm, position, utils::status, Acts::Test::tolerance, Acts::Test::transform, and physmon_ckf_tracking::u.
Referenced by Acts::Test::BOOST_AUTO_TEST_CASE().
Acts::Vector3 Acts::LineSurface::lineDirection | ( | const GeometryContext & | gctx | ) | const |
Definition at line 323 of file LineSurface.cpp.
View newest version in sPHENIX GitHub at line 323 of file LineSurface.cpp
References Acts::Test::transform.
|
finalvirtual |
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 parameters in global |
Implements Acts::Surface.
Definition at line 311 of file LineSurface.cpp.
View newest version in sPHENIX GitHub at line 311 of file LineSurface.cpp
References Acts::VectorHelpers::phi(), position, and Acts::Test::transform.
Referenced by Acts::Test::BOOST_AUTO_TEST_CASE().
|
finalvirtual |
Local to global transformation
gctx | The current geometry context object, e.g. alignment |
lposition | is the local position to be transformed |
direction | is the global momentum direction (used to sign the closest approach) |
Implements Acts::Surface.
Definition at line 65 of file LineSurface.cpp.
View newest version in sPHENIX GitHub at line 65 of file LineSurface.cpp
References Acts::eBoundLoc0, Acts::eBoundLoc1, and Acts::Test::transform.
Referenced by Acts::Test::BOOST_AUTO_TEST_CASE().
|
overridevirtual |
Return properly formatted class name for screen output.
Implements Acts::Surface.
Reimplemented in Acts::StrawSurface, and Acts::PerigeeSurface.
Definition at line 105 of file LineSurface.cpp.
View newest version in sPHENIX GitHub at line 105 of file LineSurface.cpp
Referenced by Acts::Test::BOOST_AUTO_TEST_CASE().
|
finalvirtual |
The normal vector is undefined if we do not know the momentum.
gctx | The current geometry context object, e.g. alignment |
lposition | is the local position is ignored |
Implements Acts::Surface.
Definition at line 135 of file LineSurface.cpp.
View newest version in sPHENIX GitHub at line 135 of file LineSurface.cpp
Referenced by Acts::Test::BOOST_AUTO_TEST_CASE().
Acts::LineSurface & Acts::LineSurface::operator= | ( | const LineSurface & | other | ) |
Assignment operator
other | is the source surface dor copying |
Definition at line 57 of file LineSurface.cpp.
View newest version in sPHENIX GitHub at line 57 of file LineSurface.cpp
References m_bounds, and Acts::Surface::operator=().
Referenced by Acts::PerigeeSurface::operator=(), and Acts::StrawSurface::operator=().
|
overridevirtual |
the pathCorrection for derived classes with thickness is by definition 1 for LineSurfaces
Implements Acts::Surface.
Definition at line 124 of file LineSurface.cpp.
View newest version in sPHENIX GitHub at line 124 of file LineSurface.cpp
Referenced by Acts::Test::BOOST_AUTO_TEST_CASE().
|
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 |
direction | is the momentum direction used for the measurement frame construction |
Reimplemented from Acts::Surface.
Definition at line 109 of file LineSurface.cpp.
View newest version in sPHENIX GitHub at line 109 of file LineSurface.cpp
Referenced by Acts::Test::BOOST_AUTO_TEST_CASE().
|
protected |
bounds (shared)
Definition at line 298 of file LineSurface.hpp.
View newest version in sPHENIX GitHub at line 298 of file LineSurface.hpp
Referenced by LineSurface(), Acts::StrawSurface::operator=(), and operator=().
|
private |
Definition at line 43 of file LineSurface.hpp.
View newest version in sPHENIX GitHub at line 43 of file LineSurface.hpp