Analysis Software
Documentation for sPHENIX simulation 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)
 
Vector3 normal (const GeometryContext &gctx, const Vector2 &lposition) const final
 
Vector3 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.
 
Vector3 localToGlobal (const GeometryContext &gctx, const Vector2 &lposition, const Vector3 &direction) const override
 
Result< Vector2globalToLocal (const GeometryContext &gctx, const Vector3 &position, const Vector3 &direction, double tolerance=s_onSurfaceTolerance) const override
 
double pathCorrection (const GeometryContext &gctx, const Vector3 &position, const Vector3 &direction) const final
 
SurfaceMultiIntersection intersect (const GeometryContext &gctx, const Vector3 &position, const Vector3 &direction, const BoundaryCheck &bcheck=false, ActsScalar tolerance=s_onSurfaceTolerance) 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.
 
ActsMatrix< 2, 3 > localCartesianToBoundLocalDerivative (const GeometryContext &gctx, const Vector3 &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 Transform3transform (const GeometryContext &gctx) const
 
virtual Vector3 center (const GeometryContext &gctx) const
 
virtual Vector3 normal (const GeometryContext &gctx, const Vector3 &position) const
 
virtual Vector3 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 assignDetectorElement (const DetectorElementBase &detelement)
 
void assignSurfaceMaterial (std::shared_ptr< const ISurfaceMaterial > material)
 
bool isOnSurface (const GeometryContext &gctx, const Vector3 &position, const Vector3 &direction, const BoundaryCheck &bcheck=true) const
 
virtual bool insideBounds (const Vector2 &lposition, const BoundaryCheck &bcheck=true) const
 
virtual Acts::RotationMatrix3 referenceFrame (const GeometryContext &gctx, const Vector3 &position, const Vector3 &direction) const
 
virtual BoundToFreeMatrix boundToFreeJacobian (const GeometryContext &gctx, const BoundVector &boundParams) const
 
virtual FreeToBoundMatrix freeToBoundJacobian (const GeometryContext &gctx, const FreeVector &parameters) const
 
virtual FreeToPathMatrix freeToPathDerivative (const GeometryContext &gctx, const FreeVector &parameters) const
 
virtual std::ostream & toStream (const GeometryContext &gctx, std::ostream &sl) const
 
std::string toString (const GeometryContext &gctx) const
 
AlignmentToBoundMatrix alignmentToBoundDerivative (const GeometryContext &gctx, const FreeVector &parameters, const FreeVector &pathDerivative) const
 
virtual AlignmentToPathMatrix alignmentToPathDerivative (const GeometryContext &gctx, const FreeVector &parameters) const
 
- Public Member Functions inherited from Acts::GeometryObject
 GeometryObject ()=default
 Defaulted constructor.
 
 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 Transform3 &transform)
 
 PlaneSurface (const Vector3 &center, const Vector3 &normal)
 
 PlaneSurface (std::shared_ptr< const PlanarBounds > pbounds, const DetectorElementBase &detelement)
 
 PlaneSurface (const Transform3 &transform, std::shared_ptr< const PlanarBounds > pbounds=nullptr)
 
- 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
PlanarBounds
m_bounds
 the bounds of this surface
 
- Protected Attributes inherited from Acts::Surface
Transform3 m_transform = Transform3::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 description.
 
- 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)
 
- Static Public Attributes inherited from Acts::Surface
static std::array< std::string,
SurfaceType::Other > 
s_surfaceTypeNames
 Helper strings for screen output.
 

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

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

Constructor & Destructor Documentation

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

Copy Constructor

Parameters
otheris the source surface for the copy

Definition at line 28 of file PlaneSurface.cpp.

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

Acts::PlaneSurface::PlaneSurface ( const GeometryContext gctx,
const PlaneSurface other,
const Transform3 transform 
)
protected

Copy constructor - with shift

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

Definition at line 31 of file PlaneSurface.cpp.

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

