EIC Software
Reference for
EIC
simulation and reconstruction software on GitHub
|
#include <acts/blob/sPHENIX/Core/include/Acts/Surfaces/LineSurface.hpp>
Public Member Functions | |
~LineSurface () override=default | |
LineSurface ()=delete | |
LineSurface & | operator= (const LineSurface &other) |
Vector3D | normal (const GeometryContext &gctx, const Vector2D &lposition) const final |
Vector3D | binningPosition (const GeometryContext &gctx, BinningValue bValue) const final |
RotationMatrix3D | referenceFrame (const GeometryContext &gctx, const Vector3D &position, const Vector3D &momentum) const final |
void | initJacobianToGlobal (const GeometryContext &gctx, BoundToFreeMatrix &jacobian, const Vector3D &position, const Vector3D &direction, const BoundVector &pars) const final |
BoundRowVector | derivativeFactors (const GeometryContext &gctx, const Vector3D &position, const Vector3D &direction, const RotationMatrix3D &rft, const BoundToFreeMatrix &jacobian) const final |
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=false) const final |
Straight line intersection schema. | |
double | pathCorrection (const GeometryContext &gctx, const Vector3D &position, const Vector3D &momentum) const override |
const SurfaceBounds & | bounds () const final |
This method returns the bounds of the Surface by reference */. | |
std::string | name () const override |
Return properly formatted class name for screen output */. | |
AlignmentRowVector | alignmentToPathDerivative (const GeometryContext &gctx, const RotationMatrix3D &rotToLocalZAxis, const Vector3D &position, const Vector3D &direction) const final |
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 SurfaceType | type () const =0 |
Return method for the Surface type to avoid dynamic casts. | |
virtual const Transform3D & | transform (const GeometryContext &gctx) const |
virtual Vector3D | center (const GeometryContext &gctx) const |
virtual Vector3D | normal (const GeometryContext &gctx, const Vector3D &position) 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 RotationMatrix3D | initJacobianToLocal (const GeometryContext &gctx, FreeToBoundMatrix &jacobian, const Vector3D &position, const Vector3D &direction) const |
virtual std::ostream & | toStream (const GeometryContext &gctx, std::ostream &sl) const |
virtual Polyhedron | polyhedronRepresentation (const GeometryContext &gctx, size_t lseg) const =0 |
AlignmentToBoundMatrix | alignmentToBoundDerivative (const GeometryContext &gctx, const FreeVector &derivatives, 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 | |
LineSurface (const Transform3D &transform, double radius, double halez) | |
LineSurface (const Transform3D &transform, std::shared_ptr< const LineBounds > lbounds=nullptr) | |
LineSurface (const std::shared_ptr< const LineBounds > &lbounds, const DetectorElementBase &detelement) | |
LineSurface (const LineSurface &other) | |
LineSurface (const GeometryContext &gctx, const LineSurface &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 LineBounds > | 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 | |
bool | globalToLocalPlain (const GeometryContext &gctx, const Vector3D &position, const Vector3D &momentum, Vector2D &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) |
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 31 of file LineSurface.hpp.
View newest version in sPHENIX GitHub at line 31 of file LineSurface.hpp
|
protected |
Constructor from Transform3D 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 15 of file LineSurface.cpp.
View newest version in sPHENIX GitHub at line 15 of file LineSurface.cpp
|
protected |
Constructor from Transform3D 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 21 of file LineSurface.cpp.
View newest version in sPHENIX GitHub at line 21 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 25 of file LineSurface.cpp.
View newest version in sPHENIX GitHub at line 25 of file LineSurface.cpp
References throw_assert.
|
protected |
Copy constructor
other | The source surface for copying |
Definition at line 31 of file LineSurface.cpp.
View newest version in sPHENIX GitHub at line 31 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 34 of file LineSurface.cpp.
View newest version in sPHENIX GitHub at line 34 of file LineSurface.cpp
|
overridedefault |
|
delete |
|
inlinefinalvirtual |
Calculate the derivative of path length 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 |
rotToLocalZAxis | The derivative of local frame z axis vector w.r.t. its rotation |
position | The position of the paramters in global |
direction | The direction of the track |
Reimplemented from Acts::Surface.
Definition at line 211 of file LineSurface.ipp.
View newest version in sPHENIX GitHub at line 211 of file LineSurface.ipp
References Acts::eAlignmentCenter0, Acts::eAlignmentRotation0, and Acts::Test::transform.
Referenced by Acts::Test::BOOST_AUTO_TEST_CASE().
|
inlinefinalvirtual |
The binning position is the position calcualted 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 70 of file LineSurface.ipp.
View newest version in sPHENIX GitHub at line 70 of file LineSurface.ipp
Referenced by Acts::Test::BOOST_AUTO_TEST_CASE().
|
inlinefinalvirtual |
This method returns the bounds of the Surface by reference */.
Implements Acts::Surface.
Definition at line 81 of file LineSurface.ipp.
View newest version in sPHENIX GitHub at line 81 of file LineSurface.ipp
References Acts::s_noBounds.
Referenced by Acts::Test::BOOST_AUTO_TEST_CASE().
|
inlinefinalvirtual |
Calculate the form factors for the derivatives the calculation is identical for all surfaces where the reference frame does not depend on the direction
gctx | The current geometry context object, e.g. alignment |
position | is the position of the paramters in global |
direction | is the direction of the track |
rft | is the transposed reference frame (avoids recalculation) |
jacobian | is the transport jacobian |
Reimplemented from Acts::Surface.
Definition at line 185 of file LineSurface.ipp.
View newest version in sPHENIX GitHub at line 185 of file LineSurface.ipp
References Acts::eBoundSize, and charm_jet_strange_helicity::pc.
|
inlinefinalvirtual |
Specified for LineSurface: global to local method without dynamic memory allocation
This method is the true global->local transformation.
makes use of globalToLocal and indicates the sign of the Acts::eBoundLoc0 by the given momentum
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 within the so called measurement plane. The measurement plane is determined by the two orthogonal vectors and .
The sign of the radius ( ) is then defined by the projection of onto :
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) |
momentum | global 3D momentum representation (optionally ignored) |
Implements Acts::Surface.
Definition at line 24 of file LineSurface.ipp.
View newest version in sPHENIX GitHub at line 24 of file LineSurface.ipp
References Acts::eBoundLoc0, Acts::VectorHelpers::perp(), Acts::VectorHelpers::position(), sign(), 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 |
momentum | is the momentum |
lposition | is the local position to be filled |
|
inlinefinalvirtual |
Initialize the jacobian from local to global the surface knows best, hence the calculation is done here. The jacobian is assumed to be initialised, so only the relevant entries are filled
gctx | The current geometry context object, e.g. alignment |
jacobian | is the jacobian to be initialized |
position | is the global position of the parameters |
direction | is the direction at of the parameters |
pars | is the paranmeters vector |
Reimplemented from Acts::Surface.
Definition at line 133 of file LineSurface.ipp.
View newest version in sPHENIX GitHub at line 133 of file LineSurface.ipp
References Acts::VectorHelpers::cross(), Acts::eBoundLoc0, Acts::eBoundPhi, Acts::eBoundQOverP, Acts::eBoundTheta, Acts::eBoundTime, x, y, and z.
|
inlinefinalvirtual |
Straight line intersection schema.
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 |
mathematical motivation: Given two lines in parameteric form:
This results in a system of two linear equations:
Solving (i), (ii) for and yields:
Implements Acts::Surface.
Definition at line 88 of file LineSurface.ipp.
View newest version in sPHENIX GitHub at line 88 of file LineSurface.ipp
References denom, max, Acts::VectorHelpers::position(), Acts::s_onSurfaceTolerance, Acts::Test::transform, and Acts::UnitConstants::u.
Referenced by Acts::Test::BOOST_AUTO_TEST_CASE().
|
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 241 of file LineSurface.ipp.
View newest version in sPHENIX GitHub at line 241 of file LineSurface.ipp
References cos(), phi, Acts::VectorHelpers::position(), and Acts::Test::transform.
Referenced by Acts::Test::BOOST_AUTO_TEST_CASE().
|
inlinefinalvirtual |
Local to global transformation for line surfaces the momentum is used in order to interpret the drift radius
gctx | The current geometry context object, e.g. alignment |
lposition | is the local position to be transformed |
momentum | is the global momentum (used to sign the closest approach) |
Implements Acts::Surface.
Definition at line 9 of file LineSurface.ipp.
View newest version in sPHENIX GitHub at line 9 of file LineSurface.ipp
References Acts::eBoundLoc0, Acts::eBoundLoc1, and Acts::Test::transform.
Referenced by Acts::Test::BOOST_AUTO_TEST_CASE().
|
inlineoverridevirtual |
Return properly formatted class name for screen output */.
Implements Acts::Surface.
Reimplemented in Acts::StrawSurface, and Acts::PerigeeSurface.
Definition at line 44 of file LineSurface.ipp.
View newest version in sPHENIX GitHub at line 44 of file LineSurface.ipp
Referenced by eicpy.verify.PythiaHistograms::__init__(), eicpy.verify.DjangohHistograms::__init__(), and Acts::Test::BOOST_AUTO_TEST_CASE().
|
inlinefinalvirtual |
Normal vector return
gctx | The current geometry context object, e.g. alignment |
lposition | is the local position is ignored |
Implements Acts::Surface.
Definition at line 75 of file LineSurface.ipp.
View newest version in sPHENIX GitHub at line 75 of file LineSurface.ipp
References Acts::Test::transform.
Referenced by Acts::Test::BOOST_AUTO_TEST_CASE().
Acts::LineSurface & Acts::LineSurface::operator= | ( | const LineSurface & | other | ) |
Assignment operator
slsf | is the source surface dor copying |
Definition at line 39 of file LineSurface.cpp.
View newest version in sPHENIX GitHub at line 39 of file LineSurface.cpp
References m_bounds, and Acts::Surface::operator=().
Referenced by Acts::Test::LineSurfaceStub::operator=(), Acts::PerigeeSurface::operator=(), and Acts::StrawSurface::operator=().
|
inlineoverridevirtual |
the pathCorrection for derived classes with thickness is by definition 1 for LineSurfaces
Implements Acts::Surface.
Definition at line 64 of file LineSurface.ipp.
View newest version in sPHENIX GitHub at line 64 of file LineSurface.ipp
Referenced by Acts::Test::BOOST_AUTO_TEST_CASE().
|
inlinefinalvirtual |
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 48 of file LineSurface.ipp.
View newest version in sPHENIX GitHub at line 48 of file LineSurface.ipp
References Acts::Test::transform.
Referenced by Acts::Test::BOOST_AUTO_TEST_CASE().
|
protected |
bounds (shared)
Definition at line 284 of file LineSurface.hpp.
View newest version in sPHENIX GitHub at line 284 of file LineSurface.hpp
Referenced by Acts::StrawSurface::operator=(), and operator=().
|
private |
Definition at line 32 of file LineSurface.hpp.
View newest version in sPHENIX GitHub at line 32 of file LineSurface.hpp