19 : m_surfaceArray(nullptr),
20 m_layerMaterialProperties(nullptr),
22 m_overlapDescriptor(nullptr),
23 m_previousLayer(nullptr),
25 m_binUtility(nullptr),
26 m_enclosingTrackingVolume(nullptr),
27 m_enclosingDetachedTrackingVolume(nullptr),
34 std::unique_ptr<Trk::OverlapDescriptor> olap,
int laytyp)
35 : m_surfaceArray(nullptr),
36 m_layerMaterialProperties(laymatprop.
clone()),
37 m_layerThickness(thickness),
38 m_overlapDescriptor(std::move(olap)),
39 m_previousLayer(nullptr),
41 m_binUtility(nullptr),
42 m_enclosingTrackingVolume(nullptr),
43 m_enclosingDetachedTrackingVolume(nullptr),
49 std::unique_ptr<Trk::OverlapDescriptor> olap,
int laytyp)
50 : m_surfaceArray(std::move(surfaceArray)),
51 m_layerMaterialProperties(nullptr),
52 m_layerThickness(thickness),
53 m_overlapDescriptor(std::move(olap)),
54 m_previousLayer(nullptr),
56 m_binUtility(nullptr),
57 m_enclosingTrackingVolume(nullptr),
58 m_enclosingDetachedTrackingVolume(nullptr),
66 std::unique_ptr<Trk::OverlapDescriptor> olap,
int laytyp)
67 : m_surfaceArray(std::move(surfaceArray)),
68 m_layerMaterialProperties(laymatprop.
clone()),
69 m_layerThickness(thickness),
70 m_overlapDescriptor(std::move(olap)),
71 m_previousLayer(nullptr),
73 m_binUtility(nullptr),
74 m_enclosingTrackingVolume(nullptr),
75 m_enclosingDetachedTrackingVolume(nullptr),
81 : m_surfaceArray(lay.m_surfaceArray ? lay.m_surfaceArray->
clone()
83 m_layerMaterialProperties(lay.m_layerMaterialProperties
84 ? lay.m_layerMaterialProperties->
clone()
86 m_layerThickness(lay.m_layerThickness),
88 lay.m_overlapDescriptor ? lay.m_overlapDescriptor->
clone() : nullptr),
89 m_previousLayer(nullptr),
91 m_binUtility(nullptr),
92 m_enclosingTrackingVolume(nullptr),
93 m_enclosingDetachedTrackingVolume(nullptr),
95 m_layerType(lay.m_layerType),
102 m_overlapDescriptor.reset(
122 if (m_surfaceArray)
return m_surfaceArray->object(gp);
127 if (m_surfaceArray)
return m_surfaceArray->object(lp);
134 if (m_surfaceArray) {
138 unsigned int rfSurfaces = surfaces.size();
139 if (
idx &&
idx < rfSurfaces)
return surfaces[
idx];
141 for (
unsigned int rsf = 0; rsf < rfSurfaces; ++rsf) {
142 referenceSurface = surfaces[rsf];
143 if (referenceSurface)
break;
146 return referenceSurface;
151 return (surfaceRepresentation())
152 .isOnSurface(gp, bchk, 0.5 * m_layerThickness);
156 if (!skipNavLayer)
return m_previousLayer;
157 const Trk::Layer* prevMatLayer = m_previousLayer;
166 if (!skipNavLayer)
return m_nextLayer;
171 nextMatLayer = nextMatLayer->
nextLayer();
178 if (!m_binUtility)
return nullptr;
179 return (m_binUtility->orderDirection(gp,
mom) ==
Trk::next) ? m_nextLayer
185 if (m_layerMaterialProperties){
186 return m_layerMaterialProperties->fullMaterial(parm.
position());
193 m_layerMaterialProperties.reset(prop.
clone());
195 (*(m_layerMaterialProperties)) *=
scale;
204 if (surfaceRepresentation().owner() ==
Trk::noOwn) {
209 if (m_surfaceArray) {
212 if (sIter && (*sIter).owner() ==
Trk::noOwn) {
226 const Trk::ICompatibilityEstimator*)
const {
227 return surfaceRepresentation();
231 std::vector<Trk::SurfaceIntersection>& cSurfaces,
235 const Trk::ICompatibilityEstimator* ice)
const {
236 return getCompatibleSurfaces(cSurfaces,
pars,
pdir, bcheck,
237 materialSurfacesOnly, startSurface, endSurface,
242 std::vector<Trk::SurfaceIntersection>& cSurfaces,
246 const Trk::ICompatibilityEstimator* ice)
const {
247 return getCompatibleSurfaces(cSurfaces,
pars,
pdir, bcheck,
248 materialSurfacesOnly, startSurface, endSurface,
253 return resolveSensitive && m_surfaceArray;