ATLAS Offline Software
Public Types | Public Member Functions | Static Public Member Functions | Static Public Attributes | Protected Member Functions | Protected Attributes | Static Protected Attributes | Friends | List of all members
Trk::DiscSurface Class Reference

#include <DiscSurface.h>

Inheritance diagram for Trk::DiscSurface:
Collaboration diagram for Trk::DiscSurface:

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

 DiscSurface ()
 Default Constructor. More...
 
 DiscSurface (const DiscSurface &psf)
 Copy Constructor. More...
 
DiscSurfaceoperator= (const DiscSurface &dsf)
 Assignement operator. More...
 
 DiscSurface (DiscSurface &&psf) noexcept=default
 Copy Constructor. More...
 
DiscSurfaceoperator= (DiscSurface &&dsf) noexcept=default
 Assignement operator. More...
 
virtual ~DiscSurface ()=default
 Destructor. More...
 
 DiscSurface (const Amg::Transform3D &htrans, double rmin, double rmax)
 Constructor for Discs from HepGeom::Transform3D, \( r_{min}, r_{max} \). More...
 
 DiscSurface (const Amg::Transform3D &htrans, double rmin, double rmax, double hphisec)
 Constructor for Discs from HepGeom::Transform3D, \( r_{min}, r_{max}, \phi_{hsec} \). More...
 
 DiscSurface (const Amg::Transform3D &htrans, double minhalfx, double maxhalfx, double maxR, double minR, double avephi, double stereo=0.)
 Constructor for Discs from HepGeom::Transform3D, \( r_{min}, r_{max}, hx_{min}, hx_{max} \) In this case you have DiscTrapezoidalBounds. More...
 
 DiscSurface (const Amg::Transform3D &htrans, std::shared_ptr< const DiscBounds > dbounds)
 Constructor for Discs from Amg::Transform3D and DiscBounds. More...
 
 DiscSurface (const Amg::Transform3D &htrans, std::shared_ptr< const DiscTrapezoidalBounds > dtbounds)
 Constructor for Discs from Amg::Transform3D and DiscTrapezoidalBounds. More...
 
 DiscSurface (const Amg::Transform3D &htrans, std::shared_ptr< const AnnulusBoundsPC > annpcbounds)
 Constructor for Discs from HepGeom::Transform3D and AnnulusBoundsPC. More...
 
 DiscSurface (const Amg::Transform3D &htrans, const AnnulusBounds &annbounds, const TrkDetElementBase *detElem=nullptr)
 Constructor for Discs from Transform3D and AnnulusBoundsPC This will use the converting factory in AnnulusBoundsPC to build an equivalent PC version. More...
 
 DiscSurface (const Amg::Transform3D &htrans)
 Constructor for Discs from HepGeom::Transform3D by unique_ptr. More...
 
 DiscSurface (const TrkDetElementBase &dmnt)
 Constructor for DiscSegment from DetectorElement. More...
 
 DiscSurface (const DiscSurface &psf, const Amg::Transform3D &transf)
 Copy Constructor with shift. More...
 
virtual bool operator== (const Surface &sf) const override
 Equality operator. More...
 
bool operator== (const DiscSurface &cf) const
 
virtual DiscSurfaceclone () const override
 Virtual constructor. More...
 
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, DiscSurface > > 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, DiscSurface > > 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::Vector3DglobalReferencePoint () const override final
 Returns a global reference point: For the Disc this is \( (R*cos(\phi), R*sin(\phi),0)*transform() \) Where \( r, \phi \) denote the r(), averagePhi() of the Bounds. More...
 
const SurfaceBoundsbounds () const override final
 This method returns the bounds by reference. More...
 
virtual bool insideBounds (const Amg::Vector2D &locpos, double tol1=0., double tol2=0.) const override
 This method calls the inside method of the bounds. More...
 
virtual bool insideBoundsCheck (const Amg::Vector2D &locpos, const BoundaryCheck &bchk) const override final
 
virtual bool isOnSurface (const Amg::Vector3D &glopo, const BoundaryCheck &bchk=true, double tol1=0., double tol2=0.) const override
 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...
 
virtual Amg::Vector2D localParametersToPosition (const LocalParameters &locpars) const override final
 Specialized for DiscSurface : LocalParameters to Vector2D. More...
 
virtual void localToGlobal (const Amg::Vector2D &locp, const Amg::Vector3D &mom, Amg::Vector3D &glob) const override
 Specialized for DiscSurface: LocalToGlobal method without dynamic memory allocation. More...
 
virtual bool globalToLocal (const Amg::Vector3D &glob, const Amg::Vector3D &mom, Amg::Vector2D &loc) const override
 Specialized for DiscSurface: 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
 fast straight line distance evaluation to Surface More...
 
virtual DistanceSolution straightLineDistanceEstimate (const Amg::Vector3D &pos, const Amg::Vector3D &dir, bool Bound) const override
 fast straight line distance evaluation to Surface - with bound option More...
 
virtual std::string name () const override
 Return properly formatted class name for screen output. More...
 
