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

#include <CylinderLayer.h>

Inheritance diagram for Trk::CylinderLayer:
Collaboration diagram for Trk::CylinderLayer:

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

 CylinderLayer ()
 Default Constructor. More...
 
 CylinderLayer (const Amg::Transform3D &transform, std::shared_ptr< const CylinderBounds > cbounds, const LayerMaterialProperties &laymatprop, double thickness=0., std::unique_ptr< OverlapDescriptor > od=nullptr, int laytyp=int(Trk::active))
 Constructor with CylinderSurface components and MaterialProperties. More...
 
 CylinderLayer (CylinderSurface *cyl, const LayerMaterialProperties &laymatprop, double thickness=0., std::unique_ptr< OverlapDescriptor > od=nullptr, int laytyp=int(Trk::active))
 Constructor with CylinderSurface and MaterialProperties. More...
 
 CylinderLayer (const Amg::Transform3D &transform, std::shared_ptr< const CylinderBounds > cbounds, std::unique_ptr< SurfaceArray > surfaceArray, double thickness=0., std::unique_ptr< OverlapDescriptor > od=nullptr, IApproachDescriptor *ad=nullptr, int laytyp=int(Trk::active))
 Constructor with CylinderSurface components and pointer to SurfaceArray (passing ownership) More...
 
 CylinderLayer (const Amg::Transform3D &transform, std::shared_ptr< const CylinderBounds > cbounds, std::unique_ptr< SurfaceArray > surfaceArray, const LayerMaterialProperties &laymatprop, double thickness=0., std::unique_ptr< OverlapDescriptor > od=nullptr, IApproachDescriptor *ad=nullptr, int laytyp=int(Trk::active))
 Constructor with CylinderSurface components, MaterialProperties and pointer SurfaceArray (passing ownership) More...
 
 CylinderLayer (std::shared_ptr< const CylinderBounds > cbounds, const LayerMaterialProperties &laymatprop, double thickness=0., std::unique_ptr< OverlapDescriptor > od=nullptr, int laytyp=int(Trk::active))
 Concentric Layer: Constructor with CylinderSurface components and MaterialProperties. More...
 
 CylinderLayer (std::shared_ptr< const CylinderBounds > cbounds, std::unique_ptr< SurfaceArray > surfaceArray, double thickness=0., std::unique_ptr< OverlapDescriptor > od=nullptr, IApproachDescriptor *ad=nullptr, int laytyp=int(Trk::active))
 Concentric Layer: Constructor with CylinderSurface components and pointer to SurfaceArray (passing ownership) More...
 
 CylinderLayer (std::shared_ptr< const CylinderBounds > cbounds, std::unique_ptr< SurfaceArray > surfaceArray, const LayerMaterialProperties &laymatprop, double thickness=0., std::unique_ptr< OverlapDescriptor > od=nullptr, IApproachDescriptor *ad=nullptr, int laytyp=int(Trk::active))
 Concentric Layer: Constructor with CylinderSurface components, MaterialProperties and pointer SurfaceArray (passing ownership) More...
 
 CylinderLayer (const CylinderLayer &cla)
 Copy constructor of CylinderLayer. More...
 
 CylinderLayer (const CylinderLayer &cla, const Amg::Transform3D &tr)
 Copy constructor with shift. More...
 
CylinderLayeroperator= (const CylinderLayer &)
 Assignment operator for CylinderLayers. More...
 
virtual ~CylinderLayer ()=default
 Destructor. More...
 
virtual const CylinderSurfacesurfaceRepresentation () const override final
 Transforms the layer into a Surface representation for extrapolation. More...
 
virtual CylinderSurfacesurfaceRepresentation () override final
 
virtual double preUpdateMaterialFactor (const Trk::TrackParameters &par, Trk::PropDirection dir) const override final
 getting the MaterialProperties back - for pre-update More...
 
virtual double postUpdateMaterialFactor (const Trk::TrackParameters &par, Trk::PropDirection dir) const override final
 getting the MaterialProperties back - for post-update More...
 
virtual const SurfacesurfaceOnApproach (const Amg::Vector3D &pos, const Amg::Vector3D &dir, PropDirection pdir, const BoundaryCheck &bcheck, bool resolveSubSurfaces=0, const ICompatibilityEstimator *ice=nullptr) const override final
 Surface seen on approach - if not defined differently, it is the surfaceRepresentation() More...
 
virtual void moveLayer (Amg::Transform3D &shift) override final
 move the Layer More...
 
virtual void resizeLayer (const VolumeBounds &vBounds, double envelope) override final
 Resize the layer to the tracking volume - only works for CylinderVolumeBouns. More...
 
virtual void resizeAndRepositionLayer (const VolumeBounds &vBounds, const Amg::Vector3D &cCenter, double envelope) override final
 Resize the layer to the tracking volume. More...
 
virtual bool operator== (const Surface &sf) const override
 Equality operator. More...
 
bool operator== (const CylinderSurface &cf) const
 
virtual CylinderSurfaceclone () const override
 Implicit Constructor. More...
 
virtual Surface::ChargedTrackParametersUniquePtr createUniqueTrackParameters (double l1, double l2, double phi, double theta, double qop, std::optional< AmgSymMatrix(5)> cov=std::nullopt) const override final
 Use the Surface as a ParametersBase constructor, from local parameters - charged. More...
 
virtual Surface::ChargedTrackParametersUniquePtr createUniqueTrackParameters (const Amg::Vector3D &position, const Amg::Vector3D &momentum, double charge, std::optional< AmgSymMatrix(5)> cov=std::nullopt) const override final
 Use the Surface as a ParametersBase constructor, from global parameters - charged. More...
 
virtual NeutralTrackParametersUniquePtr createUniqueNeutralParameters (double l1, double l2, double phi, double theta, double qop, std::optional< AmgSymMatrix(5)> cov=std::nullopt) const override final
 Use the Surface as a ParametersBase constructor, from local parameters - neutral. More...
 
virtual NeutralTrackParametersUniquePtr createUniqueNeutralParameters (const Amg::Vector3D &position, const Amg::Vector3D &momentum, double charge, std::optional< AmgSymMatrix(5)> cov=std::nullopt) const override final
 Use the Surface as a ParametersBase constructor, from global parameters - neutral. More...
 
template<int DIM, class T >
std::unique_ptr< ParametersT< DIM, T, CylinderSurface > > createUniqueParameters (double l1, double l2, double phi, double theta, double qop, std::optional< AmgSymMatrix(DIM)> cov=std::nullopt) const
 Use the Surface as a ParametersBase constructor, from local parameters. More...
 
template<int DIM, class T >
std::unique_ptr< ParametersT< DIM, T, CylinderSurface > > createUniqueParameters (const Amg::Vector3D &position, const Amg::Vector3D &momentum, double charge, std::optional< AmgSymMatrix(DIM)> cov=std::nullopt) const
 Use the Surface as a ParametersBase constructor, from global parameters. More...
 
virtual Amg::RotationMatrix3D measurementFrame (const Amg::Vector3D &glopos, const Amg::Vector3D &glomom) const override final
 Return the measurement frame - this is needed for alignment, in particular for StraightLine and Perigee Surface. More...
 
constexpr virtual SurfaceType type () const override final
 Return the surface type. More...
 
virtual const Amg::Vector3DglobalReferencePoint () const override final
 Returns a global reference point: For the Cylinder this is \( (R*cos(\phi), R*sin(\phi),0)*transform() \) Where \( \phi \) denotes the averagePhi() of the cylinderBounds. More...
 
virtual Amg::Vector3D normal (const Amg::Vector2D &locpo) const override final
 Return method for surface normal information at a given local point, overwrites the normal() from base class. More...
 
