25 #include "GaudiKernel/SystemOfUnits.h"
45 return StatusCode::FAILURE;
54 std::unique_ptr<Trk::TrackingGeometry>
56 (
const EventContext& ctx,
62 ATH_MSG_DEBUG(
"[ Start building the ID TrackingGeometry. ]");
63 ATH_MSG_DEBUG(
"[ STEP 0 ] : Getting overal dimensions from DetectorEnvelope service." );
69 const RZPairVector& envelopeDefs = m_enclosingEnvelopeSvc->getInDetRZBoundary();
70 ATH_MSG_VERBOSE(
" -> retrieved Inner Detector envelope definitions at size " << envelopeDefs.size());
71 double envelopeVolumeRadius = envelopeDefs[1].first;
72 double envelopeVolumeHalfZ = fabs(envelopeDefs[1].
second);
78 envelopeVolumeHalfZ = m_zMinHGTD;
81 ATH_MSG_VERBOSE(
" -> envelope R/Z defined as : " << envelopeVolumeRadius <<
" / " << envelopeVolumeHalfZ );
83 ATH_MSG_DEBUG(
"[ STEP 1 ] : Getting overall dimensions from the different layer builders." );
85 double maximumLayerExtendZ = 0.;
86 double maximumLayerRadius = 0.;
87 std::vector<InDet::LayerSetup> layerSetups;
90 ATH_MSG_DEBUG(
"[ LayerBuilder : '" << lProvider->identification() <<
"' ] being processed. " );
92 std::vector<Trk::Layer*> centralLayers = lProvider->centralLayers(ctx, whandle);
93 std::pair<const std::vector<Trk::Layer*>,
const std::vector<Trk::Layer*> > endcapLayersPair = lProvider->endcapLayer(ctx, whandle);
94 ATH_MSG_INFO(
" -> retrieved " << centralLayers.size() <<
" central layers.");
95 ATH_MSG_INFO(
" -> retrieved " << endcapLayersPair.second.size() <<
" layers on negative side.");
96 ATH_MSG_INFO(
" -> retrieved " << endcapLayersPair.first.size() <<
" layers on positive side.");
99 estimateLayerSetup(lProvider->identification(),
101 endcapLayersPair.second,
103 endcapLayersPair.first,
104 envelopeVolumeRadius,
105 envelopeVolumeHalfZ);
110 layerSetups.push_back(lSetup);
114 ATH_MSG_VERBOSE(
" -> layer max R/Z defined as : " << maximumLayerRadius <<
" / " << maximumLayerExtendZ );
115 return trackingGeometryImpl(layerSetups, maximumLayerExtendZ,
116 maximumLayerRadius, envelopeVolumeHalfZ,
117 envelopeVolumeRadius);