ATLAS Offline Software
Public Types | Public Member Functions | Static Public Member Functions | Static Public Attributes | Protected Member Functions | Protected Attributes | Static Protected Attributes | List of all members
Trk::SaggedLineSurface Class Referencefinal

#include <SaggedLineSurface.h>

Inheritance diagram for Trk::SaggedLineSurface:
Collaboration diagram for Trk::SaggedLineSurface:

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

 SaggedLineSurface ()
 Default Constructor - needed for pool and inherited classes. More...
 
 SaggedLineSurface (const Amg::Transform3D &htrans, double radius, double halez, LineSaggingDescriptor *lsd)
 Constructor for private surface. More...
 
 SaggedLineSurface (const Amg::Transform3D &htrans)
 
 SaggedLineSurface (const TrkDetElementBase &detelement, const Identifier &id)
 Constructor for public surface. More...
 
 SaggedLineSurface (const TrkDetElementBase &detelement, const Identifier &id, double wireLength, double wireTension, double linearDensity)
 Constructor for public surface. More...
 
 SaggedLineSurface (const SaggedLineSurface &sls)
 Copy Constructor. More...
 
virtual ~SaggedLineSurface ()
 Destructor. More...
 
Trk::SaggedLineSurfaceoperator= (const Trk::SaggedLineSurface &sls)
 
virtual const StraightLineSurfacesurfaceRepresentation () const override final
 Get the Surface representation. More...
 
virtual const LineSaggingDescriptordistortionDescriptor () const override final
 Get the Distortion descriptor
More...
 
virtual StraightLineSurfacecorrectedSurface (const Amg::Vector2D &lp) const override final
 Get the NEW corrected surface - this is a factory (the user has to delete the surface) More...
 
virtual bool operator== (const Surface &sf) const override
 Equality operator. More...
 
bool operator== (const StraightLineSurface &cf) const
 
virtual StraightLineSurfaceclone () const override final
 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, StraightLineSurface > > 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, StraightLineSurface > > 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...
 
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...
 
constexpr virtual SurfaceType type () const override final
 Return the surface type. More...
 
virtual void localToGlobal (const Amg::Vector2D &locp, const Amg::Vector3D &mom, Amg::Vector3D &glob) const override final
 Specified for StraightLineSurface: LocalToGlobal method without dynamic memory allocation. More...
 
Amg::Vector3D localToGlobal (const Trk::LocalParameters &locpars, const Amg::Vector3D &glomom, double locZ) const
 Special method for StraightLineSurface - providing a different z estimate. 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...
 
virtual bool globalToLocal (const Amg::Vector3D &glob, const Amg::Vector3D &mom, Amg::Vector2D &loc) const override final
 Specified for StraightLineSurface: GlobalToLocal method without dynamic memory allocation This method is the true global->local transformation. 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...
 
const Amg::Vector3DlineDirection () const
 Special method for StraightLineSurface - provides the Line direction from cache: speedup. More...
 
virtual Intersection straightLineIntersection (const Amg::Vector3D &pos, const Amg::Vector3D &dir, bool forceDir, Trk::BoundaryCheck bchk) 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...
 
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...
 
virtual DistanceSolution straightLineDistanceEstimate (const Amg::Vector3D &pos, const Amg::Vector3D &dir) const override final
 fast straight line distance evaluation to Surface More...
 
virtual DistanceSolution straightLineDistanceEstimate (const Amg::Vector3D &pos, const Amg::Vector3D &dir, bool Bound) const override final
 fast straight line distance evaluation to Surface - with bound option More...
 
virtual double pathCorrection (const Amg::Vector3D &, const Amg::Vector3D &) const override final
 the pathCorrection for derived classes with thickness More...
 
virtual bool isOnSurface (const Amg::Vector3D &glopo, const BoundaryCheck &bchk=true, double tol1=0., double tol2=0.) const override final
 This method checks if the provided GlobalPosition is inside the assigned straw radius, but no check is done whether the GlobalPosition is inside bounds or not. More...
 
virtual const SurfaceBoundsbounds () const override final
 This method returns the bounds of the Surface by reference. More...
 
virtual bool insideBounds (const Amg::Vector2D &locpos, double tol1=0., double tol2=0.) const override final
 This surface calls the iside method of the bouns. More...
 
virtual bool insideBoundsCheck (const Amg::Vector2D &locpos, const BoundaryCheck &bchk) const override final
 
virtual std::string name () const override final
 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...
 