virtual const Amg::Vector3Dnormal () const
 Returns the normal vector of the Surface (i.e. More...
 
virtual const Amg::Vector3DrotSymmetryAxis () const
 Return method for the rotational symmetry axis - the z-Axis of the HepTransform. More...
 
virtual const CylinderBoundsbounds () const override final
 This method returns the CylinderBounds by reference (NoBounds is not possible for cylinder) More...
 
bool hasBounds () const
 
virtual bool insideBounds (const Amg::Vector2D &locpos, double tol1=0., double tol2=0.) const override
 This method calls the inside method of CylinderBounds. More...
 
virtual bool insideBoundsCheck (const Amg::Vector2D &locpos, const BoundaryCheck &bchk) const override final
 
virtual Amg::Vector2D localParametersToPosition (const LocalParameters &locpars) const override final
 Specialized for CylinderSurface : LocalParameters to Vector2D. More...
 
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::Vector2DglobalToLocal (const Amg::Vector3D &glopos, double tol=0.) const
 This method returns the LocalPosition from a provided GlobalPosition. More...
 
std::optional< Amg::Vector2DglobalToLocal (const Amg::Vector3D &glopos, const Amg::Vector3D &glomom) const
 This method returns the LocalPosition from a provided GlobalPosition. More...
 
virtual 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<typename T >
Intersection straightLineIntersection (const T &pars, bool forceDir=false, const Trk::BoundaryCheck &bchk=false) const
 fst straight line intersection schema - templated for charged and neutral parameters More...
 
virtual 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...
 
virtual std::string name () const override
 Return properly formatted class name for screen output. More...
 
bool operator!= (const Surface &sf) const
 Non-equality operator. More...
 
std::unique_ptr< SurfaceuniqueClone () const
 NVI method returning unique_ptr clone. More...
 
const Amg::Transform3DcachedTransform () const
 Return the cached transformation directly. More...
 
const Amg::Transform3Dtransform () const
 Returns HepGeom::Transform3D by reference. More...
 
const Amg::Vector3Dcenter () const
 Returns the center position of the Surface. More...
 
const TrkDetElementBaseassociatedDetectorElement () const
 return associated Detector Element More...
 
Identifier associatedDetectorElementIdentifier () const
 return Identifier of the associated Detector Element More...
 
const Trk::LayerassociatedLayer () const
 return the associated Layer More...
 
const Trk::MaterialLayermaterialLayer () const
 return the material Layer More...
 
Trk::MaterialLayermaterialLayer ()
 
virtual const Trk::SurfacebaseSurface () const
 return the base surface (simplified for persistification) More...
 
std::optional< Amg::Vector2DpositionOnSurface (const Amg::Vector3D &glopo, const BoundaryCheck &bchk=true, double tol1=0., double tol2=0.) const
 positionOnSurface() returns the LocalPosition on the Surface,
If BoundaryCheck==false it just returns the value of globalToLocal (including nullptr possibility), if BoundaryCheck==true it checks whether the point is inside bounds or not (returns std::nullopt in this case). More...
 
template<class T >
bool onSurface (const T &parameters, const BoundaryCheck &bchk=BoundaryCheck(true)) const
 The templated Parameters OnSurface method - checks on surface pointer first. More...
 
bool isFree () const
 Returns 'true' if this surface is 'free', i.e. More...
 
bool isActive () const
 Return 'true' if this surface is owned by the detector element. More...
 
void setTransform (const Amg::Transform3D &trans)
 Set the transform updates center and normal. More...
 
void setOwner (SurfaceOwner x)
 set Ownership More...
 
SurfaceOwner owner () const
 return ownership More...
 
void setMaterialLayer (std::shared_ptr< Trk::MaterialLayer > mlay)
 set material layer More...
 
virtual MsgStream & dump (MsgStream &sl) const
 Output Method for MsgStream, to be overloaded by child classes. More...
 
virtual std::ostream & dump (std::ostream &sl) const
 Output Method for std::ostream, to be overloaded by child classes. More...
 
void associateLayer (const Layer &lay)
 method to associate a Trk::Layer. More...
 
const SurfaceArraysurfaceArray () const
 Return the entire SurfaceArray, returns nullptr if no SurfaceArray. More...
 
SurfaceArraysurfaceArray ()
 Return the entire SurfaceArray, returns nullptr if no SurfaceArray. More...
 
const SurfacesubSurface (const Amg::Vector3D &gp) const
 If no subSurface array is defined or no subSurface can be found to the given Amg::Vector3D, it would return 0. More...
 
const SurfacesubSurface (const Amg::Vector2D &lp) const
 If no subSurface array is defined or no subSurface can be found to the given Amg::Vector2D, it would return 0. More...
 
const SurfacesubSurfaceReference (unsigned int idx=0) const
 Return a reference sub surface of the layer, usually the first one in the array. More...
 
double thickness () const
 Return the Thickness of the Layer. More...
 
template<class T >
bool onLayer (const T &parameters, const BoundaryCheck &bcheck=BoundaryCheck(true)) const
 templated on Layer method More...
 
virtual bool isOnLayer (const Amg::Vector3D &gp, const BoundaryCheck &bcheck=BoundaryCheck(true)) const
 isOnLayer() method, using isOnSurface() with Layer specific tolerance More...
 
const LayerMaterialPropertieslayerMaterialProperties () const
 getting the LayerMaterialProperties including full/pre/post update More...
 
const MaterialPropertiesfullUpdateMaterialProperties (const TrackParameters &par) const
 getting the MaterialProperties back - for full update More...
 
const OverlapDescriptoroverlapDescriptor () const
 gettint hte overlap descriptor More...
 
const LayerpreviousLayer (bool skipNavLayer=false) const
 getting what's stored to be the previous Layer, boolean to skip navigation layers More...
 
void setPreviousLayer (const Layer *)
 set the previous Layer More...
 
const LayernextLayer (const Amg::Vector3D &gp, const Amg::Vector3D &udir) const
 getting the next/previous Layer if registered - unit for direction vector required More...
 
const LayernextLayer (bool skipNavLayer=false) const
 getting what's stored to be the next Layer, boolean to skip navigation layers More...
 
void setNextLayer (const Layer *)
 set the next Layer More...
 
const BinUtilitybinUtility () const
 access the BinUtility More...
 
void setBinUtility (const BinUtility *)
 set the BinUtility More...
 
size_t compatibleSurfaces (std::vector< SurfaceIntersection > &cSurfaces, const TrackParameters &pars, PropDirection pdir, const BoundaryCheck &bcheck, bool materialSurfacesOnly=true, const Surface *startSurface=nullptr, const Surface *endSurface=nullptr, const ICompatibilityEstimator *ice=nullptr) const
 get compatible surfaces starting from charged parameters More...
 
size_t compatibleSurfaces (std::vector< SurfaceIntersection > &cSurfaces, const NeutralParameters &pars, PropDirection pdir, const BoundaryCheck &bcheck, bool materialSurfacesOnly=true, const Surface *startSurface=nullptr, const Surface *endSurface=nullptr, const ICompatibilityEstimator *ice=nullptr) const
 get compatible surfaces starting from neutral parameters More...
 
virtual bool hasSubStructure (bool resolveSensitive=false) const
 Has sub-structure method: More...
 
const TrackingVolumeenclosingTrackingVolume () const
 get the confining TrackingVolume More...
 
const DetachedTrackingVolumeenclosingDetachedTrackingVolume () const
 get the confining DetachedTrackingVolume More...
 
const LayerIndexlayerIndex () const
 get the layerIndex More...
 
int layerType () const
 get the Layer coding More...
 
void setLayerType (int identifier)
 set the Layer coding More...
 
void assignMaterialProperties (const LayerMaterialProperties &, double scale=1.0)
 assignMaterialPropeties More...
 
void registerRepresentingVolume (const Volume *theVol)
 register Volume associated to the layer More...
 
const VolumerepresentingVolume () const
 get the Volume associated to the layer More...
 
void setRef (double)
 set the reference measure More...
 
double getRef () const
 get the reference measure More...
 
void encloseTrackingVolume (const TrackingVolume &tvol)
 private method to set the enclosed detached TV More...
 
void encloseDetachedTrackingVolume (const DetachedTrackingVolume &tvol)
 
template<class T >
size_t getCompatibleSurfaces (std::vector< SurfaceIntersection > &cSurfaces, const T &pars, PropDirection pdir, const BoundaryCheck &bcheck, bool materialSurfacesOnly=true, const Surface *startSurface=nullptr, const Surface *endSurface=nullptr, const ICompatibilityEstimator *ice=nullptr) const
 get compatible surfaces starting from charged parameters More...
 
void compactify (size_t &cSurfaces, size_t &tSurfaces)
 register layer index for material map registration More...
 
void registerLayerIndex (const LayerIndex &lIdx)
 

Static Public Member Functions

static std::size_t numberOfInstantiations ()
 

Static Public Attributes

static constexpr SurfaceType staticType = SurfaceType::Cylinder
 The surface type static constexpr. More...
 
static std::atomic_size_t s_numberOfInstantiations
 

Protected Member Functions

Amg::Transform3D inverseTransformHelper () const
 Helper method to factorize in one place common operations calculate inverse transofrm and multiply with position. More...
 
Amg::Vector3D inverseTransformMultHelper (const Amg::Vector3D &glopos) const
 

Protected Attributes

std::unique_ptr< IApproachDescriptorm_approachDescriptor
 surfaces on approach to the layer More...
 
std::shared_ptr< const CylinderBoundsm_bounds
 The global reference point (== a point on the surface) More...
 
CxxUtils::CachedUniquePtr< Amg::Vector3Dm_referencePoint
 The rotational symmetry axis. More...
 
CxxUtils::CachedUniquePtr< Amg::Vector3Dm_rotSymmetryAxis
 
std::unique_ptr< Transformsm_transforms {}
 Unique Pointer to the Transforms struct. More...
 
const TrkDetElementBasem_associatedDetElement {}
 Not owning Pointer to the Detector Element. More...
 
Identifier m_associatedDetElementId {}
 Identifier to the Detector Element. More...
 
const Layerm_associatedLayer {}
 The associated layer Trk::Layer This is the layer in which the Surface is embedded. More...
 
std::shared_ptr< MaterialLayerm_materialLayer {}
 Possibility to attach a material description to the surface. More...
 
SurfaceOwner m_owner {SurfaceOwner::noOwn}
 enum for surface owner : default free surface More...
 
std::unique_ptr< SurfaceArraym_surfaceArray {}
 MaterialPoperties of this layer Surface. More...
 
std::unique_ptr< LayerMaterialPropertiesm_layerMaterialProperties {}
 thickness of the Layer More...
 
double m_layerThickness {}
 descriptor for overlap/next surface (owning ptr) More...
 
std::unique_ptr< OverlapDescriptorm_overlapDescriptor {}
 
const Layerm_previousLayer = nullptr
 < the previous Layer according to BinGenUtils More...
 
const Layerm_nextLayer = nullptr
 BinUtility for next/previous decision. More...
 
const BinUtilitym_binUtility = nullptr
 Enclosing TrackingVolume. More...
 
const TrackingVolumem_enclosingTrackingVolume = nullptr
 Enclosing DetachedTrackingVolume. More...
 
const DetachedTrackingVolumem_enclosingDetachedTrackingVolume = nullptr
 
LayerIndex m_index {-1}
 LayerIndex. More...
 
int m_layerType {Trk::active}
 active passive layer More...
 
double m_ref {}
 reference measure for local coordinate convertors More...
 

Static Protected Attributes

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

Private Member Functions

const SurfaceapproachSurface (const Amg::Vector3D &pos, const Amg::Vector3D &dir, const BoundaryCheck &bcheck) const
 Surface seen on approach - if not defined differently, it is the surfaceRepresentation() More...
 
void buildApproachDescriptor ()
 build approach surfaces More...
 

Detailed Description

Class to describe a cylindrical detector layer for tracking, it inhertis from both, Layer base class and CylinderSurface class

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

Definition at line 40 of file CylinderLayer.h.

Member Typedef Documentation

◆ ChargedTrackParametersUniquePtr

Unique ptr types.

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

◆ NeutralTrackParametersUniquePtr

Constructor & Destructor Documentation

◆ CylinderLayer() [1/10]

Trk::CylinderLayer::CylinderLayer ( )
inline

Default Constructor.

Definition at line 46 of file CylinderLayer.h.

46 {}

◆ CylinderLayer() [2/10]

Trk::CylinderLayer::CylinderLayer ( const Amg::Transform3D transform,
std::shared_ptr< const CylinderBounds cbounds,
const LayerMaterialProperties laymatprop,
double  thickness = 0.,
std::unique_ptr< OverlapDescriptor od = nullptr,
int  laytyp = int(Trk::active) 
)

Constructor with CylinderSurface components and MaterialProperties.

Definition at line 22 of file CylinderLayer.cxx.

29  : CylinderSurface(transform, std::move(cbounds))
30  , Layer(laymatprop, thickness, std::move(olap), laytyp)
31  , m_approachDescriptor(nullptr)
32 {
34 }

◆ CylinderLayer() [3/10]

Trk::CylinderLayer::CylinderLayer ( Trk::CylinderSurface cyl,
const LayerMaterialProperties laymatprop,
double  thickness = 0.,
std::unique_ptr< OverlapDescriptor od = nullptr,
int  laytyp = int(Trk::active) 
)

Constructor with CylinderSurface and MaterialProperties.

Definition at line 36 of file CylinderLayer.cxx.

42  : CylinderSurface(*cyl)
43  , Layer(laymatprop, thickness, std::move(olap), laytyp)
44  , m_approachDescriptor(nullptr)
45 {
47 }

◆ CylinderLayer() [4/10]

Trk::CylinderLayer::CylinderLayer ( const Amg::Transform3D transform,
std::shared_ptr< const CylinderBounds cbounds,
std::unique_ptr< SurfaceArray surfaceArray,
double  thickness = 0.,
std::unique_ptr< OverlapDescriptor od = nullptr,
Trk::IApproachDescriptor ades = nullptr,
int  laytyp = int(Trk::active) 
)

Constructor with CylinderSurface components and pointer to SurfaceArray (passing ownership)

Definition at line 49 of file CylinderLayer.cxx.

57  : CylinderSurface(transform, std::move(cbounds))
58  , Layer(std::move(surfaceArray), thickness, std::move(olap), laytyp)
59  , m_approachDescriptor(ades)
60 {
62  if (!ades && m_surfaceArray)
64  // register the layer
65  if (ades)
66  m_approachDescriptor->registerLayer(*this);
67 }

◆ CylinderLayer() [5/10]

Trk::CylinderLayer::CylinderLayer ( const Amg::Transform3D transform,
std::shared_ptr< const CylinderBounds cbounds,
std::unique_ptr< SurfaceArray surfaceArray,
const LayerMaterialProperties laymatprop,
double  thickness = 0.,
std::unique_ptr< OverlapDescriptor od = nullptr,
Trk::IApproachDescriptor ades = nullptr,
int  laytyp = int(Trk::active) 
)

Constructor with CylinderSurface components, MaterialProperties and pointer SurfaceArray (passing ownership)

Definition at line 69 of file CylinderLayer.cxx.

78  : CylinderSurface(transform, std::move(cbounds))
79  , Layer(std::move(surfaceArray), laymatprop, thickness, std::move(olap), laytyp)
80  , m_approachDescriptor(ades)
81 {
83  if (!ades && m_surfaceArray)
85  // register the layer
86  if (ades)
87  m_approachDescriptor->registerLayer(*this);
88 }

◆ CylinderLayer() [6/10]

Trk::CylinderLayer::CylinderLayer ( std::shared_ptr< const CylinderBounds cbounds,
const LayerMaterialProperties laymatprop,
double  thickness = 0.,
std::unique_ptr< OverlapDescriptor od = nullptr,
int  laytyp = int(Trk::active) 
)

Concentric Layer: Constructor with CylinderSurface components and MaterialProperties.

Definition at line 90 of file CylinderLayer.cxx.

96  : CylinderSurface(std::move(cbounds)),
97  Layer(laymatprop, thickness, std::move(olap), laytyp),
98  m_approachDescriptor(nullptr) {
100 }

◆ CylinderLayer() [7/10]

Trk::CylinderLayer::CylinderLayer ( std::shared_ptr< const CylinderBounds cbounds,
std::unique_ptr< SurfaceArray surfaceArray,
double  thickness = 0.,
std::unique_ptr< OverlapDescriptor od = nullptr,
Trk::IApproachDescriptor ades = nullptr,
int  laytyp = int(Trk::active) 
)

Concentric Layer: Constructor with CylinderSurface components and pointer to SurfaceArray (passing ownership)

Definition at line 102 of file CylinderLayer.cxx.

108  : CylinderSurface(std::move(cbounds)),
109  Layer(std::move(surfaceArray), thickness, std::move(olap), laytyp),
110  m_approachDescriptor(ades) {
112  if (!ades && m_surfaceArray) buildApproachDescriptor();
113  // register the layer
114  if (ades) m_approachDescriptor->registerLayer(*this);
115 }

◆ CylinderLayer() [8/10]

Trk::CylinderLayer::CylinderLayer ( std::shared_ptr< const CylinderBounds cbounds,
std::unique_ptr< SurfaceArray surfaceArray,
const LayerMaterialProperties laymatprop,
double  thickness = 0.,
std::unique_ptr< OverlapDescriptor od = nullptr,
Trk::IApproachDescriptor ades = nullptr,
int  laytyp = int(Trk::active) 
)

Concentric Layer: Constructor with CylinderSurface components, MaterialProperties and pointer SurfaceArray (passing ownership)

Definition at line 117 of file CylinderLayer.cxx.

124  : CylinderSurface(std::move(cbounds)),
125  Layer(std::move(surfaceArray), laymatprop, thickness, std::move(olap), laytyp),
126  m_approachDescriptor(ades) {
128  if (!ades && m_surfaceArray) buildApproachDescriptor();
129  // register the layer
130  if (ades) m_approachDescriptor->registerLayer(*this);
131 }

◆ CylinderLayer() [9/10]

Trk::CylinderLayer::CylinderLayer ( const CylinderLayer cla)

Copy constructor of CylinderLayer.

Definition at line 133 of file CylinderLayer.cxx.

134  : CylinderSurface(clay),
135  Layer(clay),
136  m_approachDescriptor(nullptr) {
138  m_approachDescriptor.reset();
139  if (m_surfaceArray)
141 }

◆ CylinderLayer() [10/10]

Trk::CylinderLayer::CylinderLayer ( const CylinderLayer cla,
const Amg::Transform3D tr 
)

Copy constructor with shift.

Definition at line 143 of file CylinderLayer.cxx.

145  : CylinderSurface(clay, transf),
146  Layer(clay),
147  m_approachDescriptor(nullptr) {
148  if (m_surfaceArray) {
150  }
151 }

◆ ~CylinderLayer()

virtual Trk::CylinderLayer::~CylinderLayer ( )
virtualdefault

Destructor.

Member Function Documentation

◆ approachSurface()

const Trk::Surface & Trk::CylinderLayer::approachSurface ( const Amg::Vector3D pos,
const Amg::Vector3D dir,
const BoundaryCheck bcheck 
) const
private

Surface seen on approach - if not defined differently, it is the surfaceRepresentation()

Definition at line 248 of file CylinderLayer.cxx.

250  {
251  if (m_approachDescriptor) {
252  // get the test surfaces from the approach Descriptor
253  const Trk::ApproachSurfaces* surfacesOnApproach =
254  m_approachDescriptor->approachSurfaces(pos, dir);
255  if (surfacesOnApproach) {
256  // test the intersections and go
257  std::vector<Trk::Intersection> sfIntersections;
258  const Trk::Surface* aSurface = nullptr;
259  double aPathLength = 10e10;
260  // get the surfaces
261  for (const auto& sfIter : (*surfacesOnApproach)) {
262  // get the intersection with the surface
263  Trk::Intersection sIntersection =
264  sfIter->straightLineIntersection(pos, dir, true, bcheck);
265  // validation
266  if (sIntersection.valid && sIntersection.pathLength < aPathLength) {
267  aPathLength = sIntersection.pathLength;
268  aSurface = sfIter;
269  }
270  }
271  if (aSurface) return (*aSurface);
272  }
273  }
274  return surfaceRepresentation();
275 }

◆ assignMaterialProperties()

void Trk::Layer::assignMaterialProperties ( const LayerMaterialProperties prop,
double  scale = 1.0 
)
inherited

assignMaterialPropeties

Definition at line 177 of file Layer.cxx.

178  {
179  m_layerMaterialProperties.reset(prop.clone());
180  if (scale != 1.0) {
182  }
183 }

◆ associatedDetectorElement()

const TrkDetElementBase* Trk::Surface::associatedDetectorElement ( ) const
inherited

return associated Detector Element

◆ associatedDetectorElementIdentifier()

Identifier Trk::Surface::associatedDetectorElementIdentifier ( ) const
inherited

return Identifier of the associated Detector Element

◆ associatedLayer()

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

return the associated Layer

◆ associateLayer()

void Trk::Surface::associateLayer ( const Layer lay)
inherited

method to associate a Trk::Layer.

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

◆ baseSurface()

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

return the base surface (simplified for persistification)

◆ binUtility()

const BinUtility* Trk::Layer::binUtility ( ) const
inherited

access the BinUtility

◆ bounds()

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

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

Implements Trk::Surface.

◆ buildApproachDescriptor()

void Trk::CylinderLayer::buildApproachDescriptor ( )
private

build approach surfaces

Definition at line 292 of file CylinderLayer.cxx.

292  {
293  // delete it
294  // delete the surfaces
295  auto aSurfaces = std::make_unique<Trk::ApproachSurfaces>();
296  // create the new surfaces
297  if (m_transforms) {
298  Amg::Transform3D asTransform = m_transforms->transform;
299  aSurfaces->push_back(new Trk::CylinderSurface(
300  asTransform, m_bounds->r() - 0.5 * thickness(), m_bounds->halflengthZ()));
301  aSurfaces->push_back(new Trk::CylinderSurface(
302  asTransform, m_bounds->r() + 0.5 * thickness(), m_bounds->halflengthZ()));
303  } else {
304  aSurfaces->push_back(new Trk::CylinderSurface(
305  m_bounds->r() - 0.5 * thickness(), m_bounds->halflengthZ()));
306  aSurfaces->push_back(new Trk::CylinderSurface(
307  m_bounds->r() + 0.5 * thickness(), m_bounds->halflengthZ()));
308  }
309  // set the layer and make TGOwn
310  for (auto& sIter : (*aSurfaces)) {
311  sIter->associateLayer(*this);
312  sIter->setOwner(Trk::TGOwn);
313  }
315  std::make_unique<Trk::ApproachDescriptor>(std::move(aSurfaces));
316 }

◆ cachedTransform()

const Amg::Transform3D* Trk::Surface::cachedTransform ( ) const
inherited

Return the cached transformation directly.

Don't try to make a new transform if it's not here.

◆ center()

const Amg::Vector3D& Trk::Surface::center ( ) const
inherited

Returns the center position of the Surface.

◆ clone()

virtual CylinderSurface* Trk::CylinderSurface::clone ( ) const
overridevirtualinherited

Implicit Constructor.

Implements Trk::Surface.

◆ compactify()

void Trk::Layer::compactify ( size_t &  cSurfaces,
size_t &  tSurfaces 
)
inherited

register layer index for material map registration

Definition at line 186 of file Layer.cxx.

187 {
188  // set the layer surface representation
189  ++tSurfaces;
190  if (surfaceRepresentation().owner() == Trk::noOwn) {
192  ++cSurfaces;
193  }
194  // set the subsurface representation, usually already owned by DetElement
195  if (m_surfaceArray) {
196  std::span<Trk::Surface * const> surfaces = m_surfaceArray->arrayObjects();
197  for (Trk::Surface * const sIter : surfaces) {
198  if (sIter && (*sIter).owner() == Trk::noOwn) {
199  (*sIter).setOwner(Trk::TGOwn);
200  ++cSurfaces;
201  }
202  ++tSurfaces;
203  }
204  }
205 }

◆ compatibleSurfaces() [1/2]

size_t Trk::Layer::compatibleSurfaces ( std::vector< SurfaceIntersection > &  cSurfaces,
const NeutralParameters pars,
PropDirection  pdir,
const BoundaryCheck bcheck,
bool  materialSurfacesOnly = true,
const Surface startSurface = nullptr,
const Surface endSurface = nullptr,
const ICompatibilityEstimator *  ice = nullptr 
) const
inherited

get compatible surfaces starting from neutral parameters

◆ compatibleSurfaces() [2/2]

size_t Trk::Layer::compatibleSurfaces ( std::vector< SurfaceIntersection > &  cSurfaces,
const TrackParameters pars,
PropDirection  pdir,
const BoundaryCheck bcheck,
bool  materialSurfacesOnly = true,
const Surface startSurface = nullptr,
const Surface endSurface = nullptr,
const ICompatibilityEstimator *  ice = nullptr 
) const
inherited

get compatible surfaces starting from charged parameters

◆ createUniqueNeutralParameters() [1/2]

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

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

Implements Trk::Surface.

Definition at line 156 of file CylinderSurface.cxx.

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

◆ createUniqueNeutralParameters() [2/2]

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

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

Implements Trk::Surface.

Definition at line 146 of file CylinderSurface.cxx.

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

◆ createUniqueParameters() [1/2]

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

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

◆ createUniqueParameters() [2/2]

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

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

◆ createUniqueTrackParameters() [1/2]

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

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

Implements Trk::Surface.

Definition at line 136 of file CylinderSurface.cxx.

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

◆ createUniqueTrackParameters() [2/2]

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

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

Implements Trk::Surface.

Definition at line 126 of file CylinderSurface.cxx.

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

◆ dump() [1/2]

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

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

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

Definition at line 157 of file Surface.cxx.

158 {
159  sl << std::setiosflags(std::ios::fixed);
160  sl << std::setprecision(4);
161  sl << name() << std::endl;
162  if (associatedDetectorElement()!=nullptr){
163  sl<<" Detector Type = "<<associatedDetectorElement()->detectorTypeString()<<std::endl;
164  }
165  sl << " Center position (x, y, z) = (" << center().x() << ", " << center().y() << ", " << center().z() << ")"
166  << std::endl;
168  Amg::Vector3D rotX(rot.col(0));
169  Amg::Vector3D rotY(rot.col(1));
170  Amg::Vector3D rotZ(rot.col(2));
171  sl << std::setprecision(6);
172  sl << " Rotation: colX = (" << rotX(0) << ", " << rotX(1) << ", " << rotX(2) << ")" << std::endl;
173  sl << " colY = (" << rotY(0) << ", " << rotY(1) << ", " << rotY(2) << ")" << std::endl;
174  sl << " colZ = (" << rotZ(0) << ", " << rotZ(1) << ", " << rotZ(2) << ")" << std::endl;
175  sl << " Bounds : " << bounds();
176  if (!checkTransform(*this)) {
177  sl << std::endl << " NOT a strict rotation matrix." << std::endl;
178  }
179  sl << std::setprecision(-1);
180  return sl;
181 }

◆ dump() [2/2]

std::ostream & Surface::dump ( std::ostream &  sl) const
virtualinherited

Output Method for std::ostream, to be overloaded by child classes.

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

Definition at line 185 of file Surface.cxx.

186 {
187  sl << std::setiosflags(std::ios::fixed);
188  sl << std::setprecision(4);
189  sl << name() << std::endl;
190  if (associatedDetectorElement()!=nullptr){
191  sl<<" Detector Type = "<<associatedDetectorElement()->detectorTypeString()<<std::endl;
192  }
193  sl << " Center position (x, y, z) = (" << center().x() << ", " << center().y() << ", " << center().z() << ")"
194  << std::endl;
196  Amg::Vector3D rotX(rot.col(0));
197  Amg::Vector3D rotY(rot.col(1));
198  Amg::Vector3D rotZ(rot.col(2));
199  sl << std::setprecision(6);
200  sl << " Rotation: colX = (" << rotX(0) << ", " << rotX(1) << ", " << rotX(2) << ")" << std::endl;
201  sl << " colY = (" << rotY(0) << ", " << rotY(1) << ", " << rotY(2) << ")" << std::endl;
202  sl << " colZ = (" << rotZ(0) << ", " << rotZ(1) << ", " << rotZ(2) << ")" << std::endl;
203  sl << " Bounds : " << bounds();
204  if (!checkTransform(*this)) {
205  sl << std::endl << " NOT a strict rotation matrix." << std::endl;
206  }
207  sl << std::setprecision(-1);
208  return sl;
209 }

◆ encloseDetachedTrackingVolume()

void Trk::Layer::encloseDetachedTrackingVolume ( const DetachedTrackingVolume tvol)
inherited

◆ encloseTrackingVolume()

void Trk::Layer::encloseTrackingVolume ( const TrackingVolume tvol)
inherited

private method to set the enclosed detached TV

◆ enclosingDetachedTrackingVolume()

const DetachedTrackingVolume* Trk::Layer::enclosingDetachedTrackingVolume ( ) const
inherited

get the confining DetachedTrackingVolume

◆ enclosingTrackingVolume()

const TrackingVolume* Trk::Layer::enclosingTrackingVolume ( ) const
inherited

get the confining TrackingVolume

◆ fullUpdateMaterialProperties()

const Trk::MaterialProperties * Trk::Layer::fullUpdateMaterialProperties ( const TrackParameters par) const
inherited

getting the MaterialProperties back - for full update

Definition at line 169 of file Layer.cxx.

170  {
172  return m_layerMaterialProperties->fullMaterial(parm.position());
173  }
174  return nullptr;
175 }

