ATLAS Offline Software
Public Types | Public Member Functions | Static Public Member Functions | Static Public Attributes | Protected Member Functions | Protected Attributes | Static Protected Attributes | Private Types | List of all members
Trk::BoundarySubtractedPlaneSurface< Tvol > Class Template Referencefinal

#include <BoundarySubtractedPlaneSurface.h>

Inheritance diagram for Trk::BoundarySubtractedPlaneSurface< Tvol >:
Collaboration diagram for Trk::BoundarySubtractedPlaneSurface< Tvol >:

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

 BoundarySubtractedPlaneSurface ()=default
 Default Constructor - needed for pool and inherited classes. More...
 
 BoundarySubtractedPlaneSurface (const BoundarySubtractedPlaneSurface< Tvol > &bps)=default
 Copy constructor. More...
 
BoundarySubtractedPlaneSurfaceoperator= (const BoundarySubtractedPlaneSurface &vol)=default
 Assignment operator. More...
 
virtual ~BoundarySubtractedPlaneSurface ()=default
 
 BoundarySubtractedPlaneSurface (const Tvol *inside, const Tvol *outside, const SubtractedPlaneSurface &psf)
 Constructor for a Boundary with exact two Volumes attached to it. More...
 
 BoundarySubtractedPlaneSurface (SharedObject< VolumeArray > insideArray, SharedObject< VolumeArray > outsideArray, const SubtractedPlaneSurface &psf)
 Constructor for a Boundary with two VolumeArrays attached to it. More...
 
 BoundarySubtractedPlaneSurface (const Tvol *inside, const Tvol *outside, const SubtractedPlaneSurface &psf, const Amg::Transform3D &tr)
 Copy constructor with a shift. More...
 
virtual const Tvol * attachedVolume (const TrackParameters &parms, PropDirection dir) const override final
 Get the next Volume depending on the TrackParameters and the requested direction, gives back 0 if there's no volume attached to the requested direction. More...
 
virtual const Tvol * attachedVolume (const Amg::Vector3D &pos, const Amg::Vector3D &mom, PropDirection dir) const override final
 Get the next Volume depending on GlobalPosition, GlobalMomentum, dir on the TrackParameters and the requested direction. More...
 
virtual const SurfacesurfaceRepresentation () const override final
 The Surface Representation of this. More...
 
virtual SurfacesurfaceRepresentation () override final
 
template<class T >
bool onBoundary (const T &pars) const
 templated onBoundary method More...
 
void debugInfo (MsgStream &msg) const
 output debug information More...
 
Tvol constinsideVolume () const
 getters/setters for inside/outside Volume More...
 
void setInsideVolume (const Tvol *)
 
Tvol constoutsideVolume () const
 
void setOutsideVolume (const Tvol *)
 
const SharedObject< VolumeArray > & insideVolumeArray () const
 getters/setters for inside/outside Volume arrays More...
 
void setInsideVolumeArray (const SharedObject< VolumeArray > &)
 
const SharedObject< VolumeArray > & outsideVolumeArray () const
 
void setOutsideVolumeArray (const SharedObject< VolumeArray > &)
 
virtual bool operator== (const Surface &sf) const override final
 Equality operator. More...
 
bool operator== (const PlaneSurface &cf) const
 
bool shared () const
 This method indicates the subtraction mode. More...
 
virtual bool insideBounds (const Amg::Vector2D &locpos, double tol1=0., double tol2=0.) const override final
 This method calls the inside() method of the Bounds. More...
 
SharedObject< AreaExcludersubtractedVolume () const
 This method allows access to the subtracted part. More...
 
virtual std::string name () const override final
 Return properly formatted class name for screen output. More...
 
virtual PlaneSurfaceclone () const override
 Virtual constructor. More...
 
constexpr virtual SurfaceType type () const override final
 Return the surface type. 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 oop, 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=0., std::optional< AmgSymMatrix(5)> cov=std::nullopt) const override final
 Use the Surface as a ParametersBase constructor, from global parameters. More...
 
template<int DIM, class T >
std::unique_ptr< ParametersT< DIM, T, PlaneSurface > > 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, PlaneSurface > > 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 const SurfaceBoundsbounds () const override final
 This method returns the bounds by reference, static NoBounds in case of no boundaries. More...
 
virtual bool insideBoundsCheck (const Amg::Vector2D &locpos, const BoundaryCheck &bchk) const override final
 
virtual bool isOnSurface (const Amg::Vector3D &glopo, const BoundaryCheck &bchk=true, double tol1=0., double tol2=0.) const override 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
 Specified for PlaneSurface: LocalToGlobal method without dynamic memory allocation. 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 PlaneSurface: GlobalToLocal method without dynamic memory allocation - boolean checks if on surface. 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...
 
void localToGlobalDirection (const Trk::LocalDirection &locdir, Amg::Vector3D &globdir) const
 This method transforms a local direction wrt the plane to a global direction. More...
 
void globalToLocalDirection (const Amg::Vector3D &glodir, Trk::LocalDirection &locdir) const
 This method transforms the global direction to a local direction wrt the plane. 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...
 
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...
 
virtual double pathCorrection (const Amg::Vector3D &pos, const Amg::Vector3D &mom) const
 the pathCorrection for derived classes with thickness - it reflects if the direction projection is positive or negative More...
 
virtual Amg::RotationMatrix3D measurementFrame (const Amg::Vector3D &glopos, const Amg::Vector3D &glomom) const
 Return the measurement frame - this is needed for alignment, in particular for StraightLine and Perigee Surface. More...
 
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::Plane
 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

const Tvol * m_insideVolume
 
const Tvol * m_outsideVolume
 
SharedObject< VolumeArraym_insideVolumeArray
 
SharedObject< VolumeArraym_outsideVolumeArray
 
SharedObject< AreaExcluderm_subtrVol
 
bool m_shared
 
SharedObject< const SurfaceBoundsm_bounds
 bounds (shared) 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...
 

Private Types

typedef BinnedArray< Tvol > VolumeArray
 typedef the BinnedArray More...
 

Detailed Description

template<class Tvol>
class Trk::BoundarySubtractedPlaneSurface< Tvol >

BoundarySubtractedPlaneSurface description inside the tracking realm, it extends the SubtractedPlaneSurface description to make a surface being a boundary of a Trk::Volume (used for all volume shapes). It inherits from BoundarySurface to get the interface of boundaries.

Author
Sarka.nosp@m..Tod.nosp@m.orova.nosp@m.@cer.nosp@m.n.ch
Christos Anastopoulos (Athena MT modifications)

Definition at line 37 of file BoundarySubtractedPlaneSurface.h.

Member Typedef Documentation

◆ ChargedTrackParametersUniquePtr

Unique ptr types.

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

◆ NeutralTrackParametersUniquePtr

◆ VolumeArray

template<class Tvol >
typedef BinnedArray<Tvol> Trk::BoundarySubtractedPlaneSurface< Tvol >::VolumeArray
private

typedef the BinnedArray

Definition at line 41 of file BoundarySubtractedPlaneSurface.h.

Constructor & Destructor Documentation

◆ BoundarySubtractedPlaneSurface() [1/5]

template<class Tvol >
Trk::BoundarySubtractedPlaneSurface< Tvol >::BoundarySubtractedPlaneSurface ( )
default

Default Constructor - needed for pool and inherited classes.

◆ BoundarySubtractedPlaneSurface() [2/5]

Copy constructor.

◆ ~BoundarySubtractedPlaneSurface()

template<class Tvol >
virtual Trk::BoundarySubtractedPlaneSurface< Tvol >::~BoundarySubtractedPlaneSurface ( )
virtualdefault

◆ BoundarySubtractedPlaneSurface() [3/5]

template<class Tvol >
Trk::BoundarySubtractedPlaneSurface< Tvol >::BoundarySubtractedPlaneSurface ( const Tvol *  inside,
const Tvol *  outside,
const SubtractedPlaneSurface psf 
)
inline

Constructor for a Boundary with exact two Volumes attached to it.

Definition at line 58 of file BoundarySubtractedPlaneSurface.h.

60  : BoundarySurface<Tvol>(inside, outside), SubtractedPlaneSurface(psf) {}

◆ BoundarySubtractedPlaneSurface() [4/5]

template<class Tvol >
Trk::BoundarySubtractedPlaneSurface< Tvol >::BoundarySubtractedPlaneSurface ( SharedObject< VolumeArray insideArray,
SharedObject< VolumeArray outsideArray,
const SubtractedPlaneSurface psf 
)
inline

Constructor for a Boundary with two VolumeArrays attached to it.

Definition at line 63 of file BoundarySubtractedPlaneSurface.h.

66  : BoundarySurface<Tvol>(insideArray, outsideArray),

◆ BoundarySubtractedPlaneSurface() [5/5]

template<class Tvol >
Trk::BoundarySubtractedPlaneSurface< Tvol >::BoundarySubtractedPlaneSurface ( const Tvol *  inside,
const Tvol *  outside,
const SubtractedPlaneSurface psf,
const Amg::Transform3D tr 
)
inline

Copy constructor with a shift.

Definition at line 70 of file BoundarySubtractedPlaneSurface.h.

73  : BoundarySurface<Tvol>(inside, outside),
74  SubtractedPlaneSurface(psf, tr) {}

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

◆ attachedVolume() [1/2]

template<class Tvol >
virtual const Tvol* Trk::BoundarySubtractedPlaneSurface< Tvol >::attachedVolume ( const Amg::Vector3D pos,
const Amg::Vector3D mom,
PropDirection  dir 
) const
finaloverridevirtual

Get the next Volume depending on GlobalPosition, GlobalMomentum, dir on the TrackParameters and the requested direction.

Implements Trk::BoundarySurface< Tvol >.

◆ attachedVolume() [2/2]

template<class Tvol >
virtual const Tvol* Trk::BoundarySubtractedPlaneSurface< Tvol >::attachedVolume ( const TrackParameters parms,
PropDirection  dir 
) const
finaloverridevirtual

Get the next Volume depending on the TrackParameters and the requested direction, gives back 0 if there's no volume attached to the requested direction.

Implements Trk::BoundarySurface< Tvol >.

◆ baseSurface()

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

return the base surface (simplified for persistification)

◆ bounds()

virtual const SurfaceBounds& Trk::PlaneSurface::bounds ( ) const
finaloverridevirtualinherited

This method returns the bounds by reference, static NoBounds in case of no boundaries.

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

Virtual constructor.

Implements Trk::Surface.

◆ createUniqueNeutralParameters() [1/2]

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

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

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

  • neutral

Implements Trk::Surface.

Definition at line 191 of file PlaneSurface.cxx.

196 {
197  return std::make_unique<ParametersT<5, Neutral, PlaneSurface>>(
198  position, momentum, charge, *this, std::move(cov));
199 }

◆ createUniqueNeutralParameters() [2/2]

Trk::Surface::NeutralTrackParametersUniquePtr Trk::PlaneSurface::createUniqueNeutralParameters ( double  l1,
double  l2,
double  phi,
double  theta,
double  oop,
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 176 of file PlaneSurface.cxx.

183 {
184  return std::make_unique<ParametersT<5, Neutral, PlaneSurface>>(
185  l1, l2, phi, theta, oop, *this, std::move(cov));
186 }

◆ createUniqueParameters() [1/2]

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

168 {
169  return std::make_unique<ParametersT<5, Charged, PlaneSurface>>(
170  position, momentum, charge, *this, std::move(cov));
171 }

◆ createUniqueTrackParameters() [2/2]

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

156 {
157  return std::make_unique<ParametersT<5, Charged, PlaneSurface>>(
158  l1, l2, phi, theta, qop, *this, std::move(cov));
159 }

◆ debugInfo()

template<class Tvol >
void Trk::BoundarySurface< Tvol >::debugInfo ( MsgStream &  msg) const
inlineinherited

output debug information

Definition at line 165 of file BoundarySurface.h.

165  {
166  msg << "BoundarySurface debug information: " << std::endl;
167  msg << " -> pointer to insideVolume = " << m_insideVolume
168  << std::endl;
169  msg << " -> pointer to insideVolumeArray = "
170  << m_insideVolumeArray.get() << std::endl;
171  msg << " -> pointer to outsideVolume = " << m_outsideVolume
172  << std::endl;
173  msg << " -> pointer to outsideVolumeArray = "
174  << m_outsideVolumeArray.get() << endmsg;
175 }

◆ 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::PlaneSurface::globalToLocal ( const Amg::Vector3D glob,
const Amg::Vector3D mom,
Amg::Vector2D loc 
) const
finaloverridevirtualinherited

Specified for PlaneSurface: GlobalToLocal method without dynamic memory allocation - boolean checks if on surface.

Implements Trk::Surface.

Definition at line 213 of file PlaneSurface.cxx.

215  {
216  Amg::Vector3D loc3Dframe = inverseTransformMultHelper(glopos);
217  locpos = Amg::Vector2D(loc3Dframe.x(), loc3Dframe.y());
218  return (loc3Dframe.z() * loc3Dframe.z() <=
220 }

◆ 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

◆ globalToLocalDirection()

void Trk::PlaneSurface::globalToLocalDirection ( const Amg::Vector3D glodir,
Trk::LocalDirection locdir 
) const
inherited

This method transforms the global direction to a local direction wrt the plane.

Definition at line 260 of file PlaneSurface.cxx.

261 {
262  // bring the global direction into the surface frame
264  ldir = Trk::LocalDirection(std::atan2(d.z(), d.x()), std::atan2(d.z(), d.y()));
265 }

◆ insideBounds()

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

This method calls the inside() method of the Bounds.

Reimplemented from Trk::PlaneSurface.

◆ insideBoundsCheck()

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

Implements Trk::Surface.

◆ insideVolume()

template<class Tvol >
Tvol const * Trk::BoundarySurface< Tvol >::insideVolume
inherited

getters/setters for inside/outside Volume

Definition at line 125 of file BoundarySurface.h.

125  {
126  return m_insideVolume;
127 }

◆ insideVolumeArray()

template<class Tvol >
const SharedObject< BinnedArray< Tvol > > & Trk::BoundarySurface< Tvol >::insideVolumeArray
inherited

getters/setters for inside/outside Volume arrays

Definition at line 144 of file BoundarySurface.h.

144  {
145  return m_insideVolumeArray;
146 }

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

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

Reimplemented from Trk::Surface.

Definition at line 268 of file PlaneSurface.cxx.

271 {
272  Amg::Vector3D loc3Dframe = inverseTransformMultHelper(glopo);
273  if (std::abs(loc3Dframe(2)) > (s_onSurfaceTolerance + tol1)){
274  return false;
275  }
276  return (bchk ? bounds().inside(Amg::Vector2D(loc3Dframe(0), loc3Dframe(1)), tol1, tol2) : true);
277 }

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

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

Specified for PlaneSurface: LocalToGlobal method without dynamic memory allocation.

Implements Trk::Surface.

Definition at line 204 of file PlaneSurface.cxx.

207 {
208  Amg::Vector3D loc3Dframe(locpos[Trk::locX], locpos[Trk::locY], 0.);
209  glopos = transform() * loc3Dframe;
210 }

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

◆ localToGlobalDirection()

void Trk::PlaneSurface::localToGlobalDirection ( const Trk::LocalDirection locdir,
Amg::Vector3D globdir 
) const
inherited

This method transforms a local direction wrt the plane to a global direction.

Definition at line 242 of file PlaneSurface.cxx.

243 {
244 
245  CxxUtils::sincos scXZ(locdir.angleXZ());
246  CxxUtils::sincos scYZ(locdir.angleYZ());
247 
248  double norm = 1. / std::sqrt(scYZ.cs * scYZ.cs * scXZ.sn * scXZ.sn + scYZ.sn * scYZ.sn);
249 
250  // decide on the sign
251  double sign = (scXZ.sn < 0.) ? -1. : 1.;
252 
253  // now calculate the GlobalDirection in the global frame
254  globdir =
255  transform().linear() *
256  Amg::Vector3D(sign * scXZ.cs * scYZ.sn * norm, sign * scXZ.sn * scYZ.cs * norm, sign * scXZ.sn * scYZ.sn * norm);
257 }

◆ materialLayer() [1/2]

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

◆ materialLayer() [2/2]

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

return the material Layer

◆ measurementFrame()

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

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

  • the default implementation is the the RotationMatrix3D of the transform

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

Definition at line 135 of file Surface.cxx.

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

◆ name()

virtual std::string Trk::SubtractedPlaneSurface::name ( ) const
inlinefinaloverridevirtualinherited

Return properly formatted class name for screen output.

Reimplemented from Trk::PlaneSurface.

Definition at line 70 of file SubtractedPlaneSurface.h.

71  {
72  return "Trk::SubtractedPlaneSurface";
73  }

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

◆ onBoundary()

template<class Tvol >
template<class T >
bool Trk::BoundarySurface< Tvol >::onBoundary ( const T &  pars) const
inlineinherited

templated onBoundary method

Definition at line 90 of file BoundarySurface.h.

90  {
92  }

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

template<class Tvol >
BoundarySubtractedPlaneSurface& Trk::BoundarySubtractedPlaneSurface< Tvol >::operator= ( const BoundarySubtractedPlaneSurface< Tvol > &  vol)
default

Assignment operator.

◆ operator==() [1/2]

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

◆ operator==() [2/2]

bool Trk::SubtractedPlaneSurface::operator== ( const Surface sf) const
finaloverridevirtualinherited

Equality operator.

Reimplemented from Trk::PlaneSurface.

Definition at line 59 of file SubtractedPlaneSurface.cxx.

60 {
61  // first check the type not to compare apples with oranges
62  const Trk::SubtractedPlaneSurface* spsf = dynamic_cast<const Trk::SubtractedPlaneSurface*>(&sf);
63  if (!spsf)
64  return false;
65  bool surfaceEqual = Trk::PlaneSurface::operator==(sf);
66  bool sharedEqual = (surfaceEqual) ? (shared() == spsf->shared()) : false;
67  return sharedEqual;
68 }

◆ outsideVolume()

template<class Tvol >
Tvol const * Trk::BoundarySurface< Tvol >::outsideVolume
inherited

Definition at line 134 of file BoundarySurface.h.

134  {
135  return m_outsideVolume;
136 }

◆ outsideVolumeArray()

template<class Tvol >
const SharedObject< BinnedArray< Tvol > > & Trk::BoundarySurface< Tvol >::outsideVolumeArray
inherited

Definition at line 155 of file BoundarySurface.h.

155  {
156  return m_outsideVolumeArray;
157 }

◆ owner()

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

return ownership

◆ pathCorrection()

virtual double Trk::Surface::pathCorrection ( const Amg::Vector3D pos,
const Amg::Vector3D mom 
) const
virtualinherited

the pathCorrection for derived classes with thickness - it reflects if the direction projection is positive or negative

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

◆ positionOnSurface()

std::optional< Amg::Vector2D > Surface::positionOnSurface ( const Amg::Vector3D glopo,
const BoundaryCheck bchk = true,
double  tol1 = 0.,
double  tol2 = 0. 
) const
inherited

positionOnSurface() returns the LocalPosition on the Surface,
If BoundaryCheck==false it just returns the value of globalToLocal (including nullptr possibility), if BoundaryCheck==true it checks whether the point is inside bounds or not (returns std::nullopt in this case).

Definition at line 106 of file Surface.cxx.

110 {
111  std::optional<Amg::Vector2D> posOnSurface = globalToLocal(glopo, tol1);
112  if (!bchk){
113  return posOnSurface;
114  }
115  if (posOnSurface && insideBounds(*posOnSurface, tol1, tol2)){
116  return posOnSurface;
117  }
118  return std::nullopt;
119 }

◆ setInsideVolume()

template<class Tvol >
void Trk::BoundarySurface< Tvol >::setInsideVolume ( const Tvol *  vol)
inherited

Definition at line 129 of file BoundarySurface.h.

129  {
130  m_insideVolume = vol;
131 }

◆ setInsideVolumeArray()

template<class Tvol >
void Trk::BoundarySurface< Tvol >::setInsideVolumeArray ( const SharedObject< VolumeArray > &  )
inherited

Definition at line 148 of file BoundarySurface.h.

149  {
150  m_insideVolumeArray = volArray;
151 }

◆ setMaterialLayer()

void Trk::Surface::setMaterialLayer ( std::shared_ptr< Layer mlay)
inherited

set material layer

◆ setOutsideVolume()

template<class Tvol >
void Trk::BoundarySurface< Tvol >::setOutsideVolume ( const Tvol *  vol)
inherited

Definition at line 138 of file BoundarySurface.h.

138  {
139  m_outsideVolume = vol;
140 }

◆ setOutsideVolumeArray()

template<class Tvol >
void Trk::BoundarySurface< Tvol >::setOutsideVolumeArray ( const SharedObject< VolumeArray > &  )
inherited

Definition at line 159 of file BoundarySurface.h.

160  {
161  m_outsideVolumeArray = volArray;
162 }

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

◆ shared()

bool Trk::SubtractedPlaneSurface::shared ( ) const
inherited

This method indicates the subtraction mode.

◆ straightLineDistanceEstimate() [1/2]

Trk::DistanceSolution Trk::PlaneSurface::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 281 of file PlaneSurface.cxx.

282 {
283  static const double tol = 0.001;
284 
285  const Amg::Vector3D& N = normal();
286 
287  const double d = (pos - center()).dot(N);
288 
289  const double A = dir.dot(N); // ignore sign
290  if (A == 0.) { // direction parallel to surface
291  if (std::abs(d) < tol) {
292  return {1, 0., true, 0.};
293  }
294  return {0, d, true, 0.};
295 
296  }
297 
298  return {1, d, true, -d / A};
299 }

◆ straightLineDistanceEstimate() [2/2]

Trk::DistanceSolution Trk::PlaneSurface::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 302 of file PlaneSurface.cxx.

303 {
304  const Amg::Transform3D& T = transform();
305  double Az[3] = { T(0, 2), T(1, 2), T(2, 2) };
306 
307  // Transformation to plane system coordinates
308  //
309  double dx = pos[0] - T(0, 3);
310  double dy = pos[1] - T(1, 3);
311  double dz = pos[2] - T(2, 3);
312  double z = dx * Az[0] + dy * Az[1] + dz * Az[2];
313  double az = dir[0] * Az[0] + dir[1] * Az[1] + dir[2] * Az[2];
314 
315  // Step to surface
316  //
317  int ns = 0;
318  double s = 0.;
319  if (az != 0.) {
320  s = -z / az;
321  ns = 1;
322  }
323  double dist = std::abs(z);
324  if (!bound)
325  return {ns, std::abs(z), true, s};
326 
327  // Min distance to surface
328  //
329  double x = dx * T(0, 0) + dy * T(1, 0) + dz * T(2, 0);
330  double y = dx * T(0, 1) + dy * T(1, 1) + dz * T(2, 1);
331 
332  Amg::Vector2D lp(x, y);
333 
334  double d = bounds().minDistance(lp);
335  if (d > 0.)
336  dist = std::sqrt(dist * dist + d * d);
337 
338  return {ns, dist, true, s};
339 }

◆ straightLineIntersection() [1/2]

Trk::Intersection Trk::PlaneSurface::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

mathematical motivation:

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

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

Implements Trk::Surface.

Definition at line 223 of file PlaneSurface.cxx.

226  {
227  double denom = dir.dot(normal());
228  if (denom) {
229  double u = (normal().dot((center() - pos))) / (denom);
230  Amg::Vector3D intersectPoint(pos + u * dir);
231  // evaluate the intersection in terms of direction
232  bool isValid = forceDir ? (u > 0.) : true;
233  // evaluate (if necessary in terms of boundaries)
234  isValid = bchk ? (isValid && isOnSurface(intersectPoint)) : isValid;
235  // return the result
236  return Trk::Intersection(intersectPoint, u, isValid);
237  }
238  return Trk::Intersection(pos, 0., false);
239 }

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

◆ subtractedVolume()

SharedObject<AreaExcluder> Trk::SubtractedPlaneSurface::subtractedVolume ( ) const
inherited

This method allows access to the subtracted part.

◆ surfaceRepresentation() [1/2]

template<class Tvol >
virtual const Surface& Trk::BoundarySubtractedPlaneSurface< Tvol >::surfaceRepresentation ( ) const
finaloverridevirtual

The Surface Representation of this.

Implements Trk::BoundarySurface< Tvol >.

◆ surfaceRepresentation() [2/2]

template<class Tvol >
virtual Surface& Trk::BoundarySubtractedPlaneSurface< Tvol >::surfaceRepresentation ( )
finaloverridevirtual

◆ transform()

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

Returns HepGeom::Transform3D by reference.

◆ type()

constexpr virtual SurfaceType Trk::PlaneSurface::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 SurfaceBounds> Trk::PlaneSurface::m_bounds
protectedinherited

bounds (shared)

NoBounds as return object when no bounds are declared

Definition at line 287 of file PlaneSurface.h.

◆ m_insideVolume

template<class Tvol >
const Tvol* Trk::BoundarySurface< Tvol >::m_insideVolume
protectedinherited

Definition at line 118 of file BoundarySurface.h.

◆ m_insideVolumeArray

template<class Tvol >
SharedObject<VolumeArray> Trk::BoundarySurface< Tvol >::m_insideVolumeArray
protectedinherited

Definition at line 120 of file BoundarySurface.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_outsideVolume

template<class Tvol >
const Tvol* Trk::BoundarySurface< Tvol >::m_outsideVolume
protectedinherited

Definition at line 119 of file BoundarySurface.h.

◆ m_outsideVolumeArray

template<class Tvol >
SharedObject<VolumeArray> Trk::BoundarySurface< Tvol >::m_outsideVolumeArray
protectedinherited

Definition at line 121 of file BoundarySurface.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_shared

bool Trk::SubtractedPlaneSurface::m_shared
protectedinherited

Definition at line 77 of file SubtractedPlaneSurface.h.

◆ m_subtrVol

SharedObject<AreaExcluder> Trk::SubtractedPlaneSurface::m_subtrVol
protectedinherited

Definition at line 76 of file SubtractedPlaneSurface.h.

◆ m_transforms

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

◆ s_boundless

const Trk::NoBounds Trk::PlaneSurface::s_boundless
staticprotectedinherited

Definition at line 289 of file PlaneSurface.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::PlaneSurface::staticType = SurfaceType::Plane
staticconstexprinherited

The surface type static constexpr.

Definition at line 67 of file PlaneSurface.h.


The documentation for this class was generated from the following file:
Trk::PlaneSurface::operator==
virtual bool operator==(const Surface &sf) const override
Equality operator.
Definition: PlaneSurface.cxx:137
make_hlt_rep.pars
pars
Definition: make_hlt_rep.py:90
Trk::y
@ y
Definition: ParamDefs.h:56
PlotCalibFromCool.norm
norm
Definition: PlotCalibFromCool.py:100
python.SystemOfUnits.s
int s
Definition: SystemOfUnits.py:131
Trk::Intersection
Definition: Intersection.h:24
Trk::Surface::associatedDetectorElement
const TrkDetElementBase * associatedDetectorElement() const
return associated Detector Element
Trk::BoundarySurface::m_insideVolumeArray
SharedObject< VolumeArray > m_insideVolumeArray
Definition: BoundarySurface.h:120
Trk::Surface::name
virtual std::string name() const =0
Return properly formatted class name.
Trk::z
@ z
global position (cartesian)
Definition: ParamDefs.h:57
Trk::locX
@ locX
Definition: ParamDefs.h:37
Trk::locY
@ locY
local cartesian
Definition: ParamDefs.h:38
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
hist_file_dump.d
d
Definition: hist_file_dump.py:137
plotBeamSpotVxVal.cov
cov
Definition: plotBeamSpotVxVal.py:201
JetTiledMap::N
@ N
Definition: TiledEtaPhiMap.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.
Trk::u
@ u
Enums for curvilinear frames.
Definition: ParamDefs.h:77
Trk::SurfaceBounds::minDistance
virtual double minDistance(const Amg::Vector2D &pos) const =0
Minimal distance to boundary ( > 0 if outside and <=0 if inside)
Trk::LocalDirection::angleYZ
double angleYZ() const
access method for angle of local YZ projection
Definition: LocalDirection.h:106
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
Trk::BoundarySurface::surfaceRepresentation
virtual const Surface & surfaceRepresentation() const =0
The Surface Representation of this.
Trk::Surface::s_onSurfaceTolerance
static constexpr double s_onSurfaceTolerance
Tolerance for being on Surface.
Definition: Tracking/TrkDetDescr/TrkSurfaces/TrkSurfaces/Surface.h:458
ParticleGun_EoverP_Config.momentum
momentum
Definition: ParticleGun_EoverP_Config.py:63
Trk::SubtractedPlaneSurface
Definition: SubtractedPlaneSurface.h:32
Trk::theta
@ theta
Definition: ParamDefs.h:66
endmsg
#define endmsg
Definition: AnalysisConfig_Ntuple.cxx:63
Amg::Transform3D
Eigen::Affine3d Transform3D
Definition: GeoPrimitives.h:46
dumpNswErrorDb.linear
def linear
Definition: dumpNswErrorDb.py:23
sign
int sign(int a)
Definition: TRT_StrawNeighbourSvc.h:107
Trk::Surface::normal
virtual const Amg::Vector3D & normal() const
Returns the normal vector of the Surface (i.e.
Trk::SubtractedPlaneSurface::SubtractedPlaneSurface
SubtractedPlaneSurface()
Default Constructor - needed for persistency.
Definition: SubtractedPlaneSurface.cxx:18
Trk::LocalDirection
represents the three-dimensional global direction with respect to a planar surface frame.
Definition: LocalDirection.h:81
dot.dot
def dot(G, fn, nodesToHighlight=[])
Definition: dot.py:5
Trk::Surface::inverseTransformHelper
Amg::Transform3D inverseTransformHelper() const
Helper method to factorize in one place common operations calculate inverse transofrm and multiply wi...
compute_lumi.denom
denom
Definition: compute_lumi.py:76
beamspotman.dir
string dir
Definition: beamspotman.py:623
Trk::BoundarySurface::m_outsideVolumeArray
SharedObject< VolumeArray > m_outsideVolumeArray
Definition: BoundarySurface.h:121
Trk::SubtractedPlaneSurface::shared
bool shared() const
This method indicates the subtraction mode.
Trk::Surface::bounds
virtual const SurfaceBounds & bounds() const =0
Surface Bounds method.
charge
double charge(const T &p)
Definition: AtlasPID.h:756
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
python.LumiBlobConversion.pos
pos
Definition: LumiBlobConversion.py:18
Trk::inside
@ inside
Definition: PropDirection.h:29
makeTRTBarrelCans.dy
tuple dy
Definition: makeTRTBarrelCans.py:21
Trk::ObjectCounter< Trk::Surface >::s_numberOfInstantiations
static std::atomic_size_t s_numberOfInstantiations
Definition: TrkObjectCounter.h:22
Trk::Surface::globalToLocal
virtual bool globalToLocal(const Amg::Vector3D &glob, const Amg::Vector3D &mom, Amg::Vector2D &loc) const =0
Specified by each surface type: GlobalToLocal method without dynamic memory allocation - boolean chec...
mapkey::sf
@ sf
Definition: TElectronEfficiencyCorrectionTool.cxx:38
Amg::RotationMatrix3D
Eigen::Matrix< double, 3, 3 > RotationMatrix3D
Definition: GeoPrimitives.h:49
Trk::PlaneSurface::bounds
virtual const SurfaceBounds & bounds() const override final
This method returns the bounds by reference, static NoBounds in case of no boundaries.
makeTRTBarrelCans.dx
tuple dx
Definition: makeTRTBarrelCans.py:20
Trk::Surface::onSurface
bool onSurface(const T &parameters, const BoundaryCheck &bchk=BoundaryCheck(true)) const
The templated Parameters OnSurface method - checks on surface pointer first.
CxxUtils::sincos
Helper to simultaneously calculate sin and cos of the same angle.
Definition: sincos.h:76
python.SystemOfUnits.ns
int ns
Definition: SystemOfUnits.py:130
Trk::outside
@ outside
Definition: PropDirection.h:29
Trk::phi
@ phi
Definition: ParamDefs.h:75
skel.l1
l1
Definition: skel.GENtoEVGEN.py:398
Trk::LocalDirection::angleXZ
double angleXZ() const
access method for angle of local XZ projection
Definition: LocalDirection.h:103
Trk::x
@ x
Definition: ParamDefs.h:55
Trk::PlaneSurface::isOnSurface
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...
Definition: PlaneSurface.cxx:268
Trk::Surface::transform
const Amg::Transform3D & transform() const
Returns HepGeom::Transform3D by reference.
python.AutoConfigFlags.msg
msg
Definition: AutoConfigFlags.py:7
Trk::BoundarySurface::m_outsideVolume
const Tvol * m_outsideVolume
Definition: BoundarySurface.h:119
Trk::BoundarySurface::m_insideVolume
const Tvol * m_insideVolume
Definition: BoundarySurface.h:118
TSU::T
unsigned long long T
Definition: L1TopoDataTypes.h:35