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 forceFwd is to provide 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::Layer * | materialLayer () const |
return the material Layer More... | |
Trk::Layer * | 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<class 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< Layer > mlay) |
set material layer More... | |
void | associateLayer (const Layer &lay) |
method to associate the associated Trk::Layer which is alreay owned 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 {} |
const TrkDetElementBase * | m_associatedDetElement {} |
Not owning Pointer to the TrkDetElementBase. More... | |
Identifier | m_associatedDetElementId {} |
Identifier for the TrkDetElementBase. More... | |
const Layer * | m_associatedLayer {} |
The associated layer Trk::Layer. More... | |
std::shared_ptr< Layer > | m_materialLayer {} |
Possibility to attach a material descrption. More... | |
SurfaceOwner | m_owner {SurfaceOwner::noOwn} |
enum for surface owner : 0 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 124 of file Tracking/TrkDetDescr/TrkSurfaces/TrkSurfaces/Surface.h.
|
inherited |
Definition at line 126 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 the associated Trk::Layer which is alreay owned
|
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 forceFwd is to provide 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 351 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 TrkDetElementBase.
Definition at line 439 of file Tracking/TrkDetDescr/TrkSurfaces/TrkSurfaces/Surface.h.
|
protectedinherited |
Identifier for the TrkDetElementBase.
Definition at line 442 of file Tracking/TrkDetDescr/TrkSurfaces/TrkSurfaces/Surface.h.
The associated layer Trk::Layer.
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 descrption.
Definition at line 453 of file Tracking/TrkDetDescr/TrkSurfaces/TrkSurfaces/Surface.h.
|
protectedinherited |
enum for surface owner : 0 free surface
Definition at line 455 of file Tracking/TrkDetDescr/TrkSurfaces/TrkSurfaces/Surface.h.
|
protectedinherited |
Definition at line 436 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.