◆ getCompatibleSurfaces()

template<class T >
size_t Trk::Layer::getCompatibleSurfaces ( std::vector< SurfaceIntersection > &  cSurfaces,
const T &  pars,
PropDirection  pdir,
const BoundaryCheck bcheck,
bool  materialSurfacesOnly = true,
const Surface startSurface = nullptr,
const Surface endSurface = nullptr,
const ICompatibilityEstimator *  ice = nullptr 
) const
inherited

get compatible surfaces starting from charged parameters

propagate TrackingGeometry owner downstream

◆ getRef()

double Trk::Layer::getRef ( ) const
inherited

get the reference measure

◆ globalReferencePoint()

const Amg::Vector3D & Trk::CylinderSurface::globalReferencePoint ( ) const
finaloverridevirtualinherited

Returns a global reference point: For the Cylinder this is \( (R*cos(\phi), R*sin(\phi),0)*transform() \) Where \( \phi \) denotes the averagePhi() of the cylinderBounds.

Reimplemented from Trk::Surface.

Definition at line 164 of file CylinderSurface.cxx.

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

◆ globalToLocal() [1/3]

bool Trk::CylinderSurface::globalToLocal ( const Amg::Vector3D glob,
const Amg::Vector3D mom,
Amg::Vector2D loc 
) const
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 235 of file CylinderSurface.cxx.

