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::ConeSurface Class Reference

#include <ConeSurface.h>

Inheritance diagram for Trk::ConeSurface:
Collaboration diagram for Trk::ConeSurface:

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

 ConeSurface ()
 Default Constructor. More...
 
ConeSurfaceoperator= (const ConeSurface &csf)
 Assignment operator. More...
 
 ConeSurface (const ConeSurface &csf)
 Copy constructor. More...
 
 ConeSurface (ConeSurface &&annbo)=default
 Move constructor. More...
 
ConeSurfaceoperator= (ConeSurface &&sbo)=default
 Move assignment. More...
 
virtual ~ConeSurface ()=default
 Destructor. More...
 
 ConeSurface (const Amg::Transform3D &htrans, double alpha, bool symmetric=false)
 Constructor form Transform and an opening angle. More...
 
 ConeSurface (const Amg::Transform3D &htrans, double alpha, double locZmin, double locZmax, double halfPhi=M_PI)
 Constructor form Transform, radius halfphi, and halflenght. More...
 
 ConeSurface (const Amg::Transform3D &htrans, ConeBounds *cbounds)
 Constructor from Transform and CylinderBounds. More...
 
 ConeSurface (const Amg::Transform3D &htrans)
 Constructor from Amg Transform by ref. More...
 
 ConeSurface (const ConeSurface &csf, const Amg::Transform3D &transf)
 Copy constructor with shift. More...
 
virtual bool operator== (const Surface &sf) const override
 Equality operator. More...
 
bool operator== (const ConeSurface &cf) const
 
virtual ConeSurfaceclone () const override
 Implicit 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, ConeSurface > > 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, ConeSurface > > 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 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...
 
virtual const Amg::Vector3DglobalReferencePoint () const override final
 Returns a global reference point: For the Cylinder this is \( (R*cos(\phi), R*sin(\phi),0)*transform() \) Where \( \phi \) denotes the averagePhi() of the cylinderBounds. More...
 
virtual Amg::Vector3D normal (const Amg::Vector2D &locpo) const override final
 Return method for surface normal information at a given local point, overwrites the normal() from base class. More...
 
virtual const Amg::Vector3DrotSymmetryAxis () const
 Return method for the rotational symmetry axis - the z-Axis of the HepTransform. More...
 
virtual const ConeBoundsbounds () const override final
 This method returns the ConeBounds by reference (NoBounds is not possible for cone) More...
 
virtual bool insideBounds (const Amg::Vector2D &locpos, double tol1=0., double tol2=0.) const override
 This method calls the inside method of ConeBounds. More...
 
virtual bool insideBoundsCheck (const Amg::Vector2D &locpos, const BoundaryCheck &bchk) const override final
 
virtual Amg::Vector2D localParametersToPosition (const LocalParameters &locpars) const override final
 Specialized for ConeSurface : LocalParameters to Vector2D. More...
 
virtual void localToGlobal (const Amg::Vector2D &locp, const Amg::Vector3D &mom, Amg::Vector3D &glob) const override final
 Specialized for ConeSurface : LocalToGlobal method without dynamic memory allocation. More...
 
virtual bool globalToLocal (const Amg::Vector3D &glob, const Amg::Vector3D &mom, Amg::Vector2D &loc) const override final
 Specialized for ConeSurface : 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, BoundaryCheck bchk=false) const override final
 fast straight line intersection schema - provides closest intersection and (signed) path length More...
 
virtual DistanceSolution straightLineDistanceEstimate (const Amg::Vector3D &pos, const Amg::Vector3D &dir) const override final
 fast straight line distance to Surface More...
 
virtual DistanceSolution straightLineDistanceEstimate (const Amg::Vector3D &pos, const Amg::Vector3D &dir, bool bound) const override final
 fast straight line distance to Surface - with bounds options More...
 
virtual double pathCorrection (const Amg::Vector3D &, const Amg::Vector3D &) const override
 the pathCorrection for derived classes with thickness 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...
 
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...
 
virtual bool isOnSurface (const Amg::Vector3D &glopo, const BoundaryCheck &bchk=true, double tol1=0., double tol2=0.) 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...
 
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...
 
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...
 
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::Cone
 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

