ATLAS Offline Software
Loading...
Searching...
No Matches
Trk::BoundarySubtractedPlaneSurface< Tvol > Class Template Referencefinal

BoundarySubtractedPlaneSurface description inside the tracking realm, it extends the SubtractedPlaneSurface description to make a surface being a boundary of a volume,. More...

#include <BoundarySubtractedPlaneSurface.h>

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

Public Types

using ChargedTrackParametersUniquePtr
 Unique ptr types.
using NeutralTrackParametersUniquePtr

Public Member Functions

 BoundarySubtractedPlaneSurface ()=default
 Default Constructor - needed for pool and inherited classes.
 BoundarySubtractedPlaneSurface (const BoundarySubtractedPlaneSurface< Tvol > &bps)=default
 Copy constructor.
BoundarySubtractedPlaneSurfaceoperator= (const BoundarySubtractedPlaneSurface &vol)=default
 Assignment operator.
virtual ~BoundarySubtractedPlaneSurface ()=default
 BoundarySubtractedPlaneSurface (const Tvol *inside, const Tvol *outside, const SubtractedPlaneSurface &psf)
 Constructor for a Boundary with exact two Volumes attached to it.
 BoundarySubtractedPlaneSurface (std::shared_ptr< const VolumeArray > insideArray, std::shared_ptr< const VolumeArray > outsideArray, const SubtractedPlaneSurface &psf)
 Constructor for a Boundary with two VolumeArrays attached to it.
 BoundarySubtractedPlaneSurface (const Tvol *inside, const Tvol *outside, const SubtractedPlaneSurface &psf, const Amg::Transform3D &tr)
 Copy constructor with a shift.
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.
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.
virtual const SurfacesurfaceRepresentation () const override final
 The Surface Representation of this.
virtual SurfacesurfaceRepresentation () override final
template<class T>
bool onBoundary (const T &pars) const
 templated onBoundary method
void debugInfo (MsgStream &msg) const
 output debug information
Tvol const * insideVolume () const
 getters/setters for inside/outside Volume
void setInsideVolume (const Tvol *vol)
Tvol const * outsideVolume () const
void setOutsideVolume (const Tvol *vol)
const VolumeArrayinsideVolumeArray () const
 getters/setters for inside/outside Volume arrays
void setInsideVolumeArray (std::shared_ptr< const VolumeArray > volArray)
const VolumeArrayoutsideVolumeArray () const
void setOutsideVolumeArray (std::shared_ptr< const VolumeArray > volArray)
virtual bool operator== (const Surface &sf) const override final
 Equality operator.
bool operator== (const PlaneSurface &cf) const
bool shared () const
 This method indicates the subtraction mode.
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.
const AreaExcludersubtractedVolume () const
 This method allows access to the subtracted part.
virtual std::string name () const override final
 Return properly formatted class name for screen output.
virtual PlaneSurfaceclone () const override
 Virtual constructor.
virtual constexpr SurfaceType type () const override final
 Return the surface type.
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.
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.
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.
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.
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.
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.
virtual const SurfaceBoundsbounds () const override final
 This method returns the bounds by reference, static NoBounds in case of no boundaries.
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.
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.
Amg::Vector3D localToGlobal (const Amg::Vector2D &locpos) const
 This method returns the GlobalPosition from a LocalPosition uses the per surface localToGlobal.
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.
Amg::Vector3D localToGlobal (const LocalParameters &locpars) const
 This method returns the GlobalPosition from LocalParameters The LocalParameters can be outside Surface bounds.
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.
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.
std::optional< Amg::Vector2DglobalToLocal (const Amg::Vector3D &glopos, double tol=0.) const
 This method returns the LocalPosition from a provided GlobalPosition.
std::optional< Amg::Vector2DglobalToLocal (const Amg::Vector3D &glopos, const Amg::Vector3D &glomom) const
 This method returns the LocalPosition from a provided GlobalPosition.
void localToGlobalDirection (const Trk::LocalDirection &locdir, Amg::Vector3D &globdir) const
 This method transforms a local direction wrt the plane to a global direction.