238 {
239  // get the transform & transform global position into cylinder frame
240  // transform it to the globalframe: CylinderSurfaces are allowed to have 0
241  // pointer transform
242  double radius = 0.;
243  double inttol = bounds().r() * 0.0001;
244  if (inttol < 0.01)
245  inttol = 0.01;
246  // do the transformation or not
248  Amg::Vector3D loc3Dframe(inverseTransformMultHelper(glopos));
249  locpos = Amg::Vector2D(bounds().r() * loc3Dframe.phi(), loc3Dframe.z());
250  radius = loc3Dframe.perp();
251  } else {
252  locpos = Amg::Vector2D(bounds().r() * glopos.phi(), glopos.z());
253  radius = glopos.perp();
254  }
255  // return true or false
256  return (fabs(radius - bounds().r()) <= inttol);
257 }

◆ globalToLocal() [2/3]

std::optional<Amg::Vector2D> Trk::Surface::globalToLocal ( const Amg::Vector3D glopos,
const Amg::Vector3D glomom 
) const
inherited

This method returns the LocalPosition from a provided GlobalPosition.

If the GlobalPosition is not on the Surface, it returns a nullopt This method does not check if the calculated LocalPosition is inside surface bounds. If this check is needed, use positionOnSurface - for generality with momentum

◆ globalToLocal() [3/3]

std::optional<Amg::Vector2D> Trk::Surface::globalToLocal ( const Amg::Vector3D glopos,
double  tol = 0. 
) const
inherited

This method returns the LocalPosition from a provided GlobalPosition.

If the GlobalPosition is not on the Surface, it returns nullopt This method does not check if the calculated LocalPosition is inside surface bounds. If this check is needed, use positionOnSurface - only for planar, cylinder surface fully defined

◆ hasBounds()

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

◆ hasSubStructure()

bool Trk::Layer::hasSubStructure ( bool  resolveSensitive = false) const
virtualinherited

Has sub-structure method:

  • sub-structure depending on : (a) only when required to resolve sub surfaces for sensitive hits (b) also material is ordered with sub structure

Definition at line 238 of file Layer.cxx.

238  {
239  return resolveSensitive && m_surfaceArray;
240 }

◆ insideBounds()

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

This method calls the inside method of CylinderBounds.

Implements Trk::Surface.

Reimplemented in Trk::SubtractedCylinderSurface.

◆ insideBoundsCheck()

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

Implements Trk::Surface.

◆ inverseTransformHelper()

Amg::Transform3D Trk::Surface::inverseTransformHelper ( ) const
protectedinherited

Helper method to factorize in one place common operations calculate inverse transofrm and multiply with position.

◆ inverseTransformMultHelper()

Amg::Vector3D Trk::Surface::inverseTransformMultHelper ( const Amg::Vector3D glopos) const
protectedinherited

◆ isActive()

bool Trk::Surface::isActive ( ) const
inherited

Return 'true' if this surface is owned by the detector element.

◆ isFree()

bool Trk::Surface::isFree ( ) const
inherited

Returns 'true' if this surface is 'free', i.e.

