ATLAS Offline Software
|
#include <PerigeeSurface.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 | |
PerigeeSurface () | |
Default Constructor - needed for persistency. More... | |
PerigeeSurface (const PerigeeSurface &pesf) | |
Copy constructor. More... | |
PerigeeSurface & | operator= (const PerigeeSurface &slsf) |
Assignment operator. More... | |
PerigeeSurface (PerigeeSurface &&pesf) noexcept=default | |
Copy constructor. More... | |
PerigeeSurface & | operator= (PerigeeSurface &&slsf) noexcept=default |
Assignment operator. More... | |
virtual | ~PerigeeSurface ()=default |
Destructor. More... | |
PerigeeSurface (const Amg::Vector3D &gp) | |
Constructor from GlobalPosition. More... | |
PerigeeSurface (const Amg::Transform3D &tTransform) | |
Constructor with a Transform by ref - needed for tilt. More... | |
PerigeeSurface (const PerigeeSurface &pesf, const Amg::Transform3D &transf) | |
Copy constructor with shift. More... | |
virtual PerigeeSurface * | clone () const override final |
Virtual constructor. More... | |
virtual bool | operator== (const Surface &sf) const override |
Equality operator. More... | |
bool | operator== (const PerigeeSurface &cf) const |
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. More... | |
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. More... | |
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. More... | |
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. More... | |
template<int DIM, class T > | |
std::unique_ptr< ParametersT< DIM, T, PerigeeSurface > > | 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. More... | |
template<int DIM, class T > | |
std::unique_ptr< ParametersT< DIM, T, PerigeeSurface > > | 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. More... | |
constexpr virtual SurfaceType | type () const override final |
Return the surface type. More... | |
virtual const Amg::Vector3D & | normal () const override final |
Returns the x global axis. More... | |
virtual Amg::Vector3D | normal (const Amg::Vector2D &lp) const override final |
Returns a normal vector at a specific localPosition. More... | |
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. More... | |
Amg::Vector3D | localToGlobal (const LocalParameters &locpos) const |
Local to global method: Take care that by just providing locR and locZ the global position cannot be calculated. More... | |
Amg::Vector3D | localToGlobal (const LocalParameters &locpos, const Amg::Vector3D &glomom) const |
This method is the true local->global transformation. More... | |
virtual void | localToGlobal (const Amg::Vector2D &locp, const Amg::Vector3D &mom, Amg::Vector3D &glob) const override final |
LocalToGlobal method without dynamic memory allocation. More... | |
virtual bool | globalToLocal (const Amg::Vector3D &glob, const Amg::Vector3D &mom, Amg::Vector2D &loc) const override final |
GlobalToLocal method without dynamic memory allocation - boolean checks if on surface. More... | |
virtual Intersection | straightLineIntersection (const Amg::Vector3D &pos, const Amg::Vector3D &dir, bool forceDir=false, Trk::BoundaryCheck bchk=false) const override final |
fast straight line intersection schema - standard: provides closest intersection and (signed) path length forceDir is to provide the closest forward solution More... | |
virtual DistanceSolution | straightLineDistanceEstimate (const Amg::Vector3D &pos, const Amg::Vector3D &dir) const override final |
fast straight line distance evaluation to Surface More... | |
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 More... | |
virtual double | pathCorrection (const Amg::Vector3D &, const Amg::Vector3D &) const override final |
the pathCorrection for derived classes with thickness More... | |
virtual bool | isOnSurface (const Amg::Vector3D &glopo, const BoundaryCheck &bchk=true, double tol1=0., double tol2=0.) const override final |
This method checks if a globalPosition in on the Surface or not. More... | |
virtual bool | insideBounds (const Amg::Vector2D &locpos, double tol1=0., double tol2=0.) const override final |
This surface calls the iside method of the bounds. More... | |
virtual bool | insideBoundsCheck (const Amg::Vector2D &locpos, const BoundaryCheck &bchk) const override final |
const Amg::Vector3D & | lineDirection () const |
Special method for StraightLineSurface - provides the Line direction from cache: speedup. More... | |
virtual const NoBounds & | bounds () const override final |
Return bounds() method. More... | |
virtual std::string | name () const override final |
Return properly formatted class name for screen output. More... | |
virtual MsgStream & | dump (MsgStream &sl) const override |
Output Method for MsgStream. More... | |
virtual std::ostream & | dump (std::ostream &sl) const override |
Output Method for std::ostream. More... | |
bool | operator!= (const Surface &sf) const |
Non-equality operator. More... | |
std::unique_ptr< Surface > | uniqueClone () const |
NVI method returning unique_ptr clone. 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 & | 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... | |
Identifier | associatedDetectorElementIdentifier () const |
return Identifier of the 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 |
This method returns the GlobalPosition from a LocalPosition uses the per surface localToGlobal. 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... | |
std::optional< Amg::Vector2D > | globalToLocal (const Amg::Vector3D &glopos, double tol=0.) const |
This method returns the LocalPosition from a provided GlobalPosition. 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... | |
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 constexpr SurfaceType | staticType = SurfaceType::Perigee |
The surface type static constexpr. More... | |
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 | |
CxxUtils::CachedValue< Amg::Vector3D > | m_lineDirection |
< data members cache of the line direction (speeds up) More... | |
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 const NoBounds | s_perigeeBounds |
static constexpr double | s_onSurfaceTolerance = 10e-5 |
Tolerance for being on Surface. More... | |
Class describing the Line to which the Perigee refers to. The Surface axis is fixed to be the z-axis of the Tracking frame. It inherits from Surface.
Definition at line 42 of file PerigeeSurface.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.
Trk::PerigeeSurface::PerigeeSurface | ( | ) |
Default Constructor - needed for persistency.
Definition at line 21 of file PerigeeSurface.cxx.
Trk::PerigeeSurface::PerigeeSurface | ( | const PerigeeSurface & | pesf | ) |
|
defaultnoexcept |
Copy constructor.
|
virtualdefault |
Destructor.
Trk::PerigeeSurface::PerigeeSurface | ( | const Amg::Vector3D & | gp | ) |
Trk::PerigeeSurface::PerigeeSurface | ( | const Amg::Transform3D & | tTransform | ) |
Constructor with a Transform by ref - needed for tilt.
Definition at line 34 of file PerigeeSurface.cxx.
Trk::PerigeeSurface::PerigeeSurface | ( | const PerigeeSurface & | pesf, |
const Amg::Transform3D & | transf | ||
) |
|
inherited |
return associated Detector Element
|
inherited |
return Identifier of the associated Detector Element
|
inherited |
return the associated Layer
method to associate the associated Trk::Layer which is alreay owned
|
virtualinherited |
return the base surface (simplified for persistification)
Return bounds() method.
Implements Trk::Surface.
|
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.
|
finaloverridevirtual |
Virtual constructor.
Implements Trk::Surface.
|
finaloverridevirtual |
Use the Surface as a ParametersBase constructor, from global parameters - neutral.
Implements Trk::Surface.
Definition at line 140 of file PerigeeSurface.cxx.
|
finaloverridevirtual |
Use the Surface as a ParametersBase constructor, from local parameters - neutral.
Implements Trk::Surface.
Definition at line 125 of file PerigeeSurface.cxx.
std::unique_ptr<ParametersT<DIM, T, PerigeeSurface> > Trk::PerigeeSurface::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.
std::unique_ptr<ParametersT<DIM, T, PerigeeSurface> > Trk::PerigeeSurface::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.
|
finaloverridevirtual |
Use the Surface as a ParametersBase constructor, from global parameters - charged.
Implements Trk::Surface.
Definition at line 112 of file PerigeeSurface.cxx.
|
finaloverridevirtual |
Use the Surface as a ParametersBase constructor, from local parameters - charged.
Implements Trk::Surface.
Definition at line 98 of file PerigeeSurface.cxx.
|
overridevirtual |
Output Method for MsgStream.
Reimplemented from Trk::Surface.
Definition at line 302 of file PerigeeSurface.cxx.
|
overridevirtual |
Output Method for std::ostream.
Reimplemented from Trk::Surface.
Definition at line 314 of file PerigeeSurface.cxx.
|
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.
|
finaloverridevirtual |
GlobalToLocal method without dynamic memory allocation - boolean checks if on surface.
Implements Trk::Surface.
Definition at line 211 of file PerigeeSurface.cxx.
|
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
|
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
|
finaloverridevirtual |
This surface calls the iside method of the bounds.
Implements Trk::Surface.
|
finaloverridevirtual |
Implements Trk::Surface.
|
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.
|
inherited |
Returns 'true' if this surface is 'free', i.e.
it does not belong to a detector element (and returns false otherwise
|
finaloverridevirtual |
This method checks if a globalPosition in on the Surface or not.
Reimplemented from Trk::Surface.
const Amg::Vector3D& Trk::PerigeeSurface::lineDirection | ( | ) | const |
Special method for StraightLineSurface - provides the Line direction from cache: speedup.
|
virtualinherited |
Optionally specified by each surface type : LocalParameters to Vector2D.
Reimplemented in Trk::DiscSurface, Trk::CylinderSurface, and Trk::ConeSurface.
|
finaloverridevirtual |
LocalToGlobal method without dynamic memory allocation.
Implements Trk::Surface.
Definition at line 171 of file PerigeeSurface.cxx.
|
inherited |
This method returns the GlobalPosition from a LocalPosition uses the per surface localToGlobal.
|
inherited |
This method returns the GlobalPosition from a LocalPosition The LocalPosition can be outside Surface bounds - for generality with momentum.
Amg::Vector3D Trk::PerigeeSurface::localToGlobal | ( | const LocalParameters & | locpos | ) | const |
Local to global method: Take care that by just providing locR and locZ the global position cannot be calculated.
Therefor only the locZ-coordinate is taken and transformed into the global frame. for calculating the global position, a momentum direction has to be provided as well, use the appropriate function!
Definition at line 152 of file PerigeeSurface.cxx.
Amg::Vector3D Trk::PerigeeSurface::localToGlobal | ( | const LocalParameters & | locpos, |
const Amg::Vector3D & | glomom | ||
) | const |
This method is the true local->global transformation.
by providing a locR and locZ coordinate such as a GlobalMomentum the global position can be calculated. The choice between the two possible canditates is done by the sign of the radius
Definition at line 193 of file PerigeeSurface.cxx.
|
inherited |
|
inherited |
return the material Layer
|
finaloverridevirtual |
Return the measurement frame - this is needed for alignment, in particular for StraightLine and Perigee Surface.
Reimplemented from Trk::Surface.
Definition at line 252 of file PerigeeSurface.cxx.
|
finaloverridevirtual |
Return properly formatted class name for screen output.
Implements Trk::Surface.
|
finaloverridevirtual |
Returns the x global axis.
Reimplemented from Trk::Surface.
|
finaloverridevirtual |
Returns a normal vector at a specific localPosition.
Reimplemented from Trk::Surface.
|
inlinestaticinherited |
Definition at line 25 of file TrkObjectCounter.h.
|
inherited |
The templated Parameters OnSurface method - checks on surface pointer first.
|
inherited |
Non-equality operator.
Trk::PerigeeSurface & Trk::PerigeeSurface::operator= | ( | const PerigeeSurface & | slsf | ) |
|
defaultnoexcept |
Assignment operator.
bool Trk::PerigeeSurface::operator== | ( | const PerigeeSurface & | cf | ) | const |
|
inherited |
return ownership
|
finaloverridevirtual |
the pathCorrection for derived classes with thickness
Reimplemented from Trk::Surface.
|
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.
|
finaloverridevirtual |
fast straight line distance evaluation to Surface
distance to surface
Implements Trk::Surface.
Definition at line 269 of file PerigeeSurface.cxx.
|
finaloverridevirtual |
fast straight line distance evaluation to Surface - with bound option
Implements Trk::Surface.
Definition at line 284 of file PerigeeSurface.cxx.
|
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:
This results in a system of two linear equations:
Solving (i), (ii) for \( \lambda_0 \) and \( \mu_0 \) yields:
Implements Trk::Surface.
Definition at line 226 of file PerigeeSurface.cxx.
|
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.
|
constexprfinaloverridevirtual |
Return the surface type.
Implements Trk::Surface.
|
inherited |
NVI method returning unique_ptr clone.
|
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.
|
protected |
< data members cache of the line direction (speeds up)
Definition at line 267 of file PerigeeSurface.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.
|
staticprotected |
Definition at line 268 of file PerigeeSurface.h.
|
staticconstexpr |
The surface type static constexpr.
Definition at line 47 of file PerigeeSurface.h.