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::SlidingCylinderSurface Class Referencefinal

#include <SlidingCylinderSurface.h>

Inheritance diagram for Trk::SlidingCylinderSurface:
Collaboration diagram for Trk::SlidingCylinderSurface:

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

 SlidingCylinderSurface (const CylinderSurface &surf, const Trk::BinUtility &bu, const std::vector< float > &offset)
 Constructor. More...
 
virtual bool operator== (const Surface &sf) const override final
 Equality operator. More...
 
virtual bool isOnSurface (const Amg::Vector3D &glopo, const BoundaryCheck &bchk=true, double tol1=0., double tol2=0.) const override final
 This method returns true if the GlobalPosition is on the Surface for both, within or without check of whether the local position is inside boundaries or not. More...
 
virtual void localToGlobal (const Amg::Vector2D &locp, const Amg::Vector3D &mom, Amg::Vector3D &glob) const override final
 Specialized for DiscSurface: LocalToGlobal method without dynamic memory allocation. More...
 
virtual bool globalToLocal (const Amg::Vector3D &glob, const Amg::Vector3D &mom, Amg::Vector2D &loc) const override final
 Specialized for DiscSurface: GlobalToLocal method without dynamic memory allocation - boolean checks if on surface. 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...
 
const Trk::BinUtilitybinUtility () const
 This method allows access to the bin utility. More...
 
const std::vector< float > & offset () const
 This method allows access to the radial offset values. More...
 
virtual std::string name () const override
 Return properly formatted class name for screen output. More...
 
bool operator== (const CylinderSurface &cf) const
 