bool operator!= (const Surface &sf) const
 Non-equality operator. More...
 
std::unique_ptr< SurfaceuniqueClone () const
 NVI method returning unique_ptr clone. More...
 
const Amg::Transform3DcachedTransform () const
 Return the cached transformation directly. More...
 
const Amg::Transform3Dtransform () const
 Returns HepGeom::Transform3D by reference. More...
 
const Amg::Vector3Dcenter () const
 Returns the center position of the Surface. More...
 
virtual const Amg::Vector3Dnormal () 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...
 
const TrkDetElementBaseassociatedDetectorElement () const
 return associated Detector Element More...
 
Identifier associatedDetectorElementIdentifier () const
 return Identifier of the associated Detector Element More...
 
const Trk::LayerassociatedLayer () const
 return the associated Layer More...
 
const Trk::LayermaterialLayer () const
 return the material Layer More...
 
Trk::LayermaterialLayer ()
 
virtual const Trk::SurfacebaseSurface () const
 return the base surface (simplified for persistification) More...
 
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). More...
 
template<class T >
bool onSurface (const T &parameters, 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...
 
Amg::Vector3D localToGlobal (const LocalParameters &locpars) const
 This method returns the GlobalPosition from LocalParameters The LocalParameters can be outside Surface bounds. 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::Vector2DglobalToLocal (const Amg::Vector3D &glopos, double tol=0.) const
 This method returns the LocalPosition from a provided GlobalPosition. More...
 
std::optional< Amg::Vector2DglobalToLocal (const Amg::Vector3D &glopos, const Amg::Vector3D &glomom) const
 This method returns the LocalPosition from a provided GlobalPosition. 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 (const std::shared_ptr< Layer > &mlay)
 set material layer More...
 
virtual MsgStream & dump (MsgStream &sl) const
 Output Method for MsgStream, to be overloaded by child classes. More...
 
virtual std::ostream & dump (std::ostream &sl) const
 Output Method for std::ostream, to be overloaded by child classes. 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::Disc
 
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::shared_ptr< const SurfaceBoundsm_bounds
 reference Point on the Surface More...
 
CxxUtils::CachedUniquePtr< Amg::Vector3Dm_referencePoint
 static member for boundless approach More...
 
std::unique_ptr< Transformsm_transforms {}
 
const TrkDetElementBasem_associatedDetElement {}
 Not owning Pointer to the TrkDetElementBase. More...
 
Identifier m_associatedDetElementId {}
 Identifier for the TrkDetElementBase. More...
 
const Layerm_associatedLayer {}
 The associated layer Trk::Layer. More...
 
std::shared_ptr< Layerm_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_boundless
 
static constexpr double s_onSurfaceTolerance = 10e-5
 Tolerance for being on Surface. More...
 

Friends

template<class SURFACE , class BOUNDS_CNV >
class ::BoundSurfaceCnv_p1
 < data members More...
 
template<class SURFACE , class BOUNDS_CNV >
class ::BoundSurfaceCnv_p2
 bounds (shared) More...
 

Detailed Description

Class for a DiscSurface in the ATLAS detector. 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 53 of file DiscSurface.h.

Member Typedef Documentation

◆ ChargedTrackParametersUniquePtr

Unique ptr types.

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

◆ NeutralTrackParametersUniquePtr

Constructor & Destructor Documentation

◆ DiscSurface() [1/13]

Trk::DiscSurface::DiscSurface ( )

Default Constructor.

Definition at line 26 of file DiscSurface.cxx.

27  : Trk::Surface()
28  , m_bounds(nullptr)
29  , m_referencePoint(nullptr)
30 {}

◆ DiscSurface() [2/13]

Trk::DiscSurface::DiscSurface ( const DiscSurface psf)

Copy Constructor.

Definition at line 33 of file DiscSurface.cxx.

34  : Trk::Surface(dsf)
35  , m_bounds(dsf.m_bounds)
36  , m_referencePoint(nullptr)
37 {}

◆ DiscSurface() [3/13]

Trk::DiscSurface::DiscSurface ( DiscSurface &&  psf)
defaultnoexcept

Copy Constructor.

◆ ~DiscSurface()

virtual Trk::DiscSurface::~DiscSurface ( )
virtualdefault

Destructor.

◆ DiscSurface() [4/13]

Trk::DiscSurface::DiscSurface ( const Amg::Transform3D htrans,
double  rmin,
double  rmax 
)

Constructor for Discs from HepGeom::Transform3D, \( r_{min}, r_{max} \).

Definition at line 48 of file DiscSurface.cxx.

51  : Trk::Surface(htrans)
52  , m_bounds(std::make_shared<const Trk::DiscBounds>(rmin, rmax))
53  , m_referencePoint(nullptr)
54 {}

◆ DiscSurface() [5/13]

Trk::DiscSurface::DiscSurface ( const Amg::Transform3D htrans,
double  rmin,
double  rmax,
double  hphisec 
)

Constructor for Discs from HepGeom::Transform3D, \( r_{min}, r_{max}, \phi_{hsec} \).

Definition at line 57 of file DiscSurface.cxx.

61  : Trk::Surface(htrans)
62  , m_bounds(std::make_shared<Trk::DiscBounds>(rmin, rmax, hphisec))
63  , m_referencePoint(nullptr)
64 {}

◆ DiscSurface() [6/13]

Trk::DiscSurface::DiscSurface ( const Amg::Transform3D htrans,
double  minhalfx,
double  maxhalfx,
double  maxR,
double  minR,
double  avephi,
double  stereo = 0. 
)

Constructor for Discs from HepGeom::Transform3D, \( r_{min}, r_{max}, hx_{min}, hx_{max} \) In this case you have DiscTrapezoidalBounds.

Definition at line 66 of file DiscSurface.cxx.

73  : Trk::Surface(htrans)
74  , m_bounds(std::make_shared<Trk::DiscTrapezoidalBounds>(minhalfx,
75  maxhalfx,
76  maxR,
77  minR,
78  avephi,
79  stereo))
80  , m_referencePoint(nullptr)
81 {}

◆ DiscSurface() [7/13]

Trk::DiscSurface::DiscSurface ( const Amg::Transform3D htrans,
std::shared_ptr< const DiscBounds dbounds 
)

Constructor for Discs from Amg::Transform3D and DiscBounds.

Definition at line 84 of file DiscSurface.cxx.

86  : Trk::Surface(htrans)
87  , m_bounds(std::move(dbounds))
88  , m_referencePoint(nullptr)
89 {}

◆ DiscSurface() [8/13]

Trk::DiscSurface::DiscSurface ( const Amg::Transform3D htrans,
std::shared_ptr< const DiscTrapezoidalBounds dtbounds 
)

Constructor for Discs from Amg::Transform3D and DiscTrapezoidalBounds.

Definition at line 92 of file DiscSurface.cxx.

94  : Trk::Surface(htrans)
95  , m_bounds(std::move(dbounds))
96  , m_referencePoint(nullptr)
97 {}

◆ DiscSurface() [9/13]

Trk::DiscSurface::DiscSurface ( const Amg::Transform3D htrans,
std::shared_ptr< const AnnulusBoundsPC annpcbounds 
)

Constructor for Discs from HepGeom::Transform3D and AnnulusBoundsPC.

  • ownership of bounds is passed

Definition at line 99 of file DiscSurface.cxx.

101  : Trk::Surface(htrans),
102  m_bounds(std::move(annpcbounds)),
103  m_referencePoint(nullptr)
104 {}

◆ DiscSurface() [10/13]

Trk::DiscSurface::DiscSurface ( const Amg::Transform3D htrans,
const AnnulusBounds annbounds,
const TrkDetElementBase detElem = nullptr 
)

Constructor for Discs from Transform3D and AnnulusBoundsPC This will use the converting factory in AnnulusBoundsPC to build an equivalent PC version.

The overall transform of this object will be htrans and an additional rotation to overlay the two bounds implementations exactly.

Parameters
htransBase transform. This should be the transform of the PlaneSurface on which annbounds is located
annboundsCartesian annulus bounds to convert
detElemAdditional explicit detector element
Note
During testing, no conversion of the underlying detector element was implemented. This polar coordinate surface will therefore link back to the cartesian detector element.

Definition at line 106 of file DiscSurface.cxx.

109  : Trk::Surface(htrans),
110  m_referencePoint(nullptr)
111 {
112 
113  if(detElem != nullptr) {
114  m_associatedDetElement = detElem;
116  }
117 
118  // build AnnulusBoundsPC from XY AnnulusBounds
119  std::pair<AnnulusBoundsPC, double> res = AnnulusBoundsPC::fromCartesian(annbounds);
120  m_bounds = std::make_shared<AnnulusBoundsPC>(res.first);
121  double phiShift = res.second;
122  // construct shifted transform
123  // we get the necessary rotation from ::fromCartesian(), and we need to make
124  // the local coordinate system to be rotated correctly here
125  Amg::Vector2D origin2D = res.first.moduleOrigin();
126  Amg::Translation3D transl(Amg::Vector3D(origin2D.x(), origin2D.y(), 0));
127  Amg::Rotation3D rot(Amg::AngleAxis3D(-phiShift, Amg::Vector3D::UnitZ()));
128  Amg::Transform3D originTrf;
129  originTrf = transl * rot;
130 
131  m_transforms->transform = m_transforms->transform * originTrf.inverse();
132 }

◆ DiscSurface() [11/13]

Trk::DiscSurface::DiscSurface ( const Amg::Transform3D htrans)

Constructor for Discs from HepGeom::Transform3D by unique_ptr.

  • bounds is not set

Definition at line 135 of file DiscSurface.cxx.

136  : Trk::Surface(htrans)
137  , m_bounds(nullptr)
138  , m_referencePoint(nullptr)
139 {}

◆ DiscSurface() [12/13]

Trk::DiscSurface::DiscSurface ( const TrkDetElementBase dmnt)

Constructor for DiscSegment from DetectorElement.

Definition at line 142 of file DiscSurface.cxx.

143  : Trk::Surface(detelement)
144  , m_bounds(nullptr)
145  , m_referencePoint(nullptr)
146 {}

◆ DiscSurface() [13/13]

Trk::DiscSurface::DiscSurface ( const DiscSurface psf,
const Amg::Transform3D transf 
)

Copy Constructor with shift.

Definition at line 40 of file DiscSurface.cxx.

42  : Trk::Surface(dsf, transf)
43  , m_bounds(dsf.m_bounds)
44  , m_referencePoint(nullptr)
45 {}

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 the associated Trk::Layer which is alreay owned

  • only allowed by LayerBuilder
  • only done if no Layer is set already

◆ baseSurface()

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

return the base surface (simplified for persistification)

◆ bounds()

const SurfaceBounds& Trk::DiscSurface::bounds ( ) const
finaloverridevirtual

This method returns the bounds 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 DiscSurface* Trk::DiscSurface::clone ( ) const
overridevirtual

Virtual constructor.

Implements Trk::Surface.

Reimplemented in Trk::SlidingDiscSurface.

◆ createUniqueNeutralParameters() [1/2]

Trk::Surface::NeutralTrackParametersUniquePtr Trk::DiscSurface::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 201 of file DiscSurface.cxx.

203  {
204  return std::make_unique<ParametersT<5, Neutral, DiscSurface>>(
205  position, momentum, charge, *this, std::move(cov));
206 }

◆ createUniqueNeutralParameters() [2/2]

Trk::Surface::NeutralTrackParametersUniquePtr Trk::DiscSurface::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 191 of file DiscSurface.cxx.

193  {
194  return std::make_unique<ParametersT<5, Neutral, DiscSurface>>(
195  l1, l2, phi, theta, qop, *this, std::move(cov));
196 }

◆ createUniqueParameters() [1/2]

template<int DIM, class T >
std::unique_ptr<ParametersT<DIM, T, DiscSurface> > Trk::DiscSurface::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, DiscSurface> > Trk::DiscSurface::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::DiscSurface::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 181 of file DiscSurface.cxx.

183  {
184  return std::make_unique<ParametersT<5, Charged, DiscSurface>>(
185  position, momentum, charge, *this, std::move(cov));
186 }

◆ createUniqueTrackParameters() [2/2]

Trk::Surface::ChargedTrackParametersUniquePtr Trk::DiscSurface::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 172 of file DiscSurface.cxx.

174  {
175  return std::make_unique<ParametersT<5, Charged, DiscSurface>>(
176  l1, l2, phi, theta, qop, *this, std::move(cov));
177 }

◆ dump() [1/2]

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

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

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

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 }

◆ 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::PerigeeSurface, and Trk::DetElementSurface.

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()

const Amg::Vector3D & Trk::DiscSurface::globalReferencePoint ( ) const
finaloverridevirtual

Returns a global reference point: For the Disc this is \( (R*cos(\phi), R*sin(\phi),0)*transform() \) Where \( r, \phi \) denote the r(), averagePhi() of the Bounds.

Reimplemented from Trk::Surface.

Definition at line 209 of file DiscSurface.cxx.

210 {
211  if (!m_referencePoint) {
212  const Trk::DiscBounds* dbo =
213  dynamic_cast<const Trk::DiscBounds*>(&(bounds()));
214  if (dbo) {
215  double rMedium = bounds().r();
216  double phi = dbo->averagePhi();
217  Amg::Vector3D gp(rMedium * cos(phi), rMedium * sin(phi), 0.);
218  m_referencePoint.set(std::make_unique<Amg::Vector3D>(transform() * gp));
219  } else {
220  const Trk::DiscTrapezoidalBounds* dtbo =
221  dynamic_cast<const Trk::DiscTrapezoidalBounds*>(&(bounds()));
222  // double rMedium = dtbo ? bounds().r() : dtbo->rCenter() ; //nonsense, or
223  // logic inverted?
224  double rMedium = bounds().r();
225  double phi = dtbo ? dtbo->averagePhi() : 0.;
226  Amg::Vector3D gp(rMedium * cos(phi), rMedium * sin(phi), 0.);
227  m_referencePoint.set(std::make_unique<Amg::Vector3D>(transform() * gp));
228  }
229  }
230  return (*m_referencePoint);
231 }

◆ globalToLocal() [1/3]

bool Trk::DiscSurface::globalToLocal ( const Amg::Vector3D glob,
const Amg::Vector3D mom,
Amg::Vector2D loc 
) const
overridevirtual

Specialized for DiscSurface: GlobalToLocal method without dynamic memory allocation - boolean checks if on surface.

local<->global transformation in case of polar local coordinates

Implements Trk::Surface.

Reimplemented in Trk::SlidingDiscSurface.

Definition at line 250 of file DiscSurface.cxx.

253 {
254  Amg::Vector3D loc3Dframe = inverseTransformMultHelper(glopos);
255  locpos = Amg::Vector2D(loc3Dframe.perp(), loc3Dframe.phi());
256  return (std::fabs(loc3Dframe.z()) <= s_onSurfaceTolerance);
257 }

◆ 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::DiscSurface::insideBounds ( const Amg::Vector2D locpos,
double  tol1 = 0.,
double  tol2 = 0. 
) const
overridevirtual

This method calls the inside method of the bounds.

Implements Trk::Surface.

Reimplemented in Trk::SubtractedDiscSurface.

◆ insideBoundsCheck()

virtual bool Trk::DiscSurface::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::DiscSurface::isOnSurface ( const Amg::Vector3D glopo,
const BoundaryCheck bchk = true,
double  tol1 = 0.,
double  tol2 = 0. 
) const
overridevirtual

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.

Reimplemented in Trk::SlidingDiscSurface.

Definition at line 287 of file DiscSurface.cxx.

291 {
292  Amg::Vector3D loc3Dframe = inverseTransformMultHelper(glopo);
293  if (std::abs(loc3Dframe.z()) > (s_onSurfaceTolerance + tol1)) {
294  return false;
295  }
296  return (bchk
297  ? bounds().inside(
298  Amg::Vector2D(loc3Dframe.perp(), loc3Dframe.phi()), tol1, tol2)
299  : true);
300 }

◆ localParametersToPosition()

virtual Amg::Vector2D Trk::DiscSurface::localParametersToPosition ( const LocalParameters locpars) const
finaloverridevirtual

Specialized for DiscSurface : LocalParameters to Vector2D.

Reimplemented from Trk::Surface.

◆ localToGlobal() [1/5]

ATH_FLATTEN void Trk::DiscSurface::localToGlobal ( const Amg::Vector2D locp,
const Amg::Vector3D mom,
Amg::Vector3D glob 
) const
overridevirtual

Specialized for DiscSurface: LocalToGlobal method without dynamic memory allocation.

Implements Trk::Surface.

Reimplemented in Trk::SlidingDiscSurface.

Definition at line 236 of file DiscSurface.cxx.

239 {
240  // create the position in the local 3d frame
241  Amg::Vector3D loc3Dframe(locpos[Trk::locR] * cos(locpos[Trk::locPhi]),
242  locpos[Trk::locR] * sin(locpos[Trk::locPhi]),
243  0.);
244  // transport it to the globalframe
245  glopos = transform() * loc3Dframe;
246 }

◆ localToGlobal() [2/5]

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() [3/5]

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() [4/5]

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() [5/5]

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::Layer* Trk::Surface::materialLayer ( )
inherited

◆ materialLayer() [2/2]

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

return the material Layer

◆ measurementFrame()

Amg::RotationMatrix3D Surface::measurementFrame ( const Amg::Vector3D glopos,
const Amg::Vector3D glomom 
) const
virtualinherited

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

  • the default implementation is the the RotationMatrix3D of the transform

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

Definition at line 135 of file Surface.cxx.

136 {
137  return transform().linear();
138 }

◆ name()

virtual std::string Trk::DiscSurface::name ( ) const
overridevirtual

Return properly formatted class name for screen output.

Implements Trk::Surface.

Reimplemented in Trk::SlidingDiscSurface, and Trk::SubtractedDiscSurface.

◆ 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 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 Trk::PerigeeSurface, Trk::CylinderSurface, and Trk::ConeSurface.

◆ numberOfInstantiations()

static 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  }

◆ 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::DiscSurface & Trk::DiscSurface::operator= ( const DiscSurface dsf)

Assignement operator.

Definition at line 149 of file DiscSurface.cxx.

150 {
151  if (this != &dsf) {
153  m_bounds = dsf.m_bounds;
154  m_referencePoint.store(nullptr);
155  }
156  return *this;
157 }

◆ operator=() [2/2]

DiscSurface& Trk::DiscSurface::operator= ( DiscSurface &&  dsf)
defaultnoexcept

Assignement operator.

◆ operator==() [1/2]

bool Trk::DiscSurface::operator== ( const DiscSurface cf) const

◆ operator==() [2/2]

bool Trk::DiscSurface::operator== ( const Surface sf) const
overridevirtual

Equality operator.

Implements Trk::Surface.

Reimplemented in Trk::SlidingDiscSurface, and Trk::SubtractedDiscSurface.

Definition at line 160 of file DiscSurface.cxx.

161 {
162  // first check the type not to compare apples with oranges
163  if (sf.type()!=Trk::SurfaceType::Disc){
164  return false;
165  }
166  return (*this) == static_cast<const Trk::DiscSurface&>(sf);
167 }

◆ owner()

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

return ownership

◆ pathCorrection()

virtual double Trk::Surface::pathCorrection ( const Amg::Vector3D pos,
const Amg::Vector3D mom 
) const
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.

◆ 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 }

◆ setMaterialLayer()

void Trk::Surface::setMaterialLayer ( const std::shared_ptr< Layer > &  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::DiscSurface::straightLineDistanceEstimate ( const Amg::Vector3D pos,
const Amg::Vector3D dir 
) const
overridevirtual

fast straight line distance evaluation to Surface

distance to surface

Implements Trk::Surface.

Reimplemented in Trk::SlidingDiscSurface.

Definition at line 304 of file DiscSurface.cxx.

306 {
307  double tol = 0.001;
308 
309  const Amg::Vector3D& C = center();
310  const Amg::Vector3D& N = normal();
311 
312  double S = C.dot(N);
313  double b = S < 0. ? -1 : 1;
314  double d = (pos - C).dot(N); // distance to surface
315 
316  double A = b * dir.dot(N);
317  if (A == 0.) { // direction parallel to surface
318  if (fabs(d) < tol) {
319  return {1, 0., true, 0.};
320  }
321  return {0, d, true, 0.};
322  }
323 
324  double D = b * (S - (pos.dot(N))) / A;
325  return {1, d, true, D};
326 }

◆ straightLineDistanceEstimate() [2/2]

Trk::DistanceSolution Trk::DiscSurface::straightLineDistanceEstimate ( const Amg::Vector3D pos,
const Amg::Vector3D dir,
bool  Bound 
) const
overridevirtual

fast straight line distance evaluation to Surface - with bound option

Implements Trk::Surface.

Reimplemented in Trk::SlidingDiscSurface.

Definition at line 329 of file DiscSurface.cxx.

332 {
333  const Amg::Transform3D& T = transform();
334  const double Az[3] = { T(0, 2), T(1, 2), T(2, 2) };
335 
336  // Transformation to cylinder system coordinates
337  //
338  const double dx = pos[0] - T(0, 3);
339  const double dy = pos[1] - T(1, 3);
340  const double dz = pos[2] - T(2, 3);
341  const double z = dx * Az[0] + dy * Az[1] + dz * Az[2];
342  const double az = dir[0] * Az[0] + dir[1] * Az[1] + dir[2] * Az[2];
343 
344  // Step to surface
345  //
346  int ns = 0;
347  double s = 0.;
348  if (az != 0.) {
349  s = -z / az;
350  ns = 1;
351  }
352  double dist = std::abs(z);
353  if (!bound) {
354  return {ns, dist, true, s};
355  }
356 
357  // Min distance to surface
358  //
359  const double x = dx * T(0, 0) + dy * T(1, 0) + dz * T(2, 0);
360  const double y = dx * T(0, 1) + dy * T(1, 1) + dz * T(2, 1);
361 
362  Amg::Vector2D lp(sqrt(x * x + y * y), atan2(y, x));
363 
364  double d = bounds().minDistance(lp);
365  if (d > 0.) {
366  dist = std::sqrt(dist * dist + d * d);
367  }
368 
369  return {ns, dist, true, s};
370 }

◆ straightLineIntersection() [1/2]

Trk::Intersection Trk::DiscSurface::straightLineIntersection ( const Amg::Vector3D pos,
const Amg::Vector3D dir,
bool  forceDir = false,
Trk::BoundaryCheck  bchk = false 
) const
finaloverridevirtual

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

mathematical motivation:

the equation of the plane is given by:
\( \vec n \cdot \vec x = \vec n \cdot \vec p,\)
where \( \vec n = (n_{x}, n_{y}, n_{z})\) denotes the normal vector of the plane, \( \vec p = (p_{x}, p_{y}, p_{z})\) one specific point on the plane and \( \vec x = (x,y,z) \) all possible points on the plane.
Given a line with:
\( \vec l(u) = \vec l_{1} + u \cdot \vec v \),
the solution for \( u \) can be written: \( u = \frac{\vec n (\vec p - \vec l_{1})}{\vec n \vec v}\)
If the denominator is 0 then the line lies:

  • either in the plane
  • perpenticular to the normal of the plane

Implements Trk::Surface.

Definition at line 260 of file DiscSurface.cxx.

263  {
264  double denom = dir.dot(normal());
265  if (denom) {
266  double u = (normal().dot((center() - pos))) / (denom);
267  Amg::Vector3D intersectPoint(pos + u * dir);
268  // evaluate the intersection in terms of direction
269  bool isValid = forceDir ? (u > 0.) : true;
270  // evaluate (if necessary in terms of boundaries)
271  isValid = bchk ? (isValid && isOnSurface(intersectPoint)) : isValid;
272  // return the result
273  return Trk::Intersection(intersectPoint, u, isValid);
274  }
275  return Trk::Intersection(pos, 0., false);
276 }

◆ straightLineIntersection() [2/2]

template<class 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 351 of file Tracking/TrkDetDescr/TrkSurfaces/TrkSurfaces/Surface.h.

355  {
357  pars.position(), pars.momentum().unit(), forceDir, bchk);
358  }

◆ transform()

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

Returns HepGeom::Transform3D by reference.

◆ type()

constexpr virtual SurfaceType Trk::DiscSurface::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.

Friends And Related Function Documentation

◆ ::BoundSurfaceCnv_p1

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

< data members

Definition at line 280 of file DiscSurface.h.

◆ ::BoundSurfaceCnv_p2

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

bounds (shared)

Definition at line 282 of file DiscSurface.h.

Member Data Documentation

◆ m_associatedDetElement

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

Not owning Pointer to the TrkDetElementBase.

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

◆ m_associatedDetElementId

Identifier Trk::Surface::m_associatedDetElementId {}
protectedinherited

◆ m_associatedLayer

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

The associated layer Trk::Layer.

  • layer in which the Surface is embedded (not owning pointed)

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

◆ m_bounds

std::shared_ptr<const SurfaceBounds> Trk::DiscSurface::m_bounds
protected

reference Point on the Surface

Definition at line 284 of file DiscSurface.h.

◆ m_materialLayer

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

Possibility to attach a material descrption.

  • potentially given as the associated material layer (not owning pointer)

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

◆ m_owner

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

enum for surface owner : 0 free surface

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

◆ m_referencePoint

CxxUtils::CachedUniquePtr<Amg::Vector3D> Trk::DiscSurface::m_referencePoint
protected

static member for boundless approach

Definition at line 286 of file DiscSurface.h.

◆ m_transforms

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

◆ s_boundless

const Trk::NoBounds Trk::DiscSurface::s_boundless
staticprotected

Definition at line 288 of file DiscSurface.h.

◆ s_numberOfInstantiations

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

Definition at line 22 of file TrkObjectCounter.h.

◆ s_onSurfaceTolerance

constexpr 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

constexpr SurfaceType Trk::DiscSurface::staticType = SurfaceType::Disc
staticconstexpr

Definition at line 57 of file DiscSurface.h.


