ATLAS Offline Software
|
#include <SubtractedCylinderSurface.h>
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 | |
SubtractedCylinderSurface () | |
Default Constructor - needed for persistency. More... | |
SubtractedCylinderSurface (const SubtractedCylinderSurface &psf) | |
Copy Constructor. More... | |
SubtractedCylinderSurface (const SubtractedCylinderSurface &psf, const Amg::Transform3D &transf) | |
Copy Constructor with shift. More... | |
SubtractedCylinderSurface (const CylinderSurface &cs, AreaExcluder *vol, bool shared) | |
Constructor. More... | |
virtual | ~SubtractedCylinderSurface () |
Destructor. More... | |
SubtractedCylinderSurface & | operator= (const SubtractedCylinderSurface &psf) |
Assignment operator. More... | |
virtual bool | operator== (const Surface &sf) const override final |
Equality operator. More... | |
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< AreaExcluder > | subtractedVolume () 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... | |
bool | operator== (const CylinderSurface &cf) const |
virtual CylinderSurface * | clone () const override |
Implicit Constructor. More... | |
virtual Surface::ChargedTrackParametersUniquePtr | createUniqueTrackParameters (double l1, double l2, double phi, double theta, double qop, std::optional< AmgSymMatrix(5)> cov=std::nullopt) const override final |
Use the Surface as a ParametersBase constructor, from local parameters - charged. More... | |
virtual Surface::ChargedTrackParametersUniquePtr | createUniqueTrackParameters (const Amg::Vector3D &position, const Amg::Vector3D &momentum, double charge, std::optional< AmgSymMatrix(5)> cov=std::nullopt) const override final |
Use the Surface as a ParametersBase constructor, from global parameters - charged. More... | |
virtual NeutralTrackParametersUniquePtr | createUniqueNeutralParameters (double l1, double l2, double phi, double theta, double qop, std::optional< AmgSymMatrix(5)> cov=std::nullopt) const override final |
Use the Surface as a ParametersBase constructor, from local parameters - neutral. More... | |
virtual NeutralTrackParametersUniquePtr | createUniqueNeutralParameters (const Amg::Vector3D &position, const Amg::Vector3D &momentum, double charge, std::optional< AmgSymMatrix(5)> cov=std::nullopt) const override final |
Use the Surface as a ParametersBase constructor, from global parameters - neutral. More... | |
template<int DIM, class T > | |
std::unique_ptr< ParametersT< DIM, T, CylinderSurface > > | createUniqueParameters (double l1, double l2, double phi, double theta, double qop, std::optional< AmgSymMatrix(DIM)> cov=std::nullopt) const |
Use the Surface as a ParametersBase constructor, from local parameters. More... | |
template<int DIM, class T > | |
std::unique_ptr< ParametersT< DIM, T, CylinderSurface > > | createUniqueParameters (const Amg::Vector3D &position, const Amg::Vector3D &momentum, double charge, std::optional< AmgSymMatrix(DIM)> cov=std::nullopt) const |
Use the Surface as a ParametersBase constructor, from global parameters. More... | |
virtual Amg::RotationMatrix3D | measurementFrame (const Amg::Vector3D &glopos, const Amg::Vector3D &glomom) const override final |
Return the measurement frame - this is needed for alignment, in particular for StraightLine and Perigee Surface. More... | |
constexpr virtual SurfaceType | type () const override final |
Return the surface type. More... | |
virtual const Amg::Vector3D & | globalReferencePoint () const override final |
Returns a global reference point: For the Cylinder this is \( (R*cos(\phi), R*sin(\phi),0)*transform() \) Where \( \phi \) denotes the averagePhi() of the cylinderBounds. More... | |
virtual Amg::Vector3D | normal (const Amg::Vector2D &locpo) const override final |
Return method for surface normal information at a given local point, overwrites the normal() from base class. More... | |
virtual const Amg::Vector3D & | normal () const |
Returns the normal vector of the Surface (i.e. More... | |
virtual const Amg::Vector3D & | rotSymmetryAxis () const |
Return method for the rotational symmetry axis - the z-Axis of the HepTransform. More... | |
virtual const CylinderBounds & | bounds () const override final |
This method returns the CylinderBounds by reference (NoBounds is not possible for cylinder) More... | |
bool | hasBounds () const |
virtual bool | insideBoundsCheck (const Amg::Vector2D &locpos, const BoundaryCheck &bchk) const override final |
virtual Amg::Vector2D | localParametersToPosition (const LocalParameters &locpars) const override final |
Specialized for CylinderSurface : LocalParameters to Vector2D. More... | |
virtual void | localToGlobal (const Amg::Vector2D &locp, const Amg::Vector3D &mom, Amg::Vector3D &glob) const override |
Specialized for CylinderSurface : 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 |
Specialized for CylinderSurface : GlobalToLocal method without dynamic memory allocation - boolean checks if on surface. More... | |
std::optional< Amg::Vector2D > | globalToLocal (const Amg::Vector3D &glopos, double tol=0.) const |
This method returns the LocalPosition from a provided GlobalPosition. More... | |
std::optional< Amg::Vector2D > | globalToLocal (const Amg::Vector3D &glopos, const Amg::Vector3D &glomom) const |
This method returns the LocalPosition from a provided GlobalPosition. More... | |
virtual bool | isOnSurface (const Amg::Vector3D &glopo, const BoundaryCheck &bchk=true, double tol1=0., double tol2=0.) const override |
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 Intersection | straightLineIntersection (const Amg::Vector3D &pos, const Amg::Vector3D &dir, bool forceDir=false, Trk::BoundaryCheck bchk=false) const override final |
fast straight line intersection schema - provides closest intersection and (signed) path length More... | |
template<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 |
fast distance to Surface More... | |
virtual DistanceSolution | straightLineDistanceEstimate (const Amg::Vector3D &pos, const Amg::Vector3D &dir, bool bound) const override |
fast distance to Surface - with bounds directive More... | |
virtual double | pathCorrection (const Amg::Vector3D &pos, const Amg::Vector3D &mom) const override |
the pathCorrection for derived classes with thickness More... | |
bool | operator!= (const Surface &sf) const |
Non-equality operator. More... | |
std::unique_ptr< Surface > | uniqueClone () const |
NVI method returning unique_ptr clone. More... | |
const Amg::Transform3D * | cachedTransform () const |
Return the cached transformation directly. More... | |
const Amg::Transform3D & | transform () const |
Returns HepGeom::Transform3D by reference. More... | |
const Amg::Vector3D & | center () const |
Returns the center position of the Surface. More... | |
const TrkDetElementBase * | associatedDetectorElement () const |
return associated Detector Element More... | |
Identifier | associatedDetectorElementIdentifier () const |
return Identifier of the associated Detector Element More... | |
const Trk::Layer * | associatedLayer () const |
return the associated Layer More... | |
const Trk::Layer * | materialLayer () const |
return the material Layer More... | |
Trk::Layer * | materialLayer () |
virtual const Trk::Surface * | baseSurface () const |
return the base surface (simplified for persistification) More... | |
std::optional< Amg::Vector2D > | positionOnSurface (const Amg::Vector3D &glopo, const BoundaryCheck &bchk=true, double tol1=0., double tol2=0.) const |
positionOnSurface() returns the LocalPosition on the Surface, If BoundaryCheck==false it just 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 ¶meters, const BoundaryCheck &bchk=BoundaryCheck(true)) const |
The templated Parameters OnSurface method - checks on surface pointer first. More... | |
bool | isFree () const |
Returns 'true' if this surface is 'free', i.e. More... | |
bool | isActive () const |
Return 'true' if this surface is owned by the detector element. More... | |
void | setTransform (const Amg::Transform3D &trans) |
Set the transform updates center and normal. More... | |
void | setOwner (SurfaceOwner x) |
set Ownership More... | |
SurfaceOwner | owner () const |
return ownership More... | |
void | setMaterialLayer (std::shared_ptr< 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::Cylinder |
The surface type static constexpr. More... | |
static std::atomic_size_t | s_numberOfInstantiations |
Protected Member Functions | |
Amg::Transform3D | inverseTransformHelper () const |
Helper method to factorize in one place common operations calculate inverse transofrm and multiply with position. More... | |
Amg::Vector3D | inverseTransformMultHelper (const Amg::Vector3D &glopos) const |
Protected Attributes | |
SharedObject< AreaExcluder > | m_subtrVol |
bool | m_shared |
SharedObject< const CylinderBounds > | m_bounds |
The global reference point (== a point on the surface) More... | |
CxxUtils::CachedUniquePtr< Amg::Vector3D > | m_referencePoint |
The rotational symmetry axis. More... | |
CxxUtils::CachedUniquePtr< Amg::Vector3D > | m_rotSymmetryAxis |
std::unique_ptr< Transforms > | m_transforms {} |
const TrkDetElementBase * | m_associatedDetElement {} |
Not owning Pointer to the TrkDetElementBase. More... | |
Identifier | m_associatedDetElementId {} |
Identifier for the TrkDetElementBase. More... | |
const Layer * | m_associatedLayer {} |
The associated layer Trk::Layer. More... | |
std::shared_ptr< Layer > | m_materialLayer {} |
Possibility to attach a material descrption. More... | |
SurfaceOwner | m_owner {SurfaceOwner::noOwn} |
enum for surface owner : 0 free surface More... | |
Static Protected Attributes | |
static constexpr double | s_onSurfaceTolerance = 10e-5 |
Tolerance for being on Surface. More... | |
Class for a cylinder subtracted/shared surface in the ATLAS detector. It owns its surface bounds and subtracted volume.
Definition at line 32 of file SubtractedCylinderSurface.h.
|
inherited |
Unique ptr types.
Definition at line 124 of file Tracking/TrkDetDescr/TrkSurfaces/TrkSurfaces/Surface.h.
|
inherited |
Definition at line 126 of file Tracking/TrkDetDescr/TrkSurfaces/TrkSurfaces/Surface.h.
Trk::SubtractedCylinderSurface::SubtractedCylinderSurface | ( | ) |
Default Constructor - needed for persistency.
Definition at line 16 of file SubtractedCylinderSurface.cxx.
|
default |
Copy Constructor.
Trk::SubtractedCylinderSurface::SubtractedCylinderSurface | ( | const SubtractedCylinderSurface & | psf, |
const Amg::Transform3D & | transf | ||
) |
Trk::SubtractedCylinderSurface::SubtractedCylinderSurface | ( | const CylinderSurface & | cs, |
AreaExcluder * | vol, | ||
bool | shared | ||
) |
|
virtualdefault |
Destructor.
|
inherited |
return associated Detector Element
|
inherited |
return Identifier of the associated Detector Element
|
inherited |
return the associated Layer
method to associate the associated Trk::Layer which is alreay owned
|
virtualinherited |
return the base surface (simplified for persistification)
|
finaloverridevirtualinherited |
This method returns the CylinderBounds by reference (NoBounds is not possible for cylinder)
Implements Trk::Surface.
|
inherited |
Return the cached transformation directly.
Don't try to make a new transform if it's not here.
|
inherited |
Returns the center position of the Surface.
|
overridevirtualinherited |
Implicit Constructor.
Implements Trk::Surface.
|
finaloverridevirtualinherited |
Use the Surface as a ParametersBase constructor, from global parameters - neutral.
Implements Trk::Surface.
Definition at line 159 of file CylinderSurface.cxx.
|
finaloverridevirtualinherited |
Use the Surface as a ParametersBase constructor, from local parameters - neutral.
Implements Trk::Surface.
Definition at line 149 of file CylinderSurface.cxx.
|
inherited |
Use the Surface as a ParametersBase constructor, from global parameters.
|
inherited |
Use the Surface as a ParametersBase constructor, from local parameters.
|
finaloverridevirtualinherited |
Use the Surface as a ParametersBase constructor, from global parameters - charged.
Implements Trk::Surface.
Definition at line 139 of file CylinderSurface.cxx.
|
finaloverridevirtualinherited |
Use the Surface as a ParametersBase constructor, from local parameters - charged.
Implements Trk::Surface.
Definition at line 129 of file CylinderSurface.cxx.
|
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.
|
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.
|
finaloverridevirtualinherited |
Returns a global reference point: For the Cylinder this is \( (R*cos(\phi), R*sin(\phi),0)*transform() \) Where \( \phi \) denotes the averagePhi() of the cylinderBounds.
Reimplemented from Trk::Surface.
Definition at line 167 of file CylinderSurface.cxx.
|
overridevirtualinherited |
Specialized for CylinderSurface : GlobalToLocal method without dynamic memory allocation - boolean checks if on surface.
Implements Trk::Surface.
Reimplemented in Trk::SlidingCylinderSurface.
Definition at line 238 of file CylinderSurface.cxx.
|
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
|
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
|
inherited |
|
finaloverridevirtual |
This method calls the inside() method of the Bounds.
Reimplemented from Trk::CylinderSurface.
|
finaloverridevirtualinherited |
Implements Trk::Surface.
|
protectedinherited |
Helper method to factorize in one place common operations calculate inverse transofrm and multiply with position.
|
protectedinherited |
|
inherited |
Return 'true' if this surface is owned by the detector element.
|
inherited |
Returns 'true' if this surface is 'free', i.e.
it does not belong to a detector element (and returns false otherwise
|
overridevirtualinherited |
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.
Reimplemented in Trk::SlidingCylinderSurface.
Definition at line 263 of file CylinderSurface.cxx.
|
finaloverridevirtualinherited |
Specialized for CylinderSurface : LocalParameters to Vector2D.
Reimplemented from Trk::Surface.
|
overridevirtualinherited |
Specialized for CylinderSurface : LocalToGlobal method without dynamic memory allocation.
Implements Trk::Surface.
Reimplemented in Trk::SlidingCylinderSurface.
Definition at line 223 of file CylinderSurface.cxx.
|
inherited |
This method returns the GlobalPosition from a LocalPosition uses the per surface localToGlobal.
|
inherited |
This method returns the GlobalPosition from a LocalPosition The LocalPosition can be outside Surface bounds - for generality with momentum.
|
inherited |
This method returns the GlobalPosition from LocalParameters The LocalParameters can be outside Surface bounds.
|
inherited |
This method returns the GlobalPosition from LocalParameters The LocalParameters can be outside Surface bounds - for generality with momentum.
|
inherited |
|
inherited |
return the material Layer
|
finaloverridevirtualinherited |
Return the measurement frame - this is needed for alignment, in particular for StraightLine and Perigee Surface.
Reimplemented from Trk::Surface.
Definition at line 190 of file CylinderSurface.cxx.
|
inlinefinaloverridevirtual |
Return properly formatted class name for screen output.
Reimplemented from Trk::CylinderSurface.
Definition at line 71 of file SubtractedCylinderSurface.h.
|
virtualinherited |
Returns the normal vector of the Surface (i.e.
in generall z-axis of rotation)
Reimplemented in Trk::PerigeeSurface.
|
finaloverridevirtualinherited |
Return method for surface normal information at a given local point, overwrites the normal() from base class.
Reimplemented from Trk::Surface.
|
inlinestaticinherited |
Definition at line 25 of file TrkObjectCounter.h.
|
inherited |
The templated Parameters OnSurface method - checks on surface pointer first.
|
inherited |
Non-equality operator.
Trk::SubtractedCylinderSurface & Trk::SubtractedCylinderSurface::operator= | ( | const SubtractedCylinderSurface & | psf | ) |
|
inherited |
Equality operator.
Reimplemented from Trk::CylinderSurface.
Definition at line 60 of file SubtractedCylinderSurface.cxx.
|
inherited |
return ownership
|
overridevirtualinherited |
the pathCorrection for derived classes with thickness
Reimplemented from Trk::Surface.
|
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.
|
virtualinherited |
Return method for the rotational symmetry axis - the z-Axis of the HepTransform.
Definition at line 211 of file CylinderSurface.cxx.
|
inherited |
set material layer
|
inherited |
set Ownership
|
inherited |
Set the transform updates center and normal.
bool Trk::SubtractedCylinderSurface::shared | ( | ) | const |
This method indicates the subtraction mode.
|
overridevirtualinherited |
fast distance to Surface
distance to surface
Implements Trk::Surface.
Reimplemented in Trk::SlidingCylinderSurface.
Definition at line 377 of file CylinderSurface.cxx.
|
overridevirtualinherited |
fast distance to Surface - with bounds directive
Implements Trk::Surface.
Reimplemented in Trk::SlidingCylinderSurface.
Definition at line 444 of file CylinderSurface.cxx.
|
finaloverridevirtualinherited |
fast straight line intersection schema - provides closest intersection and (signed) path length
mathematical motivation:
The calculation will be done in the 3-dim frame of the cylinder, i.e. the symmetry axis of the cylinder is the z-axis, x- and y-axis are perpenticular to the the z-axis. In this frame the cylinder is centered around the origin. Therefore the two points describing the line have to be first recalculated into the new frame. Suppose, this is done, the intersection is straight forward:
may \(p_{1}=(p_{1x}, p_{1y}, p_{1z}), p_{2}=(p_{2x}, p_{2y}, p_{2z}) \)@_fakenlthe two points describing the 3D-line, then the line in the \(x-y\)plane can be written as \(y=kx+d\), where \(k =\frac{p_{2y}-p_{1y}}{p_{2x}-p_{1x}}\)such as \(d=\frac{p_{2x}p_{1y}-p_{1x}p_{2y}}{p_{2x}-p_{1x}},\)
and intersects with the corresponding circle \(x^{2}+y^{2} = R^{2}. \)
The solutions can then be found by a simple quadratic equation and reinsertion into the line equation.
Implements Trk::Surface.
Definition at line 277 of file CylinderSurface.cxx.
|
inlineinherited |
fst straight line intersection schema - templated for charged and neutral parameters
Definition at line 351 of file Tracking/TrkDetDescr/TrkSurfaces/TrkSurfaces/Surface.h.
SharedObject<AreaExcluder> Trk::SubtractedCylinderSurface::subtractedVolume | ( | ) | const |
This method allows access to the subtracted part.
|
inherited |
Returns HepGeom::Transform3D by reference.
|
constexprfinaloverridevirtualinherited |
Return the surface type.
Implements Trk::Surface.
|
inherited |
NVI method returning unique_ptr clone.
|
protectedinherited |
Not owning Pointer to the TrkDetElementBase.
Definition at line 439 of file Tracking/TrkDetDescr/TrkSurfaces/TrkSurfaces/Surface.h.
|
protectedinherited |
Identifier for the TrkDetElementBase.
Definition at line 442 of file Tracking/TrkDetDescr/TrkSurfaces/TrkSurfaces/Surface.h.
The associated layer Trk::Layer.
Definition at line 448 of file Tracking/TrkDetDescr/TrkSurfaces/TrkSurfaces/Surface.h.
|
protectedinherited |
The global reference point (== a point on the surface)
Definition at line 290 of file CylinderSurface.h.
|
protectedinherited |
Possibility to attach a material descrption.
Definition at line 453 of file Tracking/TrkDetDescr/TrkSurfaces/TrkSurfaces/Surface.h.
|
protectedinherited |
enum for surface owner : 0 free surface
Definition at line 455 of file Tracking/TrkDetDescr/TrkSurfaces/TrkSurfaces/Surface.h.
|
protectedinherited |
The rotational symmetry axis.
Definition at line 292 of file CylinderSurface.h.
|
protectedinherited |
Definition at line 294 of file CylinderSurface.h.
|
protected |
Definition at line 78 of file SubtractedCylinderSurface.h.
|
protected |
Definition at line 77 of file SubtractedCylinderSurface.h.
|
protectedinherited |
Definition at line 436 of file Tracking/TrkDetDescr/TrkSurfaces/TrkSurfaces/Surface.h.
|
inlinestaticinherited |
Definition at line 22 of file TrkObjectCounter.h.
|
staticconstexprprotectedinherited |
Tolerance for being on Surface.
Definition at line 458 of file Tracking/TrkDetDescr/TrkSurfaces/TrkSurfaces/Surface.h.
|
staticconstexprinherited |
The surface type static constexpr.
Definition at line 59 of file CylinderSurface.h.