Acts::PlaneSurface::PlaneSurface ( const Vector3 center,
const Vector3 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 38 of file PlaneSurface.cpp.

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

References Acts::Surface::m_transform, Acts::s_curvilinearProjTolerance, and Acts::UnitConstants::T.

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

Constructor from DetectorElementBase : Element proxy

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

surfaces representing a detector element must have bounds

Definition at line 59 of file PlaneSurface.cpp.

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

References m_bounds, and throw_assert.

Acts::PlaneSurface::PlaneSurface ( const Transform3 transform,
std::shared_ptr< const PlanarBounds pbounds = nullptr 
)
protected

Constructor for Planes with (optional) shared bounds object

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

Definition at line 66 of file PlaneSurface.cpp.

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

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

Member Function Documentation

Acts::Vector3 Acts::PlaneSurface::binningPosition ( const GeometryContext gctx,
BinningValue  bValue 
) const
finalvirtual

The binning position is the position calculated 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 164 of file PlaneSurface.cpp.

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

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

Return method for bounds object of this surfrace.

Implements Acts::Surface.

Definition at line 103 of file PlaneSurface.cpp.

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

References Acts::s_noBounds.

Acts::Result< Acts::Vector2 > Acts::PlaneSurface::globalToLocal ( const GeometryContext gctx,
const Vector3 position,
const Vector3 direction,
double  tolerance = s_onSurfaceTolerance 
) const
overridevirtual

Global to local transformation

Note
For planar surfaces the momentum direction is ignored 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)
directionglobal 3D momentum direction (optionally ignored) method symmetry)
toleranceoptional tolerance within which a point is considered valid on surface
Returns
a Result<Vector2> which can be !ok() if the operation fails

Implements Acts::Surface.

Definition at line 89 of file PlaneSurface.cpp.

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

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

Acts::SurfaceMultiIntersection Acts::PlaneSurface::intersect ( const GeometryContext gctx,
const Vector3 position,
const Vector3 direction,
const BoundaryCheck bcheck = false,
ActsScalar  tolerance = s_onSurfaceTolerance 
) const
finalvirtual

Straight line intersection.

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

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

Implements Acts::Surface.

Definition at line 176 of file PlaneSurface.cpp.

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

References Acts::PlanarHelper::intersect(), Acts::Intersection< 3 >::invalid(), utils::status, and Acts::Test::transform.

+ Here is the call graph for this function:

Acts::ActsMatrix< 2, 3 > Acts::PlaneSurface::localCartesianToBoundLocalDerivative ( const GeometryContext gctx,
const Vector3 position 
) const
finalvirtual

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 parameters in global
Returns
Derivative of bound local position w.r.t. position in local 3D cartesian coordinates

Implements Acts::Surface.

Definition at line 203 of file PlaneSurface.cpp.

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

Acts::Vector3 Acts::PlaneSurface::localToGlobal ( const GeometryContext gctx,
const Vector2 lposition,
const Vector3 direction 
) const
overridevirtual

Local to global transformation

Note
For planar surfaces the momentum direction is ignored in the local to global transformation
Parameters
gctxThe current geometry context object, e.g. alignment
lpositionlocal 2D position in specialized surface frame
directionglobal 3D momentum direction (optionally ignored)
Returns
the global position by value

Implements Acts::Surface.

Definition at line 82 of file PlaneSurface.cpp.

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

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

Acts::Vector3 Acts::PlaneSurface::normal ( const GeometryContext gctx,
const Vector2 lposition 
) const
finalvirtual

Normal vector return

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

return a Vector3 by value

Implements Acts::Surface.

Definition at line 157 of file PlaneSurface.cpp.

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

References Acts::Test::transform.

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

Assignment operator

Parameters
otherThe source PlaneSurface for assignment

Definition at line 70 of file PlaneSurface.cpp.

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

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

+ Here is the call graph for this function:

double Acts::PlaneSurface::pathCorrection ( const GeometryContext gctx,
const Vector3 position,
const Vector3 direction 
) const
finalvirtual

Method that calculates the correction due to incident angle

Parameters
gctxThe current geometry context object, e.g. alignment
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 169 of file PlaneSurface.cpp.

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

References Acts::Surface::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 110 of file PlaneSurface.cpp.

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

References bounds, Acts::detail::FacesHelper::convexFaceMesh(), Acts::detail::FacesHelper::cylindricalFaceMesh(), Acts::SurfaceBounds::eEllipse, Acts::EllipseBounds::eHalfPhiSector, Acts::EllipseBounds::eInnerRx, Acts::EllipseBounds::eInnerRy, Acts::s_epsilon, Acts::Test::transform, and ActsExamples::HepMC3Event::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 78 of file PlaneSurface.cpp.

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

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

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

friend Acts::PlaneSurface::Surface
private

Definition at line 44 of file PlaneSurface.hpp.

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


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