void globalToLocalDirection (const Amg::Vector3D &glodir, Trk::LocalDirection &locdir) const
 This method transforms the global direction to a local direction wrt the plane.
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
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
virtual DistanceSolution straightLineDistanceEstimate (const Amg::Vector3D &pos, const Amg::Vector3D &dir) const override final
 fast straight line distance evaluation to Surface
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
bool operator!= (const Surface &sf) const
 Non-equality operator.
std::unique_ptr< SurfaceuniqueClone () const
 NVI method returning unique_ptr clone.
const Amg::Transform3DcachedTransform () const
 Return the cached transformation directly.
const Amg::Transform3Dtransform () const
 Returns HepGeom::Transform3D by reference.
const Amg::Vector3Dcenter () const
 Returns the center position of the Surface.
virtual const Amg::Vector3Dnormal () const
 Returns the normal vector of the Surface (i.e.
virtual Amg::Vector3D normal (const Amg::Vector2D &lp) const
 Returns a normal vector at a specific local position.
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.
const TrkDetElementBaseassociatedDetectorElement () const
 return associated Detector Element
Identifier associatedDetectorElementIdentifier () const
 return Identifier of the associated Detector Element
const Trk::LayerassociatedLayer () const
 return the associated Layer
const Trk::MaterialLayermaterialLayer () const
 return the material Layer
Trk::MaterialLayermaterialLayer ()
virtual const Trk::SurfacebaseSurface () const
 return the base surface (simplified for persistification)
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).
template<class T>
bool onSurface (const T &parameters, const BoundaryCheck &bchk=BoundaryCheck(true)) const
 The templated Parameters OnSurface method - checks on surface pointer first.
virtual Amg::Vector2D localParametersToPosition (const LocalParameters &locpars) const
 Optionally specified by each surface type : LocalParameters to Vector2D.
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
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.
bool isFree () const
 Returns 'true' if this surface is 'free', i.e.
bool isActive () const
 Return 'true' if this surface is owned by the detector element.
void setTransform (const Amg::Transform3D &trans)
 Set the transform updates center and normal.
void setOwner (SurfaceOwner x)
 set Ownership
SurfaceOwner owner () const
 return ownership
void setMaterialLayer (std::shared_ptr< Trk::MaterialLayer > mlay)
 set material layer
virtual MsgStream & dump (MsgStream &sl) const
 Output Method for MsgStream, to be overloaded by child classes.
virtual std::ostream & dump (std::ostream &sl) const
 Output Method for std::ostream, to be overloaded by child classes.
void associateLayer (const Layer &lay)
 method to associate a Trk::Layer.

Static Public Member Functions

static std::size_t numberOfInstantiations ()

Static Public Attributes

static constexpr SurfaceType staticType = SurfaceType::Plane
 The surface type static constexpr.
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.
Amg::Vector3D inverseTransformMultHelper (const Amg::Vector3D &glopos) const

Protected Attributes

const Tvol * m_insideVolume {}
const Tvol * m_outsideVolume {}
std::shared_ptr< const VolumeArraym_insideVolumeArray {}
std::shared_ptr< const VolumeArraym_outsideVolumeArray {}
std::shared_ptr< const AreaExcluderm_subtrVol
bool m_shared {true}
std::shared_ptr< const SurfaceBoundsm_bounds
 bounds (shared)
std::unique_ptr< Transformsm_transforms {}
 Unique Pointer to the Transforms struct.
const TrkDetElementBasem_associatedDetElement {}
 Not owning Pointer to the Detector Element.
Identifier m_associatedDetElementId {}
 Identifier to the Detector Element.
const Layerm_associatedLayer {}
 The associated layer Trk::Layer This is the layer in which the Surface is embedded.
std::shared_ptr< MaterialLayerm_materialLayer {}
 Possibility to attach a material description to the surface.
SurfaceOwner m_owner {SurfaceOwner::noOwn}
 enum for surface owner : default free surface

Static Protected Attributes

static const NoBounds s_boundless
static constexpr double s_onSurfaceTolerance = 10e-5
 Tolerance for being on Surface.