virtual CylinderSurfaceclone () 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, CylinderSurface > > 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, CylinderSurface > > 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 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::Vector3Dnormal () const
 Returns the normal vector of the Surface (i.e. More...
 
virtual const Amg::Vector3DrotSymmetryAxis () const
 Return method for the rotational symmetry axis - the z-Axis of the HepTransform. More...
 
virtual const CylinderBoundsbounds () const override final
 This method returns the CylinderBounds by reference (NoBounds is not possible for cylinder) More...
 
bool hasBounds () const
 
virtual bool insideBounds (const Amg::Vector2D &locpos, double tol1=0., double tol2=0.) const override
 This method calls the inside method of CylinderBounds. 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 CylinderSurface : LocalParameters to Vector2D. More...
 
Amg::Vector3D localToGlobal (const Amg::Vector2D &locpos) const
 This method returns the GlobalPosition from a LocalPosition uses the per surface localToGlobal. More...
 
Amg::Vector3D localToGlobal (const Amg::Vector2D &locpos, const Amg::Vector3D &glomom) const
 This method returns the GlobalPosition from a LocalPosition The LocalPosition can be outside Surface bounds - for generality with momentum. More...
 
Amg::Vector3D localToGlobal (const LocalParameters &locpars) const
 This method returns the GlobalPosition from LocalParameters The LocalParameters can be outside Surface bounds. More...
 
Amg::Vector3D localToGlobal (const LocalParameters &locpars, const Amg::Vector3D &glomom) const
 This method returns the GlobalPosition from LocalParameters The LocalParameters can be outside Surface bounds - for generality with momentum. More...
 
std::optional< Amg::Vector2DglobalToLocal (const Amg::Vector3D &glopos, double tol=0.) const
 This method returns the LocalPosition from a provided GlobalPosition. More...
 
std::optional< Amg::Vector2DglobalToLocal (const Amg::Vector3D &glopos, const Amg::Vector3D &glomom) const
 This method returns the LocalPosition from a provided GlobalPosition. More...
 
virtual Intersection straightLineIntersection (const Amg::Vector3D &pos, const Amg::Vector3D &dir, bool forceDir=false, Trk::BoundaryCheck bchk=false) const override final
 fast straight line intersection schema - provides closest intersection and (signed) path length More...
 
template<typename 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 double pathCorrection (const Amg::Vector3D &pos, const Amg::Vector3D &mom) const override
 the pathCorrection for derived classes with thickness 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...
 
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::MaterialLayermaterialLayer () const
 return the material Layer More...
 
Trk::MaterialLayermaterialLayer ()
 
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...
 
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< Trk::MaterialLayer > 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 a Trk::Layer. More...
 

Static Public Member Functions

static std::size_t numberOfInstantiations ()
 

Static Public Attributes

static constexpr SurfaceType staticType = SurfaceType::Cylinder
 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

std::vector< float > m_depth {}
 
Trk::BinUtility m_etaBin {}
 
std::shared_ptr< const CylinderBoundsm_bounds
 The global reference point (== a point on the surface) More...
 
CxxUtils::CachedUniquePtr< Amg::Vector3Dm_referencePoint
 The rotational symmetry axis. More...
 
CxxUtils::CachedUniquePtr< Amg::Vector3Dm_rotSymmetryAxis
 
std::unique_ptr< Transformsm_transforms {}
 Unique Pointer to the Transforms struct. More...
 
const TrkDetElementBasem_associatedDetElement {}
 Not owning Pointer to the Detector Element. More...
 
Identifier m_associatedDetElementId {}
 Identifier to the Detector Element. More...
 
const Layerm_associatedLayer {}
 The associated layer Trk::Layer This is the layer in which the Surface is embedded. More...
 
std::shared_ptr< MaterialLayerm_materialLayer {}
 Possibility to attach a material description to the surface. More...
 
SurfaceOwner m_owner {SurfaceOwner::noOwn}
 enum for surface owner : default free surface More...
 

Static Protected Attributes

static constexpr double s_onSurfaceTolerance = 10e-5
 Tolerance for being on Surface. More...
 

Detailed Description

Class for a Calo CylinderSurface with variable depth in the ATLAS detector. The variable depth is stored as a binned vector of radial corrections. Local eta bin is defined by base curvature and z position in base transform ( corrected for misalignement ). It inherits from CylinderSurface.

Author
Sarka.nosp@m..Tod.nosp@m.orova.nosp@m.@cer.nosp@m.n.ch

Definition at line 33 of file SlidingCylinderSurface.h.

Member Typedef Documentation

◆ ChargedTrackParametersUniquePtr

Unique ptr types.

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

◆ NeutralTrackParametersUniquePtr

Constructor & Destructor Documentation

◆ SlidingCylinderSurface()

Trk::SlidingCylinderSurface::SlidingCylinderSurface ( const CylinderSurface surf,
const Trk::BinUtility bu,
const std::vector< float > &  offset 
)

Constructor.

Definition at line 22 of file SlidingCylinderSurface.cxx.

26  , m_depth(offset)
27  , m_etaBin(bu)
28 {}

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 a Trk::Layer.

We do not take ownership as this is typically already owned by the Geometry

◆ baseSurface()

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

return the base surface (simplified for persistification)

◆ binUtility()

const Trk::BinUtility& Trk::SlidingCylinderSurface::binUtility ( ) const
inline

This method allows access to the bin utility.

Definition at line 79 of file SlidingCylinderSurface.h.

79 { return m_etaBin; }

◆ bounds()

virtual const CylinderBounds& Trk::CylinderSurface::bounds ( ) const
finaloverridevirtualinherited

This method returns the CylinderBounds by reference (NoBounds is not possible for cylinder)

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 CylinderSurface* Trk::CylinderSurface::clone ( ) const
overridevirtualinherited

Implicit Constructor.

Implements Trk::Surface.

◆ createUniqueNeutralParameters() [1/2]

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

158  {
159  return std::make_unique<ParametersT<5, Neutral, CylinderSurface>>(
160  position, momentum, charge, *this, std::move(cov));
161 }

◆ createUniqueNeutralParameters() [2/2]

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

148  {
149  return std::make_unique<ParametersT<5, Neutral, CylinderSurface>>(
150  l1, l2, phi, theta, qop, *this, std::move(cov));
151 }

◆ createUniqueParameters() [1/2]

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

138  {
139  return std::make_unique<ParametersT<5, Charged, CylinderSurface>>(
140  position, momentum, charge, *this, std::move(cov));
141 }

◆ createUniqueTrackParameters() [2/2]

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

128  {
129  return std::make_unique<ParametersT<5, Charged, CylinderSurface>>(
130  l1, l2, phi, theta, qop, *this, std::move(cov));
131 }

◆ 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::CylinderSurface::globalReferencePoint ( ) const
finaloverridevirtualinherited

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 164 of file CylinderSurface.cxx.

165 {
166  if (!m_referencePoint) {
167  double rMedium = bounds().r();
168  double phi = bounds().averagePhi();
169  Amg::Vector3D gp(rMedium * cos(phi), rMedium * sin(phi), 0.);
170  m_referencePoint.set(std::make_unique<Amg::Vector3D>(transform() * gp));
171  }
172  return (*m_referencePoint);
173 }

◆ globalToLocal() [1/3]

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

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

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

Reimplemented from Trk::CylinderSurface.

Definition at line 67 of file SlidingCylinderSurface.cxx.

70 {
71  // get the transform & transform global position into cylinder frame
72  // transform it to the globalframe: CylinderSurfaces are allowed to have 0 pointer transform
73  double radius = 0.;
74  const double inttol = std::max(bounds().r() * 0.0001, 0.01);
75  // realign to find local eta bin
76  const Amg::Vector3D& loc3D0 = glopos;
77  float offset = m_depth[m_etaBin.bin(loc3D0)];
78  // do the transformation or not
80  const Amg::Transform3D& surfaceTrans = transform();
81  Amg::Transform3D inverseTrans(surfaceTrans.inverse());
82  Amg::Vector3D loc3Dframe(inverseTrans * glopos);
83  locpos = Amg::Vector2D((bounds().r() + offset) * loc3Dframe.phi(), loc3Dframe.z());
84  radius = loc3Dframe.perp();
85  } else {
86  locpos = Amg::Vector2D((bounds().r() + offset) * glopos.phi(), glopos.z());
87  radius = glopos.perp();
88  }
89  // return true or false
90  return (std::abs(radius - bounds().r() - offset) <= inttol);
91 }