it does not belong to a detector element (and returns false otherwise

◆ isOnLayer()

bool Trk::Layer::isOnLayer ( const Amg::Vector3D gp,
const BoundaryCheck bcheck = BoundaryCheck(true) 
) const
virtualinherited

isOnLayer() method, using isOnSurface() with Layer specific tolerance

Reimplemented in Trk::MaterialLayer, Trk::MaterialLayerNoOwnSurf, Trk::MaterialLayerOwnSurf, and Trk::NavigationLayer.

Definition at line 135 of file Layer.cxx.

136  {
137  return (surfaceRepresentation())
138  .isOnSurface(gp, bchk, 0.5 * m_layerThickness);
139 }

◆ isOnSurface()

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

264 {
265  Amg::Vector3D loc3Dframe =
267  return (bchk ? bounds().inside3D(loc3Dframe,
268  tol1 + s_onSurfaceTolerance,
269  tol2 + s_onSurfaceTolerance)
270  : true);
271 }

◆ layerIndex()

const LayerIndex& Trk::Layer::layerIndex ( ) const
inherited

get the layerIndex

◆ layerMaterialProperties()

const LayerMaterialProperties* Trk::Layer::layerMaterialProperties ( ) const
inherited

getting the LayerMaterialProperties including full/pre/post update

◆ layerType()

int Trk::Layer::layerType ( ) const
inherited

get the Layer coding

◆ localParametersToPosition()

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

Specialized for CylinderSurface : LocalParameters to Vector2D.

Reimplemented from Trk::Surface.

◆ localToGlobal() [1/5]

ATH_FLATTEN void Trk::CylinderSurface::localToGlobal ( const Amg::Vector2D locp,
const Amg::Vector3D mom,
Amg::Vector3D glob 
) const
overridevirtualinherited

Specialized for CylinderSurface : LocalToGlobal method without dynamic memory allocation.

Implements Trk::Surface.

Reimplemented in Trk::SlidingCylinderSurface.

Definition at line 220 of file CylinderSurface.cxx.

223 {
224  // create the position in the local 3d frame
225  double r = bounds().r();
226  double phi = locpos[Trk::locRPhi] / r;
227  glopos = Amg::Vector3D(r * cos(phi), r * sin(phi), locpos[Trk::locZ]);
228  // transform it to the globalframe: CylinderSurfaces are allowed to have 0
229  // pointer transform
231  glopos = transform() * glopos;
232 }

◆ localToGlobal() [2/5]

Amg::Vector3D Trk::Surface::localToGlobal ( const Amg::Vector2D locpos) const
inherited

This method returns the GlobalPosition from a LocalPosition uses the per surface localToGlobal.

◆ localToGlobal() [3/5]

Amg::Vector3D Trk::Surface::localToGlobal ( const Amg::Vector2D locpos,
const Amg::Vector3D glomom 
) const
inherited

This method returns the GlobalPosition from a LocalPosition The LocalPosition can be outside Surface bounds - for generality with momentum.

◆ localToGlobal() [4/5]

Amg::Vector3D Trk::Surface::localToGlobal ( const LocalParameters locpars) const
inherited

This method returns the GlobalPosition from LocalParameters The LocalParameters can be outside Surface bounds.

◆ localToGlobal() [5/5]

Amg::Vector3D Trk::Surface::localToGlobal ( const LocalParameters locpars,
const Amg::Vector3D glomom 
) const
inherited

This method returns the GlobalPosition from LocalParameters The LocalParameters can be outside Surface bounds - for generality with momentum.

◆ materialLayer() [1/2]

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

◆ materialLayer() [2/2]

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

return the material Layer

◆ measurementFrame()

Amg::RotationMatrix3D Trk::CylinderSurface::measurementFrame ( const Amg::Vector3D glopos,
const Amg::Vector3D glomom 
) const
finaloverridevirtualinherited

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

  • the default implementation is the the RotationMatrix3D of the transform

Reimplemented from Trk::Surface.

Definition at line 187 of file CylinderSurface.cxx.

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

◆ moveLayer()

void Trk::CylinderLayer::moveLayer ( Amg::Transform3D shift)
finaloverridevirtual

move the Layer

Implements Trk::Layer.

Definition at line 197 of file CylinderLayer.cxx.

197  {
199  std::make_unique<Transforms>(shift * (m_transforms->transform));
200 
201  if (m_approachDescriptor && m_approachDescriptor->rebuild()) {
202  // build the new approach descriptor - deletes the current one
204  }
205 }

◆ name()

virtual std::string Trk::CylinderSurface::name ( ) const
overridevirtualinherited

Return properly formatted class name for screen output.

Implements Trk::Surface.

Reimplemented in Trk::SubtractedCylinderSurface, and Trk::SlidingCylinderSurface.

◆ nextLayer() [1/2]

const Trk::Layer * Trk::Layer::nextLayer ( bool  skipNavLayer = false) const
inherited

getting what's stored to be the next Layer, boolean to skip navigation layers

Definition at line 151 of file Layer.cxx.

151  {
152  if (!skipNavLayer) return m_nextLayer;
153  const Trk::Layer* nextMatLayer = m_nextLayer;
154  // get the next Material layer
155  while (nextMatLayer && !nextMatLayer->layerMaterialProperties() &&
156  !nextMatLayer->surfaceArray())
157  nextMatLayer = nextMatLayer->nextLayer();
158  return nextMatLayer;
159 }

◆ nextLayer() [2/2]

const Trk::Layer * Trk::Layer::nextLayer ( const Amg::Vector3D gp,
const Amg::Vector3D udir 
) const
inherited

getting the next/previous Layer if registered - unit for direction vector required

Definition at line 161 of file Layer.cxx.

162  {
163  // no binutility -> no chance to find out the direction
164  if (!m_binUtility) return nullptr;
166  : m_previousLayer;
167 }

◆ normal() [1/2]

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

Returns the normal vector of the Surface (i.e.

in generall z-axis of rotation)

Reimplemented in Trk::PerigeeSurface.

◆ normal() [2/2]

virtual Amg::Vector3D Trk::CylinderSurface::normal ( const Amg::Vector2D locpo) const
finaloverridevirtualinherited

Return method for surface normal information at a given local point, overwrites the normal() from base class.

Reimplemented from Trk::Surface.

◆ numberOfInstantiations()

static std::size_t Trk::ObjectCounter< Trk::Surface >::numberOfInstantiations ( )
inlinestaticinherited

Definition at line 25 of file TrkObjectCounter.h.

26  {
27 #ifndef NDEBUG
28  return s_numberOfInstantiations.load();
29 #endif
30  return 0;
31  }

◆ onLayer()

template<class T >
bool Trk::Layer::onLayer ( const T &  parameters,
const BoundaryCheck bcheck = BoundaryCheck(true) 
) const
inherited

templated on Layer method

◆ onSurface()

template<class T >
bool Trk::Surface::onSurface ( const T &  parameters,
const BoundaryCheck bchk = BoundaryCheck(true) 
) const
inherited

The templated Parameters OnSurface method - checks on surface pointer first.

◆ operator!=()

bool Trk::Surface::operator!= ( const Surface sf) const
inherited

Non-equality operator.

◆ operator=()

Trk::CylinderLayer & Trk::CylinderLayer::operator= ( const CylinderLayer clay)

Assignment operator for CylinderLayers.

Definition at line 153 of file CylinderLayer.cxx.

153  {
154  if (this != &clay) {
155  // call the assignments of the base classes
157  Trk::Layer::operator=(clay);
160  }
161  return (*this);
162 }

◆ operator==() [1/2]

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

◆ operator==() [2/2]

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

Equality operator.

Implements Trk::Surface.

Reimplemented in Trk::SubtractedCylinderSurface, and Trk::SlidingCylinderSurface.

Definition at line 176 of file CylinderSurface.cxx.

177 {
178  // first check the type not to compare apples with oranges
179  if (sf.type()!=Trk::SurfaceType::Cylinder){
180  return false;
181  }
182  return (*this) == static_cast<const Trk::CylinderSurface&>(sf);
183 }

◆ overlapDescriptor()

const OverlapDescriptor* Trk::Layer::overlapDescriptor ( ) const
inherited

gettint hte overlap descriptor

◆ owner()

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

return ownership

◆ pathCorrection()

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

the pathCorrection for derived classes with thickness

Reimplemented from Trk::Surface.

◆ positionOnSurface()

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

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

Definition at line 106 of file Surface.cxx.

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

◆ postUpdateMaterialFactor()

double Trk::CylinderLayer::postUpdateMaterialFactor ( const Trk::TrackParameters par,
Trk::PropDirection  dir 
) const
finaloverridevirtual

getting the MaterialProperties back - for post-update

Reimplemented from Trk::Layer.

Definition at line 187 of file CylinderLayer.cxx.

188  {
190  const Amg::Vector3D& parmPos = parm.position();
191  Amg::Vector3D pastStep(parmPos + dir * parm.momentum().normalized());
192  if (pastStep.perp() > parm.position().perp())
193  return Trk::Layer::m_layerMaterialProperties->alongPostFactor();
194  return Trk::Layer::m_layerMaterialProperties->oppositePostFactor();
195 }

◆ preUpdateMaterialFactor()

double Trk::CylinderLayer::preUpdateMaterialFactor ( const Trk::TrackParameters par,
Trk::PropDirection  dir 
) const
finaloverridevirtual

getting the MaterialProperties back - for pre-update

Reimplemented from Trk::Layer.

Definition at line 176 of file CylinderLayer.cxx.

177  {
179  // calculate the direction to the normal
180  const Amg::Vector3D& parmPos = parm.position();
181  Amg::Vector3D pastStep(parmPos + dir * parm.momentum().normalized());
182  if (pastStep.perp() > parm.position().perp())
183  return Trk::Layer::m_layerMaterialProperties->alongPreFactor();
184  return Trk::Layer::m_layerMaterialProperties->oppositePreFactor();
185 }

◆ previousLayer()

const Trk::Layer * Trk::Layer::previousLayer ( bool  skipNavLayer = false) const
inherited

getting what's stored to be the previous Layer, boolean to skip navigation layers

Definition at line 141 of file Layer.cxx.

141  {
142  if (!skipNavLayer) return m_previousLayer;
143  const Trk::Layer* prevMatLayer = m_previousLayer;
144  // get the previoys Material layer
145  while (prevMatLayer && !prevMatLayer->layerMaterialProperties() &&
146  !prevMatLayer->surfaceArray())
147  prevMatLayer = prevMatLayer->previousLayer();
148  return prevMatLayer;
149 }

◆ registerLayerIndex()

void Trk::Layer::registerLayerIndex ( const LayerIndex lIdx)
inherited

◆ registerRepresentingVolume()

void Trk::Layer::registerRepresentingVolume ( const Volume theVol)
inherited

register Volume associated to the layer

◆ representingVolume()

const Volume* Trk::Layer::representingVolume ( ) const
inherited

get the Volume associated to the layer

◆ resizeAndRepositionLayer()

void Trk::CylinderLayer::resizeAndRepositionLayer ( const VolumeBounds vBounds,
const Amg::Vector3D cCenter,
double  envelope 
)
finaloverridevirtual

Resize the layer to the tracking volume.

Implements Trk::Layer.

Definition at line 318 of file CylinderLayer.cxx.

320  {
321  // resize first of all
322  resizeLayer(vBounds, envelope);
323  // now reposition to the potentially center if necessary, do not change layers
324  // with no transform
325  if (Trk::CylinderSurface::m_transforms || center().isApprox(vCenter)) {
326  return;
327  }
328  Amg::Transform3D transf(vCenter);
330  std::make_unique<Transforms>(Amg::Transform3D(vCenter), vCenter);
331  // rebuild approaching layers if needed
332  if (m_approachDescriptor && m_approachDescriptor->rebuild())
334 }

◆ resizeLayer()

void Trk::CylinderLayer::resizeLayer ( const VolumeBounds vBounds,
double  envelope 
)
finaloverridevirtual

Resize the layer to the tracking volume - only works for CylinderVolumeBouns.

Implements Trk::Layer.

Definition at line 207 of file CylinderLayer.cxx.

208  {
209  // only do this if the volume bounds a CylinderVolumeBounds
210  const Trk::CylinderVolumeBounds* cvb =
211  dynamic_cast<const Trk::CylinderVolumeBounds*>(&bounds);
212  if (cvb) {
213  // get the dimensions
214  double hLengthZ = cvb->halflengthZ();
215  double r = surfaceRepresentation().bounds().r();
216  // (0) first, resize the layer itself
217  Trk::CylinderBounds* rCylinderBounds =
218  new Trk::CylinderBounds(r, hLengthZ - envelope);
220  std::shared_ptr<const Trk::CylinderBounds>(rCylinderBounds);
221  // (1) resize the material properties by updating the BinUtility, assuming
222  // rphi/z binning
224  const BinUtility* layerMaterialBU =
226  if (layerMaterialBU && layerMaterialBU->dimensions() > 1) {
227  size_t binsRPhi = layerMaterialBU->max(0) + 1;
228  size_t binsZ = layerMaterialBU->max(1) + 1;
229  // create a new binning with the new dimensions
230  Trk::BinUtility* rBinUtility = new Trk::BinUtility(
231  binsRPhi, -r * M_PI, r * M_PI, Trk::closed, Trk::binRPhi);
232  (*rBinUtility) +=
233  Trk::BinUtility(binsZ, -hLengthZ + envelope, hLengthZ - envelope,
235  Trk::Layer::m_layerMaterialProperties->updateBinning(rBinUtility);
236  }
237  }
238  }
239 
240  if (m_approachDescriptor && m_approachDescriptor->rebuild()) {
241  // build the approach descriptor - delete the current approach descriptor
243  }
244 }

◆ rotSymmetryAxis()

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

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

Definition at line 208 of file CylinderSurface.cxx.

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

◆ setBinUtility()

void Trk::Layer::setBinUtility ( const BinUtility )
inherited

set the BinUtility

◆ setLayerType()

void Trk::Layer::setLayerType ( int  identifier)
inherited

set the Layer coding

◆ setMaterialLayer()

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

set material layer

◆ setNextLayer()

void Trk::Layer::setNextLayer ( const Layer )
inherited

set the next Layer

◆ setOwner()

void Trk::Surface::setOwner ( SurfaceOwner  x)
inherited

set Ownership

◆ setPreviousLayer()

void Trk::Layer::setPreviousLayer ( const Layer )
inherited

set the previous Layer

◆ setRef()

void Trk::Layer::setRef ( double  )
inherited

set the reference measure

◆ setTransform()

void Trk::Surface::setTransform ( const Amg::Transform3D trans)
inherited

Set the transform updates center and normal.

◆ straightLineDistanceEstimate() [1/2]

ATH_FLATTEN Trk::DistanceSolution Trk::CylinderSurface::straightLineDistanceEstimate ( const Amg::Vector3D pos,
const Amg::Vector3D dir 
) const
overridevirtualinherited

fast distance to Surface

distance to surface

Implements Trk::Surface.

Reimplemented in Trk::SlidingCylinderSurface.

Definition at line 374 of file CylinderSurface.cxx.

377 {
378  double tol = 0.001;
379 
380  const Amg::Vector3D& X = center(); // point
381  const Amg::Vector3D& S = normal(); // vector
382 
383  double radius = bounds().r();
384  double sp = pos.dot(S);
385  double sc = X.dot(S);
386  double dp = dir.dot(S);
387  Amg::Vector3D dx = X - pos - (sc - sp) * S; // vector
388  Amg::Vector3D ax = dir - dp * S; // vector
389 
390  double A = ax.dot(ax); // size of projected direction (squared)
391  double B = ax.dot(dx); // dot product (->cos angle)
392  double C = dx.dot(dx); // distance to axis (squared)
393  double currDist = radius - sqrt(C);
394 
395  if (A == 0.) { // direction parallel to cylinder axis
396  if (fabs(currDist) < tol) {
397  return {1, 0., true, 0.}; // solution at surface
398  }
399  return {
400  0, currDist, true, 0.}; // point of closest approach without intersection
401  }
402 
403  // minimal distance to cylinder axis
404  // The [[maybe_unused]] declaration is to suppress redundant division checking
405  // here. Even a tiny change in rmin (~1e-13) can cause huge changes in the
406  // reconstructed output, so don't change how it's evaluated.
407  [[maybe_unused]] const double rmin_tmp = B * B / A;
408  const double rmin2 = C - rmin_tmp;
409  const double rmin = rmin2 < 0 ? 0 : sqrt(rmin2);
410 
411  if (rmin > radius) { // no intersection
412  double first = B / A;
413  return {
414  0,
415  currDist,
416  true,
417  first}; // point of closest approach without intersection
418  }
419  if (fabs(rmin - radius) <
420  tol) { // tangential 'intersection' - return double solution
421  double first = B / A;
422  return {2, currDist, true, first, first};
423  }
424  // The [[maybe_unused]] declaration here suppresses redundant division
425  // checking. We don't want to rewrite how this is evaluated due to
426  // instabilities.
427  [[maybe_unused]] const double b_a = B / A;
428  const double x = sqrt((radius - rmin) * (radius + rmin) / A);
429  double first = b_a - x;
430  double second = b_a + x;
431  if (first >= 0.) {
432  return {2, currDist, true, first, second};
433  }
434  if (second <= 0.) {
435  return {2, currDist, true, second, first};
436  } // inside cylinder
437  return {2, currDist, true, second, first};
438 }

◆ straightLineDistanceEstimate() [2/2]

Trk::DistanceSolution Trk::CylinderSurface::straightLineDistanceEstimate ( const Amg::Vector3D pos,
const Amg::Vector3D dir,
bool  bound 
) const
overridevirtualinherited

fast distance to Surface - with bounds directive

Implements Trk::Surface.

Reimplemented in Trk::SlidingCylinderSurface.

Definition at line 441 of file CylinderSurface.cxx.

444 {
445  const double tolb = .01;
446 
447  const Amg::Transform3D& T = transform();
448  // double Ax[3] = {T.xx(),T.yx(),T.zx()};
449  // double Ay[3] = {T.xy(),T.yy(),T.zy()};
450  // double Az[3] = {T.xz(),T.yz(),T.zz()};
451 
452  // Transformation to cylinder system coordinates
453  //
454 
455  // BEGIN here is what i guess this might mean: BEGIN
456  Amg::Vector3D Ax = T.rotation().col(0);
457  Amg::Vector3D Ay = T.rotation().col(1);
458  Amg::Vector3D Az = T.rotation().col(2);
459 
460  Amg::Vector3D dxyz = pos - T.translation();
461  double x = dxyz.dot(Ax);
462  double y = dxyz.dot(Ay);
463  double z = dxyz.dot(Az);
464  double ax = dir.dot(Ax);
465  double ay = dir.dot(Ay);
466  double at = ax * ax + ay * ay;
467  double r = sqrt(x * x + y * y);
468  double R = bounds().r();
469 
470  // END here is what i guessed this means END
471 
472  // double dx = pos[0]-T.dx() ;
473  // double dy = pos[1]-T.dy() ;
474  // double dz = pos[2]-T.dz() ;
475  // double x = dx*Ax[0]+dy*Ax[1]+dz*Ax[2] ;
476  // double y = dx*Ay[0]+dy*Ay[1]+dz*Ay[2] ;
477  // double z = dx*Az[0]+dy*Az[1]+dz*Az[2] ;
478  // double ax = dir[0]*Ax[0]+dir[1]*Ax[1]+dir[2]*Ax[2];
479  // double ay = dir[0]*Ay[0]+dir[1]*Ay[1]+dir[2]*Ay[2];
480  // double at = ax*ax+ay*ay ;
481  // double r = sqrt(x*x+y*y) ;
482  // double R = bounds().r() ;
483 
484  // Step to surface
485  //
486  int ns = 0;
487  double s1 = 0.;
488  double s2 = 0.;
489 
490  if (at != 0.) {
491 
492  const double inv_at = 1. / at;
493  double A = -(ax * x + ay * y) * inv_at;
494  double B = A * A + (R - r) * (R - r) * inv_at;
495 
496  if (B >= 0.) {
497 
498  B = sqrt(B);
499  if (B > tolb) {
500  if (A > 0.) {
501  s1 = A - B;
502  s2 = A + B;
503  } else {
504  s1 = A + B;
505  s2 = A - B;
506  }
507  ns = 2;
508  } else {
509  s1 = A;
510  ns = 1;
511  }
512  }
513  }
514  double sr = r - R;
515  if (!bound)
516  return {ns, fabs(sr), true, s1, s2};
517 
518  // Min distance to surface
519  //
520  Amg::Vector2D lp(atan2(y, x) * R, 0.);
521 
522  double d = bounds().minDistance(lp);
523  double sz = fabs(z) - bounds().halflengthZ();
524  if (sz <= 0.)
525  sz = 0.;
526  double dist = sr * sr + sz * sz;
527  if (d > 0.)
528  dist += ((d * d) * (sr / R + 1.));
529 
530  return {ns, sqrt(dist), true, s1, s2};
531 }

◆ straightLineIntersection() [1/2]

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

fast straight line intersection schema - provides closest intersection and (signed) path length

mathematical motivation:

The calculation will be done in the 3-dim frame of the cylinder, i.e. the symmetry axis of the cylinder is the z-axis, x- and y-axis are perpenticular to the the z-axis. In this frame the cylinder is centered around the origin. Therefore the two points describing the line have to be first recalculated into the new frame. Suppose, this is done, the intersection is straight forward:
may \(p_{1}=(p_{1x}, p_{1y}, p_{1z}), p_{2}=(p_{2x}, p_{2y}, p_{2z}) \)@_fakenlthe two points describing the 3D-line, then the line in the \(x-y\)plane can be written as \(y=kx+d\), where \(k =\frac{p_{2y}-p_{1y}}{p_{2x}-p_{1x}}\)such as \(d=\frac{p_{2x}p_{1y}-p_{1x}p_{2y}}{p_{2x}-p_{1x}},\)
and intersects with the corresponding circle \(x^{2}+y^{2} = R^{2}. \)
The solutions can then be found by a simple quadratic equation and reinsertion into the line equation.

Implements Trk::Surface.

Definition at line 274 of file CylinderSurface.cxx.

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

◆ straightLineIntersection() [2/2]

template<typename T >
Intersection Trk::Surface::straightLineIntersection ( const T &  pars,
bool  forceDir = false,
const Trk::BoundaryCheck bchk = false 
) const
inlineinherited

fst straight line intersection schema - templated for charged and neutral parameters

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

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

◆ subSurface() [1/2]

const Trk::Surface * Trk::Layer::subSurface ( const Amg::Vector2D lp) const
inherited

If no subSurface array is defined or no subSurface can be found to the given Amg::Vector2D, it would return 0.

Definition at line 112 of file Layer.cxx.

112  {
113  if (m_surfaceArray) return m_surfaceArray->object(lp);
114  return nullptr;
115 }

◆ subSurface() [2/2]

const Trk::Surface * Trk::Layer::subSurface ( const Amg::Vector3D gp) const
inherited

If no subSurface array is defined or no subSurface can be found to the given Amg::Vector3D, it would return 0.

Definition at line 107 of file Layer.cxx.

107  {
108  if (m_surfaceArray) return m_surfaceArray->object(gp);
109  return nullptr;
110 }

◆ subSurfaceReference()

const Trk::Surface * Trk::Layer::subSurfaceReference ( unsigned int  idx = 0) const
inherited

Return a reference sub surface of the layer, usually the first one in the array.

  • if an index is given (and the index is in range), this surface is returned

Definition at line 117 of file Layer.cxx.

117  {
118  // the reference surface
119  const Trk::Surface* referenceSurface = nullptr;
120  if (m_surfaceArray) {
121  // get a reference surface
122  std::span<Trk::Surface const * const> surfaces = std::as_const(*m_surfaceArray).arrayObjects();
123  // get a reference surface
124  unsigned int rfSurfaces = surfaces.size();
125  if (idx && idx < rfSurfaces) return surfaces[idx];
126  // get the first one which is non zero
127  for (unsigned int rsf = 0; rsf < rfSurfaces; ++rsf) {
128  referenceSurface = surfaces[rsf];
129  if (referenceSurface) break;
130  }
131  }
132  return referenceSurface;
133 }

◆ surfaceArray() [1/2]

SurfaceArray* Trk::Layer::surfaceArray ( )
inherited

Return the entire SurfaceArray, returns nullptr if no SurfaceArray.

◆ surfaceArray() [2/2]

const SurfaceArray* Trk::Layer::surfaceArray ( ) const
inherited

Return the entire SurfaceArray, returns nullptr if no SurfaceArray.

◆ surfaceOnApproach()

const Trk::Surface & Trk::CylinderLayer::surfaceOnApproach ( const Amg::Vector3D pos,
const Amg::Vector3D dir,
PropDirection  pdir,
const BoundaryCheck bcheck,
bool  resolveSubSurfaces = 0,
const ICompatibilityEstimator *  ice = nullptr 
) const
finaloverridevirtual

Surface seen on approach - if not defined differently, it is the surfaceRepresentation()

Reimplemented from Trk::Layer.

Definition at line 279 of file CylinderLayer.cxx.

282  {
283  // resolve the surfaces
284  if (m_approachDescriptor && resolveSubSurfaces) {
285  // resolve based on straight line intersection
286  return approachSurface(pos, double(pDir) * mom.unit(), bcheck);
287  }
288  return surfaceRepresentation();
289 }

◆ surfaceRepresentation() [1/2]

const Trk::CylinderSurface & Trk::CylinderLayer::surfaceRepresentation ( ) const
finaloverridevirtual

Transforms the layer into a Surface representation for extrapolation.

Implements Trk::Layer.

Definition at line 165 of file CylinderLayer.cxx.

166 {
167  return (*this);
168 }

◆ surfaceRepresentation() [2/2]

Trk::CylinderSurface & Trk::CylinderLayer::surfaceRepresentation ( )
finaloverridevirtual

Implements Trk::Layer.

Definition at line 171 of file CylinderLayer.cxx.

172 {
173  return (*this);
174 }

◆ thickness()

double Trk::Layer::thickness ( ) const
inherited

Return the Thickness of the Layer.

◆ transform()

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

Returns HepGeom::Transform3D by reference.

◆ type()

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

Return the surface type.

Implements Trk::Surface.

◆ uniqueClone()

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

NVI method returning unique_ptr clone.

Member Data Documentation

◆ m_approachDescriptor

std::unique_ptr<IApproachDescriptor> Trk::CylinderLayer::m_approachDescriptor
protected

surfaces on approach to the layer

Definition at line 174 of file CylinderLayer.h.

◆ m_associatedDetElement

const TrkDetElementBase* Trk::Surface::m_associatedDetElement {}
protectedinherited

Not owning Pointer to the Detector Element.

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

◆ m_associatedDetElementId

Identifier Trk::Surface::m_associatedDetElementId {}
protectedinherited

Identifier to the Detector Element.

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

◆ m_associatedLayer

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

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

so not owning pointer.

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

◆ m_binUtility

const BinUtility* Trk::Layer::m_binUtility = nullptr
protectedinherited

Enclosing TrackingVolume.

Definition at line 300 of file Layer.h.

◆ m_bounds

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

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

Definition at line 289 of file CylinderSurface.h.

◆ m_enclosingDetachedTrackingVolume

const DetachedTrackingVolume* Trk::Layer::m_enclosingDetachedTrackingVolume = nullptr
protectedinherited

Definition at line 304 of file Layer.h.

◆ m_enclosingTrackingVolume

const TrackingVolume* Trk::Layer::m_enclosingTrackingVolume = nullptr
protectedinherited

Enclosing DetachedTrackingVolume.

Definition at line 302 of file Layer.h.

◆ m_index

LayerIndex Trk::Layer::m_index {-1}
protectedinherited

LayerIndex.

Definition at line 306 of file Layer.h.

◆ m_layerMaterialProperties

std::unique_ptr<LayerMaterialProperties> Trk::Layer::m_layerMaterialProperties {}
protectedinherited

thickness of the Layer

Definition at line 288 of file Layer.h.

◆ m_layerThickness

double Trk::Layer::m_layerThickness {}
protectedinherited

descriptor for overlap/next surface (owning ptr)

Definition at line 290 of file Layer.h.

◆ m_layerType

int Trk::Layer::m_layerType {Trk::active}
protectedinherited

active passive layer

Definition at line 307 of file Layer.h.

◆ m_materialLayer

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

Possibility to attach a material description to the surface.

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

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

◆ m_nextLayer

const Layer* Trk::Layer::m_nextLayer = nullptr
protectedinherited

BinUtility for next/previous decision.

Definition at line 298 of file Layer.h.

◆ m_overlapDescriptor

std::unique_ptr<OverlapDescriptor> Trk::Layer::m_overlapDescriptor {}
protectedinherited

Definition at line 292 of file Layer.h.

◆ m_owner

SurfaceOwner Trk::Surface::m_owner {SurfaceOwner::noOwn}
protectedinherited

enum for surface owner : default free surface

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

◆ m_previousLayer

const Layer* Trk::Layer::m_previousLayer = nullptr
protectedinherited

< the previous Layer according to BinGenUtils

next Layer according to BinGenUtils

Definition at line 296 of file Layer.h.

◆ m_ref

double Trk::Layer::m_ref {}
protectedinherited

reference measure for local coordinate convertors

Definition at line 308 of file Layer.h.

◆ m_referencePoint

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

The rotational symmetry axis.

Definition at line 291 of file CylinderSurface.h.

◆ m_rotSymmetryAxis

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

Definition at line 293 of file CylinderSurface.h.

◆ m_surfaceArray

std::unique_ptr<SurfaceArray> Trk::Layer::m_surfaceArray {}
protectedinherited

MaterialPoperties of this layer Surface.

Definition at line 286 of file Layer.h.

◆ m_transforms

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

Unique Pointer to the Transforms struct.

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

◆ s_numberOfInstantiations

std::atomic_size_t Trk::ObjectCounter< Trk::Surface >::s_numberOfInstantiations
inlinestaticinherited

Definition at line 22 of file TrkObjectCounter.h.

◆ s_onSurfaceTolerance

constexpr double Trk::Surface::s_onSurfaceTolerance = 10e-5
staticconstexprprotectedinherited

Tolerance for being on Surface.

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

◆ staticType

constexpr SurfaceType Trk::CylinderSurface::staticType = SurfaceType::Cylinder
staticconstexprinherited

The surface type static constexpr.

Definition at line 59 of file CylinderSurface.h.


The documentation for this class was generated from the following files:
Trk::CylinderBounds::minDistance
virtual double minDistance(const Amg::Vector2D &pos) const override final
Minimal distance to boundary ( > 0 if outside and <=0 if inside)
Definition: CylinderBounds.cxx:62
make_hlt_rep.pars
pars
Definition: make_hlt_rep.py:90
Trk::Surface::m_associatedDetElement
const TrkDetElementBase * m_associatedDetElement
Not owning Pointer to the Detector Element.
Definition: Tracking/TrkDetDescr/TrkSurfaces/TrkSurfaces/Surface.h:441
Trk::y
@ y
Definition: ParamDefs.h:56
beamspotman.r
def r
Definition: beamspotman.py:674
TileDCSDataPlotter.dp
dp
Definition: TileDCSDataPlotter.py:842
ReadCellNoiseFromCoolCompare.s1
s1
Definition: ReadCellNoiseFromCoolCompare.py:378
fitman.sz
sz
Definition: fitman.py:527
Trk::Intersection
Definition: Intersection.h:24
Trk::Surface::associatedDetectorElement
const TrkDetElementBase * associatedDetectorElement() const
return associated Detector Element
athena.path
path
python interpreter configuration --------------------------------------—
Definition: athena.py:128
Trk::Surface::name
virtual std::string name() const =0
Return properly formatted class name.
Trk::z
@ z
global position (cartesian)
Definition: ParamDefs.h:57
fitman.ax
ax
Definition: fitman.py:522
PlotCalibFromCool.zAxis
zAxis
Definition: PlotCalibFromCool.py:76
Trk::BinUtility::orderDirection
LayerOrder orderDirection(const Amg::Vector3D &position, const Amg::Vector3D &direction, size_t ba=0) const
Return the oder direciton for fast interlinking.
Definition: BinUtility.h:165
Trk::Layer::m_previousLayer
const Layer * m_previousLayer
< the previous Layer according to BinGenUtils
Definition: Layer.h:296
Trk::Surface::straightLineIntersection
Intersection straightLineIntersection(const T &pars, bool forceDir=false, const Trk::BoundaryCheck &bchk=false) const
fst straight line intersection schema - templated for charged and neutral parameters
Definition: Tracking/TrkDetDescr/TrkSurfaces/TrkSurfaces/Surface.h:352
Trk::Surface::setOwner
void setOwner(SurfaceOwner x)
set Ownership
Trk::noOwn
@ noOwn
Definition: Tracking/TrkDetDescr/TrkSurfaces/TrkSurfaces/Surface.h:57
Trk::binZ
@ binZ
Definition: BinningType.h:49
Trk::next
@ next
Definition: BinningData.h:33
Amg::Vector2D
Eigen::Matrix< double, 2, 1 > Vector2D
Definition: GeoPrimitives.h:48
Trk::Layer::m_layerMaterialProperties
std::unique_ptr< LayerMaterialProperties > m_layerMaterialProperties
thickness of the Layer
Definition: Layer.h:288
hist_file_dump.d
d
Definition: hist_file_dump.py:142
Trk::Layer::m_surfaceArray
std::unique_ptr< SurfaceArray > m_surfaceArray
MaterialPoperties of this layer Surface.
Definition: Layer.h:286
Trk::Layer::Layer
Layer()=default
Default Constructor.
Trk::locRPhi
@ locRPhi
Definition: ParamDefs.h:40
DMTest::C
C_v1 C
Definition: C.h:26
Trk::CylinderLayer::surfaceRepresentation
virtual const CylinderSurface & surfaceRepresentation() const override final
Transforms the layer into a Surface representation for extrapolation.
Definition: CylinderLayer.cxx:165
Trk::Intersection::pathLength
double pathLength
Definition: Intersection.h:26
ALFA_EventTPCnv_Dict::t1
std::vector< ALFA_RawDataCollection_p1 > t1
Definition: ALFA_EventTPCnvDict.h:43
python.SystemOfUnits.second
float second
Definition: SystemOfUnits.py:135
plotBeamSpotVxVal.cov
cov
Definition: plotBeamSpotVxVal.py:200
M_PI
#define M_PI
Definition: ActiveFraction.h:11
Trk::none
@ none
Definition: TrkDetDescr/TrkSurfaces/TrkSurfaces/RealQuadraticEquation.h:21
ChangeHistoRange.binsZ
list binsZ
Definition: ChangeHistoRange.py:63
Trk::closed
@ closed
Definition: BinningType.h:41
Trk::CylinderLayer::approachSurface
const Surface & approachSurface(const Amg::Vector3D &pos, const Amg::Vector3D &dir, const BoundaryCheck &bcheck) const
Surface seen on approach - if not defined differently, it is the surfaceRepresentation()
Definition: CylinderLayer.cxx:248
Trk::CylinderSurface::bounds
virtual const CylinderBounds & bounds() const override final
This method returns the CylinderBounds by reference (NoBounds is not possible for cylinder)
drawFromPickle.cos
cos
Definition: drawFromPickle.py:36
isValid
bool isValid(const T &p)
Av: we implement here an ATLAS-sepcific convention: all particles which are 99xxxxx are fine.
Definition: AtlasPID.h:867
Trk::Surface::center
const Amg::Vector3D & center() const
Returns the center position of the Surface.
yodamerge_tmp.scale
scale
Definition: yodamerge_tmp.py:138
JetTiledMap::S
@ S
Definition: TiledEtaPhiMap.h:44
Trk::ApproachSurfaces
Definition: IApproachDescriptor.h:25
AthenaPoolTestRead.sc
sc
Definition: AthenaPoolTestRead.py:27
Monitored::X
@ X
Definition: HistogramFillerUtils.h:24
Trk::Surface::inverseTransformMultHelper
Amg::Vector3D inverseTransformMultHelper(const Amg::Vector3D &glopos) const
dqt_zlumi_alleff_HIST.A
A
Definition: dqt_zlumi_alleff_HIST.py:110
Trk::Layer::surfaceArray
const SurfaceArray * surfaceArray() const
Return the entire SurfaceArray, returns nullptr if no SurfaceArray.
Trk::TrkDetElementBase::detectorTypeString
std::string detectorTypeString() const
Returns a string of the Detector element type.
Definition: TrkDetElementBase.cxx:10
A
skel.l2
l2
Definition: skel.GENtoEVGEN.py:410
Trk::Surface::m_transforms
std::unique_ptr< Transforms > m_transforms
Unique Pointer to the Transforms struct.
Definition: Tracking/TrkDetDescr/TrkSurfaces/TrkSurfaces/Surface.h:439
ParticleGun_EoverP_Config.mom
mom
Definition: ParticleGun_EoverP_Config.py:63
Trk::Surface::s_onSurfaceTolerance
static constexpr double s_onSurfaceTolerance
Tolerance for being on Surface.
Definition: Tracking/TrkDetDescr/TrkSurfaces/TrkSurfaces/Surface.h:458
Trk::Layer::surfaceRepresentation
virtual const Surface & surfaceRepresentation() const =0
Transforms the layer into a Surface representation for extrapolation.
Trk::locZ
@ locZ
local cylindrical
Definition: ParamDefs.h:42
Trk::CylinderLayer::buildApproachDescriptor
void buildApproachDescriptor()
build approach surfaces
Definition: CylinderLayer.cxx:292
ParticleGun_EoverP_Config.momentum
momentum
Definition: ParticleGun_EoverP_Config.py:63
Trk::theta
@ theta
Definition: ParamDefs.h:66
Trk::CylinderSurface::CylinderSurface
CylinderSurface()
Default Constructor.
Definition: CylinderSurface.cxx:21
Trk::CylinderSurface
Definition: CylinderSurface.h:55
xAOD::rotation
rotation
Definition: TrackSurface_v1.cxx:15
Trk::CylinderBounds
Definition: CylinderBounds.h:46
Amg::Transform3D
Eigen::Affine3d Transform3D
Definition: GeoPrimitives.h:46
dumpNswErrorDb.linear
def linear
Definition: dumpNswErrorDb.py:29
Trk::CylinderVolumeBounds::halflengthZ
double halflengthZ() const
This method returns the halflengthZ.
Definition: CylinderVolumeBounds.h:207
Trk::Layer::operator=
Layer & operator=(const Layer &lay)
Assignment operator for Derived classes.
Definition: Layer.cxx:84
Trk::Surface::normal
virtual const Amg::Vector3D & normal() const
Returns the normal vector of the Surface (i.e.
Trk::Layer::nextLayer
const Layer * nextLayer(const Amg::Vector3D &gp, const Amg::Vector3D &udir) const
getting the next/previous Layer if registered - unit for direction vector required
Definition: Layer.cxx:161
Trk::RealQuadraticEquation
Definition: TrkDetDescr/TrkSurfaces/TrkSurfaces/RealQuadraticEquation.h:52
Trk::CylinderSurface::m_bounds
std::shared_ptr< const CylinderBounds > m_bounds
The global reference point (== a point on the surface)
Definition: CylinderSurface.h:289
AnalysisUtils::Delta::R
double R(const INavigable4Momentum *p1, const double v_eta, const double v_phi)
Definition: AnalysisMisc.h:49
Trk::CylinderSurface::m_referencePoint
CxxUtils::CachedUniquePtr< Amg::Vector3D > m_referencePoint
The rotational symmetry axis.
Definition: CylinderSurface.h:291
Trk::Surface::inverseTransformHelper
Amg::Transform3D inverseTransformHelper() const
Helper method to factorize in one place common operations calculate inverse transofrm and multiply wi...
beamspotman.dir
string dir
Definition: beamspotman.py:621
Trk::BinUtility
Definition: BinUtility.h:39
Trk::TGOwn
@ TGOwn
Definition: Tracking/TrkDetDescr/TrkSurfaces/TrkSurfaces/Surface.h:58
Trk::CylinderVolumeBounds
Definition: CylinderVolumeBounds.h:70
Trk::Surface::bounds
virtual const SurfaceBounds & bounds() const =0
Surface Bounds method.
Trk::Surface::associateLayer
void associateLayer(const Layer &lay)
method to associate a Trk::Layer.
Trk::CylinderSurface::operator=
CylinderSurface & operator=(const CylinderSurface &csf)
Assignment operator.
Definition: CylinderSurface.cxx:112
charge
double charge(const T &p)
Definition: AtlasPID.h:986
python.SystemOfUnits.sr
float sr
Definition: SystemOfUnits.py:128
dqt_zlumi_alleff_HIST.B
B
Definition: dqt_zlumi_alleff_HIST.py:110
Trk::Layer::thickness
double thickness() const
Return the Thickness of the Layer.
Trk::Surface::insideBounds
virtual bool insideBounds(const Amg::Vector2D &locpos, double tol1=0., double tol2=0.) const =0
virtual methods to be overwritten by the inherited surfaces
Amg::Vector3D
Eigen::Matrix< double, 3, 1 > Vector3D
Definition: GeoPrimitives.h:47
ParticleGun_SamplingFraction.radius
radius
Definition: ParticleGun_SamplingFraction.py:96
Trk::Layer::m_nextLayer
const Layer * m_nextLayer
BinUtility for next/previous decision.
Definition: Layer.h:298
Trk::Intersection::valid
bool valid
Definition: Intersection.h:28
python.LumiBlobConversion.pos
pos
Definition: LumiBlobConversion.py:16
Trk::Layer::m_binUtility
const BinUtility * m_binUtility
Enclosing TrackingVolume.
Definition: Layer.h:300
Trk::CylinderSurface::m_rotSymmetryAxis
CxxUtils::CachedUniquePtr< Amg::Vector3D > m_rotSymmetryAxis
Definition: CylinderSurface.h:293
Trk::open
@ open
Definition: BinningType.h:40
ALFA_EventTPCnv_Dict::t2
std::vector< ALFA_RawDataContainer_p1 > t2
Definition: ALFA_EventTPCnvDict.h:44
Trk::ObjectCounter< Trk::Surface >::s_numberOfInstantiations
static std::atomic_size_t s_numberOfInstantiations
Definition: TrkObjectCounter.h:22
Trk::Surface::globalToLocal
virtual bool globalToLocal(const Amg::Vector3D &glob, const Amg::Vector3D &mom, Amg::Vector2D &loc) const =0
Specified by each surface type: GlobalToLocal method without dynamic memory allocation - boolean chec...
mapkey::sf
@ sf
Definition: TElectronEfficiencyCorrectionTool.cxx:38
Trk::binRPhi
@ binRPhi
Definition: BinningType.h:52
Amg::RotationMatrix3D
Eigen::Matrix< double, 3, 3 > RotationMatrix3D
Definition: GeoPrimitives.h:49
Trk::Layer::previousLayer
const Layer * previousLayer(bool skipNavLayer=false) const
getting what's stored to be the previous Layer, boolean to skip navigation layers
Definition: Layer.cxx:141
DeMoScan.first
bool first
Definition: DeMoScan.py:534
ReadCellNoiseFromCoolCompare.s2
s2
Definition: ReadCellNoiseFromCoolCompare.py:379
makeTRTBarrelCans.dx
tuple dx
Definition: makeTRTBarrelCans.py:20
Trk::SurfaceType::Cylinder
@ Cylinder
Trk::Layer::layerMaterialProperties
const LayerMaterialProperties * layerMaterialProperties() const
getting the LayerMaterialProperties including full/pre/post update
LArNewCalib_DelayDump_OFC_Cali.idx
idx
Definition: LArNewCalib_DelayDump_OFC_Cali.py:69
Trk::Layer::m_layerThickness
double m_layerThickness
descriptor for overlap/next surface (owning ptr)
Definition: Layer.h:290
Trk::phi
@ phi
Definition: ParamDefs.h:75
skel.l1
l1
Definition: skel.GENtoEVGEN.py:409
Trk::CylinderLayer::m_approachDescriptor
std::unique_ptr< IApproachDescriptor > m_approachDescriptor
surfaces on approach to the layer
Definition: CylinderLayer.h:174
drawFromPickle.sin
sin
Definition: drawFromPickle.py:36
Trk::x
@ x
Definition: ParamDefs.h:55
Trk::CylinderBounds::averagePhi
double averagePhi() const
This method returns the average phi.
Trk::CylinderLayer::resizeLayer
virtual void resizeLayer(const VolumeBounds &vBounds, double envelope) override final
Resize the layer to the tracking volume - only works for CylinderVolumeBouns.
Definition: CylinderLayer.cxx:207
Trk::Surface
Definition: Tracking/TrkDetDescr/TrkSurfaces/TrkSurfaces/Surface.h:79
Trk::Surface::transform
const Amg::Transform3D & transform() const
Returns HepGeom::Transform3D by reference.
TSU::T
unsigned long long T
Definition: L1TopoDataTypes.h:35
fitman.k
k
Definition: fitman.py:528
python.SystemOfUnits.ns
float ns
Definition: SystemOfUnits.py:146
Trk::CylinderBounds::halflengthZ
double halflengthZ() const
This method returns the halflengthZ.
Trk::CylinderBounds::r
virtual double r() const override final
This method returns the radius.
Trk::Layer
Definition: Layer.h:72
fitman.ay
ay
Definition: fitman.py:525