Private Types

typedef BinnedArray< Tvol > VolumeArray
 typedef the BinnedArray

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 volume,.

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

Definition at line 36 of file BoundarySubtractedPlaneSurface.h.

Member Typedef Documentation

◆ ChargedTrackParametersUniquePtr

Initial value:
std::unique_ptr<ParametersBase<5, Trk::Charged>>

Unique ptr types.

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

◆ NeutralTrackParametersUniquePtr

Initial value:
std::unique_ptr<ParametersBase<5, Trk::Neutral>>

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

◆ VolumeArray

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

typedef the BinnedArray

Definition at line 40 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]

template<class Tvol>
Trk::BoundarySubtractedPlaneSurface< Tvol >::BoundarySubtractedPlaneSurface ( const BoundarySubtractedPlaneSurface< Tvol > & bps)
default

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 57 of file BoundarySubtractedPlaneSurface.h.

BoundarySubtractedPlaneSurface description inside the tracking realm, it extends the SubtractedPlaneS...
BoundarySurface()=default
Default Constructor - needed for pool and inherited classes.
SubtractedPlaneSurface()=default
Defaults.

◆ BoundarySubtractedPlaneSurface() [4/5]

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

Constructor for a Boundary with two VolumeArrays attached to it.

Definition at line 62 of file BoundarySubtractedPlaneSurface.h.

◆ 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 69 of file BoundarySubtractedPlaneSurface.h.

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

◆ attachedVolume() [1/2]

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

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

Implements Trk::BoundarySurface< Tvol >.

Definition at line 50 of file BoundarySubtractedPlaneSurface.h.

◆ attachedVolume() [2/2]

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

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

Definition at line 26 of file BoundarySubtractedPlaneSurface.h.

37 : public BoundarySurface<Tvol>,
41
42 public:
45
BinnedArray< Tvol > VolumeArray
typedef the BinnedArray

◆ 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 185 of file PlaneSurface.cxx.

190{
191 return std::make_unique<ParametersT<5, Neutral, PlaneSurface>>(
192 position, momentum, charge, *this, std::move(cov));
193}
double charge(const T &p)
Definition AtlasPID.h:997

◆ 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 170 of file PlaneSurface.cxx.

177{
178 return std::make_unique<ParametersT<5, Neutral, PlaneSurface>>(
179 l1, l2, phi, theta, oop, *this, std::move(cov));
180}
@ theta
Definition ParamDefs.h:66
@ phi
Definition ParamDefs.h:75

◆ 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 157 of file PlaneSurface.cxx.

162{
163 return std::make_unique<ParametersT<5, Charged, PlaneSurface>>(
164 position, momentum, charge, *this, std::move(cov));
165}

◆ 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 143 of file PlaneSurface.cxx.

150{
151 return std::make_unique<ParametersT<5, Charged, PlaneSurface>>(
152 l1, l2, phi, theta, qop, *this, std::move(cov));
153}

◆ debugInfo()

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

output debug information

Definition at line 133 of file BoundarySurface.h.

133 {
134 msg << "BoundarySurface debug information: " << std::endl;
135 msg << " -> pointer to insideVolume = " << m_insideVolume
136 << std::endl;
137 msg << " -> pointer to insideVolumeArray = "
138 << m_insideVolumeArray.get() << std::endl;
139 msg << " -> pointer to outsideVolume = " << m_outsideVolume
140 << std::endl;
141 msg << " -> pointer to outsideVolumeArray = "
142 << m_outsideVolumeArray.get() << endmsg;
143}
Description of a BoundarySurface inside the tracking realm, it extends the Surface description to mak...
const Tvol * m_insideVolume
std::shared_ptr< const VolumeArray > m_insideVolumeArray
const Tvol * m_outsideVolume
std::shared_ptr< const VolumeArray > m_outsideVolumeArray

◆ dump() [1/2]

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

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

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

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}
const TrkDetElementBase * associatedDetectorElement() const
return associated Detector Element
const Amg::Transform3D & transform() const
Returns HepGeom::Transform3D by reference.
virtual const SurfaceBounds & bounds() const =0
Surface Bounds method.
const Amg::Vector3D & center() const
Returns the center position of the Surface.
virtual std::string name() const =0
Return properly formatted class name.
std::string detectorTypeString() const
Returns a string of the Detector element type.
Eigen::Matrix< double, 3, 3 > RotationMatrix3D
Eigen::Matrix< double, 3, 1 > Vector3D

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

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 GXF::CylinderSurface, GXF::DiscSurface, Trk::ConeSurface, Trk::CylinderSurface, and Trk::DiscSurface.

◆ globalToLocal() [1/3]

ATH_FLATTEN 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 209 of file PlaneSurface.cxx.

211 {
212 Amg::Vector3D loc3Dframe = inverseTransformMultHelper(glopos);
213 locpos = Amg::Vector2D(loc3Dframe.x(), loc3Dframe.y());
214 return (loc3Dframe.z() * loc3Dframe.z() <=
216}
static constexpr double s_onSurfaceTolerance
Tolerance for being on Surface.
Amg::Vector3D inverseTransformMultHelper(const Amg::Vector3D &glopos) const
Eigen::Matrix< double, 2, 1 > Vector2D

◆ 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 256 of file PlaneSurface.cxx.

257{
258 // bring the global direction into the surface frame
260 ldir = Trk::LocalDirection(std::atan2(d.z(), d.x()), std::atan2(d.z(), d.y()));
261}
Amg::Transform3D inverseTransformHelper() const
Helper method to factorize in one place common operations calculate inverse transofrm and multiply wi...

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

getters/setters for inside/outside Volume

Definition at line 94 of file BoundarySurface.h.

94 {
95 return m_insideVolume;
96 }

◆ insideVolumeArray()

template<class Tvol>
const VolumeArray * Trk::BoundarySurface< Tvol >::insideVolumeArray ( ) const
inlineinherited

getters/setters for inside/outside Volume arrays

Definition at line 109 of file BoundarySurface.h.

109 {
110 return m_insideVolumeArray.get();
111 }

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

ATH_FLATTEN 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 265 of file PlaneSurface.cxx.

268{
269 Amg::Vector3D loc3Dframe = inverseTransformMultHelper(glopo);
270 if (std::abs(loc3Dframe(2)) > (s_onSurfaceTolerance + tol1)){
271 return false;
272 }
273 return (bchk ? bounds().inside(Amg::Vector2D(loc3Dframe(0), loc3Dframe(1)), tol1, tol2) : true);
274}
virtual const SurfaceBounds & bounds() const override final
This method returns the bounds by reference, static NoBounds in case of no boundaries.

◆ localParametersToPosition()

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

Optionally specified by each surface type : LocalParameters to Vector2D.

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

◆ 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 198 of file PlaneSurface.cxx.

201{
202 Amg::Vector3D loc3Dframe(locpos[Trk::locX], locpos[Trk::locY], 0.);
203 glopos = transform() * loc3Dframe;
204}
@ locY
local cartesian
Definition ParamDefs.h:38
@ locX
Definition ParamDefs.h:37

◆ 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 238 of file PlaneSurface.cxx.

239{
240
241 CxxUtils::sincos scXZ(locdir.angleXZ());
242 CxxUtils::sincos scYZ(locdir.angleYZ());
243
244 double norm = 1. / std::sqrt(scYZ.cs * scYZ.cs * scXZ.sn * scXZ.sn + scYZ.sn * scYZ.sn);
245
246 // decide on the sign
247 double sign = (scXZ.sn < 0.) ? -1. : 1.;
248
249 // now calculate the GlobalDirection in the global frame
250 globdir =
251 transform().linear() *
252 Amg::Vector3D(sign * scXZ.cs * scYZ.sn * norm, sign * scXZ.sn * scYZ.cs * norm, sign * scXZ.sn * scYZ.sn * norm);
253}
int sign(int a)
double angleXZ() const
access method for angle of local XZ projection
double angleYZ() const
access method for angle of local YZ projection

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

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

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

◆ numberOfInstantiations()

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 }
Helper to enable counting number of instantiations in debug builds.