◆ 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

◆ hasBounds()

bool Trk::CylinderSurface::hasBounds ( ) const
inherited

◆ insideBounds()

virtual bool Trk::CylinderSurface::insideBounds ( const Amg::Vector2D locpos,
double  tol1 = 0.,
double  tol2 = 0. 
) const
overridevirtualinherited

This method calls the inside method of CylinderBounds.

Implements Trk::Surface.

Reimplemented in Trk::SubtractedCylinderSurface.

◆ insideBoundsCheck()

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

This method returns true if the GlobalPosition is on the Surface for both, within or without check of whether the local position is inside boundaries or not.

Reimplemented from Trk::CylinderSurface.

Definition at line 94 of file SlidingCylinderSurface.cxx.

98 {
99  const Amg::Vector3D& loc3D0 = glopo;
100  Amg::Vector3D loc3Dframe = m_transforms ? (transform().inverse()) * glopo : glopo;
101  float offset = m_depth[m_etaBin.bin(loc3D0)];
102  // recalculate r to match bounds
103  Amg::Vector3D loc3Dbase((loc3Dframe.perp() - offset) * std::cos(loc3Dframe.phi()),
104  (loc3Dframe.perp() - offset) * std::sin(loc3Dframe.phi()),
105  loc3Dframe.z());
106 
107  return (bchk ? bounds().inside3D(loc3Dbase, tol1, tol2) : true);
108 }

◆ localParametersToPosition()

virtual Amg::Vector2D Trk::CylinderSurface::localParametersToPosition ( const LocalParameters locpars) const
finaloverridevirtualinherited

Specialized for CylinderSurface : LocalParameters to Vector2D.

Reimplemented from Trk::Surface.

◆ localToGlobal() [1/5]

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

Specialized for DiscSurface: LocalToGlobal method without dynamic memory allocation.

Reimplemented from Trk::CylinderSurface.

Definition at line 47 of file SlidingCylinderSurface.cxx.

50 {
51  // create the position in the local 3d frame
52  double r0 = bounds().r();
53  double phi0 = locpos[Trk::locRPhi] / r0;
54  Amg::Vector3D loc3D0(r0 * std::cos(phi0), r0 * std::sin(phi0), locpos[Trk::locZ]);
55  // correct for alignment, retrieve offset correction
57  float offset = m_depth[m_etaBin.bin(t0 * loc3D0)];
58  double r = r0 + offset;
59  double phi = locpos[Trk::locRPhi] / r;
60  Amg::Vector3D loc3Dframe(r * std::cos(phi), r * std::sin(phi), locpos[Trk::locZ]);
61  // transport it to the globalframe
62  glopos = Trk::Surface::transform() * loc3Dframe;
63 }

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

◆ materialLayer() [2/2]

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

return the material Layer

◆ measurementFrame()

Amg::RotationMatrix3D Trk::CylinderSurface::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 187 of file CylinderSurface.cxx.

189 {
190  Amg::RotationMatrix3D mFrame;
191  // construct the measurement frame
192  Amg::Vector3D measY(
193  transform().rotation().col(2)); // measured Y is the z axis
194  Amg::Vector3D measDepth =
195  Amg::Vector3D(pos.x(), pos.y(), 0.)
196  .unit(); // measured z is the position transverse normalized
197  Amg::Vector3D measX(
198  measY.cross(measDepth).unit()); // measured X is what comoes out of it
199  // the columnes
200  mFrame.col(0) = measX;
201  mFrame.col(1) = measY;
202  mFrame.col(2) = measDepth;
203  // return the rotation matrix
204  return mFrame;
205 }

◆ name()

virtual std::string Trk::SlidingCylinderSurface::name ( ) const
inlineoverridevirtual

Return properly formatted class name for screen output.

Reimplemented from Trk::CylinderSurface.

Definition at line 85 of file SlidingCylinderSurface.h.

86  {
87  return "Trk::SlidingCylinderSurface";
88  }

◆ 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::CylinderSurface::normal ( const Amg::Vector2D locpo) const
finaloverridevirtualinherited

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  }

◆ offset()

const std::vector<float>& Trk::SlidingCylinderSurface::offset ( ) const
inline

This method allows access to the radial offset values.

Definition at line 82 of file SlidingCylinderSurface.h.

82 { return m_depth; }

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

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

◆ operator==() [2/2]

bool Trk::SlidingCylinderSurface::operator== ( const Surface sf) const
finaloverridevirtual

Equality operator.

Reimplemented from Trk::CylinderSurface.

Definition at line 32 of file SlidingCylinderSurface.cxx.

33 {
34  // first check the type not to compare apples with oranges
35  const Trk::SlidingCylinderSurface* dsf = dynamic_cast<const Trk::SlidingCylinderSurface*>(&sf);
36  if (!dsf)
37  return false;
38  if (this == dsf)
39  return true;
40  bool transfEqual(transform().isApprox(dsf->transform(), 10e-8));
41  bool centerEqual = (transfEqual) ? (center() == dsf->center()) : false;
42  bool boundsEqual = (centerEqual) ? (bounds() == dsf->bounds()) : false;
43  return boundsEqual;
44 }

◆ owner()

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

return ownership

◆ pathCorrection()

virtual double Trk::CylinderSurface::pathCorrection ( const Amg::Vector3D pos,
const Amg::Vector3D mom 
) const
overridevirtualinherited

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 }

◆ rotSymmetryAxis()

const Amg::Vector3D & Trk::CylinderSurface::rotSymmetryAxis ( ) const
virtualinherited

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