virtual const Amg::Vector3DglobalReferencePoint () const
 Returns a global reference point on the surface, for PlaneSurface, StraightLineSurface, PerigeeSurface this is equal to center(), for CylinderSurface and DiscSurface this is a new member. More...
 
const 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 Amg::Vector2D localParametersToPosition (const LocalParameters &locpars) const
 Optionally specified by each surface type : LocalParameters to Vector2D. 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::Line
 
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

LineSaggingDescriptorm_saggingDescriptor
 the distortion descriptor More...
 
CxxUtils::CachedValue< Amg::Vector3Dm_saggedLineDirection
 nominal end position More...
 
CxxUtils::CachedValue< Amg::Vector3Dm_lineDirection
 bounds (shared) More...
 
SharedObject< const CylinderBoundsm_bounds
 NoBounds as return object when no bounds are declared. 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...
 

Detailed Description

The distorted surface itself is the nominal surface

Author
Andre.nosp@m.as.S.nosp@m.alzbu.nosp@m.rger.nosp@m.@cern.nosp@m..ch

Definition at line 32 of file SaggedLineSurface.h.

Member Typedef Documentation

◆ ChargedTrackParametersUniquePtr

Unique ptr types.

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

◆ NeutralTrackParametersUniquePtr

Constructor & Destructor Documentation

◆ SaggedLineSurface() [1/6]

Trk::SaggedLineSurface::SaggedLineSurface ( )

Default Constructor - needed for pool and inherited classes.

Definition at line 19 of file SaggedLineSurface.cxx.

19  :
22  m_saggingDescriptor(nullptr),
24 {}

◆ SaggedLineSurface() [2/6]

Trk::SaggedLineSurface::SaggedLineSurface ( const Amg::Transform3D htrans,
double  radius,
double  halez,
Trk::LineSaggingDescriptor lsd 
)

Constructor for private surface.

Definition at line 26 of file SaggedLineSurface.cxx.

32  , Trk::StraightLineSurface(htrans, radius, halez)
33  , m_saggingDescriptor(lsd)
35 {}

◆ SaggedLineSurface() [3/6]

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

Definition at line 37 of file SaggedLineSurface.cxx.

39  , Trk::StraightLineSurface(htrans)
40  , m_saggingDescriptor(nullptr)
42 {}

◆ SaggedLineSurface() [4/6]

Trk::SaggedLineSurface::SaggedLineSurface ( const TrkDetElementBase detelement,
const Identifier id 
)

Constructor for public surface.

Definition at line 44 of file SaggedLineSurface.cxx.

48  , Trk::StraightLineSurface(detelement, id)
51 {}

◆ SaggedLineSurface() [5/6]

Trk::SaggedLineSurface::SaggedLineSurface ( const TrkDetElementBase detelement,
const Identifier id,
double  wireLength,
double  wireTension,
double  linearDensity 
)

Constructor for public surface.

Definition at line 53 of file SaggedLineSurface.cxx.

54  :
56  Trk::StraightLineSurface(detelement,id),
57  m_saggingDescriptor(new Trk::LineSaggingDescriptor(wireLength, wireTension, linearDensity)), m_saggedLineDirection{}
58 {
59 
60 }

◆ SaggedLineSurface() [6/6]

Trk::SaggedLineSurface::SaggedLineSurface ( const SaggedLineSurface sls)

Copy Constructor.

Definition at line 62 of file SaggedLineSurface.cxx.

62  :
65  m_saggingDescriptor(new Trk::LineSaggingDescriptor(sls.distortionDescriptor())),
67 {}

◆ ~SaggedLineSurface()

Trk::SaggedLineSurface::~SaggedLineSurface ( )
virtual

Destructor.

Definition at line 69 of file SaggedLineSurface.cxx.

70 {
71  delete m_saggingDescriptor;
72 }

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 SurfaceBounds& Trk::StraightLineSurface::bounds ( ) const
finaloverridevirtualinherited

This method returns the bounds of the Surface 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 StraightLineSurface* Trk::StraightLineSurface::clone ( ) const
finaloverridevirtualinherited

Implicit constructor.

Implements Trk::Surface.

◆ correctedSurface()

Trk::StraightLineSurface * Trk::SaggedLineSurface::correctedSurface ( const Amg::Vector2D lp) const
finaloverridevirtual

Get the NEW corrected surface - this is a factory (the user has to delete the surface)

Implements Trk::DistortedSurface.

Definition at line 86 of file SaggedLineSurface.cxx.

87 {
88  // prepare
89  std::unique_ptr<Amg::Transform3D> newHepTransform =nullptr;
92  }
94  // first get the hep transform from the distortion descriptor
95  newHepTransform.reset(m_saggingDescriptor->correctedSurfaceTransform(
96  lp, center(), *(m_saggedLineDirection.ptr())));
98  // get the sagging descriptor and the endpoints from GeoModel
99  // m_saggingDescriptor
100  throw std::logic_error("Condition not implemented ( Trk::SaggedLineSurface::correctedSurface (1) ).");
101  } else {
102  throw std::logic_error("Condition not implemented ( Trk::SaggedLineSurface::correctedSurface (2) ).");
103  }
104  return (newHepTransform) ? new Trk::StraightLineSurface(*newHepTransform,bounds().r(),10e3) : nullptr;
105 }

◆ createUniqueNeutralParameters() [1/2]

Trk::Surface::NeutralTrackParametersUniquePtr Trk::StraightLineSurface::createUniqueNeutralParameters ( const Amg::Vector3D position,
const Amg::Vector3D momentum,
double  charge,
std::optional< AmgSymMatrix(5)>  cov = std::nullopt 
) const
finaloverridevirtualinherited

Use the Surface as a ParametersBase constructor, from global parameters - neutral.

Implements Trk::Surface.

Definition at line 128 of file StraightLineSurface.cxx.

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

◆ createUniqueNeutralParameters() [2/2]

Trk::Surface::NeutralTrackParametersUniquePtr Trk::StraightLineSurface::createUniqueNeutralParameters ( double  l1,
double  l2,
double  phi,
double  theta,
double  qop,
std::optional< AmgSymMatrix(5)>  cov = std::nullopt 
) const
finaloverridevirtualinherited

Use the Surface as a ParametersBase constructor, from local parameters - neutral.

Implements Trk::Surface.

Definition at line 118 of file StraightLineSurface.cxx.

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

◆ createUniqueParameters() [1/2]

template<int DIM, class T >
std::unique_ptr<ParametersT<DIM, T, StraightLineSurface> > Trk::StraightLineSurface::createUniqueParameters ( const Amg::Vector3D position,
const Amg::Vector3D momentum,
double  charge,
std::optional< AmgSymMatrix(DIM)>  cov = std::nullopt 
) const
inherited

Use the Surface as a ParametersBase constructor, from global parameters.

◆ createUniqueParameters() [2/2]

template<int DIM, class T >
std::unique_ptr<ParametersT<DIM, T, StraightLineSurface> > Trk::StraightLineSurface::createUniqueParameters ( double  l1,
double  l2,
double  phi,
double  theta,
double  qop,
std::optional< AmgSymMatrix(DIM)>  cov = std::nullopt 
) const
inherited

Use the Surface as a ParametersBase constructor, from local parameters.

◆ createUniqueTrackParameters() [1/2]

Trk::Surface::ChargedTrackParametersUniquePtr Trk::StraightLineSurface::createUniqueTrackParameters ( const Amg::Vector3D position,
const Amg::Vector3D momentum,
double  charge,
std::optional< AmgSymMatrix(5)>  cov = std::nullopt 
) const
finaloverridevirtualinherited

Use the Surface as a ParametersBase constructor, from global parameters - charged.

Implements Trk::Surface.

Definition at line 108 of file StraightLineSurface.cxx.

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

◆ createUniqueTrackParameters() [2/2]

Trk::Surface::ChargedTrackParametersUniquePtr Trk::StraightLineSurface::createUniqueTrackParameters ( double  l1,
double  l2,
double  phi,
double  theta,
double  qop,
std::optional< AmgSymMatrix(5)>  cov = std::nullopt 
) const
finaloverridevirtualinherited

Use the Surface as a ParametersBase constructor, from local parameters - charged.

Implements Trk::Surface.

Definition at line 99 of file StraightLineSurface.cxx.

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

◆ distortionDescriptor()

const LineSaggingDescriptor & Trk::SaggedLineSurface::distortionDescriptor ( ) const
inlinefinaloverridevirtual

Get the Distortion descriptor

provide the distortion descriptor for the outside world

Implements Trk::DistortedSurface.

Definition at line 87 of file SaggedLineSurface.h.

88 { return (*m_saggingDescriptor); }

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

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

Returns a global reference point on the surface, for PlaneSurface, StraightLineSurface, PerigeeSurface this is equal to center(), for CylinderSurface and DiscSurface this is a new member.

Reimplemented in Trk::DiscSurface, Trk::CylinderSurface, and Trk::ConeSurface.

◆ globalToLocal() [1/3]

bool Trk::StraightLineSurface::globalToLocal ( const Amg::Vector3D glob,
const Amg::Vector3D mom,
Amg::Vector2D loc 
) const
finaloverridevirtualinherited

Specified for StraightLineSurface: GlobalToLocal method without dynamic memory allocation This method is the true global->local transformation.


makes use of globalToLocal and indicates the sign of the locR by the given momentum

The calculation of the sign of the radius (or \( d_0 \)) can be done as follows:
May \( \vec d = \vec m - \vec c \) denote the difference between the center of the line and the global position of the measurement/predicted state, then \( \vec d \) lies within the so called measurement plane. The measurement plane is determined by the two orthogonal vectors \( \vec{measY}= \vec{locZ} \) and \( \vec{measX} = \vec{measY} \times \frac{\vec{p}}{|\vec{p}|} \).

The sign of the radius ( \( d_{0} \) ) is then defined by the projection of \( \vec{d} \) onto \( \vec{measX} \):
\( sign = -sign(\vec{d} \cdot \vec{measX}) \)

Implements Trk::Surface.

Definition at line 164 of file StraightLineSurface.cxx.

167 {
168  Amg::Vector3D loc3Dframe = inverseTransformMultHelper(glopos);
169  // construct localPosition with sign*candidate.perp() and z.()
170  locpos = Amg::Vector2D(loc3Dframe.perp(), loc3Dframe.z());
171  Amg::Vector3D decVec(glopos - center());
172  // assign the right sign
173  double sign = ((lineDirection().cross(glomom)).dot(decVec) < 0.) ? -1. : 1.;
174  locpos[Trk::locR] *= sign;
175  return true;
176 }

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

This surface calls the iside method of the bouns.

Implements Trk::Surface.

◆ insideBoundsCheck()

virtual bool Trk::StraightLineSurface::insideBoundsCheck ( const Amg::Vector2D locpos,
const BoundaryCheck bchk 
) const
finaloverridevirtualinherited

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::StraightLineSurface::isOnSurface ( const Amg::Vector3D glopo,
const BoundaryCheck bchk = true,
double  tol1 = 0.,
double  tol2 = 0. 
) const
finaloverridevirtualinherited

This method checks if the provided GlobalPosition is inside the assigned straw radius, but no check is done whether the GlobalPosition is inside bounds or not.

It overwrites isOnSurface from Base Class as it saves the time of sign determination.

Reimplemented from Trk::Surface.

Definition at line 188 of file StraightLineSurface.cxx.

191 {
192  if (!bchk)
193  return true;
194  // check whether this is a boundless surface
195  if (!(m_bounds.get()) && !Surface::m_associatedDetElement)
196  return true;
197  // get the standard bounds
198  Amg::Vector3D loc3Dframe = inverseTransformMultHelper(glopo);
199  Amg::Vector2D locCand(loc3Dframe.perp(), loc3Dframe.z());
200  return (locCand[Trk::locR] < bounds().r() + tol1 && bounds().insideLoc2(locCand, tol2));
201 }

◆ lineDirection()

const Amg::Vector3D& Trk::StraightLineSurface::lineDirection ( ) const
inherited

Special method for StraightLineSurface - provides the Line direction from cache: speedup.

◆ localParametersToPosition()

virtual Amg::Vector2D Trk::Surface::localParametersToPosition ( const LocalParameters locpars) const
virtualinherited

Optionally specified by each surface type : LocalParameters to Vector2D.

Reimplemented in Trk::DiscSurface, Trk::CylinderSurface, and Trk::ConeSurface.

◆ localToGlobal() [1/6]

ATH_FLATTEN void Trk::StraightLineSurface::localToGlobal ( const Amg::Vector2D locp,
const Amg::Vector3D mom,
Amg::Vector3D glob 
) const
finaloverridevirtualinherited

Specified for StraightLineSurface: LocalToGlobal method without dynamic memory allocation.

Implements Trk::Surface.

Definition at line 139 of file StraightLineSurface.cxx.

142 {
143  // get the vector perpenticular to the momentum and the straw axis
144  Amg::Vector3D radiusAxisGlobal(lineDirection().cross(glomom));
145  Amg::Vector3D locZinGlobal = transform() * Amg::Vector3D(0., 0., locpos[Trk::locZ]);
146  // transform zPosition into global coordinates and add locR * radiusAxis
147  glopos = Amg::Vector3D(locZinGlobal + locpos[Trk::locR] * radiusAxisGlobal.normalized());
148 }

◆ localToGlobal() [2/6]

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/6]

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/6]

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/6]

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.

◆ localToGlobal() [6/6]

Amg::Vector3D Trk::StraightLineSurface::localToGlobal ( const Trk::LocalParameters locpars,
const Amg::Vector3D glomom,
double  locZ 
) const
inherited

Special method for StraightLineSurface - providing a different z estimate.

Definition at line 152 of file StraightLineSurface.cxx.

155 {
156  // create a local Position
157  Amg::Vector2D locPos(locpars[Trk::driftRadius], locZ);
158  return Surface::localToGlobal(locPos, glomom);
159 }

◆ 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::StraightLineSurface::measurementFrame ( const Amg::Vector3D glopos,
const Amg::Vector3D glomom 
) const
finaloverridevirtualinherited

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 from Trk::Surface.

Definition at line 225 of file StraightLineSurface.cxx.

226 {
227  Amg::RotationMatrix3D mFrame;
228  // construct the measurement frame
229  const Amg::Vector3D& measY = lineDirection();
230  Amg::Vector3D measX(measY.cross(glomom).unit());
231  Amg::Vector3D measDepth(measX.cross(measY));
232  // assign the columnes
233  mFrame.col(0) = measX;
234  mFrame.col(1) = measY;
235  mFrame.col(2) = measDepth;
236  // return the rotation matrix
237  return mFrame;
238 }

◆ name()

virtual std::string Trk::StraightLineSurface::name ( ) const
finaloverridevirtualinherited

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

Trk::SaggedLineSurface & Trk::SaggedLineSurface::operator= ( const Trk::SaggedLineSurface sls)

Definition at line 74 of file SaggedLineSurface.cxx.

75 {
76  if (this != &sls ) {
77  Trk::DistortedSurface::operator=(sls);
79  delete m_saggingDescriptor;
82  }
83  return *this;
84 }

◆ operator==() [1/2]

bool Trk::StraightLineSurface::operator== ( const StraightLineSurface cf) const
inherited

◆ operator==() [2/2]

bool Trk::StraightLineSurface::operator== ( const Surface sf) const
overridevirtualinherited

Equality operator.

Implements Trk::Surface.

Definition at line 87 of file StraightLineSurface.cxx.

88 {
89  // first check the type not to compare apples with oranges
90  if (sf.type()!=Trk::SurfaceType::Line){
91  return false;
92  }
93  return (*this) == static_cast<const Trk::StraightLineSurface&>(sf);
94 }

◆ owner()

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

return ownership

◆ pathCorrection()

virtual double Trk::StraightLineSurface::pathCorrection ( const Amg::Vector3D ,
const Amg::Vector3D  
) const
finaloverridevirtualinherited

the pathCorrection for derived classes with thickness

Reimplemented from Trk::Surface.

◆ 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 ( 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::StraightLineSurface::straightLineDistanceEstimate ( const Amg::Vector3D pos,
const Amg::Vector3D dir 
) const
finaloverridevirtualinherited

fast straight line distance evaluation to Surface

distance to surface

Implements Trk::Surface.

Definition at line 205 of file StraightLineSurface.cxx.

206 {
207  const Amg::Vector3D& C = center();
208  const Amg::Vector3D& S = lineDirection();
209 
210  double D = dir.dot(S);
211  double A = (1. - D) * (1. + D);
212 
213  Amg::Vector3D dx = C - pos - (C.dot(S) - pos.dot(S)) * S;
214  double currDist = sqrt(dx.dot(dx));
215 
216  if (A < 0.0001) {
217  return {1, currDist, false, 0.};
218  }
219  double sol = (pos - C).dot(D * S - dir) / A;
220  return {1, currDist, false, sol};
221 }

◆ straightLineDistanceEstimate() [2/2]

Trk::DistanceSolution Trk::StraightLineSurface::straightLineDistanceEstimate ( const Amg::Vector3D pos,
const Amg::Vector3D dir,
bool  Bound 
) const
finaloverridevirtualinherited

fast straight line distance evaluation to Surface - with bound option

Implements Trk::Surface.

Definition at line 241 of file StraightLineSurface.cxx.

244 {
245  const Amg::Transform3D& T = transform();
246  Amg::Vector3D Az(T(0, 2), T(1, 2), T(2, 2));
247 
248  Amg::Vector3D dxyz = pos - T.translation();
249 
250  double D = dir.dot(Az);
251  double Lz = dxyz.dot(Az);
252  double A = (1. - D) * (1. + D);
253 
254  // Step to surface
255  //
256  double s = 0.;
257  if (A > 0.)
258  s = (D * Lz - (dir.dot(dxyz))) / A;
259  if (!bound)
260  return {1, 0., false, s};
261 
262  // Min distance to surface
263  //
264  double Rm = 20.;
265  double Lzm = 1.e+10;
266 
267  if (m_bounds.get()) {
268  Rm = m_bounds.get()->r();
269  Lzm = m_bounds.get()->halflengthZ();
270  } else if (Surface::m_associatedDetElement) {
271 
272  const Trk::CylinderBounds* cb = nullptr;
273 
274  if (Surface::m_associatedDetElementId.is_valid()) {
276  } else {
277  cb = dynamic_cast<const Trk::CylinderBounds*>(&m_associatedDetElement->bounds());
278  }
279  if (cb) {
280  Rm = cb->r();
281  Lzm = cb->halflengthZ();
282  }
283  }
284 
285  double dist = dxyz.dot(dxyz) - Lz * Lz;
286  dist = (dist > Rm * Rm) ? sqrt(dist) - Rm : 0.;
287  double dL = fabs(Lz) - Lzm;
288  if (dL > 0.){
289  dist = sqrt(dist * dist + dL * dL);
290  }
291  return {1, dist, false, s};
292 }

◆ straightLineIntersection() [1/2]

Trk::Intersection Trk::StraightLineSurface::straightLineIntersection ( const Amg::Vector3D pos,
const Amg::Vector3D dir,
bool  forceDir,
Trk::BoundaryCheck  bchk 
) const
finaloverridevirtualinherited

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

b>mathematical motivation: Given two lines in parameteric form:

  • \( \vec l_{a}(\lambda) = \vec m_a + \lambda \cdot \vec e_{a} \)
  • \( \vec l_{b}(\mu) = \vec m_b + \mu \cdot \vec e_{b} \)
    the vector between any two points on the two lines is given by:
  • \( \vec s(\lambda, \mu) = \vec l_{b} - l_{a} = \vec m_{ab} + \mu \cdot \vec e_{b} - \lambda \cdot \vec e_{a} \),
    when \( \vec m_{ab} = \vec m_{b} - \vec m_{a} \).
    \( \vec s(\lambda_0, \mu_0) \) denotes the vector between the two closest points
    \( \vec l_{a,0} = l_{a}(\lambda_0) \) and \( \vec l_{b,0} = l_{b}(\mu_0) \)
    and is perpenticular to both, \( \vec e_{a} \) and \( \vec e_{b} \).

This results in a system of two linear equations:

  • (i) \( 0 = \vec s(\lambda_0, \mu_0) \cdot \vec e_a = \vec m_ab \cdot \vec e_a + \mu_0 \vec e_a \cdot \vec e_b - \lambda_0 \)
  • (ii) \( 0 = \vec s(\lambda_0, \mu_0) \cdot \vec e_b = \vec m_ab \cdot \vec e_b + \mu_0 - \lambda_0 \vec e_b \cdot \vec e_a \)

Solving (i), (ii) for \( \lambda_0 \) and \( \mu_0 \) yields:

  • \( \lambda_0 = \frac{(\vec m_ab \cdot \vec e_a)-(\vec m_ab \cdot \vec e_b)(\vec e_a \cdot \vec e_b)}{1-(\vec e_a \cdot \vec e_b)^2} \)
  • \( \mu_0 = - \frac{(\vec m_ab \cdot \vec e_b)-(\vec m_ab \cdot \vec e_a)(\vec e_a \cdot \vec e_b)}{1-(\vec e_a \cdot \vec e_b)^2} \)

Implements Trk::Surface.

Definition at line 295 of file StraightLineSurface.cxx.

299 {
300  // following nominclature found in header file and doxygen documentation
301  // line one is the straight track
302  const Amg::Vector3D& ma = pos;
303  const Amg::Vector3D& ea = dir;
304  // line two is the line surface
305  const Amg::Vector3D& mb = center();
306  const Amg::Vector3D& eb = lineDirection();
307  // now go ahead and solve for the closest approach
308  Amg::Vector3D mab(mb - ma);
309  double eaTeb = ea.dot(eb);
310  double denom = 1 - eaTeb * eaTeb;
311  if (fabs(denom) > 10e-7) {
312  double lambda0 = (mab.dot(ea) - mab.dot(eb) * eaTeb) / denom;
313  // evaluate in terms of direction
314  bool isValid = forceDir ? (lambda0 > 0.) : true;
315  // evaluate validaty in terms of bounds
316  Amg::Vector3D result = (ma + lambda0 * ea);
317  isValid = bchk ? (isValid && isOnSurface(result)) : isValid;
318  // return the result
319  return {result, lambda0, isValid};
320  }
321  return {pos, 0., false};
322 }

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

◆ surfaceRepresentation()

const StraightLineSurface & Trk::SaggedLineSurface::surfaceRepresentation ( ) const
inlinefinaloverridevirtual

Get the Surface representation.

provide the Surface interface

Implements Trk::DistortedSurface.

Definition at line 83 of file SaggedLineSurface.h.

84 { return (*this); }

◆ transform()

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

Returns HepGeom::Transform3D by reference.

◆ type()

constexpr virtual SurfaceType Trk::StraightLineSurface::type ( ) const
constexprfinaloverridevirtualinherited

Return the surface type.

Implements Trk::Surface.

◆ uniqueClone()

std::unique_ptr<Surface> Trk::Surface::uniqueClone ( ) const
inherited

NVI method returning unique_ptr clone.

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 CylinderBounds> Trk::StraightLineSurface::m_bounds
protectedinherited

NoBounds as return object when no bounds are declared.

Definition at line 289 of file StraightLineSurface.h.

◆ m_lineDirection

CxxUtils::CachedValue<Amg::Vector3D> Trk::StraightLineSurface::m_lineDirection
protectedinherited

bounds (shared)

Definition at line 287 of file StraightLineSurface.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_saggedLineDirection

CxxUtils::CachedValue<Amg::Vector3D> Trk::SaggedLineSurface::m_saggedLineDirection
protected

nominal end position

Definition at line 79 of file SaggedLineSurface.h.

◆ m_saggingDescriptor

LineSaggingDescriptor* Trk::SaggedLineSurface::m_saggingDescriptor
protected

the distortion descriptor

Definition at line 78 of file SaggedLineSurface.h.

◆ m_transforms

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

◆ s_boundless

const Trk::NoBounds Trk::StraightLineSurface::s_boundless
staticprotectedinherited

Definition at line 291 of file StraightLineSurface.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::StraightLineSurface::staticType = SurfaceType::Line
staticconstexprinherited

Definition at line 54 of file StraightLineSurface.h.


The documentation for this class was generated from the following files:
AllowedVariables::e
e
Definition: AsgElectronSelectorTool.cxx:37
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
beamspotman.r
def r
Definition: beamspotman.py:676
python.SystemOfUnits.s
int s
Definition: SystemOfUnits.py:131
CxxUtils::CachedValue::ptr
const T * ptr() const
Return a pointer to the cached value.
Trk::StraightLineSurface::bounds
virtual const SurfaceBounds & bounds() const override final
This method returns the bounds of the Surface by reference.
Trk::Surface::associatedDetectorElement
const TrkDetElementBase * associatedDetectorElement() const
return associated Detector Element
get_generator_info.result
result
Definition: get_generator_info.py:21
Trk::LineSaggingDescriptor::correctedSurfaceTransform
Amg::Transform3D * correctedSurfaceTransform(const Amg::Vector2D &locp, const Amg::Vector3D &lineCenter, const Amg::Vector3D &lineDirection, double cosFi=0.) const
Get the HepGeom::Transform3D* for the corrected Surface.
Definition: LineSaggingDescriptor.cxx:57
Trk::Surface::name
virtual std::string name() const =0
Return properly formatted class name.
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
CxxUtils::CachedValue::isValid
bool isValid() const
Test to see if the value is valid.
DMTest::C
C_v1 C
Definition: C.h:26
plotBeamSpotVxVal.cov
cov
Definition: plotBeamSpotVxVal.py:201
Trk::StraightLineSurface::isOnSurface
virtual bool isOnSurface(const Amg::Vector3D &glopo, const BoundaryCheck &bchk=true, double tol1=0., double tol2=0.) const override final
This method checks if the provided GlobalPosition is inside the assigned straw radius,...
Definition: StraightLineSurface.cxx:188
Trk::locR
@ locR
Definition: ParamDefs.h:44
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.
JetTiledMap::S
@ S
Definition: TiledEtaPhiMap.h:44
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
A
skel.l2
l2
Definition: skel.GENtoEVGEN.py:399
CheckAppliedSFs.e3
e3
Definition: CheckAppliedSFs.py:264
Trk::locZ
@ locZ
local cylindrical
Definition: ParamDefs.h:42
ParticleGun_EoverP_Config.momentum
momentum
Definition: ParticleGun_EoverP_Config.py:63
Trk::theta
@ theta
Definition: ParamDefs.h:66
xAOD::rotation
rotation
Definition: TrackSurface_v1.cxx:15
Trk::CylinderBounds
Definition: CylinderBounds.h:46
Trk::driftRadius
@ driftRadius
trt, straws
Definition: ParamDefs.h:53
Amg::Transform3D
Eigen::Affine3d Transform3D
Definition: GeoPrimitives.h:46
Trk::SaggedLineSurface::distortionDescriptor
virtual const LineSaggingDescriptor & distortionDescriptor() const override final
Get the Distortion descriptor
Definition: SaggedLineSurface.h:87
dumpNswErrorDb.linear
def linear
Definition: dumpNswErrorDb.py:23
sign
int sign(int a)
Definition: TRT_StrawNeighbourSvc.h:107
Trk::TrkDetElementBase::bounds
virtual const SurfaceBounds & bounds() const =0
Return the boundaries of the element.
Trk::StraightLineSurface::m_bounds
SharedObject< const CylinderBounds > m_bounds
NoBounds as return object when no bounds are declared.
Definition: StraightLineSurface.h:289
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::LineSaggingDescriptor
Definition: LineSaggingDescriptor.h:33
Trk::Surface::bounds
virtual const SurfaceBounds & bounds() const =0
Surface Bounds method.
charge
double charge(const T &p)
Definition: AtlasPID.h:756
CxxUtils::CachedValue::set
void set(const T &val) const
Set the value, assuming it is currently invalid.
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
query_example.col
col
Definition: query_example.py:7
ParticleGun_SamplingFraction.radius
radius
Definition: ParticleGun_SamplingFraction.py:96
python.LumiBlobConversion.pos
pos
Definition: LumiBlobConversion.py:18
Trk::ObjectCounter< Trk::Surface >::s_numberOfInstantiations
static std::atomic_size_t s_numberOfInstantiations
Definition: TrkObjectCounter.h:22
Trk::DistortedSurface
Definition: DistortedSurface.h:31
PowhegPythia8EvtGen_H2a4X_ctauY.ma
int ma
Definition: PowhegPythia8EvtGen_H2a4X_ctauY.py:26
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
TRT_PAI_physicsConstants::mb
const double mb
1mb to cm2
Definition: TRT_PAI_physicsConstants.h:15
Amg::RotationMatrix3D
Eigen::Matrix< double, 3, 3 > RotationMatrix3D
Definition: GeoPrimitives.h:49
makeTRTBarrelCans.dx
tuple dx
Definition: makeTRTBarrelCans.py:20
Trk::StraightLineSurface::lineDirection
const Amg::Vector3D & lineDirection() const
Special method for StraightLineSurface - provides the Line direction from cache: speedup.
Trk::SaggedLineSurface::m_saggingDescriptor
LineSaggingDescriptor * m_saggingDescriptor
the distortion descriptor
Definition: SaggedLineSurface.h:78
Trk::phi
@ phi
Definition: ParamDefs.h:75
skel.l1
l1
Definition: skel.GENtoEVGEN.py:398
Trk::SurfaceType::Line
@ Line
Trk::Surface::transform
const Amg::Transform3D & transform() const
Returns HepGeom::Transform3D by reference.
Trk::SaggedLineSurface::m_saggedLineDirection
CxxUtils::CachedValue< Amg::Vector3D > m_saggedLineDirection
nominal end position
Definition: SaggedLineSurface.h:79
Trk::StraightLineSurface::operator=
StraightLineSurface & operator=(const StraightLineSurface &slsf)
Assignment operator.
Definition: StraightLineSurface.cxx:76
Trk::Surface::localToGlobal
virtual void localToGlobal(const Amg::Vector2D &locp, const Amg::Vector3D &mom, Amg::Vector3D &glob) const =0
Specified by each surface type: LocalToGlobal method without dynamic memory allocation.
TSU::T
unsigned long long T
Definition: L1TopoDataTypes.h:35
Trk::StraightLineSurface
Definition: StraightLineSurface.h:51
Trk::CylinderBounds::halflengthZ
double halflengthZ() const
This method returns the halflengthZ.
Trk::CylinderBounds::r
virtual double r() const override final
This method returns the radius.