ECCE @ EIC Software
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
Acts::PlaneSurface Class Reference

#include <acts/blob/master/Core/include/Acts/Surfaces/PlaneSurface.hpp>

+ Inheritance diagram for Acts::PlaneSurface:
+ Collaboration diagram for Acts::PlaneSurface:

Public Member Functions

 ~PlaneSurface () override=default
 Destructor - defaulted.
 
PlaneSurfaceoperator= (const PlaneSurface &other)
 
const Vector3D normal (const GeometryContext &gctx, const Vector2D &lposition) const final
 
const Vector3D binningPosition (const GeometryContext &gctx, BinningValue bValue) const final
 
SurfaceType type () const override
 Return the surface type.
 
const SurfaceBoundsbounds () const override
 Return method for bounds object of this surfrace.
 
void localToGlobal (const GeometryContext &gctx, const Vector2D &lposition, const Vector3D &momentum, Vector3D &position) const override
 
bool globalToLocal (const GeometryContext &gctx, const Vector3D &position, const Vector3D &momentum, Vector2D &lposition) const override
 
double pathCorrection (const GeometryContext &gctx, const Vector3D &position, const Vector3D &direction) const final
 
Intersection intersectionEstimate (const GeometryContext &gctx, const Vector3D &position, const Vector3D &direction, const BoundaryCheck &bcheck=false) const final
 Straight line intersection schema.
 
Polyhedron polyhedronRepresentation (const GeometryContext &gctx, size_t lseg) const override
 
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< SurfacegetSharedPtr ()
 
std::shared_ptr< const SurfacegetSharedPtr () const
 
Surfaceoperator= (const Surface &other)
 
virtual bool operator== (const Surface &other) const
 
virtual bool operator!= (const Surface &sf) const
 