SharedObject< const ConeBoundsm_bounds
 The global reference point (== a point on thesurface) More...
 
CxxUtils::CachedUniquePtr< Amg::Vector3Dm_referencePoint
 The rotational symmetry axis. More...
 
CxxUtils::CachedUniquePtr< Amg::Vector3Dm_rotSymmetryAxis
 
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 constexpr double s_onSurfaceTolerance = 10e-5
 Tolerance for being on Surface. More...
 

Friends

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

Detailed Description

Class for a conical surface in the ATLAS detector. It inherits from Surface.

The ConeSurface is special since no corresponding TrackParameters exist since they're numerical instable at the tip of the cone. Propagations to a cone surface will be returned in curvilinear coordinates.

Author
Ian.W.nosp@m.atso.nosp@m.n@cer.nosp@m.n.ch, Andre.nosp@m.as.S.nosp@m.alzbu.nosp@m.rger.nosp@m.@cern.nosp@m..ch

Definition at line 50 of file ConeSurface.h.

Member Typedef Documentation

◆ ChargedTrackParametersUniquePtr

Unique ptr types.

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

◆ NeutralTrackParametersUniquePtr

Constructor & Destructor Documentation

◆ ConeSurface() [1/8]

Trk::ConeSurface::ConeSurface ( )

Default Constructor.

Definition at line 20 of file ConeSurface.cxx.

21  : Trk::Surface()
22  , m_bounds(nullptr)
23  , m_referencePoint(nullptr)
24  , m_rotSymmetryAxis(nullptr)
25 {}

◆ ConeSurface() [2/8]

Trk::ConeSurface::ConeSurface ( const ConeSurface csf)

Copy constructor.

Definition at line 28 of file ConeSurface.cxx.

29  : Trk::Surface(csf)
30  , m_bounds(csf.m_bounds)
31  , m_referencePoint(nullptr)
32  , m_rotSymmetryAxis(nullptr)
33 {}

◆ ConeSurface() [3/8]

Trk::ConeSurface::ConeSurface ( ConeSurface &&  annbo)
default

Move constructor.

◆ ~ConeSurface()

virtual Trk::ConeSurface::~ConeSurface ( )
virtualdefault

Destructor.

◆ ConeSurface() [4/8]

Trk::ConeSurface::ConeSurface ( const Amg::Transform3D htrans,
double  alpha,
bool  symmetric = false 
)

Constructor form Transform and an opening angle.

Definition at line 45 of file ConeSurface.cxx.

48  : Trk::Surface(htrans)
49  , m_bounds(std::make_shared<Trk::ConeBounds>(alpha, symmetric))
50  , m_referencePoint(nullptr)
51  , m_rotSymmetryAxis(nullptr)
52 {}

◆ ConeSurface() [5/8]

Trk::ConeSurface::ConeSurface ( const Amg::Transform3D htrans,
double  alpha,
double  locZmin,
double  locZmax,
double  halfPhi = M_PI 
)

Constructor form Transform, radius halfphi, and halflenght.

Definition at line 55 of file ConeSurface.cxx.

60  : Trk::Surface(htrans)
61  , m_bounds(std::make_shared<Trk::ConeBounds>(alpha, zmin, zmax, halfPhi))
62  , m_referencePoint(nullptr)
63  , m_rotSymmetryAxis(nullptr)
64 {}

◆ ConeSurface() [6/8]

Trk::ConeSurface::ConeSurface ( const Amg::Transform3D htrans,
Trk::ConeBounds cbounds 
)

Constructor from Transform and CylinderBounds.

  • ownership of the bounds is passed

Definition at line 67 of file ConeSurface.cxx.

69  : Trk::Surface(htrans)
70  , m_bounds(cbounds)
71  , m_referencePoint(nullptr)
72  , m_rotSymmetryAxis(nullptr)
73 {
74  assert(cbounds);
75 }

◆ ConeSurface() [7/8]

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

Constructor from Amg Transform by ref.

  • bounds is not set.

Definition at line 78 of file ConeSurface.cxx.

79  : Trk::Surface(htrans)
80  , m_bounds(nullptr)
81  , m_referencePoint(nullptr)
82  , m_rotSymmetryAxis(nullptr)
83 {}

◆ ConeSurface() [8/8]

Trk::ConeSurface::ConeSurface ( const ConeSurface csf,
const Amg::Transform3D transf 
)

Copy constructor with shift.

Definition at line 36 of file ConeSurface.cxx.

38  : Trk::Surface(csf, transf)
39  , m_bounds(csf.m_bounds)
40  , m_referencePoint(nullptr)
41  , m_rotSymmetryAxis(nullptr)
42 {}

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

virtual const ConeBounds& Trk::ConeSurface::bounds ( ) const
finaloverridevirtual

This method returns the ConeBounds by reference (NoBounds is not possible for cone)

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 ConeSurface* Trk::ConeSurface::clone ( ) const
overridevirtual

Implicit Constructor.

Implements Trk::Surface.

◆ createUniqueNeutralParameters() [1/2]

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

131  {
132  return std::make_unique<ParametersT<5, Neutral, ConeSurface>>(
133  position, momentum, charge, *this, std::move(cov));
134 }

◆ createUniqueNeutralParameters() [2/2]

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

121  {
122  return std::make_unique<ParametersT<5, Neutral, ConeSurface>>(
123  l1, l2, phi, theta, qop, *this, std::move(cov));
124 }

◆ createUniqueParameters() [1/2]

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

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

◆ createUniqueTrackParameters() [2/2]

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

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

◆ 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::ConeSurface::globalReferencePoint ( ) const
finaloverridevirtual

Returns a global reference point: For the Cylinder this is \( (R*cos(\phi), R*sin(\phi),0)*transform() \) Where \( \phi \) denotes the averagePhi() of the cylinderBounds.

Reimplemented from Trk::Surface.

Definition at line 138 of file ConeSurface.cxx.

139 {
140  if (!m_referencePoint) {
141  // this is what was in cylinder
142  // double rMedium = bounds().r();
143  // double phi = bounds().averagePhi();
144  // Trk::GlobalPosition gp(rMedium*cos(phi), rMedium*sin(phi), 0.);
145  Amg::Vector3D gp(0., 0., 0.);
146  m_referencePoint.set(std::make_unique<Amg::Vector3D>(transform() * gp));
147  }
148  return (*m_referencePoint);
149 }

◆ globalToLocal() [1/3]

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

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

Implements Trk::Surface.

Definition at line 204 of file ConeSurface.cxx.

205 {
206  Amg::Vector3D loc3Dframe(inverseTransformMultHelper(glopos));
207  double r = loc3Dframe.z() * bounds().tanAlpha();
208  locpos = Amg::Vector2D(r * atan2(loc3Dframe.y(), loc3Dframe.x()), loc3Dframe.z());
209  // now decide on the quility of the transformation
210  // double inttol = r*0.0001;
211  // inttol = (inttol<0.01) ? 0.01 : 0.01; // ?
212  double inttol = 0.01;
213  return ((loc3Dframe.perp() - r) <= inttol);
214 }

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

This method calls the inside method of ConeBounds.

Implements Trk::Surface.

◆ insideBoundsCheck()

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

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 in Trk::StraightLineSurface, Trk::PerigeeSurface, Trk::PlaneSurface, Trk::SlidingDiscSurface, Trk::SlidingCylinderSurface, Trk::CylinderSurface, Trk::DiscSurface, and Trk::DetElementSurface.

Definition at line 123 of file Surface.cxx.

127 {
128  std::optional<Amg::Vector2D> posOnSurface =
129  positionOnSurface(glopo, bchk, tol1, tol2);
130  return static_cast<bool>(posOnSurface);
131 }

◆ localParametersToPosition()

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

Specialized for ConeSurface : LocalParameters to Vector2D.

Reimplemented from Trk::Surface.

◆ localToGlobal() [1/5]

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

Specialized for ConeSurface : LocalToGlobal method without dynamic memory allocation.

Implements Trk::Surface.

Definition at line 193 of file ConeSurface.cxx.

194 {
195  // create the position in the local 3d frame
196  double r = locpos[Trk::locZ] * bounds().tanAlpha();
197  double phi = locpos[Trk::locRPhi] / r;
198  Amg::Vector3D loc3Dframe(r * cos(phi), r * sin(phi), locpos[Trk::locZ]);
199  // transport it to the globalframe
200  glopos = transform() * loc3Dframe;
201 }

◆ 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 Trk::ConeSurface::measurementFrame ( const Amg::Vector3D glopos,
const Amg::Vector3D glomom 
) const
finaloverridevirtual

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

  • the default implementation is the the RotationMatrix3D of the transform

<

Todo:
fold in alpha

Reimplemented from Trk::Surface.

Definition at line 173 of file ConeSurface.cxx.

174 {
175  Amg::RotationMatrix3D mFrame;
176  // construct the measurement frame
177  Amg::Vector3D measY(transform().rotation().col(2)); // measured Y is the z axis
178  Amg::Vector3D measDepth =
179  Amg::Vector3D(pos.x(), pos.y(), 0.).unit(); // measured z is the position transverse normalized
180  Amg::Vector3D measX(measY.cross(measDepth).unit()); // measured X is what comoes out of it
181  // the columnes
182  mFrame.col(0) = measX;
183  mFrame.col(1) = measY;
184  mFrame.col(2) = measDepth;
185  // return the rotation matrix
187  // return it
188  return mFrame;
189 }

◆ name()

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

Return properly formatted class name for screen output.

Implements Trk::Surface.

◆ normal() [1/2]

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

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

in generall z-axis of rotation)

Reimplemented in Trk::PerigeeSurface.

◆ normal() [2/2]

virtual Amg::Vector3D Trk::ConeSurface::normal ( const Amg::Vector2D locpo) const
finaloverridevirtual

Return method for surface normal information at a given local point, overwrites the normal() from base class.

Reimplemented from Trk::Surface.

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

ConeSurface& Trk::ConeSurface::operator= ( ConeSurface &&  sbo)
default

Move assignment.

◆ operator=() [2/2]

Trk::ConeSurface & Trk::ConeSurface::operator= ( const ConeSurface csf)

Assignment operator.

Definition at line 86 of file ConeSurface.cxx.

87 {
88  if (this != &csf) {
90  m_bounds = csf.m_bounds;
91  m_referencePoint.store(nullptr);
92  m_rotSymmetryAxis.store(nullptr);
93  }
94  return *this;
95 }

◆ operator==() [1/2]

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

◆ operator==() [2/2]

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

Equality operator.

Implements Trk::Surface.

Definition at line 152 of file ConeSurface.cxx.

153 {
154  // first check the type not to compare apples with oranges
155  if (sf.type()!=Trk::SurfaceType::Cone){
156  return false;
157  }
158  return (*this) == static_cast<const Trk::ConeSurface&>(sf);
159 }

◆ owner()

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

return ownership

◆ pathCorrection()

double Trk::ConeSurface::pathCorrection ( const Amg::Vector3D pos,
const Amg::Vector3D mom 
) const
overridevirtual

the pathCorrection for derived classes with thickness

Reimplemented from Trk::Surface.

Definition at line 364 of file ConeSurface.cxx.

365 {
366  // (cos phi cos alpha, sin phi cos alpha, sgn z sin alpha)
367  bool applyTransform = !(transform().isApprox(Amg::Transform3D::Identity()));
368  Amg::Vector3D posLocal = applyTransform ? inverseTransformMultHelper(pos) : pos;
369  double phi = posLocal.phi();
370  double sgn = posLocal.z() > 0. ? -1. : +1.;
371  Amg::Vector3D normalC(cos(phi) * bounds().cosAlpha(), sin(phi) * bounds().cosAlpha(), sgn * bounds().sinAlpha());
372  if (applyTransform)
373  normalC = transform() * normalC;
374  // back in global frame
375  double cAlpha = normalC.dot(mom.unit());
376  return (cAlpha != 0.) ? std::abs(1. / cAlpha) : 1.; // ST undefined for cAlpha=0
377 }

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

