![]() |
ATLAS Offline Software
|
#include <DetElementSurface.h>
Public Types | |
using | ChargedTrackParametersUniquePtr = std::unique_ptr< ParametersBase< 5, Trk::Charged > > |
Unique ptr types. More... | |
using | NeutralTrackParametersUniquePtr = std::unique_ptr< ParametersBase< 5, Trk::Neutral > > |
Public Member Functions | |
DetElementSurface () | |
DetElementSurface (Identifier id) | |
DetElementSurface (const Surface &rhs) | |
bool | operator== (const Trk::Surface &) const |
Equality operator. More... | |
Surface * | clone () const |
Implicit constructor - uses the copy constructor. More... | |
std::unique_ptr< Surface > | uniqueClone () const |
bool | insideBounds (const Amg::Vector2D &, double, double) const |
virtual methods to be overwritten by the inherited surfaces More... | |
bool | insideBoundsCheck (const Amg::Vector2D &, const BoundaryCheck &) const |
const Amg::Vector3D * | localToGlobal (const Amg::Vector2D &) const |
const Amg::Vector3D * | localToGlobal (const LocalParameters &) const |
const Amg::Vector2D * | globalToLocal (const Amg::Vector3D &, const double) const |
virtual DistanceSolution | straightLineDistanceEstimate (const Amg::Vector3D &, const Amg::Vector3D &) const |
fast straight line distance evaluation to Surface More... | |
const SurfaceBounds & | bounds () const |
Surface Bounds method. More... | |
MsgStream & | dump (MsgStream &sl) const |
Output Method for MsgStream, to be overloaded by child classes. More... | |
std::ostream & | dump (std::ostream &sl) const |
Output Method for std::ostream, to be overloaded by child classes. More... | |
const Identifier | associatedDetectorElementIdentifier () const |
bool | isFree () |
SurfaceType | type () const |
Returns the Surface type to avoid dynamic casts. More... | |
void | localToGlobal (const Amg::Vector2D &, const Amg::Vector3D &, Amg::Vector3D &) const |
Specified by each surface type: LocalToGlobal method without dynamic memory allocation. More... | |
bool | globalToLocal (const Amg::Vector3D &, const Amg::Vector3D &, Amg::Vector2D &) const |
Specified by each surface type: GlobalToLocal method without dynamic memory allocation - boolean checks if on surface. More... | |
std::string | name () const |
Return properly formatted class name. More... | |
virtual std::unique_ptr< ParametersBase< 5, Trk::Charged > > | createUniqueTrackParameters (double, double, double, double, double, std::optional< AmgSymMatrix(5)>=std::nullopt) const |
Use the Surface as a ParametersBase constructor, from local parameters - charged. More... | |
virtual std::unique_ptr< ParametersBase< 5, Trk::Charged > > | createUniqueTrackParameters (const Amg::Vector3D &, const Amg::Vector3D &, double, std::optional< AmgSymMatrix(5)>=std::nullopt) const |
Use the Surface as a ParametersBase constructor, from global parameters - charged. More... | |
virtual std::unique_ptr< ParametersBase< 5, Trk::Neutral > > | createUniqueNeutralParameters (double, double, double, double, double, std::optional< AmgSymMatrix(5)>=std::nullopt) const |
Use the Surface as a ParametersBase constructor, from local parameters - neutral. More... | |
virtual std::unique_ptr< ParametersBase< 5, Trk::Neutral > > | createUniqueNeutralParameters (const Amg::Vector3D &, const Amg::Vector3D &, double, std::optional< AmgSymMatrix(5)>=std::nullopt) const |
Use the Surface as a ParametersBase constructor, from global parameters - neutral. More... | |
virtual Intersection | straightLineIntersection (const Amg::Vector3D &, const Amg::Vector3D &, bool, Trk::BoundaryCheck) const |
fast straight line intersection schema - standard: provides closest intersection and (signed) path length forceDir provides the closest forward solution More... | |
virtual Trk::DistanceSolution | straightLineDistanceEstimate (const Amg::Vector3D &, const Amg::Vector3D &, bool) const |
fast straight line distance evaluation to Surface - with bound option More... | |
virtual bool | isOnSurface (const Amg::Vector3D &, const Trk::BoundaryCheck &, double, double) const |
This method returns true if the GlobalPosition is on the Surface for both, within or without check of whether the local position is inside boundaries or not. More... | |
bool | operator!= (const Surface &sf) const |
Non-equality operator. More... | |
const Amg::Transform3D * | cachedTransform () const |
Return the cached transformation directly. More... | |
const Amg::Transform3D & | transform () const |
Returns HepGeom::Transform3D by reference. More... | |
const Amg::Vector3D & | center () const |
Returns the center position of the Surface. More... | |
virtual const Amg::Vector3D & | normal () const |
Returns the normal vector of the Surface (i.e. More... | |
virtual Amg::Vector3D | normal (const Amg::Vector2D &lp) const |
Returns a normal vector at a specific local position. More... | |
virtual const Amg::Vector3D & | globalReferencePoint () 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. More... | |
const TrkDetElementBase * | associatedDetectorElement () const |
return associated Detector Element More... | |
const Trk::Layer * | associatedLayer () const |
return the associated Layer More... | |
const Trk::MaterialLayer * | materialLayer () const |
return the material Layer More... | |
Trk::MaterialLayer * | materialLayer () |
virtual const Trk::Surface * | baseSurface () const |
return the base surface (simplified for persistification) More... | |
std::optional< Amg::Vector2D > | positionOnSurface (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). More... | |
template<class T > | |
bool | onSurface (const T ¶meters, const BoundaryCheck &bchk=BoundaryCheck(true)) const |
The templated Parameters OnSurface method - checks on surface pointer first. More... | |
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. More... | |
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. More... | |
std::optional< Amg::Vector2D > | globalToLocal (const Amg::Vector3D &glopos, const Amg::Vector3D &glomom) const |
This method returns the LocalPosition from a provided GlobalPosition. More... | |
virtual Amg::Vector2D | localParametersToPosition (const LocalParameters &locpars) const |
Optionally specified by each surface type : LocalParameters to Vector2D. More... | |
virtual double | pathCorrection (const Amg::Vector3D &pos, const Amg::Vector3D &mom) const |
the pathCorrection for derived classes with thickness - it reflects if the direction projection is positive or negative More... | |
virtual Amg::RotationMatrix3D | measurementFrame (const Amg::Vector3D &glopos, const Amg::Vector3D &glomom) const |
Return the measurement frame - this is needed for alignment, in particular for StraightLine and Perigee Surface. More... | |
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 More... | |
bool | isFree () const |
Returns 'true' if this surface is 'free', i.e. More... | |
bool | isActive () const |
Return 'true' if this surface is owned by the detector element. More... | |
void | setTransform (const Amg::Transform3D &trans) |
Set the transform updates center and normal. More... | |
void | setOwner (SurfaceOwner x) |
set Ownership More... | |
SurfaceOwner | owner () const |
return ownership More... | |
void | setMaterialLayer (std::shared_ptr< Trk::MaterialLayer > mlay) |
set material layer More... | |
void | associateLayer (const Layer &lay) |
method to associate a Trk::Layer. More... | |
Static Public Member Functions | |
static std::size_t | numberOfInstantiations () |
Static Public Attributes | |
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. More... | |
Amg::Vector3D | inverseTransformMultHelper (const Amg::Vector3D &glopos) const |
Protected Attributes | |
std::unique_ptr< Transforms > | m_transforms {} |
Unique Pointer to the Transforms struct. More... | |
const TrkDetElementBase * | m_associatedDetElement {} |
Not owning Pointer to the Detector Element. More... | |
Identifier | m_associatedDetElementId {} |
Identifier to the Detector Element. More... | |
const Layer * | m_associatedLayer {} |
The associated layer Trk::Layer This is the layer in which the Surface is embedded. More... | |
std::shared_ptr< MaterialLayer > | m_materialLayer {} |
Possibility to attach a material description to the surface. More... | |
SurfaceOwner | m_owner {SurfaceOwner::noOwn} |
enum for surface owner : default free surface More... | |
Static Protected Attributes | |
static constexpr double | s_onSurfaceTolerance = 10e-5 |
Tolerance for being on Surface. More... | |
Private Attributes | |
Identifier | m_id |
Definition at line 31 of file DetElementSurface.h.
|
inherited |
Unique ptr types.
Definition at line 128 of file Tracking/TrkDetDescr/TrkSurfaces/TrkSurfaces/Surface.h.
|
inherited |
Definition at line 130 of file Tracking/TrkDetDescr/TrkSurfaces/TrkSurfaces/Surface.h.
|
inline |
Definition at line 34 of file DetElementSurface.h.
|
inline |
Definition at line 35 of file DetElementSurface.h.
Definition at line 36 of file DetElementSurface.h.
|
inherited |
return associated Detector Element
|
inline |
Definition at line 50 of file DetElementSurface.h.
|
inherited |
return the associated Layer
method to associate a Trk::Layer.
We do not take ownership as this is typically already owned by the Geometry
|
virtualinherited |
return the base surface (simplified for persistification)
|
inlinevirtual |
|
inherited |
Return the cached transformation directly.
Don't try to make a new transform if it's not here.
|
inherited |
Returns the center position of the Surface.
|
inlinevirtual |
Implicit constructor - uses the copy constructor.
Implements Trk::Surface.
Definition at line 39 of file DetElementSurface.h.
|
inlinevirtual |
Use the Surface as a ParametersBase constructor, from global parameters - neutral.
Implements Trk::Surface.
Definition at line 87 of file DetElementSurface.h.
|
inlinevirtual |
Use the Surface as a ParametersBase constructor, from local parameters - neutral.
Implements Trk::Surface.
Definition at line 77 of file DetElementSurface.h.
|
inlinevirtual |
Use the Surface as a ParametersBase constructor, from global parameters - charged.
Implements Trk::Surface.
Definition at line 68 of file DetElementSurface.h.
|
inlinevirtual |
Use the Surface as a ParametersBase constructor, from local parameters - charged.
Implements Trk::Surface.
Definition at line 58 of file DetElementSurface.h.
|
inlinevirtual |
Output Method for MsgStream, to be overloaded by child classes.
Reimplemented from Trk::Surface.
Definition at line 48 of file DetElementSurface.h.
|
inlinevirtual |
Output Method for std::ostream, to be overloaded by child classes.
Reimplemented from Trk::Surface.
Definition at line 49 of file DetElementSurface.h.
|
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 Trk::DiscSurface, Trk::CylinderSurface, and Trk::ConeSurface.
|
inlinevirtual |
Specified by each surface type: GlobalToLocal method without dynamic memory allocation - boolean checks if on surface.
Implements Trk::Surface.
Definition at line 54 of file DetElementSurface.h.
|
inline |
Definition at line 45 of file DetElementSurface.h.
|
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
|
inlinevirtual |
virtual methods to be overwritten by the inherited surfaces
Implements Trk::Surface.
Definition at line 41 of file DetElementSurface.h.
|
inlinevirtual |
|
protectedinherited |
Helper method to factorize in one place common operations calculate inverse transofrm and multiply with position.
|
protectedinherited |
|
inherited |
Return 'true' if this surface is owned by the detector element.
|
inline |
Definition at line 51 of file DetElementSurface.h.
|
inherited |
Returns 'true' if this surface is 'free', i.e.
it does not belong to a detector element (and returns false otherwise
|
inlinevirtual |
This method returns true if the GlobalPosition is on the Surface for both, within or without check of whether the local position is inside boundaries or not.
Reimplemented from Trk::Surface.
Definition at line 104 of file DetElementSurface.h.
|
virtualinherited |
Optionally specified by each surface type : LocalParameters to Vector2D.
Reimplemented in Trk::DiscSurface, Trk::CylinderSurface, and Trk::ConeSurface.
|
inline |
Definition at line 43 of file DetElementSurface.h.
|
inlinevirtual |
Specified by each surface type: LocalToGlobal method without dynamic memory allocation.
Implements Trk::Surface.
Definition at line 53 of file DetElementSurface.h.
|
inherited |
This method returns the GlobalPosition from a LocalPosition The LocalPosition can be outside Surface bounds - for generality with momentum.
|
inline |
Definition at line 44 of file DetElementSurface.h.
|
inherited |
This method returns the GlobalPosition from LocalParameters The LocalParameters can be outside Surface bounds - for generality with momentum.
|
inherited |
|
inherited |
return the material Layer
|
virtualinherited |
Return the measurement frame - this is needed for alignment, in particular for StraightLine and Perigee Surface.
Reimplemented in Trk::CylinderSurface, Trk::ConeSurface, Trk::StraightLineSurface, and Trk::PerigeeSurface.
Definition at line 135 of file Surface.cxx.
|
inlinevirtual |
Return properly formatted class name.
Implements Trk::Surface.
Definition at line 55 of file DetElementSurface.h.
|
virtualinherited |
Returns the normal vector of the Surface (i.e.
in generall z-axis of rotation)
Reimplemented in Trk::PerigeeSurface.
|
virtualinherited |
Returns a normal vector at a specific local position.
Reimplemented in Trk::PerigeeSurface, Trk::CylinderSurface, and Trk::ConeSurface.
|
inlinestaticinherited |
Definition at line 25 of file TrkObjectCounter.h.
|
inherited |
The templated Parameters OnSurface method - checks on surface pointer first.
|
inherited |
Non-equality operator.
|
inlinevirtual |
|
inherited |
return ownership
|
virtualinherited |
the pathCorrection for derived classes with thickness - it reflects if the direction projection is positive or negative
Reimplemented in Trk::CylinderSurface, Trk::StraightLineSurface, Trk::PerigeeSurface, and Trk::ConeSurface.
|
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.
|
inherited |
set material layer
|
inherited |
set Ownership
|
inherited |
Set the transform updates center and normal.
|
inlinevirtual |
fast straight line distance evaluation to Surface
Implements Trk::Surface.
Definition at line 46 of file DetElementSurface.h.
|
inlinevirtual |
fast straight line distance evaluation to Surface - with bound option
Implements Trk::Surface.
Definition at line 101 of file DetElementSurface.h.
|
inlinevirtual |
fast straight line intersection schema - standard: provides closest intersection and (signed) path length forceDir provides the closest forward solution
Implements Trk::Surface.
Definition at line 95 of file DetElementSurface.h.
|
inlineinherited |
fst straight line intersection schema - templated for charged and neutral parameters
Definition at line 352 of file Tracking/TrkDetDescr/TrkSurfaces/TrkSurfaces/Surface.h.
|
inherited |
Returns HepGeom::Transform3D by reference.
|
inlinevirtual |
Returns the Surface type to avoid dynamic casts.
Implements Trk::Surface.
Definition at line 52 of file DetElementSurface.h.
|
inline |
Definition at line 40 of file DetElementSurface.h.
|
protectedinherited |
Not owning Pointer to the Detector Element.
Definition at line 441 of file Tracking/TrkDetDescr/TrkSurfaces/TrkSurfaces/Surface.h.
|
protectedinherited |
Identifier to the Detector Element.
Definition at line 443 of file Tracking/TrkDetDescr/TrkSurfaces/TrkSurfaces/Surface.h.
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.
|
private |
Definition at line 107 of file DetElementSurface.h.
|
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.
|
protectedinherited |
enum for surface owner : default free surface
Definition at line 455 of file Tracking/TrkDetDescr/TrkSurfaces/TrkSurfaces/Surface.h.
|
protectedinherited |
Unique Pointer to the Transforms struct.
Definition at line 439 of file Tracking/TrkDetDescr/TrkSurfaces/TrkSurfaces/Surface.h.
|
inlinestaticinherited |
Definition at line 22 of file TrkObjectCounter.h.
|
staticconstexprprotectedinherited |
Tolerance for being on Surface.
Definition at line 458 of file Tracking/TrkDetDescr/TrkSurfaces/TrkSurfaces/Surface.h.