virtual const Transform3Dtransform (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 DetectorElementBaseassociatedDetectorElement () const
 
const LayerassociatedLayer () const
 
void associateLayer (const Layer &lay)
 
const ISurfaceMaterialsurfaceMaterial () 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
Acts::RotationMatrix3D 
referenceFrame (const GeometryContext &gctx, const Vector3D &position, const Vector3D &momentum) 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 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
 
- Public Member Functions inherited from Acts::GeometryObject
 GeometryObject ()=default
 Defaulted construrctor.
 
 GeometryObject (const GeometryObject &)=default
 Defaulted copy constructor.
 
 GeometryObject (const GeometryID &geoID)
 
GeometryObjectoperator= (const GeometryObject &geoID)
 
const GeometryIDgeoID () const
 
virtual double binningPositionValue (const GeometryContext &gctx, BinningValue bValue) const
 
void assignGeoID (const GeometryID &geoID)
 

Protected Member Functions

 PlaneSurface ()
 Default Constructor - needed for persistency.
 
 PlaneSurface (const PlaneSurface &other)
 
 PlaneSurface (const GeometryContext &gctx, const PlaneSurface &other, const Transform3D &transf)
 
 PlaneSurface (const Vector3D &center, const Vector3D &normal)
 
 PlaneSurface (const std::shared_ptr< const PlanarBounds > &pbounds, const DetectorElementBase &detelement)
 
 PlaneSurface (std::shared_ptr< const Transform3D > htrans, std::shared_ptr< const PlanarBounds > pbounds=nullptr)
 
- 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
PlanarBounds
m_bounds
 the bounds of this surface
 
- Protected Attributes inherited from Acts::Surface
std::shared_ptr< const
Transform3D
m_transform
 
const DetectorElementBasem_associatedDetElement {nullptr}
 Pointer to the a DetectorElementBase.
 
const Layerm_associatedLayer {nullptr}
 
const TrackingVolumem_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 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< TmakeShared (Args &&...args)
 

Detailed Description

Class for a planaer in the TrackingGeometry.

The PlaneSurface extends the Surface class with the possibility to convert local to global positions (vice versa).

PlaneSurface.png

Definition at line 34 of file PlaneSurface.hpp.

View newest version in sPHENIX GitHub at line 34 of file PlaneSurface.hpp

Constructor & Destructor Documentation

Acts::PlaneSurface::PlaneSurface ( )
protected

Default Constructor - needed for persistency.

Acts::PlaneSurface::PlaneSurface ( const PlaneSurface other)
protected

Copy Constructor

Parameters
psfis the source surface for the copy

Definition at line 22 of file PlaneSurface.cpp.

View newest version in sPHENIX GitHub at line 22 of file PlaneSurface.cpp

Acts::PlaneSurface::PlaneSurface ( const GeometryContext gctx,
const PlaneSurface other,
const Transform3D transf 
)
protected

Copy constructor - with shift

Parameters
gctxThe current geometry context object, e.g. alignment
otheris the source cone surface
transfis the additional transfrom applied after copying

Definition at line 25 of file PlaneSurface.cpp.

View newest version in sPHENIX GitHub at line 25 of file PlaneSurface.cpp

Acts::PlaneSurface::PlaneSurface ( const Vector3D center,
const Vector3D normal 
)
protected

Dedicated Constructor with normal vector This is for curvilinear surfaces which are by definition boundless

Parameters
centeris the center position of the surface
normalis thenormal vector of the plane surface

the right-handed coordinate system is defined as T = normal U = Z x T if T not parallel to Z otherwise U = X x T V = T x U

Definition at line 32 of file PlaneSurface.cpp.

View newest version in sPHENIX GitHub at line 32 of file PlaneSurface.cpp

References kdfinder::abs(), Acts::Surface::m_transform, Acts::s_curvilinearProjTolerance, T, and Acts::Surface::transform().

+ Here is the call graph for this function:

Acts::PlaneSurface::PlaneSurface ( const std::shared_ptr< const PlanarBounds > &  pbounds,
const DetectorElementBase detelement 
)
protected

Constructor from DetectorElementBase : Element proxy

Parameters
pboundsare the provided planar bounds (shared)
detelementis the linked detector element to this surface

surfaces representing a detector element must have bounds

Definition at line 54 of file PlaneSurface.cpp.

View newest version in sPHENIX GitHub at line 54 of file PlaneSurface.cpp

References throw_assert.

Acts::PlaneSurface::PlaneSurface ( std::shared_ptr< const Transform3D htrans,
std::shared_ptr< const PlanarBounds pbounds = nullptr 
)
protected

Constructor for Planes with (optional) shared bounds object

Parameters
htranstransform in 3D that positions this surface
pboundsbounds object to describe the actual surface area

Definition at line 62 of file PlaneSurface.cpp.

View newest version in sPHENIX GitHub at line 62 of file PlaneSurface.cpp

Acts::PlaneSurface::~PlaneSurface ( )
overridedefault

Destructor - defaulted.

Member Function Documentation

const Vector3D PlaneSurface::binningPosition ( const GeometryContext gctx,
BinningValue  bValue 
) const
inlinefinalvirtual

The binning position is the position calcualted for a certain binning type

Parameters
gctxThe current geometry context object, e.g. alignment
bValueis the binning type to be used
Returns
position that can beused for this binning

Implements Acts::GeometryObject.

Definition at line 20 of file PlaneSurface.ipp.

View newest version in sPHENIX GitHub at line 20 of file PlaneSurface.ipp

const Acts::SurfaceBounds & Acts::PlaneSurface::bounds ( ) const
overridevirtual

Return method for bounds object of this surfrace.

Implements Acts::Surface.

Definition at line 104 of file PlaneSurface.cpp.

View newest version in sPHENIX GitHub at line 104 of file PlaneSurface.cpp

References Acts::s_noBounds.

bool Acts::PlaneSurface::globalToLocal ( const GeometryContext gctx,
const Vector3D position,
const Vector3D momentum,
Acts::Vector2D lposition 
) const
overridevirtual

Global to local transformation For planar surfaces the momentum is ignroed in the global to local transformation

Parameters
gctxThe current geometry context object, e.g. alignment
positionglobal 3D position - considered to be on surface but not inside bounds (check is done)
momentumglobal 3D momentum representation (optionally ignored)
lpositionlocal 2D position to be filled (given by reference for method symmetry)
Returns
boolean indication if operation was successful (fail means global position was not on surface)

the chance that there is no transform is almost 0, let's apply it

Implements Acts::Surface.

Definition at line 87 of file PlaneSurface.cpp.

View newest version in sPHENIX GitHub at line 87 of file PlaneSurface.cpp

References Acts::s_onSurfaceTolerance, and Acts::Test::transform.

Intersection PlaneSurface::intersectionEstimate ( const GeometryContext gctx,
const Vector3D position,
const Vector3D direction,
const BoundaryCheck bcheck = false 
) const
inlinefinalvirtual

Straight line intersection schema.

Parameters
gctxThe current geometry context object, e.g. alignment
positionThe start position of the intersection attempt
directionThe direction of the interesection attempt, (
Note
expected to be normalized)
Parameters
bcheckThe boundary check directive

mathematical motivation:

the equation of the plane is given by:
$ \vec n \cdot \vec x = \vec n \cdot \vec p,$
where $ \vec n = (n_{x}, n_{y}, n_{z})$ denotes the normal vector of the plane, $ \vec p = (p_{x}, p_{y}, p_{z})$ one specific point on the plane and $ \vec x = (x,y,z) $ all possible points on the plane.

Given a line with:
$ \vec l(u) = \vec l_{1} + u \cdot \vec v $,
the solution for $ u $ can be written: $ u = \frac{\vec n (\vec p - \vec l_{1})}{\vec n \vec v}$
If the denominator is 0 then the line lies:

  • either in the plane
  • perpendicular to the normal of the plane
Returns
the Intersection object

Implements Acts::Surface.

Definition at line 32 of file PlaneSurface.ipp.

View newest version in sPHENIX GitHub at line 32 of file PlaneSurface.ipp

References Acts::PlanarHelper::intersectionEstimate(), and Acts::Test::transform.

+ Here is the call graph for this function:

void Acts::PlaneSurface::localToGlobal ( const GeometryContext gctx,
const Vector2D lposition,
const Vector3D momentum,
Vector3D position 
) const
overridevirtual

Local to global transformation For planar surfaces the momentum is ignroed in the local to global transformation

Parameters
gctxThe current geometry context object, e.g. alignment
lpositionlocal 2D position in specialized surface frame
momentumglobal 3D momentum representation (optionally ignored)
positionglobal 3D position to be filled (given by reference for method symmetry)

the chance that there is no transform is almost 0, let's apply it

Implements Acts::Surface.

Definition at line 78 of file PlaneSurface.cpp.

View newest version in sPHENIX GitHub at line 78 of file PlaneSurface.cpp

References Acts::eLOC_X, Acts::eLOC_Y, and Acts::Test::transform.

std::string Acts::PlaneSurface::name ( ) const
overridevirtual

Return properly formatted class name for screen output.

Implements Acts::Surface.

Definition at line 100 of file PlaneSurface.cpp.

View newest version in sPHENIX GitHub at line 100 of file PlaneSurface.cpp

const Vector3D PlaneSurface::normal ( const GeometryContext gctx,
const Vector2D lposition 
) const
inlinefinalvirtual

Normal vector return

Parameters
gctxThe current geometry context object, e.g. alignment
lpositionis the local position is ignored

return a Vector3D by value

Implements Acts::Surface.

Definition at line 13 of file PlaneSurface.ipp.

View newest version in sPHENIX GitHub at line 13 of file PlaneSurface.ipp

References Acts::Test::transform.

Acts::PlaneSurface & Acts::PlaneSurface::operator= ( const PlaneSurface other)

Assignment operator

Parameters
otherThe source PlaneSurface for assignment

Definition at line 66 of file PlaneSurface.cpp.

View newest version in sPHENIX GitHub at line 66 of file PlaneSurface.cpp

References m_bounds, and Acts::Surface::operator=().

+ Here is the call graph for this function:

double PlaneSurface::pathCorrection ( const GeometryContext gctx,
const Vector3D position,
const Vector3D direction 
) const
inlinefinalvirtual

Method that calculates the correction due to incident angle

Parameters
positionglobal 3D position - considered to be on surface but not inside bounds (check is done)
directionglobal 3D momentum direction (ignored for PlaneSurface)
Note
this is the final implementation of the pathCorrection function
Returns
a double representing the scaling factor

Implements Acts::Surface.

Definition at line 25 of file PlaneSurface.ipp.

View newest version in sPHENIX GitHub at line 25 of file PlaneSurface.ipp

References kdfinder::abs(), and CLHEP::normal().

+ Here is the call graph for this function:

Acts::Polyhedron Acts::PlaneSurface::polyhedronRepresentation ( const GeometryContext gctx,
size_t  lseg 
) const
overridevirtual

Return a Polyhedron for the surfaces

Parameters
gctxThe current geometry context object, e.g. alignment
lsegNumber of segments along curved lines, it represents the full 2*M_PI coverange, if lseg is set to 1 only the extrema are given
Returns
A list of vertices and a face/facett description of it

Implements Acts::Surface.

Definition at line 111 of file PlaneSurface.cpp.

View newest version in sPHENIX GitHub at line 111 of file PlaneSurface.cpp

References kdfinder::abs(), Acts::detail::FacesHelper::convexFaceMesh(), Acts::detail::FacesHelper::cylindricalFaceMesh(), Acts::SurfaceBounds::eEllipse, Acts::EllipseBounds::eHalfPhiSector, Acts::EllipseBounds::eInnerRx, Acts::EllipseBounds::eInnerRy, M_PI, Acts::s_epsilon, Acts::Test::transform, and Acts::Polyhedron::vertices.

+ Here is the call graph for this function:

Acts::Surface::SurfaceType Acts::PlaneSurface::type ( ) const
overridevirtual

Return the surface type.

Implements Acts::Surface.

Definition at line 74 of file PlaneSurface.cpp.

View newest version in sPHENIX GitHub at line 74 of file PlaneSurface.cpp

References Acts::Surface::Plane.

Member Data Documentation

std::shared_ptr<const PlanarBounds> Acts::PlaneSurface::m_bounds
protected

the bounds of this surface

Definition at line 200 of file PlaneSurface.hpp.

View newest version in sPHENIX GitHub at line 200 of file PlaneSurface.hpp

Referenced by Acts::PlaneLayer::buildApproachDescriptor(), and operator=().

friend Acts::PlaneSurface::Surface
private

Definition at line 35 of file PlaneSurface.hpp.

View newest version in sPHENIX GitHub at line 35 of file PlaneSurface.hpp


The documentation for this class was generated from the following files: