ECCE @ EIC Software
Reference for
ECCE @ EIC
simulation and reconstruction software on GitHub
|
#include <acts/blob/master/Core/include/Acts/Surfaces/LineSurface.hpp>
Public Member Functions | |
~LineSurface () override=default | |
Destructor - defaulted. | |
LineSurface ()=delete | |
Default Constructor - deleted. | |
LineSurface & | operator= (const LineSurface &other) |
const Vector3D | normal (const GeometryContext &gctx, const Vector2D &lposition) const final |
const Vector3D | binningPosition (const GeometryContext &gctx, BinningValue bValue) const final |
const 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 |
const BoundRowVector | derivativeFactors (const GeometryContext &gctx, const Vector3D &position, const Vector3D &direction, const RotationMatrix3D &rft, const BoundToFreeMatrix &jacobian) const final |
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=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 */. | |
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 const Vector3D | center (const GeometryContext &gctx) const |
virtual const Vector3D | normal (const GeometryContext &gctx, const Vector3D &position) 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 const RotationMatrix3D | initJacobianToLocal (const GeometryContext &gctx, FreeToBoundMatrix &jacobian, const Vector3D &position, const Vector3D &direction) const |
virtual SurfaceIntersection | intersect (const GeometryContext &gctx, const Vector3D &position, const Vector3D &direction, const BoundaryCheck &bcheck) const |
virtual std::ostream & | toStream (const GeometryContext &gctx, std::ostream &sl) const |
virtual Polyhedron | polyhedronRepresentation (const GeometryContext &gctx, size_t lseg) const =0 |
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 | |
LineSurface (std::shared_ptr< const Transform3D > htrans, double radius, double halez) | |
LineSurface (std::shared_ptr< const Transform3D > htrans, 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 &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 LineBounds > | 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 | |
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
htrans | The transform that positions the surface in the global frame |
radius | The straw radius |
halez | The half length in z |
Definition at line 18 of file LineSurface.cpp.
View newest version in sPHENIX GitHub at line 18 of file LineSurface.cpp
|
protected |
Constructor from Transform3D and a shared bounds object
htrans | The transform that positions the surface in the global frame |
lbounds | The bounds describing the straw dimensions, can be optionally nullptr |
Definition at line 24 of file LineSurface.cpp.
View newest version in sPHENIX GitHub at line 24 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 30 of file LineSurface.cpp.
View newest version in sPHENIX GitHub at line 30 of file LineSurface.cpp
References throw_assert.
|
protected |
Copy constructor
other | The source surface for copying |
Definition at line 36 of file LineSurface.cpp.
View newest version in sPHENIX GitHub at line 36 of file LineSurface.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 39 of file LineSurface.cpp.
View newest version in sPHENIX GitHub at line 39 of file LineSurface.cpp
|
overridedefault |
Destructor - defaulted.
|
delete |
Default Constructor - deleted.
|
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 76 of file LineSurface.ipp.
View newest version in sPHENIX GitHub at line 76 of file LineSurface.ipp
|
inlinefinalvirtual |
This method returns the bounds of the Surface by reference */.
Implements Acts::Surface.
Definition at line 87 of file LineSurface.ipp.
View newest version in sPHENIX GitHub at line 87 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 189 of file LineSurface.ipp.
View newest version in sPHENIX GitHub at line 189 of file LineSurface.ipp
References Acts::eBoundParametersSize, norm, and 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::eLOC_R 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) |
lposition | local 2D position to be filled (given by reference for method symmetry) |
Implements Acts::Surface.
Definition at line 29 of file LineSurface.ipp.
View newest version in sPHENIX GitHub at line 29 of file LineSurface.ipp
References Acts::eLOC_R, Acts::VectorHelpers::perp(), position, sign(), and Acts::Test::transform.
|
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 138 of file LineSurface.ipp.
View newest version in sPHENIX GitHub at line 138 of file LineSurface.ipp
References Acts::VectorHelpers::cross(), Acts::eLOC_0, Acts::ePHI, Acts::eQOP, Acts::eT, Acts::eTHETA, 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 94 of file LineSurface.ipp.
View newest version in sPHENIX GitHub at line 94 of file LineSurface.ipp
References denom, max, norm, position, Acts::s_onSurfaceTolerance, Acts::Test::transform, and Acts::UnitConstants::u.
|
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) |
position | is the global position which is filled |
Implements Acts::Surface.
Definition at line 13 of file LineSurface.ipp.
View newest version in sPHENIX GitHub at line 13 of file LineSurface.ipp
References Acts::eLOC_R, Acts::eLOC_Z, and Acts::Test::transform.
|
inlineoverridevirtual |
Return properly formatted class name for screen output */.
Implements Acts::Surface.
Reimplemented in Acts::StrawSurface, and Acts::PerigeeSurface.
Definition at line 50 of file LineSurface.ipp.
View newest version in sPHENIX GitHub at line 50 of file LineSurface.ipp
|
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 81 of file LineSurface.ipp.
View newest version in sPHENIX GitHub at line 81 of file LineSurface.ipp
References Acts::Test::transform.
Acts::LineSurface & Acts::LineSurface::operator= | ( | const LineSurface & | other | ) |
Assignment operator
slsf | is the source surface dor copying |
Definition at line 46 of file LineSurface.cpp.
View newest version in sPHENIX GitHub at line 46 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 70 of file LineSurface.ipp.
View newest version in sPHENIX GitHub at line 70 of file LineSurface.ipp
|
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 54 of file LineSurface.ipp.
View newest version in sPHENIX GitHub at line 54 of file LineSurface.ipp
References Acts::Test::transform.
|
protected |
bounds (shared)
Definition at line 261 of file LineSurface.hpp.
View newest version in sPHENIX GitHub at line 261 of file LineSurface.hpp
Referenced by operator=(), and Acts::StrawSurface::operator=().
|
private |
Definition at line 32 of file LineSurface.hpp.
View newest version in sPHENIX GitHub at line 32 of file LineSurface.hpp