24 #include "GaudiKernel/SystemOfUnits.h"
25 #include "GaudiKernel/MsgStream.h"
45 return StatusCode::FAILURE;
53 std::unique_ptr<Trk::TrackingGeometry>
59 ATH_MSG_DEBUG(
"[ Start building the ID TrackingGeometry. ]");
60 ATH_MSG_DEBUG(
"[ STEP 0 ] : Getting overal dimensions from DetectorEnvelope service." );
64 const RZPairVector& envelopeDefs = m_enclosingEnvelopeSvc->getInDetRZBoundary();
65 ATH_MSG_VERBOSE(
" -> retrieved Inner Detector envelope definitions at size " << envelopeDefs.size());
66 double envelopeVolumeRadius = envelopeDefs[1].first;
67 double envelopeVolumeHalfZ = fabs(envelopeDefs[1].
second);
68 ATH_MSG_VERBOSE(
" -> envelope R/Z defined as : " << envelopeVolumeRadius <<
" / " << envelopeVolumeHalfZ );
70 ATH_MSG_DEBUG(
"[ STEP 1 ] : Getting overal dimensions from the different layer builders." );
72 double maximumLayerExtendZ = 0.;
73 double maximumLayerRadius = 0.;
74 std::vector<InDet::LayerSetup> layerSetups;
77 ATH_MSG_DEBUG(
"[ LayerBuilder : '" << lProvider->identification() <<
"' ] being processed. " );
79 std::vector<Trk::Layer*> centralLayers = lProvider->centralLayers();
80 std::pair<const std::vector<Trk::Layer*>,
const std::vector<Trk::Layer*> > endcapLayersPair = lProvider->endcapLayer();
81 ATH_MSG_VERBOSE(
" -> retrieved " << centralLayers.size() <<
" central layers.");
82 ATH_MSG_VERBOSE(
" -> retrieved " << endcapLayersPair.second.size() <<
" layers on negative side.");
83 ATH_MSG_VERBOSE(
" -> retrieved " << endcapLayersPair.first.size() <<
" layers on positive side.");
86 estimateLayerSetup(lProvider->identification(),
88 endcapLayersPair.second,
90 endcapLayersPair.first,
97 layerSetups.push_back(lSetup);
101 ATH_MSG_VERBOSE(
" -> layer max R/Z defined as : " << maximumLayerRadius <<
" / " << maximumLayerExtendZ );
103 return trackingGeometryImpl(layerSetups, maximumLayerExtendZ,
104 maximumLayerRadius, envelopeVolumeHalfZ,
105 envelopeVolumeRadius);