◆ onBoundary()

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

templated onBoundary method

Definition at line 79 of file BoundarySurface.h.

79 {
81 }
virtual const Surface & surfaceRepresentation() const =0
The Surface Representation of this.
bool onSurface(const T &parameters, const BoundaryCheck &bchk=BoundaryCheck(true)) const
The templated Parameters OnSurface method - checks on surface pointer first.

◆ 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 42 of file SubtractedPlaneSurface.cxx.

43{
44 // first check the type not to compare apples with oranges
45 const Trk::SubtractedPlaneSurface* spsf = dynamic_cast<const Trk::SubtractedPlaneSurface*>(&sf);
46 if (!spsf)
47 return false;
48 bool surfaceEqual = Trk::PlaneSurface::operator==(sf);
49 bool sharedEqual = (surfaceEqual) ? (shared() == spsf->shared()) : false;
50 return sharedEqual;
51}
virtual bool operator==(const Surface &sf) const override
Equality operator.
bool shared() const
This method indicates the subtraction mode.

◆ outsideVolume()

template<class Tvol>
Tvol const * Trk::BoundarySurface< Tvol >::outsideVolume ( ) const
inlineinherited

Definition at line 101 of file BoundarySurface.h.

101 {
102 return m_outsideVolume;
103 }

◆ outsideVolumeArray()

template<class Tvol>
const VolumeArray * Trk::BoundarySurface< Tvol >::outsideVolumeArray ( ) const
inlineinherited

Definition at line 115 of file BoundarySurface.h.

115 {
116 return m_outsideVolumeArray.get();
117 }

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

◆ 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}
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...
virtual bool insideBounds(const Amg::Vector2D &locpos, double tol1=0., double tol2=0.) const =0
virtual methods to be overwritten by the inherited surfaces

◆ setInsideVolume()

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

Definition at line 97 of file BoundarySurface.h.

97 {
99 }

◆ setInsideVolumeArray()

template<class Tvol>
void Trk::BoundarySurface< Tvol >::setInsideVolumeArray ( std::shared_ptr< const VolumeArray > volArray)
inlineinherited

Definition at line 112 of file BoundarySurface.h.

112 {
114 }

◆ setMaterialLayer()

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

set material layer

◆ setOutsideVolume()

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

Definition at line 104 of file BoundarySurface.h.

104 {
106 }

◆ setOutsideVolumeArray()

template<class Tvol>
void Trk::BoundarySurface< Tvol >::setOutsideVolumeArray ( std::shared_ptr< const VolumeArray > volArray)
inlineinherited

Definition at line 118 of file BoundarySurface.h.

◆ 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 278 of file PlaneSurface.cxx.