Definition at line 208 of file CylinderSurface.cxx.

209 {
210  if (!m_rotSymmetryAxis) {
212  m_rotSymmetryAxis.set(std::make_unique<Amg::Vector3D>(zAxis));
213  }
214  return (*m_rotSymmetryAxis);
215 }

◆ setMaterialLayer()

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

fast straight line distance evaluation to Surface

distance to surface

Reimplemented from Trk::CylinderSurface.

Definition at line 112 of file SlidingCylinderSurface.cxx.

113 {
114  double tol = 0.001;
115 
116  // retrieve localEta bin using current position
117  const Amg::Vector3D& loc3D0 = pos; // used to retrieve localEta bin
118  float offset = m_depth[m_etaBin.bin(loc3D0)];
119 
120  const Amg::Vector3D& X = Trk::Surface::center(); // point
121  const Amg::Vector3D& S = Trk::Surface::normal(); // vector
122 
123  double radius = bounds().r() + offset;
124  double sp = pos.dot(S);
125  double sc = X.dot(S);
126  double dp = dir.dot(S);
127  Amg::Vector3D dx = X - pos - (sc - sp) * S; // vector
128  Amg::Vector3D ax = dir - dp * S; // vector
129 
130  double A = ax.dot(ax); // size of projected direction (squared)
131  double B = ax.dot(dx); // dot product (->cos angle)
132  double C = dx.dot(dx); // distance to axis (squared)
133  double currDist = radius - std::sqrt(C);
134  const double bOverA{B/A};
135  if (A == 0.) { // direction parallel to cylinder axis
136  if (std::abs(currDist) < tol) {
137  return {1, 0., true, 0.}; // solution at surface
138  }
139  return {0, currDist, true, 0.}; // point of closest approach without intersection
140 
141  }
142  // minimal distance to cylinder axis
143  double rmin = C - B * bOverA < 0. ? 0. : std::sqrt(C - B * bOverA);
144  if (rmin > radius) { // no intersection
145  return {0, currDist, true, bOverA}; // point of closest approach without intersection
146  }
147  if (std::abs(rmin - radius) < tol) { // tangential 'intersection' - return double solution
148  return {2, currDist, true, bOverA, bOverA};
149  }
150  const double sqrtTerm = std::sqrt((radius - rmin) * (radius + rmin)/A) ;
151  double first = bOverA - sqrtTerm;
152  double second = bOverA + sqrtTerm;
153  if (first >= 0.) {
154  return {2, currDist, true, first, second};
155  } if (second <= 0.) {
156  return {2, currDist, true, second, first};
157  } // inside cylinder
158  return {2, currDist, true, second, first};
159 }

◆ straightLineDistanceEstimate() [2/2]

Trk::DistanceSolution Trk::SlidingCylinderSurface::straightLineDistanceEstimate ( const Amg::Vector3D pos,
const Amg::Vector3D dir,
bool  Bound 
) const
finaloverridevirtual

fast straight line distance evaluation to Surface - with bound option

Reimplemented from Trk::CylinderSurface.

Definition at line 162 of file SlidingCylinderSurface.cxx.

165 {
167 }

◆ straightLineIntersection() [1/2]

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

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 cylinder, i.e. the symmetry axis of the cylinder is the z-axis, x- and y-axis are perpenticular to the the z-axis. In this frame the cylinder 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 intersection is straight forward:
may \(p_{1}=(p_{1x}, p_{1y}, p_{1z}), p_{2}=(p_{2x}, p_{2y}, p_{2z}) \)@_fakenlthe two points describing the 3D-line, then the line in the \(x-y\)plane can be written as \(y=kx+d\), where \(k =\frac{p_{2y}-p_{1y}}{p_{2x}-p_{1x}}\)such as \(d=\frac{p_{2x}p_{1y}-p_{1x}p_{2y}}{p_{2x}-p_{1x}},\)
and intersects with the corresponding circle \(x^{2}+y^{2} = R^{2}. \)
The solutions can then be found by a simple quadratic equation and reinsertion into the line equation.

