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

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

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

Public Member Functions

 ~PlaneSurface () override=default
 
 PlaneSurface ()=delete
 
PlaneSurfaceoperator= (const PlaneSurface &other)
 
Vector3D normal (const GeometryContext &gctx, const Vector2D &lposition) const final
 
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.
 
Vector3D localToGlobal (const GeometryContext &gctx, const Vector2D &lposition, const Vector3D &momentum) const override
 
Result< Vector2DglobalToLocal (const GeometryContext &gctx, const Vector3D &position, const Vector3D &momentum) const override
 
double pathCorrection (const GeometryContext &gctx, const Vector3D &position, const Vector3D &direction) const final
 
SurfaceIntersection intersect (const GeometryContext &gctx, const Vector3D &position, const Vector3D &direction, const BoundaryCheck &bcheck=false) const final
 Straight line intersection.
 
Polyhedron polyhedronRepresentation (const GeometryContext &gctx, size_t lseg) const override
 
std::string name () const override
 Return properly formatted class name for screen output.
 
LocalCartesianToBoundLocalMatrix localCartesianToBoundLocalDerivative (const GeometryContext &gctx, const Vector3D &position) const final
 
- 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 Vector3D center (const GeometryContext &gctx) const
 
virtual Vector3D normal (const GeometryContext &gctx, const Vector3D &position) const
 
virtual 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 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 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)
 
GeometryObjectoperator= (const GeometryObject &geometryId)
 
const GeometryIdentifiergeometryId () const
 
virtual double binningPositionValue (const GeometryContext &gctx, BinningValue bValue) const
 
void assignGeometryId (const GeometryIdentifier &geometryId)
 

Protected Member Functions

 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 (const Transform3D &htrans, std::shared_ptr< const PlanarBounds > pbounds=nullptr)
 
- 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
PlanarBounds
m_bounds
 the bounds of this surface
 
- Protected Attributes inherited from Acts::Surface
Transform3D m_transform = Transform3D::Identity()
 
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
GeometryIdentifier m_geometryId
 

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 35 of file PlaneSurface.hpp.

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

Constructor & Destructor Documentation

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

Copy Constructor

Parameters
psfis the source surface for the copy

Definition at line 23 of file PlaneSurface.cpp.

View newest version in sPHENIX GitHub at line 23 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 26 of file PlaneSurface.cpp.

View newest version in sPHENIX GitHub at line 26 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 31 of file PlaneSurface.cpp.

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

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

+ 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 52 of file PlaneSurface.cpp.

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

References throw_assert.

Acts::PlaneSurface::PlaneSurface ( 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 60 of file PlaneSurface.cpp.

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

Acts::PlaneSurface::~PlaneSurface ( )
overridedefault
Acts::PlaneSurface::PlaneSurface ( )
delete

Member Function Documentation

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 16 of file PlaneSurface.ipp.

View newest version in sPHENIX GitHub at line 16 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 98 of file PlaneSurface.cpp.

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

References Acts::s_noBounds.

Acts::Result< Acts::Vector2D > Acts::PlaneSurface::globalToLocal ( const GeometryContext gctx,
const Vector3D position,
const Vector3D momentum 
) 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
a Result<Vector2D> which can be !ok() if the operation fails

Implements Acts::Surface.

Definition at line 83 of file PlaneSurface.cpp.

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

References Acts::VectorHelpers::position(), Acts::s_onSurfaceTolerance, and Acts::Test::transform.

+ Here is the call graph for this function:

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

Straight line intersection.

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 SurfaceIntersection object

Implements Acts::Surface.

Definition at line 28 of file PlaneSurface.ipp.

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

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

+ Here is the call graph for this function:

LocalCartesianToBoundLocalMatrix PlaneSurface::localCartesianToBoundLocalDerivative ( const GeometryContext gctx,
const Vector3D position 
) const
inlinefinalvirtual

Calculate the derivative of bound track parameters local position w.r.t. position in local 3D Cartesian coordinates

Parameters
gctxThe current geometry context object, e.g. alignment
positionThe position of the paramters in global
Returns
Derivative of bound local position w.r.t. position in local 3D cartesian coordinates

Implements Acts::Surface.

Definition at line 51 of file PlaneSurface.ipp.

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

Acts::Vector3D Acts::PlaneSurface::localToGlobal ( const GeometryContext gctx,
const Vector2D lposition,
const Vector3D momentum 
) 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)
Returns
the global position by value

Implements Acts::Surface.

Definition at line 76 of file PlaneSurface.cpp.

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

References Acts::eBoundLoc0, Acts::eBoundLoc1, 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 94 of file PlaneSurface.cpp.

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

Referenced by eicpy.verify.PythiaHistograms::__init__(), and eicpy.verify.DjangohHistograms::__init__().

+ Here is the caller graph for this function:

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 9 of file PlaneSurface.ipp.

View newest version in sPHENIX GitHub at line 9 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 64 of file PlaneSurface.cpp.

View newest version in sPHENIX GitHub at line 64 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 21 of file PlaneSurface.ipp.

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

References kdfinder::abs().

+ 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 105 of file PlaneSurface.cpp.

View newest version in sPHENIX GitHub at line 105 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 72 of file PlaneSurface.cpp.

View newest version in sPHENIX GitHub at line 72 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 207 of file PlaneSurface.hpp.

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

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

friend Acts::PlaneSurface::Surface
private

Definition at line 36 of file PlaneSurface.hpp.

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


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