◆ rotSymmetryAxis()

const Amg::Vector3D & Trk::ConeSurface::rotSymmetryAxis ( ) const
virtual

Return method for the rotational symmetry axis - the z-Axis of the HepTransform.

Definition at line 162 of file ConeSurface.cxx.

163 {
164  if (!m_rotSymmetryAxis) {
166  m_rotSymmetryAxis.set(std::make_unique<Amg::Vector3D>(zAxis));
167  }
168  return (*m_rotSymmetryAxis);
169 }

◆ setMaterialLayer()

void Trk::Surface::setMaterialLayer ( 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::ConeSurface::straightLineDistanceEstimate ( const Amg::Vector3D pos,
const Amg::Vector3D dir 
) const
finaloverridevirtual

fast straight line distance to Surface

distance to surface

Implements Trk::Surface.

Definition at line 284 of file ConeSurface.cxx.

285 {
286  return straightLineDistanceEstimate(pos, dir, false);
287 }

◆ straightLineDistanceEstimate() [2/2]

Trk::DistanceSolution Trk::ConeSurface::straightLineDistanceEstimate ( const Amg::Vector3D pos,
const Amg::Vector3D dir,
bool  bound 
) const
finaloverridevirtual

fast straight line distance to Surface - with bounds options

Implements Trk::Surface.

Definition at line 290 of file ConeSurface.cxx.

291 {
292  double tol = 0.001;
293 
294  Amg::Vector3D Cntr = center(); // tip of the cone (i.e. join between halves)
295  Amg::Vector3D N = normal(); // this is the z-direction of the cone in
296  // global coordiantes i believe
297 
298  Amg::Vector3D dPos = pos - Cntr; // pos w.r.t. cone tip
299  double posLength = sqrt(dPos.dot(dPos));
300  if (posLength < tol) // at origin of cone => on cone (avoid div by zero)
301  return {1, 0., true, 0.};
302  double posProj = dPos.dot(N);
303  double posProjAngle = acos(posProj / posLength);
304  double currDist = posLength * sin(posProjAngle - atan(bounds().tanAlpha()));
305  // solution on the surface
306  if (std::abs(currDist) < tol)
307  return {1, currDist, true, 0.};
308 
309  // transform to a frame with the cone along z, with the tip a 0
311  Amg::Vector3D locFrameDir = transform().rotation().inverse() * dir.normalized();
312 
313  // solutions are in the form of a solution to a quadratic eqn.
314  double tan2Alpha = bounds().tanAlpha() * bounds().tanAlpha();
315  double A = locFrameDir.x() * locFrameDir.x() + locFrameDir.y() * locFrameDir.y() -
316  tan2Alpha * locFrameDir.z() * locFrameDir.z();
317  double B = 2 * (locFrameDir.x() * locFramePos.x() + locFrameDir.y() * locFramePos.y() -
318  tan2Alpha * locFrameDir.z() * locFramePos.z());
319  double C = locFramePos.x() * locFramePos.x() + locFramePos.y() * locFramePos.y() -
320  tan2Alpha * locFramePos.z() * locFramePos.z();
321  if (A == 0.)
322  A += 1e-16; // avoid div by zero
323  // use Andreas' quad solver, much more stable than what I wrote
324  Trk::RealQuadraticEquation solns(A, B, C);
325 
326  double d2bound = 0.;
327  if (bound && solns.solutions != Trk::none) {
328  std::optional<Amg::Vector2D> p = std::nullopt;
329  if (std::abs(solns.first) < std::abs(solns.second)){
330  p = Surface::globalToLocal(locFramePos + solns.first * locFrameDir);
331  }
332  else{
333  p = Surface::globalToLocal(locFramePos + solns.second * locFrameDir);
334  }
335  if (p) {
336  d2bound = bounds().minDistance(*p);
337  }
338  if (d2bound < 0){
339  d2bound = 0;
340  }
341  }
342  double totDist = d2bound > 0. ? sqrt(d2bound * d2bound + currDist * currDist) : currDist;
343 
344  switch (solns.solutions) {
345  case Trk::none:{
346  return {0, totDist, true, 0., 0.};
347  }
348  case Trk::one:{
349  return {1, totDist, true, solns.first};
350  }
351  case Trk::two:{
352  if (std::abs(solns.first) < std::abs(solns.second)){
353  return {2, totDist, true, solns.first, solns.second};
354  }
355  return {2, totDist, true, solns.second, solns.first};
356  }
357  default:{
358  return {0, totDist, true, 0., 0.};
359  }
360  };
361 }

◆ straightLineIntersection() [1/2]

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

fast straight line intersection schema - provides closest intersection and (signed) path length

mathematical motivation:

The calculation will be done in the 3-dim frame of the cone, i.e. the symmetry axis of the cone is the z-axis, x- and y-axis are perpenticular to the the z-axis. In this frame the cone is centered around the origin. Therefore the two points describing the line have to be first recalculated into the new frame. Suppose, this is done, the points of intersection can be obtained as follows:

The cone is described by the implicit equation \(x^2 + y^2 = z^2 \tan \alpha\) where \(\alpha\) is opening half-angle of the cone the and the line by the parameter equation (with \(t\) the parameter and \(x_1\) and \(x_2\) are points on the line) \((x,y,z) = \vec x_1 + (\vec x_2 - \vec x_2) t \). The intersection is the given to the value of \(t\) where the \((x,y,z)\) coordinates of the line satisfy the implicit equation of the cone. Inserting the expression for the points on the line into the equation of the cone and rearranging to the form of a gives (letting \( \vec x_d = \frac{\vec x_2 - \vec x_1}{\abs{\vec x_2 - \vec x_1}} \)): \(t^2 (x_d^2 + y_d^2 - z_d^2 \tan^2 \alpha) + 2 t (x_1 x_d + y_1 y_d - z_1 z_d \tan^2 \alpha) + (x_1^2 + y_1^2 - z_1^2 \tan^2 \alpha) = 0 \) Solving the above for \(t\) and putting the values into the equation of the line gives the points of intersection. \(t\) is also the length of the path, since we normalized \(x_d\) to be unit length.

Implements Trk::Surface.

Definition at line 217 of file ConeSurface.cxx.

221 {
222  // transform to a frame with the cone along z, with the tip at 0
223  const Amg::Transform3D surfaceTrans = inverseTransformHelper();
224  Amg::Vector3D tpos1 = surfaceTrans * pos;
225  Amg::Vector3D tdir = surfaceTrans.linear() * dir;
226  // see the header for the formula derivation
227  double tan2Alpha = bounds().tanAlpha() * bounds().tanAlpha();
228  double A = tdir.x() * tdir.x() + tdir.y() * tdir.y() - tan2Alpha * tdir.z() * tdir.z();
229  double B = 2 * (tdir.x() * tpos1.x() + tdir.y() * tpos1.y() - tan2Alpha * dir.z() * tpos1.z());
230  double C = tpos1.x() * tpos1.x() + tpos1.y() * tpos1.y() - tan2Alpha * tpos1.z() * tpos1.z();
231  if (A == 0.)
232  A += 1e-16; // avoid div by zero
233 
234  // use Andreas' quad solver, much more stable than what I wrote
235  Trk::RealQuadraticEquation solns(A, B, C);
236 
237  Amg::Vector3D solution(0., 0., 0.);
238  double path = 0.;
239  bool isValid = false;
240  if (solns.solutions != Trk::none) {
241  double t1 = solns.first;
242  Amg::Vector3D soln1Loc(tpos1 + t1 * dir);
243  isValid = forceDir ? (t1 > 0.) : true;
244  // there's only one solution
245  if (solns.solutions == Trk::one) {
246  solution = soln1Loc;
247  path = t1;
248  } else {
249  double t2 = solns.second;
250  Amg::Vector3D soln2Loc(tpos1 + t2 * dir);
251  // both solutions have the same sign
252  if (t1 * t2 > 0. || !forceDir) {
253  if (t1 * t1 < t2 * t2) {
254  solution = soln1Loc;
255  path = t1;
256  } else {
257  solution = soln2Loc;
258  path = t2;
259  }
260  } else {
261  if (t1 > 0.) {
262  solution = soln1Loc;
263  path = t1;
264  } else {
265  solution = soln2Loc;
266  path = t2;
267  }
268  }
269  }
270  }
271  solution = transform() * solution;
272 
273  isValid = bchk ? (isValid && isOnSurface(solution)) : isValid;
274  return Trk::Intersection(solution, path, isValid);
275 }

◆ 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::ConeSurface::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

Definition at line 272 of file ConeSurface.h.

◆ ::BoundSurfaceCnv_p2

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

bounds (shared)

Definition at line 274 of file ConeSurface.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

SharedObject<const ConeBounds> Trk::ConeSurface::m_bounds
protected

The global reference point (== a point on thesurface)

Definition at line 276 of file ConeSurface.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::ConeSurface::m_referencePoint
protected

The rotational symmetry axis.

Definition at line 278 of file ConeSurface.h.

◆ m_rotSymmetryAxis

CxxUtils::CachedUniquePtr<Amg::Vector3D> Trk::ConeSurface::m_rotSymmetryAxis
protected

Definition at line 280 of file ConeSurface.h.

◆ m_transforms

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

◆ 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::ConeSurface::staticType = SurfaceType::Cone
staticconstexpr

The surface type static constexpr.

Definition at line 55 of file ConeSurface.h.


The documentation for this class was generated from the following files:
Trk::ConeBounds::minDistance
virtual double minDistance(const Amg::Vector2D &pos) const override
Minimal distance to boundary ( > 0 if outside and <=0 if inside)
Definition: ConeBounds.cxx:74
AllowedVariables::e
e
Definition: AsgElectronSelectorTool.cxx:37
make_hlt_rep.pars
pars
Definition: make_hlt_rep.py:90
beamspotman.r
def r
Definition: beamspotman.py:676
Trk::Intersection
Definition: Intersection.h:24
Trk::Surface::associatedDetectorElement
const TrkDetElementBase * associatedDetectorElement() const
return associated Detector Element
athena.path
path
python interpreter configuration --------------------------------------—
Definition: athena.py:128
Trk::Surface::name
virtual std::string name() const =0
Return properly formatted class name.
PlotCalibFromCool.zAxis
zAxis
Definition: PlotCalibFromCool.py:76
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
PixelAthClusterMonAlgCfg.zmin
zmin
Definition: PixelAthClusterMonAlgCfg.py:169
Trk::locRPhi
@ locRPhi
Definition: ParamDefs.h:40
DMTest::C
C_v1 C
Definition: C.h:26
ALFA_EventTPCnv_Dict::t1
std::vector< ALFA_RawDataCollection_p1 > t1
Definition: ALFA_EventTPCnvDict.h:43
plotBeamSpotVxVal.cov
cov
Definition: plotBeamSpotVxVal.py:201
Trk::none
@ none
Definition: TrkDetDescr/TrkSurfaces/TrkSurfaces/RealQuadraticEquation.h:21
Trk::one
@ one
Definition: TrkDetDescr/TrkSurfaces/TrkSurfaces/RealQuadraticEquation.h:22
Trk::ConeSurface::m_rotSymmetryAxis
CxxUtils::CachedUniquePtr< Amg::Vector3D > m_rotSymmetryAxis
Definition: ConeSurface.h:280
JetTiledMap::N
@ N
Definition: TiledEtaPhiMap.h:44
drawFromPickle.cos
cos
Definition: drawFromPickle.py:36
isValid
bool isValid(const T &p)
Av: we implement here an ATLAS-sepcific convention: all particles which are 99xxxxx are fine.
Definition: AtlasPID.h:620
Trk::Surface::center
const Amg::Vector3D & center() const
Returns the center position of the Surface.
Trk::ConeSurface::bounds
virtual const ConeBounds & bounds() const override final
This method returns the ConeBounds by reference (NoBounds is not possible for cone)
drawFromPickle.atan
atan
Definition: drawFromPickle.py:36
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
Trk::ConeSurface::m_bounds
SharedObject< const ConeBounds > m_bounds
The global reference point (== a point on thesurface)
Definition: ConeSurface.h:276
Trk::Surface::isOnSurface
virtual bool isOnSurface(const Amg::Vector3D &glopo, const BoundaryCheck &bchk=true, double tol1=0., double tol2=0.) const
This method returns true if the GlobalPosition is on the Surface for both, within or without check of...
Definition: Surface.cxx:123
skel.l2
l2
Definition: skel.GENtoEVGEN.py:399
python.utils.AtlRunQueryDQUtils.p
p
Definition: AtlRunQueryDQUtils.py:210
ParticleGun_EoverP_Config.mom
mom
Definition: ParticleGun_EoverP_Config.py:63
Trk::locZ
@ locZ
local cylindrical
Definition: ParamDefs.h:42
ParticleGun_EoverP_Config.momentum
momentum
Definition: ParticleGun_EoverP_Config.py:63
Trk::two
@ two
Definition: TrkDetDescr/TrkSurfaces/TrkSurfaces/RealQuadraticEquation.h:23
Trk::theta
@ theta
Definition: ParamDefs.h:66
xAOD::rotation
rotation
Definition: TrackSurface_v1.cxx:15
Amg::Transform3D
Eigen::Affine3d Transform3D
Definition: GeoPrimitives.h:46
dumpNswErrorDb.linear
def linear
Definition: dumpNswErrorDb.py:23
PixelAthClusterMonAlgCfg.zmax
zmax
Definition: PixelAthClusterMonAlgCfg.py:169
Trk::Surface::normal
virtual const Amg::Vector3D & normal() const
Returns the normal vector of the Surface (i.e.
Trk::RealQuadraticEquation
Definition: TrkDetDescr/TrkSurfaces/TrkSurfaces/RealQuadraticEquation.h:52
Trk::SurfaceType::Cone
@ Cone
Trk::Surface::inverseTransformHelper
Amg::Transform3D inverseTransformHelper() const
Helper method to factorize in one place common operations calculate inverse transofrm and multiply wi...
beamspotman.dir
string dir
Definition: beamspotman.py:623
Trk::ConeBounds::tanAlpha
double tanAlpha() const
This method returns the average phi.
Trk::Surface::bounds
virtual const SurfaceBounds & bounds() const =0
Surface Bounds method.
charge
double charge(const T &p)
Definition: AtlasPID.h:756
dqt_zlumi_alleff_HIST.B
B
Definition: dqt_zlumi_alleff_HIST.py:110
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
query_example.col
col
Definition: query_example.py:7
python.LumiBlobConversion.pos
pos
Definition: LumiBlobConversion.py:18
ALFA_EventTPCnv_Dict::t2
std::vector< ALFA_RawDataContainer_p1 > t2
Definition: ALFA_EventTPCnvDict.h:44
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...
Trk::ConeSurface::m_referencePoint
CxxUtils::CachedUniquePtr< Amg::Vector3D > m_referencePoint
The rotational symmetry axis.
Definition: ConeSurface.h:278
mapkey::sf
@ sf
Definition: TElectronEfficiencyCorrectionTool.cxx:38
Amg::RotationMatrix3D
Eigen::Matrix< double, 3, 3 > RotationMatrix3D
Definition: GeoPrimitives.h:49
Trk::Surface::positionOnSurface
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 return...
Definition: Surface.cxx:106
Trk::ConeSurface
Definition: ConeSurface.h:51
Trk::phi
@ phi
Definition: ParamDefs.h:75
skel.l1
l1
Definition: skel.GENtoEVGEN.py:398
Trk::ConeSurface::straightLineDistanceEstimate
virtual DistanceSolution straightLineDistanceEstimate(const Amg::Vector3D &pos, const Amg::Vector3D &dir) const override final
fast straight line distance to Surface
Definition: ConeSurface.cxx:284
drawFromPickle.sin
sin
Definition: drawFromPickle.py:36
Trk::Surface
Definition: Tracking/TrkDetDescr/TrkSurfaces/TrkSurfaces/Surface.h:75
Trk::Surface::transform
const Amg::Transform3D & transform() const
Returns HepGeom::Transform3D by reference.