279{
280 static const double tol = 0.001;
281
282 const Amg::Vector3D& N = normal();
283
284 const double d = (pos - center()).dot(N);
285
286 const double A = dir.dot(N); // ignore sign
287 if (A == 0.) { // direction parallel to surface
288 if (std::abs(d) < tol) {
289 return {1, 0., true, 0.};
290 }
291 return {0, d, true, 0.};
292
293 }
294
295 return {1, d, true, -d / A};
296}
virtual const Amg::Vector3D & normal() const
Returns the normal vector of the Surface (i.e.
dot(G, fn, nodesToHighlight=[])
Definition dot.py:5

◆ 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 299 of file PlaneSurface.cxx.

300{
301 const Amg::Transform3D& T = transform();
302 double Az[3] = { T(0, 2), T(1, 2), T(2, 2) };
303
304 // Transformation to plane system coordinates
305 //
306 double dx = pos[0] - T(0, 3);
307 double dy = pos[1] - T(1, 3);
308 double dz = pos[2] - T(2, 3);
309 double z = dx * Az[0] + dy * Az[1] + dz * Az[2];
310 double az = dir[0] * Az[0] + dir[1] * Az[1] + dir[2] * Az[2];
311
312 // Step to surface
313 //
314 int ns = 0;
315 double s = 0.;
316 if (az != 0.) {
317 s = -z / az;
318 ns = 1;
319 }
320 double dist = std::abs(z);
321 if (!bound)
322 return {ns, std::abs(z), true, s};
323
324 // Min distance to surface
325 //
326 double x = dx * T(0, 0) + dy * T(1, 0) + dz * T(2, 0);
327 double y = dx * T(0, 1) + dy * T(1, 1) + dz * T(2, 1);
328
329 Amg::Vector2D lp(x, y);
330
331 double d = bounds().minDistance(lp);
332 if (d > 0.)
333 dist = std::sqrt(dist * dist + d * d);
334
335 return {ns, dist, true, s};
336}
virtual double minDistance(const Amg::Vector2D &pos) const =0
Minimal distance to boundary ( > 0 if outside and <=0 if inside)
Eigen::Affine3d Transform3D
unsigned long long T
@ x
Definition ParamDefs.h:55
@ z
global position (cartesian)
Definition ParamDefs.h:57
@ y
Definition ParamDefs.h:56

◆ 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 219 of file PlaneSurface.cxx.

222 {
223 double denom = dir.dot(normal());
224 if (denom) {
225 double u = (normal().dot((center() - pos))) / (denom);
226 Amg::Vector3D intersectPoint(pos + u * dir);
227 // evaluate the intersection in terms of direction
228 bool isValid = forceDir ? (u > 0.) : true;
229 // evaluate (if necessary in terms of boundaries)
230 isValid = bchk ? (isValid && isOnSurface(intersectPoint)) : isValid;
231 // return the result
232 return Trk::Intersection(intersectPoint, u, isValid);
233 }
234 return Trk::Intersection(pos, 0., false);
235}
bool isValid(const T &p)
Av: we implement here an ATLAS-sepcific convention: all particles which are 99xxxxx are fine.
Definition AtlasPID.h:878
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...
@ u
Enums for curvilinear frames.
Definition ParamDefs.h:77

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

◆ subtractedVolume()

const AreaExcluder * Trk::SubtractedPlaneSurface::subtractedVolume ( ) const
inherited

This method allows access to the subtracted part.

◆ surfaceRepresentation() [1/2]

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

The Surface Representation of this.

Implements Trk::BoundarySurface< Tvol >.

Definition at line 12 of file BoundarySubtractedPlaneSurface.h.

◆ surfaceRepresentation() [2/2]

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

Implements Trk::BoundarySurface< Tvol >.

Definition at line 19 of file BoundarySubtractedPlaneSurface.h.

19 {
20
21// class TrackParameters;
22class Volume;

◆ transform()

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

Returns HepGeom::Transform3D by reference.

◆ type()

virtual constexpr 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 Detector Element.

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

441{};

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

443{};

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

448{};

◆ m_bounds

std::shared_ptr<const SurfaceBounds> Trk::PlaneSurface::m_bounds
protectedinherited

bounds (shared)

NoBounds as return object when no bounds are declared

Definition at line 284 of file PlaneSurface.h.

◆ m_insideVolume

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

Definition at line 124 of file BoundarySurface.h.

124{};

◆ m_insideVolumeArray

template<class Tvol>
std::shared_ptr<const VolumeArray> Trk::BoundarySurface< Tvol >::m_insideVolumeArray {}
protectedinherited

Definition at line 127 of file BoundarySurface.h.

127{};

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

453{};

◆ m_outsideVolume

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

Definition at line 125 of file BoundarySurface.h.

125{};

◆ m_outsideVolumeArray

template<class Tvol>
std::shared_ptr<const VolumeArray> Trk::BoundarySurface< Tvol >::m_outsideVolumeArray {}
protectedinherited

Definition at line 128 of file BoundarySurface.h.

128{};

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

bool Trk::SubtractedPlaneSurface::m_shared {true}
protectedinherited

Definition at line 77 of file SubtractedPlaneSurface.h.

77{true};

◆ m_subtrVol

std::shared_ptr<const 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

Unique Pointer to the Transforms struct.

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

439{};

◆ s_boundless

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

Definition at line 286 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

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

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: