ATLAS Offline Software
Loading...
Searching...
No Matches
Trk::StraightLineSurface Class Reference

Class for a StraightLineSurface in the ATLAS detector to describe dirft tube and straw like detectors. More...

#include <StraightLineSurface.h>

Inheritance diagram for Trk::StraightLineSurface:
Collaboration diagram for Trk::StraightLineSurface:

Public Types

using ChargedTrackParametersUniquePtr
 Unique ptr types.
using NeutralTrackParametersUniquePtr

Public Member Functions

 StraightLineSurface ()
 Default Constructor - needed for persistency.
 StraightLineSurface (const StraightLineSurface &slsf)
 Copy constructor.
StraightLineSurfaceoperator= (const StraightLineSurface &slsf)
 Assignment operator.
 StraightLineSurface (StraightLineSurface &&slsf) noexcept=default
 Move constructor.
StraightLineSurfaceoperator= (StraightLineSurface &&slsf) noexcept=default
 Move Assignment operator.
virtual ~StraightLineSurface ()=default
 Destructor.
 StraightLineSurface (const Amg::Transform3D &htrans)
 Constructor from Amg Transform ref (boundless surface)
 StraightLineSurface (const Amg::Transform3D &htrans, double radius, double halez)
 Constructor from Amg::Transform and bounds.
 StraightLineSurface (const TrkDetElementBase &detelement, const Identifier &id)
 Constructor from TrkDetElementBase and Element identifier.
 StraightLineSurface (const StraightLineSurface &slsf, const Amg::Transform3D &transf)
 Copy constructor with shift.
virtual bool operator== (const Surface &sf) const override
 Equality operator.
bool operator== (const StraightLineSurface &cf) const
virtual StraightLineSurfaceclone () const override final
 Implicit constructor.
virtual Surface::ChargedTrackParametersUniquePtr createUniqueTrackParameters (double l1, double l2, double phi, double theta, double qop, std::optional< AmgSymMatrix(5)> cov=std::nullopt) const override final
 Use the Surface as a ParametersBase constructor, from local parameters - charged.
virtual Surface::ChargedTrackParametersUniquePtr createUniqueTrackParameters (const Amg::Vector3D &position, const Amg::Vector3D &momentum, double charge, std::optional< AmgSymMatrix(5)> cov=std::nullopt) const override final
 Use the Surface as a ParametersBase constructor, from global parameters - charged.
virtual NeutralTrackParametersUniquePtr createUniqueNeutralParameters (double l1, double l2, double phi, double theta, double qop, std::optional< AmgSymMatrix(5)> cov=std::nullopt) const override final
 Use the Surface as a ParametersBase constructor, from local parameters - neutral.
virtual NeutralTrackParametersUniquePtr createUniqueNeutralParameters (const Amg::Vector3D &position, const Amg::Vector3D &momentum, double charge, std::optional< AmgSymMatrix(5)> cov=std::nullopt) const override final
 Use the Surface as a ParametersBase constructor, from global parameters - neutral.
template<int DIM, class T>
std::unique_ptr< ParametersT< DIM, T, StraightLineSurface > > createUniqueParameters (double l1, double l2, double phi, double theta, double qop, std::optional< AmgSymMatrix(DIM)> cov=std::nullopt) const
 Use the Surface as a ParametersBase constructor, from local parameters.
template<int DIM, class T>
std::unique_ptr< ParametersT< DIM, T, StraightLineSurface > > createUniqueParameters (const Amg::Vector3D &position, const Amg::Vector3D &momentum, double charge, std::optional< AmgSymMatrix(DIM)> cov=std::nullopt) const
 Use the Surface as a ParametersBase constructor, from global parameters.
virtual Amg::RotationMatrix3D measurementFrame (const Amg::Vector3D &glopos, const Amg::Vector3D &glomom) const override final
 Return the measurement frame - this is needed for alignment, in particular for StraightLine and Perigee Surface.
virtual constexpr SurfaceType type () const override final
 Return the surface type.
virtual void localToGlobal (const Amg::Vector2D &locp, const Amg::Vector3D &mom, Amg::Vector3D &glob) const override final
 Specified for StraightLineSurface: LocalToGlobal method without dynamic memory allocation.
virtual bool globalToLocal (const Amg::Vector3D &glob, const Amg::Vector3D &mom, Amg::Vector2D &loc) const override final
 Specified for StraightLineSurface: GlobalToLocal method without dynamic memory allocation This method is the true global->local transformation.
Amg::Vector3D localToGlobal (const Trk::LocalParameters &locpars, const Amg::Vector3D &glomom, double locZ) const
 Special method for StraightLineSurface - providing a different z estimate.
const Amg::Vector3DlineDirection () const
 Special method for StraightLineSurface - provides the Line direction from cache: speedup.
virtual Intersection straightLineIntersection (const Amg::Vector3D &pos, const Amg::Vector3D &dir, bool forceDir, Trk::BoundaryCheck bchk) const override final
 fast straight line intersection schema - standard: provides closest intersection and (signed) path length forceDir is to provide the closest forward solution
virtual DistanceSolution straightLineDistanceEstimate (const Amg::Vector3D &pos, const Amg::Vector3D &dir) const override final
 fast straight line distance evaluation to Surface
virtual DistanceSolution straightLineDistanceEstimate (const Amg::Vector3D &pos, const Amg::Vector3D &dir, bool Bound) const override final
 fast straight line distance evaluation to Surface - with bound option
virtual double pathCorrection (const Amg::Vector3D &, const Amg::Vector3D &) const override final
 the pathCorrection for derived classes with thickness
virtual bool isOnSurface (const Amg::Vector3D &glopo, const BoundaryCheck &bchk=true, double tol1=0., double tol2=0.) const override final
 This method checks if the provided GlobalPosition is inside the assigned straw radius, but no check is done whether the GlobalPosition is inside bounds or not.
virtual const SurfaceBoundsbounds () const override final
 This method returns the bounds of the Surface by reference.
virtual bool insideBounds (const Amg::Vector2D &locpos, double tol1=0., double tol2=0.) const override final
 This surface calls the iside method of the bouns.
virtual bool insideBoundsCheck (const Amg::Vector2D &locpos, const BoundaryCheck &bchk) const override final
virtual std::string name () const override final
 Return properly formatted class name for screen output.
bool operator!= (const Surface &sf) const
 Non-equality operator.
std::unique_ptr< SurfaceuniqueClone () const
 NVI method returning unique_ptr clone.
const Amg::Transform3DcachedTransform () const
 Return the cached transformation directly.
const Amg::Transform3Dtransform () const
 Returns HepGeom::Transform3D by reference.
const Amg::Vector3Dcenter () const
 Returns the center position of the Surface.
virtual const Amg::Vector3Dnormal () const
 Returns the normal vector of the Surface (i.e.
virtual Amg::Vector3D normal (const Amg::Vector2D &lp) const
 Returns a normal vector at a specific local position.
virtual const Amg::Vector3DglobalReferencePoint () const
 Returns a global reference point on the surface, for PlaneSurface, StraightLineSurface, PerigeeSurface this is equal to center(), for CylinderSurface and DiscSurface this is a new member.
const TrkDetElementBaseassociatedDetectorElement () const
 return associated Detector Element
Identifier associatedDetectorElementIdentifier () const
 return Identifier of the associated Detector Element
const Trk::LayerassociatedLayer () const
 return the associated Layer
const Trk::MaterialLayermaterialLayer () const
 return the material Layer
Trk::MaterialLayermaterialLayer ()
virtual const Trk::SurfacebaseSurface () const
 return the base surface (simplified for persistification)
std::optional< Amg::Vector2DpositionOnSurface (const Amg::Vector3D &glopo, const BoundaryCheck &bchk=true, double tol1=0., double tol2=0.) const
 positionOnSurface() returns the LocalPosition on the Surface,
If BoundaryCheck==false it just returns the value of globalToLocal (including nullptr possibility), if BoundaryCheck==true it checks whether the point is inside bounds or not (returns std::nullopt in this case).
template<class T>
bool onSurface (const T &parameters, const BoundaryCheck &bchk=BoundaryCheck(true)) const
 The templated Parameters OnSurface method - checks on surface pointer first.
Amg::Vector3D localToGlobal (const Amg::Vector2D &locpos) const
 This method returns the GlobalPosition from a LocalPosition uses the per surface localToGlobal.
Amg::Vector3D localToGlobal (const Amg::Vector2D &locpos, const Amg::Vector3D &glomom) const
 This method returns the GlobalPosition from a LocalPosition The LocalPosition can be outside Surface bounds - for generality with momentum.
Amg::Vector3D localToGlobal (const LocalParameters &locpars) const
 This method returns the GlobalPosition from LocalParameters The LocalParameters can be outside Surface bounds.
Amg::Vector3D localToGlobal (const LocalParameters &locpars, const Amg::Vector3D &glomom) const
 This method returns the GlobalPosition from LocalParameters The LocalParameters can be outside Surface bounds - for generality with momentum.
std::optional< Amg::Vector2DglobalToLocal (const Amg::Vector3D &glopos, double tol=0.) const
 This method returns the LocalPosition from a provided GlobalPosition.
std::optional< Amg::Vector2DglobalToLocal (const Amg::Vector3D &glopos, const Amg::Vector3D &glomom) const
 This method returns the LocalPosition from a provided GlobalPosition.
virtual Amg::Vector2D localParametersToPosition (const LocalParameters &locpars) const
 Optionally specified by each surface type : LocalParameters to Vector2D.
template<typename T>
Intersection straightLineIntersection (const T &pars, bool forceDir=false, const Trk::BoundaryCheck &bchk=false) const
 fst straight line intersection schema - templated for charged and neutral parameters
bool isFree () const
 Returns 'true' if this surface is 'free', i.e.
bool isActive () const
 Return 'true' if this surface is owned by the detector element.
void setTransform (const Amg::Transform3D &trans)
 Set the transform updates center and normal.
void setOwner (SurfaceOwner x)
 set Ownership
SurfaceOwner owner () const
 return ownership
void setMaterialLayer (std::shared_ptr< Trk::MaterialLayer > mlay)
 set material layer
virtual MsgStream & dump (MsgStream &sl) const
 Output Method for MsgStream, to be overloaded by child classes.
virtual std::ostream & dump (std::ostream &sl) const
 Output Method for std::ostream, to be overloaded by child classes.
void associateLayer (const Layer &lay)
 method to associate a Trk::Layer.

Static Public Member Functions

static std::size_t numberOfInstantiations ()

Static Public Attributes

static constexpr SurfaceType staticType = SurfaceType::Line
static std::atomic_size_t s_numberOfInstantiations

Protected Member Functions

Amg::Transform3D inverseTransformHelper () const
 Helper method to factorize in one place common operations calculate inverse transofrm and multiply with position.
Amg::Vector3D inverseTransformMultHelper (const Amg::Vector3D &glopos) const

Protected Attributes

CxxUtils::CachedValue< Amg::Vector3Dm_lineDirection
 bounds (shared)
std::shared_ptr< const CylinderBoundsm_bounds
 NoBounds as return object when no bounds are declared.
std::unique_ptr< Transformsm_transforms {}
 Unique Pointer to the Transforms struct.
const TrkDetElementBasem_associatedDetElement {}
 Not owning Pointer to the Detector Element.
Identifier m_associatedDetElementId {}
 Identifier to the Detector Element.
const Layerm_associatedLayer {}
 The associated layer Trk::Layer This is the layer in which the Surface is embedded.
std::shared_ptr< MaterialLayerm_materialLayer {}
 Possibility to attach a material description to the surface.
SurfaceOwner m_owner {SurfaceOwner::noOwn}
 enum for surface owner : default free surface

Static Protected Attributes

static const NoBounds s_boundless
static constexpr double s_onSurfaceTolerance = 10e-5
 Tolerance for being on Surface.

Friends

template<class SURFACE, class BOUNDS_CNV>
class ::BoundSurfaceCnv_p1
 < data members
template<class SURFACE, class BOUNDS_CNV>
class ::BoundSurfaceCnv_p2
 cache of the line direction (speeds up)

Detailed Description

Class for a StraightLineSurface in the ATLAS detector to describe dirft tube and straw like detectors.

It inherits from Surface.

Author
Andre.nosp@m.as.S.nosp@m.alzbu.nosp@m.rger.nosp@m.@cern.nosp@m..ch
Christos Anastopoulos (Thread safety and interface cleanup)
Shaun Roe (interface cleanup)

Definition at line 50 of file StraightLineSurface.h.

Member Typedef Documentation

◆ ChargedTrackParametersUniquePtr

Initial value:
std::unique_ptr<ParametersBase<5, Trk::Charged>>

Unique ptr types.

Definition at line 128 of file Tracking/TrkDetDescr/TrkSurfaces/TrkSurfaces/Surface.h.

◆ NeutralTrackParametersUniquePtr

Initial value:
std::unique_ptr<ParametersBase<5, Trk::Neutral>>

Definition at line 130 of file Tracking/TrkDetDescr/TrkSurfaces/TrkSurfaces/Surface.h.

Constructor & Destructor Documentation

◆ StraightLineSurface() [1/7]

Trk::StraightLineSurface::StraightLineSurface ( )

Default Constructor - needed for persistency.

Definition at line 25 of file StraightLineSurface.cxx.

26 : Surface()
28 , m_bounds(nullptr)
29{}
CxxUtils::CachedValue< Amg::Vector3D > m_lineDirection
bounds (shared)
std::shared_ptr< const CylinderBounds > m_bounds
NoBounds as return object when no bounds are declared.
Surface()
Default Constructor for inheriting classes.

◆ StraightLineSurface() [2/7]

Trk::StraightLineSurface::StraightLineSurface ( const StraightLineSurface & slsf)

Copy constructor.

Definition at line 58 of file StraightLineSurface.cxx.

60 : Surface(slsf)
62 , m_bounds(slsf.m_bounds)
63{}

◆ StraightLineSurface() [3/7]

Trk::StraightLineSurface::StraightLineSurface ( StraightLineSurface && slsf)
defaultnoexcept

Move constructor.

◆ ~StraightLineSurface()

virtual Trk::StraightLineSurface::~StraightLineSurface ( )
virtualdefault

Destructor.

◆ StraightLineSurface() [4/7]

Trk::StraightLineSurface::StraightLineSurface ( const Amg::Transform3D & htrans)

Constructor from Amg Transform ref (boundless surface)

Definition at line 32 of file StraightLineSurface.cxx.

33 : Surface(htrans)
35 , m_bounds(nullptr)
36{}

◆ StraightLineSurface() [5/7]

Trk::StraightLineSurface::StraightLineSurface ( const Amg::Transform3D & htrans,
double radius,
double halez )

Constructor from Amg::Transform and bounds.

Definition at line 39 of file StraightLineSurface.cxx.

43 : Surface(htrans)
45 , m_bounds(std::make_shared<const Trk::CylinderBounds>(radius, halez))
46{}

◆ StraightLineSurface() [6/7]

Trk::StraightLineSurface::StraightLineSurface ( const TrkDetElementBase & detelement,
const Identifier & id )

Constructor from TrkDetElementBase and Element identifier.

Definition at line 49 of file StraightLineSurface.cxx.

52 : Surface(detelement, id)
54 , m_bounds(nullptr)
55{}

◆ StraightLineSurface() [7/7]

Trk::StraightLineSurface::StraightLineSurface ( const StraightLineSurface & slsf,
const Amg::Transform3D & transf )

Copy constructor with shift.

Definition at line 66 of file StraightLineSurface.cxx.

69 : Surface(csf, transf)
71 , m_bounds(csf.m_bounds)
72{}

Member Function Documentation

◆ associatedDetectorElement()

const TrkDetElementBase * Trk::Surface::associatedDetectorElement ( ) const
inherited

return associated Detector Element

◆ associatedDetectorElementIdentifier()

Identifier Trk::Surface::associatedDetectorElementIdentifier ( ) const
inherited

return Identifier of the associated Detector Element

◆ associatedLayer()

const Trk::Layer * Trk::Surface::associatedLayer ( ) const
inherited

return the associated Layer

◆ associateLayer()

void Trk::Surface::associateLayer ( const Layer & lay)
inherited

method to associate a Trk::Layer.

We do not take ownership as this is typically already owned by the Geometry

◆ baseSurface()

virtual const Trk::Surface * Trk::Surface::baseSurface ( ) const
virtualinherited

return the base surface (simplified for persistification)

◆ bounds()

virtual const SurfaceBounds & Trk::StraightLineSurface::bounds ( ) const
finaloverridevirtual

This method returns the bounds of the Surface by reference.

Implements Trk::Surface.

◆ cachedTransform()

const Amg::Transform3D * Trk::Surface::cachedTransform ( ) const
inherited

Return the cached transformation directly.

Don't try to make a new transform if it's not here.

◆ center()

const Amg::Vector3D & Trk::Surface::center ( ) const
inherited

Returns the center position of the Surface.

◆ clone()

virtual StraightLineSurface * Trk::StraightLineSurface::clone ( ) const
finaloverridevirtual

Implicit constructor.

Implements Trk::Surface.

◆ createUniqueNeutralParameters() [1/2]

Trk::Surface::NeutralTrackParametersUniquePtr Trk::StraightLineSurface::createUniqueNeutralParameters ( const Amg::Vector3D & position,
const Amg::Vector3D & momentum,
double charge,
std::optional< AmgSymMatrix(5)> cov = std::nullopt ) const
finaloverridevirtual

Use the Surface as a ParametersBase constructor, from global parameters - neutral.

Implements Trk::Surface.

Definition at line 128 of file StraightLineSurface.cxx.

130 {
131 return std::make_unique<ParametersT<5, Neutral, StraightLineSurface>>(
132 position, momentum, charge, *this, std::move(cov));
133}
double charge(const T &p)
Definition AtlasPID.h:997

◆ createUniqueNeutralParameters() [2/2]

Trk::Surface::NeutralTrackParametersUniquePtr Trk::StraightLineSurface::createUniqueNeutralParameters ( double l1,
double l2,
double phi,
double theta,
double qop,
std::optional< AmgSymMatrix(5)> cov = std::nullopt ) const
finaloverridevirtual

Use the Surface as a ParametersBase constructor, from local parameters - neutral.

Implements Trk::Surface.

Definition at line 118 of file StraightLineSurface.cxx.

120 {
121 return std::make_unique<ParametersT<5, Neutral, StraightLineSurface>>(
122 l1, l2, phi, theta, qop, *this, std::move(cov));
123}
@ theta
Definition ParamDefs.h:66
@ phi
Definition ParamDefs.h:75

◆ createUniqueParameters() [1/2]

template<int DIM, class T>
std::unique_ptr< ParametersT< DIM, T, StraightLineSurface > > Trk::StraightLineSurface::createUniqueParameters ( const Amg::Vector3D & position,
const Amg::Vector3D & momentum,
double charge,
std::optional< AmgSymMatrix(DIM)> cov = std::nullopt ) const

Use the Surface as a ParametersBase constructor, from global parameters.

◆ createUniqueParameters() [2/2]

template<int DIM, class T>
std::unique_ptr< ParametersT< DIM, T, StraightLineSurface > > Trk::StraightLineSurface::createUniqueParameters ( double l1,
double l2,
double phi,
double theta,
double qop,
std::optional< AmgSymMatrix(DIM)> cov = std::nullopt ) const

Use the Surface as a ParametersBase constructor, from local parameters.

◆ createUniqueTrackParameters() [1/2]

Trk::Surface::ChargedTrackParametersUniquePtr Trk::StraightLineSurface::createUniqueTrackParameters ( const Amg::Vector3D & position,
const Amg::Vector3D & momentum,
double charge,
std::optional< AmgSymMatrix(5)> cov = std::nullopt ) const
finaloverridevirtual

Use the Surface as a ParametersBase constructor, from global parameters - charged.

Implements Trk::Surface.

Definition at line 108 of file StraightLineSurface.cxx.

110 {
111 return std::make_unique<ParametersT<5, Charged, StraightLineSurface>>(
112 position, momentum, charge, *this, std::move(cov));
113}

◆ createUniqueTrackParameters() [2/2]

Trk::Surface::ChargedTrackParametersUniquePtr Trk::StraightLineSurface::createUniqueTrackParameters ( double l1,
double l2,
double phi,
double theta,
double qop,
std::optional< AmgSymMatrix(5)> cov = std::nullopt ) const
finaloverridevirtual

Use the Surface as a ParametersBase constructor, from local parameters - charged.

Implements Trk::Surface.

Definition at line 99 of file StraightLineSurface.cxx.

101 {
102 return std::make_unique<ParametersT<5, Charged, StraightLineSurface>>(
103 l1, l2, phi, theta, qop, *this, std::move(cov));
104}

◆ dump() [1/2]

MsgStream & Surface::dump ( MsgStream & sl) const
virtualinherited

Output Method for MsgStream, to be overloaded by child classes.

Reimplemented in Trk::DetElementSurface, and Trk::PerigeeSurface.

Definition at line 157 of file Surface.cxx.

158{
159 sl << std::setiosflags(std::ios::fixed);
160 sl << std::setprecision(4);
161 sl << name() << std::endl;
162 if (associatedDetectorElement()!=nullptr){
163 sl<<" Detector Type = "<<associatedDetectorElement()->detectorTypeString()<<std::endl;
164 }
165 sl << " Center position (x, y, z) = (" << center().x() << ", " << center().y() << ", " << center().z() << ")"
166 << std::endl;
168 Amg::Vector3D rotX(rot.col(0));
169 Amg::Vector3D rotY(rot.col(1));
170 Amg::Vector3D rotZ(rot.col(2));
171 sl << std::setprecision(6);
172 sl << " Rotation: colX = (" << rotX(0) << ", " << rotX(1) << ", " << rotX(2) << ")" << std::endl;
173 sl << " colY = (" << rotY(0) << ", " << rotY(1) << ", " << rotY(2) << ")" << std::endl;
174 sl << " colZ = (" << rotZ(0) << ", " << rotZ(1) << ", " << rotZ(2) << ")" << std::endl;
175 sl << " Bounds : " << bounds();
176 if (!checkTransform(*this)) {
177 sl << std::endl << " NOT a strict rotation matrix." << std::endl;
178 }
179 sl << std::setprecision(-1);
180 return sl;
181}
const TrkDetElementBase * associatedDetectorElement() const
return associated Detector Element
const Amg::Transform3D & transform() const
Returns HepGeom::Transform3D by reference.
virtual const SurfaceBounds & bounds() const =0
Surface Bounds method.
const Amg::Vector3D & center() const
Returns the center position of the Surface.
virtual std::string name() const =0
Return properly formatted class name.
std::string detectorTypeString() const
Returns a string of the Detector element type.
Eigen::Matrix< double, 3, 3 > RotationMatrix3D
Eigen::Matrix< double, 3, 1 > Vector3D

◆ dump() [2/2]

std::ostream & Surface::dump ( std::ostream & sl) const
virtualinherited

Output Method for std::ostream, to be overloaded by child classes.

Reimplemented in Trk::DetElementSurface, and Trk::PerigeeSurface.

Definition at line 185 of file Surface.cxx.

186{
187 sl << std::setiosflags(std::ios::fixed);
188 sl << std::setprecision(4);
189 sl << name() << std::endl;
190 if (associatedDetectorElement()!=nullptr){
191 sl<<" Detector Type = "<<associatedDetectorElement()->detectorTypeString()<<std::endl;
192 }
193 sl << " Center position (x, y, z) = (" << center().x() << ", " << center().y() << ", " << center().z() << ")"
194 << std::endl;
196 Amg::Vector3D rotX(rot.col(0));
197 Amg::Vector3D rotY(rot.col(1));
198 Amg::Vector3D rotZ(rot.col(2));
199 sl << std::setprecision(6);
200 sl << " Rotation: colX = (" << rotX(0) << ", " << rotX(1) << ", " << rotX(2) << ")" << std::endl;
201 sl << " colY = (" << rotY(0) << ", " << rotY(1) << ", " << rotY(2) << ")" << std::endl;
202 sl << " colZ = (" << rotZ(0) << ", " << rotZ(1) << ", " << rotZ(2) << ")" << std::endl;
203 sl << " Bounds : " << bounds();
204 if (!checkTransform(*this)) {
205 sl << std::endl << " NOT a strict rotation matrix." << std::endl;
206 }
207 sl << std::setprecision(-1);
208 return sl;
209}

◆ globalReferencePoint()

virtual const Amg::Vector3D & Trk::Surface::globalReferencePoint ( ) const
virtualinherited

Returns a global reference point on the surface, for PlaneSurface, StraightLineSurface, PerigeeSurface this is equal to center(), for CylinderSurface and DiscSurface this is a new member.

Reimplemented in GXF::CylinderSurface, GXF::DiscSurface, Trk::ConeSurface, Trk::CylinderSurface, and Trk::DiscSurface.

◆ globalToLocal() [1/3]

bool Trk::StraightLineSurface::globalToLocal ( const Amg::Vector3D & glob,
const Amg::Vector3D & mom,
Amg::Vector2D & loc ) const
finaloverridevirtual

Specified for StraightLineSurface: GlobalToLocal method without dynamic memory allocation This method is the true global->local transformation.


makes use of globalToLocal and indicates the sign of the locR by the given momentum

The calculation of the sign of the radius (or \( d_0 \)) can be done as follows:
May \( \vec d = \vec m - \vec c \) denote the difference between the center of the line and the global position of the measurement/predicted state, then \( \vec d \) lies within the so called measurement plane. The measurement plane is determined by the two orthogonal vectors \( \vec{measY}= \vec{locZ} \) and \( \vec{measX} = \vec{measY} \times \frac{\vec{p}}{|\vec{p}|} \).

The sign of the radius ( \( d_{0} \) ) is then defined by the projection of \( \vec{d} \) onto \( \vec{measX} \):
\( sign = -sign(\vec{d} \cdot \vec{measX}) \)

Implements Trk::Surface.

Definition at line 164 of file StraightLineSurface.cxx.

167{
168 Amg::Vector3D loc3Dframe = inverseTransformMultHelper(glopos);
169 // construct localPosition with sign*candidate.perp() and z.()
170 locpos = Amg::Vector2D(loc3Dframe.perp(), loc3Dframe.z());
171 Amg::Vector3D decVec(glopos - center());
172 // assign the right sign
173 double sign = ((lineDirection().cross(glomom)).dot(decVec) < 0.) ? -1. : 1.;
174 locpos[Trk::locR] *= sign;
175 return true;
176}
int sign(int a)
const Amg::Vector3D & lineDirection() const
Special method for StraightLineSurface - provides the Line direction from cache: speedup.
Amg::Vector3D inverseTransformMultHelper(const Amg::Vector3D &glopos) const
Eigen::Matrix< double, 2, 1 > Vector2D
@ locR
Definition ParamDefs.h:44

◆ globalToLocal() [2/3]

std::optional< Amg::Vector2D > Trk::Surface::globalToLocal ( const Amg::Vector3D & glopos,
const Amg::Vector3D & glomom ) const
inherited

This method returns the LocalPosition from a provided GlobalPosition.

If the GlobalPosition is not on the Surface, it returns a nullopt This method does not check if the calculated LocalPosition is inside surface bounds. If this check is needed, use positionOnSurface - for generality with momentum

◆ globalToLocal() [3/3]

std::optional< Amg::Vector2D > Trk::Surface::globalToLocal ( const Amg::Vector3D & glopos,
double tol = 0. ) const
inherited

This method returns the LocalPosition from a provided GlobalPosition.

If the GlobalPosition is not on the Surface, it returns nullopt This method does not check if the calculated LocalPosition is inside surface bounds. If this check is needed, use positionOnSurface - only for planar, cylinder surface fully defined

◆ insideBounds()

virtual bool Trk::StraightLineSurface::insideBounds ( const Amg::Vector2D & locpos,
double tol1 = 0.,
double tol2 = 0. ) const
finaloverridevirtual

This surface calls the iside method of the bouns.

Implements Trk::Surface.

◆ insideBoundsCheck()

virtual bool Trk::StraightLineSurface::insideBoundsCheck ( const Amg::Vector2D & locpos,
const BoundaryCheck & bchk ) const
finaloverridevirtual

Implements Trk::Surface.

◆ inverseTransformHelper()

Amg::Transform3D Trk::Surface::inverseTransformHelper ( ) const
protectedinherited

Helper method to factorize in one place common operations calculate inverse transofrm and multiply with position.

◆ inverseTransformMultHelper()

Amg::Vector3D Trk::Surface::inverseTransformMultHelper ( const Amg::Vector3D & glopos) const
protectedinherited

◆ isActive()

bool Trk::Surface::isActive ( ) const
inherited

Return 'true' if this surface is owned by the detector element.

◆ isFree()

bool Trk::Surface::isFree ( ) const
inherited

Returns 'true' if this surface is 'free', i.e.

it does not belong to a detector element (and returns false otherwise

◆ isOnSurface()

bool Trk::StraightLineSurface::isOnSurface ( const Amg::Vector3D & glopo,
const BoundaryCheck & bchk = true,
double tol1 = 0.,
double tol2 = 0. ) const
finaloverridevirtual

This method checks if the provided GlobalPosition is inside the assigned straw radius, but no check is done whether the GlobalPosition is inside bounds or not.

It overwrites isOnSurface from Base Class as it saves the time of sign determination.

Reimplemented from Trk::Surface.

Definition at line 188 of file StraightLineSurface.cxx.

191{
192 if (!bchk)
193 return true;
194 // check whether this is a boundless surface
196 return true;
197 // get the standard bounds
198 Amg::Vector3D loc3Dframe = inverseTransformMultHelper(glopo);
199 Amg::Vector2D locCand(loc3Dframe.perp(), loc3Dframe.z());
200 return (locCand[Trk::locR] < bounds().r() + tol1 && bounds().insideLoc2(locCand, tol2));
201}
virtual const SurfaceBounds & bounds() const override final
This method returns the bounds of the Surface by reference.
const TrkDetElementBase * m_associatedDetElement
Not owning Pointer to the Detector Element.
int r
Definition globals.cxx:22

◆ lineDirection()

const Amg::Vector3D & Trk::StraightLineSurface::lineDirection ( ) const

Special method for StraightLineSurface - provides the Line direction from cache: speedup.

◆ localParametersToPosition()

virtual Amg::Vector2D Trk::Surface::localParametersToPosition ( const LocalParameters & locpars) const
virtualinherited

Optionally specified by each surface type : LocalParameters to Vector2D.

Reimplemented in Trk::ConeSurface, Trk::CylinderSurface, and Trk::DiscSurface.

◆ localToGlobal() [1/6]

ATH_FLATTEN void Trk::StraightLineSurface::localToGlobal ( const Amg::Vector2D & locp,
const Amg::Vector3D & mom,
Amg::Vector3D & glob ) const
finaloverridevirtual

Specified for StraightLineSurface: LocalToGlobal method without dynamic memory allocation.

Implements Trk::Surface.

Definition at line 139 of file StraightLineSurface.cxx.

142{
143 // get the vector perpenticular to the momentum and the straw axis
144 Amg::Vector3D radiusAxisGlobal(lineDirection().cross(glomom));
145 Amg::Vector3D locZinGlobal = transform() * Amg::Vector3D(0., 0., locpos[Trk::locZ]);
146 // transform zPosition into global coordinates and add locR * radiusAxis
147 glopos = Amg::Vector3D(locZinGlobal + locpos[Trk::locR] * radiusAxisGlobal.normalized());
148}
@ locZ
local cylindrical
Definition ParamDefs.h:42

◆ localToGlobal() [2/6]

Amg::Vector3D Trk::StraightLineSurface::localToGlobal ( const Trk::LocalParameters & locpars,
const Amg::Vector3D & glomom,
double locZ ) const

Special method for StraightLineSurface - providing a different z estimate.

Definition at line 152 of file StraightLineSurface.cxx.

155{
156 // create a local Position
157 Amg::Vector2D locPos(locpars[Trk::driftRadius], locZ);
158 return Surface::localToGlobal(locPos, glomom);
159}
virtual void localToGlobal(const Amg::Vector2D &locp, const Amg::Vector3D &mom, Amg::Vector3D &glob) const =0
Specified by each surface type: LocalToGlobal method without dynamic memory allocation.
@ driftRadius
trt, straws
Definition ParamDefs.h:53

◆ localToGlobal() [3/6]

Amg::Vector3D Trk::Surface::localToGlobal ( const Amg::Vector2D & locpos) const
inherited

This method returns the GlobalPosition from a LocalPosition uses the per surface localToGlobal.

◆ localToGlobal() [4/6]

Amg::Vector3D Trk::Surface::localToGlobal ( const Amg::Vector2D & locpos,
const Amg::Vector3D & glomom ) const
inherited

This method returns the GlobalPosition from a LocalPosition The LocalPosition can be outside Surface bounds - for generality with momentum.

◆ localToGlobal() [5/6]

Amg::Vector3D Trk::Surface::localToGlobal ( const LocalParameters & locpars) const
inherited

This method returns the GlobalPosition from LocalParameters The LocalParameters can be outside Surface bounds.

◆ localToGlobal() [6/6]

Amg::Vector3D Trk::Surface::localToGlobal ( const LocalParameters & locpars,
const Amg::Vector3D & glomom ) const
inherited

This method returns the GlobalPosition from LocalParameters The LocalParameters can be outside Surface bounds - for generality with momentum.

◆ materialLayer() [1/2]

Trk::MaterialLayer * Trk::Surface::materialLayer ( )
inherited

◆ materialLayer() [2/2]

const Trk::MaterialLayer * Trk::Surface::materialLayer ( ) const
inherited

return the material Layer

◆ measurementFrame()

Amg::RotationMatrix3D Trk::StraightLineSurface::measurementFrame ( const Amg::Vector3D & glopos,
const Amg::Vector3D & glomom ) const
finaloverridevirtual

Return the measurement frame - this is needed for alignment, in particular for StraightLine and Perigee Surface.

Reimplemented from Trk::Surface.

Definition at line 225 of file StraightLineSurface.cxx.

226{
228 // construct the measurement frame
229 const Amg::Vector3D& measY = lineDirection();
230 Amg::Vector3D measX(measY.cross(glomom).unit());
231 Amg::Vector3D measDepth(measX.cross(measY));
232 // assign the columnes
233 mFrame.col(0) = measX;
234 mFrame.col(1) = measY;
235 mFrame.col(2) = measDepth;
236 // return the rotation matrix
237 return mFrame;
238}

◆ name()

virtual std::string Trk::StraightLineSurface::name ( ) const
finaloverridevirtual

Return properly formatted class name for screen output.

Implements Trk::Surface.

◆ normal() [1/2]

virtual const Amg::Vector3D & Trk::Surface::normal ( ) const
virtualinherited

Returns the normal vector of the Surface (i.e.

in generall z-axis of rotation)

Reimplemented in GXF::CylinderSurface, Trk::ConeSurface, Trk::CylinderSurface, and Trk::PerigeeSurface.

◆ normal() [2/2]

virtual Amg::Vector3D Trk::Surface::normal ( const Amg::Vector2D & lp) const
virtualinherited

Returns a normal vector at a specific local position.

Reimplemented in GXF::CylinderSurface, Trk::ConeSurface, Trk::CylinderSurface, and Trk::PerigeeSurface.

◆ numberOfInstantiations()

std::size_t Trk::ObjectCounter< Trk::Surface >::numberOfInstantiations ( )
inlinestaticinherited

Definition at line 25 of file TrkObjectCounter.h.

26 {
27#ifndef NDEBUG
28 return s_numberOfInstantiations.load();
29#endif
30 return 0;
31 }
Helper to enable counting number of instantiations in debug builds.

◆ onSurface()

template<class T>
bool Trk::Surface::onSurface ( const T & parameters,
const BoundaryCheck & bchk = BoundaryCheck(true) ) const
inherited

The templated Parameters OnSurface method - checks on surface pointer first.

◆ operator!=()

bool Trk::Surface::operator!= ( const Surface & sf) const
inherited

Non-equality operator.

◆ operator=() [1/2]

Trk::StraightLineSurface & Trk::StraightLineSurface::operator= ( const StraightLineSurface & slsf)

Assignment operator.

Definition at line 76 of file StraightLineSurface.cxx.

77{
78 if (this != &slsf) {
80 m_lineDirection=slsf.m_lineDirection;
81 m_bounds = slsf.m_bounds;
82 }
83 return *this;
84}
Surface & operator=(const Surface &sf)
Definition Surface.cxx:91

◆ operator=() [2/2]

StraightLineSurface & Trk::StraightLineSurface::operator= ( StraightLineSurface && slsf)
defaultnoexcept

Move Assignment operator.

◆ operator==() [1/2]

bool Trk::StraightLineSurface::operator== ( const StraightLineSurface & cf) const

◆ operator==() [2/2]

bool Trk::StraightLineSurface::operator== ( const Surface & sf) const
overridevirtual

Equality operator.

Implements Trk::Surface.

Definition at line 87 of file StraightLineSurface.cxx.

88{
89 // first check the type not to compare apples with oranges
90 if (sf.type()!=Trk::SurfaceType::Line){
91 return false;
92 }
93 return (*this) == static_cast<const Trk::StraightLineSurface&>(sf);
94}

◆ owner()

SurfaceOwner Trk::Surface::owner ( ) const
inherited

return ownership

◆ pathCorrection()

virtual double Trk::StraightLineSurface::pathCorrection ( const Amg::Vector3D & ,
const Amg::Vector3D &  ) const
finaloverridevirtual

the pathCorrection for derived classes with thickness

Reimplemented from Trk::Surface.

◆ positionOnSurface()

std::optional< Amg::Vector2D > Surface::positionOnSurface ( const Amg::Vector3D & glopo,
const BoundaryCheck & bchk = true,
double tol1 = 0.,
double tol2 = 0. ) const
inherited

positionOnSurface() returns the LocalPosition on the Surface,
If BoundaryCheck==false it just returns the value of globalToLocal (including nullptr possibility), if BoundaryCheck==true it checks whether the point is inside bounds or not (returns std::nullopt in this case).

Definition at line 106 of file Surface.cxx.

110{
111 std::optional<Amg::Vector2D> posOnSurface = globalToLocal(glopo, tol1);
112 if (!bchk){
113 return posOnSurface;
114 }
115 if (posOnSurface && insideBounds(*posOnSurface, tol1, tol2)){
116 return posOnSurface;
117 }
118 return std::nullopt;
119}
virtual bool globalToLocal(const Amg::Vector3D &glob, const Amg::Vector3D &mom, Amg::Vector2D &loc) const =0
Specified by each surface type: GlobalToLocal method without dynamic memory allocation - boolean chec...
virtual bool insideBounds(const Amg::Vector2D &locpos, double tol1=0., double tol2=0.) const =0
virtual methods to be overwritten by the inherited surfaces

◆ setMaterialLayer()

void Trk::Surface::setMaterialLayer ( std::shared_ptr< Trk::MaterialLayer > mlay)
inherited

set material layer

◆ setOwner()

void Trk::Surface::setOwner ( SurfaceOwner x)
inherited

set Ownership

◆ setTransform()

void Trk::Surface::setTransform ( const Amg::Transform3D & trans)
inherited

Set the transform updates center and normal.

◆ straightLineDistanceEstimate() [1/2]

Trk::DistanceSolution Trk::StraightLineSurface::straightLineDistanceEstimate ( const Amg::Vector3D & pos,
const Amg::Vector3D & dir ) const
finaloverridevirtual

fast straight line distance evaluation to Surface

distance to surface

Implements Trk::Surface.

Definition at line 205 of file StraightLineSurface.cxx.

206{
207 const Amg::Vector3D& C = center();
208 const Amg::Vector3D& S = lineDirection();
209
210 double D = dir.dot(S);
211 double A = (1. - D) * (1. + D);
212
213 Amg::Vector3D dx = C - pos - (C.dot(S) - pos.dot(S)) * S;
214 double currDist = sqrt(dx.dot(dx));
215
216 if (A < 0.0001) {
217 return {1, currDist, false, 0.};
218 }
219 double sol = (pos - C).dot(D * S - dir) / A;
220 return {1, currDist, false, sol};
221}
struct color C
dot(G, fn, nodesToHighlight=[])
Definition dot.py:5

◆ straightLineDistanceEstimate() [2/2]

Trk::DistanceSolution Trk::StraightLineSurface::straightLineDistanceEstimate ( const Amg::Vector3D & pos,
const Amg::Vector3D & dir,
bool Bound ) const
finaloverridevirtual

fast straight line distance evaluation to Surface - with bound option

Implements Trk::Surface.

Definition at line 241 of file StraightLineSurface.cxx.

244{
245 const Amg::Transform3D& T = transform();
246 Amg::Vector3D Az(T(0, 2), T(1, 2), T(2, 2));
247
248 Amg::Vector3D dxyz = pos - T.translation();
249
250 double D = dir.dot(Az);
251 double Lz = dxyz.dot(Az);
252 double A = (1. - D) * (1. + D);
253
254 // Step to surface
255 //
256 double s = 0.;
257 if (A > 0.)
258 s = (D * Lz - (dir.dot(dxyz))) / A;
259 if (!bound)
260 return {1, 0., false, s};
261
262 // Min distance to surface
263 //
264 double Rm = 20.;
265 double Lzm = 1.e+10;
266
267 if (m_bounds.get()) {
268 Rm = m_bounds.get()->r();
269 Lzm = m_bounds.get()->halflengthZ();
271
272 const Trk::CylinderBounds* cb = nullptr;
273
274 if (Surface::m_associatedDetElementId.is_valid()) {
275 cb = dynamic_cast<const Trk::CylinderBounds*>(&m_associatedDetElement->bounds(Surface::m_associatedDetElementId));
276 } else {
277 cb = dynamic_cast<const Trk::CylinderBounds*>(&m_associatedDetElement->bounds());
278 }
279 if (cb) {
280 Rm = cb->r();
281 Lzm = cb->halflengthZ();
282 }
283 }
284
285 double dist = dxyz.dot(dxyz) - Lz * Lz;
286 dist = (dist > Rm * Rm) ? sqrt(dist) - Rm : 0.;
287 double dL = fabs(Lz) - Lzm;
288 if (dL > 0.){
289 dist = sqrt(dist * dist + dL * dL);
290 }
291 return {1, dist, false, s};
292}
virtual double r() const override final
This method returns the radius.
double halflengthZ() const
This method returns the halflengthZ.
Identifier m_associatedDetElementId
Identifier to the Detector Element.
Eigen::Affine3d Transform3D
unsigned long long T

◆ straightLineIntersection() [1/2]

Trk::Intersection Trk::StraightLineSurface::straightLineIntersection ( const Amg::Vector3D & pos,
const Amg::Vector3D & dir,
bool forceDir,
Trk::BoundaryCheck bchk ) const
finaloverridevirtual

fast straight line intersection schema - standard: provides closest intersection and (signed) path length forceDir is to provide the closest forward solution

b>mathematical motivation: Given two lines in parameteric form:

  • \( \vec l_{a}(\lambda) = \vec m_a + \lambda \cdot \vec e_{a} \)
  • \( \vec l_{b}(\mu) = \vec m_b + \mu \cdot \vec e_{b} \)
    the vector between any two points on the two lines is given by:
  • \( \vec s(\lambda, \mu) = \vec l_{b} - l_{a} = \vec m_{ab} + \mu \cdot \vec e_{b} - \lambda \cdot \vec e_{a} \),
    when \( \vec m_{ab} = \vec m_{b} - \vec m_{a} \).
    \( \vec s(\lambda_0, \mu_0) \) denotes the vector between the two closest points
    \( \vec l_{a,0} = l_{a}(\lambda_0) \) and \( \vec l_{b,0} = l_{b}(\mu_0) \)
    and is perpenticular to both, \( \vec e_{a} \) and \( \vec e_{b} \).

This results in a system of two linear equations:

  • (i) \( 0 = \vec s(\lambda_0, \mu_0) \cdot \vec e_a = \vec m_ab \cdot \vec e_a + \mu_0 \vec e_a \cdot \vec e_b - \lambda_0 \)
  • (ii) \( 0 = \vec s(\lambda_0, \mu_0) \cdot \vec e_b = \vec m_ab \cdot \vec e_b + \mu_0 - \lambda_0 \vec e_b \cdot \vec e_a \)

Solving (i), (ii) for \( \lambda_0 \) and \( \mu_0 \) yields:

  • \( \lambda_0 = \frac{(\vec m_ab \cdot \vec e_a)-(\vec m_ab \cdot \vec e_b)(\vec e_a \cdot \vec e_b)}{1-(\vec e_a \cdot \vec e_b)^2} \)
  • \( \mu_0 = - \frac{(\vec m_ab \cdot \vec e_b)-(\vec m_ab \cdot \vec e_a)(\vec e_a \cdot \vec e_b)}{1-(\vec e_a \cdot \vec e_b)^2} \)

Implements Trk::Surface.

Definition at line 295 of file StraightLineSurface.cxx.

299{
300 // following nominclature found in header file and doxygen documentation
301 // line one is the straight track
302 const Amg::Vector3D& ma = pos;
303 const Amg::Vector3D& ea = dir;
304 // line two is the line surface
305 const Amg::Vector3D& mb = center();
306 const Amg::Vector3D& eb = lineDirection();
307 // now go ahead and solve for the closest approach
308 Amg::Vector3D mab(mb - ma);
309 double eaTeb = ea.dot(eb);
310 double denom = 1 - eaTeb * eaTeb;
311 if (fabs(denom) > 10e-7) {
312 double lambda0 = (mab.dot(ea) - mab.dot(eb) * eaTeb) / denom;
313 // evaluate in terms of direction
314 bool isValid = forceDir ? (lambda0 > 0.) : true;
315 // evaluate validaty in terms of bounds
316 Amg::Vector3D result = (ma + lambda0 * ea);
317 isValid = bchk ? (isValid && isOnSurface(result)) : isValid;
318 // return the result
319 return {result, lambda0, isValid};
320 }
321 return {pos, 0., false};
322}
bool isValid(const T &p)
Av: we implement here an ATLAS-sepcific convention: all particles which are 99xxxxx are fine.
Definition AtlasPID.h:878
virtual bool isOnSurface(const Amg::Vector3D &glopo, const BoundaryCheck &bchk=true, double tol1=0., double tol2=0.) const override final
This method checks if the provided GlobalPosition is inside the assigned straw radius,...

◆ straightLineIntersection() [2/2]

template<typename T>
Intersection Trk::Surface::straightLineIntersection ( const T & pars,
bool forceDir = false,
const Trk::BoundaryCheck & bchk = false ) const
inlineinherited

fst straight line intersection schema - templated for charged and neutral parameters

Definition at line 352 of file Tracking/TrkDetDescr/TrkSurfaces/TrkSurfaces/Surface.h.

356 {
358 pars.position(), pars.momentum().unit(), forceDir, bchk);
359 }
Intersection straightLineIntersection(const T &pars, bool forceDir=false, const Trk::BoundaryCheck &bchk=false) const
fst straight line intersection schema - templated for charged and neutral parameters

◆ transform()

const Amg::Transform3D & Trk::Surface::transform ( ) const
inherited

Returns HepGeom::Transform3D by reference.

◆ type()

virtual constexpr SurfaceType Trk::StraightLineSurface::type ( ) const
constexprfinaloverridevirtual

Return the surface type.

Implements Trk::Surface.

◆ uniqueClone()

std::unique_ptr< Surface > Trk::Surface::uniqueClone ( ) const
inherited

NVI method returning unique_ptr clone.

◆ ::BoundSurfaceCnv_p1

template<class SURFACE, class BOUNDS_CNV>
friend class ::BoundSurfaceCnv_p1
friend

< data members

Definition at line 283 of file StraightLineSurface.h.

◆ ::BoundSurfaceCnv_p2

template<class SURFACE, class BOUNDS_CNV>
friend class ::BoundSurfaceCnv_p2
friend

cache of the line direction (speeds up)

Definition at line 285 of file StraightLineSurface.h.

Member Data Documentation

◆ m_associatedDetElement

const TrkDetElementBase* Trk::Surface::m_associatedDetElement {}
protectedinherited

Not owning Pointer to the Detector Element.

Definition at line 441 of file Tracking/TrkDetDescr/TrkSurfaces/TrkSurfaces/Surface.h.

441{};

◆ m_associatedDetElementId

Identifier Trk::Surface::m_associatedDetElementId {}
protectedinherited

Identifier to the Detector Element.

Definition at line 443 of file Tracking/TrkDetDescr/TrkSurfaces/TrkSurfaces/Surface.h.

443{};

◆ m_associatedLayer

const Layer* Trk::Surface::m_associatedLayer {}
protectedinherited

The associated layer Trk::Layer This is the layer in which the Surface is embedded.

so not owning pointer.

Definition at line 448 of file Tracking/TrkDetDescr/TrkSurfaces/TrkSurfaces/Surface.h.

448{};

◆ m_bounds

std::shared_ptr<const CylinderBounds> Trk::StraightLineSurface::m_bounds
protected

NoBounds as return object when no bounds are declared.

Definition at line 289 of file StraightLineSurface.h.

◆ m_lineDirection

CxxUtils::CachedValue<Amg::Vector3D> Trk::StraightLineSurface::m_lineDirection
protected

bounds (shared)

Definition at line 287 of file StraightLineSurface.h.

◆ m_materialLayer

std::shared_ptr<MaterialLayer> Trk::Surface::m_materialLayer {}
protectedinherited

Possibility to attach a material description to the surface.

In this case the surface is what holds the MaterialLayer. This is usually done for boundary surfaces so shared ptr.

Definition at line 453 of file Tracking/TrkDetDescr/TrkSurfaces/TrkSurfaces/Surface.h.

453{};

◆ m_owner

SurfaceOwner Trk::Surface::m_owner {SurfaceOwner::noOwn}
protectedinherited

enum for surface owner : default free surface

Definition at line 455 of file Tracking/TrkDetDescr/TrkSurfaces/TrkSurfaces/Surface.h.

◆ m_transforms

std::unique_ptr<Transforms> Trk::Surface::m_transforms {}
protectedinherited

Unique Pointer to the Transforms struct.

Definition at line 439 of file Tracking/TrkDetDescr/TrkSurfaces/TrkSurfaces/Surface.h.

439{};

◆ s_boundless

const Trk::NoBounds Trk::StraightLineSurface::s_boundless
staticprotected

Definition at line 291 of file StraightLineSurface.h.

◆ s_numberOfInstantiations

std::atomic_size_t Trk::ObjectCounter< Trk::Surface >::s_numberOfInstantiations
inlinestaticinherited

Definition at line 22 of file TrkObjectCounter.h.

◆ s_onSurfaceTolerance

double Trk::Surface::s_onSurfaceTolerance = 10e-5
staticconstexprprotectedinherited

Tolerance for being on Surface.

Definition at line 458 of file Tracking/TrkDetDescr/TrkSurfaces/TrkSurfaces/Surface.h.

◆ staticType

SurfaceType Trk::StraightLineSurface::staticType = SurfaceType::Line
staticconstexpr

Definition at line 54 of file StraightLineSurface.h.


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