Implements Trk::Surface.

Definition at line 274 of file CylinderSurface.cxx.

278 {
279  bool needsTransform = m_transforms || m_associatedDetElement;
280  // create the hep points
281  Amg::Vector3D point1 = pos;
282  Amg::Vector3D direction = dir;
283  if (needsTransform) {
285  point1 = invTrans * pos;
286  direction = invTrans.linear() * dir;
287  }
288  // the bounds radius
289  double R = bounds().r();
290  double t1 = 0.;
291  double t2 = 0.;
292  if (direction.x()) {
293  // get line and circle constants
294  double idirx = 1. / direction.x();
295  double k = direction.y() * idirx;
296  double d = point1.y() - point1.x() * k;
297  // and solve the qaudratic equation
298  Trk::RealQuadraticEquation pquad(1 + k * k, 2 * k * d, d * d - R * R);
299  if (pquad.solutions != Trk::none) {
300  // the solutions in the 3D frame of the cylinder
301  t1 = (pquad.first - point1.x()) * idirx;
302  t2 = (pquad.second - point1.x()) * idirx;
303  } else // bail out if no solution exists
304  return {pos, 0., false};
305  } else if (direction.y()) {
306  // x value is the one of point1
307  // x^2 + y^2 = R^2
308  // y = sqrt(R^2-x^2)
309  double x = point1.x();
310  double r2mx2 = R * R - x * x;
311  // bail out if no solution
312  if (r2mx2 < 0.)
313  return {pos, 0., false};
314  double y = sqrt(r2mx2);
315  // assign parameters and solutions
316  double idiry = 1. / direction.y();
317  t1 = (y - point1.y()) * idiry;
318  t2 = (-y - point1.y()) * idiry;
319  } else {
320  return {pos, 0., false};
321  }
322  Amg::Vector3D sol1raw(point1 + t1 * direction);
323  Amg::Vector3D sol2raw(point1 + t2 * direction);
324  // now reorder and return
325  Amg::Vector3D solution(0, 0, 0);
326  double path = 0.;
327 
328  // first check the validity of the direction
329  bool isValid = true;
330 
331  // both solutions are of same sign, take the smaller, but flag as false if not
332  // forward
333  if (t1 * t2 > 0 || !forceDir) {
334  // asign validity
335  isValid = forceDir ? (t1 > 0.) : true;
336  // assign the right solution
337  if (t1 * t1 < t2 * t2) {
338  solution = sol1raw;
339  path = t1;
340  } else {
341  solution = sol2raw;
342  path = t2;
343  }
344  } else {
345  if (t1 > 0.) {
346  solution = sol1raw;
347  path = t1;
348  } else {
349  solution = sol2raw;
350  path = t2;
351  }
352  }
353  // the solution is still in the local 3D frame, direct check
354  isValid =
355  bchk ? (isValid && m_bounds->inside3D(solution,
358  : isValid;
359 
360  // now return
361  return needsTransform ? Intersection(transform() * solution, path, isValid)
362  : Intersection(solution, path, isValid);
363 }

◆ straightLineIntersection() [2/2]

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

356  {
358  pars.position(), pars.momentum().unit(), forceDir, bchk);
359  }

◆ transform()

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

Returns HepGeom::Transform3D by reference.

◆ type()

constexpr virtual SurfaceType Trk::CylinderSurface::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 Detector Element.

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

◆ m_associatedDetElementId

Identifier Trk::Surface::m_associatedDetElementId {}
protectedinherited

Identifier to the Detector Element.

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

◆ m_associatedLayer

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

The associated layer Trk::Layer This is the layer in which the Surface is embedded.

so not owning pointer.

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

◆ m_bounds

std::shared_ptr<const CylinderBounds> Trk::CylinderSurface::m_bounds
protectedinherited

The global reference point (== a point on the surface)

Definition at line 289 of file CylinderSurface.h.

◆ m_depth

std::vector<float> Trk::SlidingCylinderSurface::m_depth {}
protected

Definition at line 91 of file SlidingCylinderSurface.h.

◆ m_etaBin

Trk::BinUtility Trk::SlidingCylinderSurface::m_etaBin {}
protected

Definition at line 92 of file SlidingCylinderSurface.h.

◆ m_materialLayer

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

Possibility to attach a material description to the surface.

In this case the surface is what holds the MaterialLayer. This is usually done for boundary surfaces so shared ptr.

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 : default free surface

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

◆ m_referencePoint

CxxUtils::CachedUniquePtr<Amg::Vector3D> Trk::CylinderSurface::m_referencePoint
protectedinherited

The rotational symmetry axis.

Definition at line 291 of file CylinderSurface.h.

◆ m_rotSymmetryAxis

CxxUtils::CachedUniquePtr<Amg::Vector3D> Trk::CylinderSurface::m_rotSymmetryAxis
protectedinherited

Definition at line 293 of file CylinderSurface.h.

◆ m_transforms

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

Unique Pointer to the Transforms struct.

Definition at line 439 of file Tracking/TrkDetDescr/TrkSurfaces/TrkSurfaces/Surface.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::CylinderSurface::staticType = SurfaceType::Cylinder
staticconstexprinherited

The surface type static constexpr.

Definition at line 59 of file CylinderSurface.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 Detector Element.
Definition: Tracking/TrkDetDescr/TrkSurfaces/TrkSurfaces/Surface.h:441
Trk::y
@ y
Definition: ParamDefs.h:56
beamspotman.r
def r
Definition: beamspotman.py:672
TileDCSDataPlotter.dp
dp
Definition: TileDCSDataPlotter.py:842
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.
fitman.ax
ax
Definition: fitman.py:522
PlotCalibFromCool.zAxis
zAxis
Definition: PlotCalibFromCool.py:76
Trk::SlidingCylinderSurface::straightLineDistanceEstimate
virtual DistanceSolution straightLineDistanceEstimate(const Amg::Vector3D &pos, const Amg::Vector3D &dir) const override final
fast straight line distance evaluation to Surface
Definition: SlidingCylinderSurface.cxx:112
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:352
Amg::Vector2D
Eigen::Matrix< double, 2, 1 > Vector2D
Definition: GeoPrimitives.h:48
Trk::SlidingCylinderSurface::m_etaBin
Trk::BinUtility m_etaBin
Definition: SlidingCylinderSurface.h:92
hist_file_dump.d
d
Definition: hist_file_dump.py:142
max
constexpr double max()
Definition: ap_fixedTest.cxx:33
Trk::locRPhi
@ locRPhi
Definition: ParamDefs.h:40
DMTest::C
C_v1 C
Definition: C.h:26
ALFA_EventTPCnv_Dict::t0
std::vector< ALFA_RawData_p1 > t0
Definition: ALFA_EventTPCnvDict.h:42
ALFA_EventTPCnv_Dict::t1
std::vector< ALFA_RawDataCollection_p1 > t1
Definition: ALFA_EventTPCnvDict.h:43
python.SystemOfUnits.second
float second
Definition: SystemOfUnits.py:135
plotBeamSpotVxVal.cov
cov
Definition: plotBeamSpotVxVal.py:200
Trk::none
@ none
Definition: TrkDetDescr/TrkSurfaces/TrkSurfaces/RealQuadraticEquation.h:21
Trk::CylinderSurface::bounds
virtual const CylinderBounds & bounds() const override final
This method returns the CylinderBounds by reference (NoBounds is not possible for cylinder)
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:872
Trk::Surface::center
const Amg::Vector3D & center() const
Returns the center position of the Surface.
JetTiledMap::S
@ S
Definition: TiledEtaPhiMap.h:44
AthenaPoolTestRead.sc
sc
Definition: AthenaPoolTestRead.py:27
Monitored::X
@ X
Definition: HistogramFillerUtils.h:24
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:410
Trk::Surface::m_transforms
std::unique_ptr< Transforms > m_transforms
Unique Pointer to the Transforms struct.
Definition: Tracking/TrkDetDescr/TrkSurfaces/TrkSurfaces/Surface.h:439
Trk::Surface::s_onSurfaceTolerance
static constexpr double s_onSurfaceTolerance
Tolerance for being on Surface.
Definition: Tracking/TrkDetDescr/TrkSurfaces/TrkSurfaces/Surface.h:458
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
Trk::CylinderSurface
Definition: CylinderSurface.h:55
xAOD::rotation
rotation
Definition: TrackSurface_v1.cxx:15
Amg::Transform3D
Eigen::Affine3d Transform3D
Definition: GeoPrimitives.h:46
dumpNswErrorDb.linear
def linear
Definition: dumpNswErrorDb.py:29
TRT_PAI_physicsConstants::r0
const double r0
electron radius{cm}
Definition: TRT_PAI_physicsConstants.h:22
Trk::SlidingCylinderSurface::offset
const std::vector< float > & offset() const
This method allows access to the radial offset values.
Definition: SlidingCylinderSurface.h:82
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::CylinderSurface::m_bounds
std::shared_ptr< const CylinderBounds > m_bounds
The global reference point (== a point on the surface)
Definition: CylinderSurface.h:289
AnalysisUtils::Delta::R
double R(const INavigable4Momentum *p1, const double v_eta, const double v_phi)
Definition: AnalysisMisc.h:49
Trk::CylinderSurface::m_referencePoint
CxxUtils::CachedUniquePtr< Amg::Vector3D > m_referencePoint
The rotational symmetry axis.
Definition: CylinderSurface.h:291
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:619
Trk::SlidingCylinderSurface::m_depth
std::vector< float > m_depth
Definition: SlidingCylinderSurface.h:91
Trk::Surface::bounds
virtual const SurfaceBounds & bounds() const =0
Surface Bounds method.
charge
double charge(const T &p)
Definition: AtlasPID.h:991
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
ParticleGun_SamplingFraction.radius
radius
Definition: ParticleGun_SamplingFraction.py:96
python.LumiBlobConversion.pos
pos
Definition: LumiBlobConversion.py:16
Trk::CylinderSurface::m_rotSymmetryAxis
CxxUtils::CachedUniquePtr< Amg::Vector3D > m_rotSymmetryAxis
Definition: CylinderSurface.h:293
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...
mapkey::sf
@ sf
Definition: TElectronEfficiencyCorrectionTool.cxx:38
Amg::RotationMatrix3D
Eigen::Matrix< double, 3, 3 > RotationMatrix3D
Definition: GeoPrimitives.h:49
DeMoScan.first
bool first
Definition: DeMoScan.py:534
makeTRTBarrelCans.dx
tuple dx
Definition: makeTRTBarrelCans.py:20
Trk::SlidingCylinderSurface
Definition: SlidingCylinderSurface.h:34
Trk::phi
@ phi
Definition: ParamDefs.h:75
skel.l1
l1
Definition: skel.GENtoEVGEN.py:409
Trk::BinUtility::bin
size_t bin(const Amg::Vector3D &position, size_t ba=0) const
Bin from a 3D vector (already in binning frame)
Definition: BinUtility.h:126
drawFromPickle.sin
sin
Definition: drawFromPickle.py:36
Trk::x
@ x
Definition: ParamDefs.h:55
Trk::CylinderBounds::averagePhi
double averagePhi() const
This method returns the average phi.
Trk::Surface::transform
const Amg::Transform3D & transform() const
Returns HepGeom::Transform3D by reference.
Trk::phi0
@ phi0
Definition: ParamDefs.h:65
fitman.k
k
Definition: fitman.py:528
Trk::CylinderBounds::r
virtual double r() const override final
This method returns the radius.