The documentation for this class was generated from the following files:
make_hlt_rep.pars
pars
Definition: make_hlt_rep.py:90
Trk::Surface::m_associatedDetElement
const TrkDetElementBase * m_associatedDetElement
Not owning Pointer to the TrkDetElementBase.
Definition: Tracking/TrkDetDescr/TrkSurfaces/TrkSurfaces/Surface.h:439
Trk::y
@ y
Definition: ParamDefs.h:56
Trk::DiscSurface::m_bounds
std::shared_ptr< const SurfaceBounds > m_bounds
reference Point on the Surface
Definition: DiscSurface.h:284
Amg::Rotation3D
Eigen::Quaternion< double > Rotation3D
Definition: GeoPrimitives.h:43
python.SystemOfUnits.s
int s
Definition: SystemOfUnits.py:131
Trk::DiscBounds::averagePhi
double averagePhi() const
This method returns the average phi.
Trk::Intersection
Definition: Intersection.h:24
Trk::Surface::associatedDetectorElement
const TrkDetElementBase * associatedDetectorElement() const
return associated Detector Element
Trk::Surface::name
virtual std::string name() const =0
Return properly formatted class name.
Trk::z
@ z
global position (cartesian)
Definition: ParamDefs.h:57
Trk::Surface::straightLineIntersection
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
Definition: Tracking/TrkDetDescr/TrkSurfaces/TrkSurfaces/Surface.h:351
Amg::Vector2D
Eigen::Matrix< double, 2, 1 > Vector2D
Definition: GeoPrimitives.h:48
Trk::DiscSurface::isOnSurface
virtual bool isOnSurface(const Amg::Vector3D &glopo, const BoundaryCheck &bchk=true, double tol1=0., double tol2=0.) const override
This method returns true if the GlobalPosition is on the Surface for both, within or without check of...
Definition: DiscSurface.cxx:287
hist_file_dump.d
d
Definition: hist_file_dump.py:143
DMTest::C
C_v1 C
Definition: C.h:26
plotBeamSpotVxVal.cov
cov
Definition: plotBeamSpotVxVal.py:201
Trk::DiscSurface::m_referencePoint
CxxUtils::CachedUniquePtr< Amg::Vector3D > m_referencePoint
static member for boundless approach
Definition: DiscSurface.h:286
Trk::DiscSurface
Definition: DiscSurface.h:54
JetTiledMap::N
@ N
Definition: TiledEtaPhiMap.h:44
Trk::locR
@ locR
Definition: ParamDefs.h:44
drawFromPickle.cos
cos
Definition: drawFromPickle.py:36
Trk::TrkDetElementBase::identify
virtual Identifier identify() const =0
Identifier.
isValid
bool isValid(const T &p)
Av: we implement here an ATLAS-sepcific convention: all particles which are 99xxxxx are fine.
Definition: AtlasPID.h:812
Trk::Surface::center
const Amg::Vector3D & center() const
Returns the center position of the Surface.
JetTiledMap::S
@ S
Definition: TiledEtaPhiMap.h:44
Trk::u
@ u
Enums for curvilinear frames.
Definition: ParamDefs.h:77
Trk::DiscTrapezoidalBounds
Definition: DiscTrapezoidalBounds.h:42
Trk::SurfaceBounds::minDistance
virtual double minDistance(const Amg::Vector2D &pos) const =0
Minimal distance to boundary ( > 0 if outside and <=0 if inside)
Trk::Surface::inverseTransformMultHelper
Amg::Vector3D inverseTransformMultHelper(const Amg::Vector3D &glopos) const
Trk::TrkDetElementBase::detectorTypeString
std::string detectorTypeString() const
Returns a string of the Detector element type.
Definition: TrkDetElementBase.cxx:10
Trk::Surface::operator=
Surface & operator=(const Surface &sf)
Definition: Surface.cxx:91
A
skel.l2
l2
Definition: skel.GENtoEVGEN.py:410
Trk::Surface::m_transforms
std::unique_ptr< Transforms > m_transforms
Definition: Tracking/TrkDetDescr/TrkSurfaces/TrkSurfaces/Surface.h:436
Trk::Surface::s_onSurfaceTolerance
static constexpr double s_onSurfaceTolerance
Tolerance for being on Surface.
Definition: Tracking/TrkDetDescr/TrkSurfaces/TrkSurfaces/Surface.h:458
ParticleGun_EoverP_Config.momentum
momentum
Definition: ParticleGun_EoverP_Config.py:63
Trk::theta
@ theta
Definition: ParamDefs.h:66
Amg::Transform3D
Eigen::Affine3d Transform3D
Definition: GeoPrimitives.h:46
dumpNswErrorDb.linear
def linear
Definition: dumpNswErrorDb.py:29
Trk::DiscSurface::bounds
const SurfaceBounds & bounds() const override final
This method returns the bounds by reference.
res
std::pair< std::vector< unsigned int >, bool > res
Definition: JetGroupProductTest.cxx:11
Trk::DiscTrapezoidalBounds::averagePhi
double averagePhi() const
This method returns the average phi.
Trk::Surface::normal
virtual const Amg::Vector3D & normal() const
Returns the normal vector of the Surface (i.e.
dot.dot
def dot(G, fn, nodesToHighlight=[])
Definition: dot.py:5
compute_lumi.denom
denom
Definition: compute_lumi.py:76
beamspotman.dir
string dir
Definition: beamspotman.py:623
Trk::Surface::bounds
virtual const SurfaceBounds & bounds() const =0
Surface Bounds method.
plotBeamSpotMon.b
b
Definition: plotBeamSpotMon.py:77
Trk::locPhi
@ locPhi
local polar
Definition: ParamDefs.h:45
charge
double charge(const T &p)
Definition: AtlasPID.h:931
Trk::Surface::insideBounds
virtual bool insideBounds(const Amg::Vector2D &locpos, double tol1=0., double tol2=0.) const =0
virtual methods to be overwritten by the inherited surfaces
Amg::Vector3D
Eigen::Matrix< double, 3, 1 > Vector3D
Definition: GeoPrimitives.h:47
Trk::Surface::m_associatedDetElementId
Identifier m_associatedDetElementId
Identifier for the TrkDetElementBase.
Definition: Tracking/TrkDetDescr/TrkSurfaces/TrkSurfaces/Surface.h:442
python.LumiBlobConversion.pos
pos
Definition: LumiBlobConversion.py:18
Trk::inside
@ inside
Definition: PropDirection.h:29
makeTRTBarrelCans.dy
tuple dy
Definition: makeTRTBarrelCans.py:21
Trk::ObjectCounter< Trk::Surface >::s_numberOfInstantiations
static std::atomic_size_t s_numberOfInstantiations
Definition: TrkObjectCounter.h:22
Trk::Surface::globalToLocal
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...
mapkey::sf
@ sf
Definition: TElectronEfficiencyCorrectionTool.cxx:38
Amg::RotationMatrix3D
Eigen::Matrix< double, 3, 3 > RotationMatrix3D
Definition: GeoPrimitives.h:49
makeTRTBarrelCans.dx
tuple dx
Definition: makeTRTBarrelCans.py:20
Amg::Translation3D
Eigen::Translation< double, 3 > Translation3D
Definition: GeoPrimitives.h:44
Trk::SurfaceType::Disc
@ Disc
python.SystemOfUnits.ns
int ns
Definition: SystemOfUnits.py:130
Amg::AngleAxis3D
Eigen::AngleAxisd AngleAxis3D
Definition: GeoPrimitives.h:45
Trk::phi
@ phi
Definition: ParamDefs.h:75
skel.l1
l1
Definition: skel.GENtoEVGEN.py:409
Trk::AnnulusBoundsPC::fromCartesian
static std::pair< AnnulusBoundsPC, double > fromCartesian(const AnnulusBounds &annbo)
Static factory method to produce an instance of this class from the cartesian implementation.
Definition: AnnulusBoundsPC.cxx:83
drawFromPickle.sin
sin
Definition: drawFromPickle.py:36
Trk::x
@ x
Definition: ParamDefs.h:55
Trk::Surface
Definition: Tracking/TrkDetDescr/TrkSurfaces/TrkSurfaces/Surface.h:75
Trk::Surface::transform
const Amg::Transform3D & transform() const
Returns HepGeom::Transform3D by reference.
TSU::T
unsigned long long T
Definition: L1TopoDataTypes.h:35
Trk::DiscBounds
Definition: DiscBounds.h:44
Trk::SurfaceBounds::r
virtual double r() const =0
Interface method for the maximal extension or the radius.