ATLAS Offline Software
Loading...
Searching...
No Matches
ConeLayer.cxx
Go to the documentation of this file.
1/*
2 Copyright (C) 2002-2023 CERN for the benefit of the ATLAS collaboration
3*/
4
6// ConeLayer.cxx, (c) ATLAS Detector software
8
9// Trk
11
16// CLHEP
18
20 std::shared_ptr<const Trk::ConeBounds> cbounds,
21 const Trk::LayerMaterialProperties& laymatprop,
22 double thickness,
23 std::unique_ptr<Trk::OverlapDescriptor> olap,
24 int laytyp)
25 : ConeSurface(transform, std::move(cbounds))
26 , Layer(laymatprop, thickness, std::move(olap), laytyp)
27{}
28
30 const Trk::LayerMaterialProperties& laymatprop,
31 double thickness,
32 std::unique_ptr<Trk::OverlapDescriptor> olap,
33 int laytyp)
34 : ConeSurface(*cyl)
35 , Layer(laymatprop, thickness, std::move(olap), laytyp)
36{}
37
39 std::shared_ptr<const Trk::ConeBounds> cbounds,
40 std::unique_ptr<Trk::SurfaceArray> surfaceArray,
41 double thickness,
42 std::unique_ptr<Trk::OverlapDescriptor> olap,
43 int laytyp)
44 : ConeSurface(transform, std::move(cbounds))
45 , Layer(std::move(surfaceArray), thickness, std::move(olap), laytyp)
46{}
47
49 std::shared_ptr<const Trk::ConeBounds> cbounds,
50 std::unique_ptr<Trk::SurfaceArray> surfaceArray,
51 const Trk::LayerMaterialProperties& laymatprop,
52 double thickness,
53 std::unique_ptr<Trk::OverlapDescriptor> olap,
54 int laytyp)
55 : ConeSurface(transform, std::move(cbounds))
56 , Layer(std::move(surfaceArray), laymatprop, thickness, std::move(olap), laytyp)
57{}
58
59Trk::ConeLayer::ConeLayer(const Trk::ConeLayer& clay) = default;
60
62 const Amg::Transform3D& transf)
63 : ConeSurface(clay, transf)
64 , Layer(clay)
65{}
66
69{
70 if (this != &clay) {
71 // call the assignments of the base classes
74 }
75 return (*this);
76}
77
80{
81 return (*this);
82}
83
86{
87 return (*this);
88}
89
90
91double
93 Trk::PropDirection dir) const
94{
96 return 0.;
97 // calculate the direction to the normal
98 const Amg::Vector3D& parmPos = parm.position();
99 Amg::Vector3D pastStep(parmPos + dir * parm.momentum().normalized());
100 if (pastStep.perp() > parm.position().perp())
101 return Trk::Layer::m_layerMaterialProperties->alongPreFactor();
102 return Trk::Layer::m_layerMaterialProperties->oppositePreFactor();
103}
104
105double
107 Trk::PropDirection dir) const
108{
110 return 0;
111 const Amg::Vector3D& parmPos = parm.position();
112 Amg::Vector3D pastStep(parmPos + dir * parm.momentum().normalized());
113 if (pastStep.perp() > parm.position().perp())
114 return Trk::Layer::m_layerMaterialProperties->alongPostFactor();
115 return Trk::Layer::m_layerMaterialProperties->oppositePostFactor();
116}
117
118void
120{
122 std::make_unique<Transforms>(shift * m_transforms->transform);
123}
Class to describe a cylindrical detector layer for tracking, it inhertis from both,...
Definition ConeLayer.h:42
virtual double preUpdateMaterialFactor(const Trk::TrackParameters &par, Trk::PropDirection dir) const override final
getting the MaterialProperties back - for pre-update
Definition ConeLayer.cxx:92
virtual double postUpdateMaterialFactor(const Trk::TrackParameters &par, Trk::PropDirection dir) const override final
getting the MaterialProperties back - for post-update
virtual const ConeSurface & surfaceRepresentation() const override final
Transforms the layer into a Surface representation for extrapolation.
Definition ConeLayer.cxx:79
ConeLayer & operator=(const ConeLayer &)
Assignment operator for ConeLayers.
Definition ConeLayer.cxx:68
virtual void moveLayer(Amg::Transform3D &shift) override final
move the Layer
ConeLayer()
Default Constructor.
Definition ConeLayer.h:45
Class for a conical surface in the ATLAS detector.
Definition ConeSurface.h:51
ConeSurface()
Default Constructor.
ConeSurface & operator=(const ConeSurface &csf)
Assignment operator.
This virtual base class encapsulates the logics to build pre/post/full update material for Layer stru...
Layer()=default
Default Constructor.
const SurfaceArray * surfaceArray() const
Return the entire SurfaceArray, returns nullptr if no SurfaceArray.
double thickness() const
Return the Thickness of the Layer.
Layer & operator=(const Layer &lay)
Assignment operator for Derived classes.
Definition Layer.cxx:84
std::unique_ptr< LayerMaterialProperties > m_layerMaterialProperties
thickness of the Layer
Definition Layer.h:288
const Amg::Vector3D & momentum() const
Access method for the momentum.
const Amg::Vector3D & position() const
Access method for the position.
const Amg::Transform3D & transform() const
Returns HepGeom::Transform3D by reference.
std::unique_ptr< Transforms > m_transforms
Unique Pointer to the Transforms struct.
Eigen::Affine3d Transform3D
Eigen::Matrix< double, 3, 1 > Vector3D
PropDirection
PropDirection, enum for direction of the propagation.
ParametersBase< TrackParametersDim, Charged > TrackParameters
STL namespace.