18                                                     std::unique_ptr<Trk::TrackingVolume> volume)
 
   19   : m_trkVolume(std::move(volume))
 
   25   std::unique_ptr<Trk::TrackingVolume> volume,
 
   26   std::unique_ptr<Trk::Layer> lay,
 
   27   std::unique_ptr<
const std::vector<Trk::Layer*>> multilay)
 
   28   : m_trkVolume(std::move(volume))
 
   29   , m_layerRepresentation(std::move(lay))
 
   30   , m_multilayerRepresentation(std::move(multilay))
 
   32   , m_baseTransform(nullptr)
 
   37   if (m_multilayerRepresentation) {
 
   38     for (
auto *
layer : *m_multilayerRepresentation)
 
   46   m_trkVolume->moveTV(shift);
 
   47   if (m_layerRepresentation) {
 
   48     m_layerRepresentation->moveLayer(shift);
 
   50   if (m_multilayerRepresentation) {
 
   51     for (
auto* 
layer : *m_multilayerRepresentation) {
 
   52       layer->moveLayer(shift);
 
   61   auto newTV = std::make_unique<TrackingVolume>(*(this->trackingVolume()), shift);
 
   63   LayerArray* confinedLayers= newTV->confinedLayers();
 
   68   std::unique_ptr<Trk::PlaneLayer> newLay = 
nullptr;
 
   69   if (this->layerRepresentation()) {
 
   70     std::unique_ptr<std::vector<Trk::Layer*>> newMulti = 
nullptr;
 
   73       newLay = std::make_unique<Trk::PlaneLayer>(*pl);
 
   75       if (!this->multilayerRepresentation().empty()) {
 
   76         newMulti = std::make_unique<std::vector<Trk::Layer*>>();
 
   77         for (
unsigned int i = 0; 
i < this->multilayerRepresentation().size(); 
i++) {
 
   82             newMulti->push_back(newPl);
 
   84             std::cout << 
"WARNING   Trk::DetachedTrackingVolume::clone()   " 
   85                          "dynamic cast to 'const Trk::PlaneLayer* mpl' failed!" 
   91       std::cout << 
"WARNING   Trk::DetachedTrackingVolume::clone()   dynamic " 
   92                    "cast to 'const Trk::PlaneLayer* pl' failed!" 
  101   if (confinedVolumes) {
 
  102     std::span<Trk::TrackingVolume * const> vols = confinedVolumes->
arrayObjects();
 
  103     for (
auto *vol : vols) {
 
  107         std::span<Trk::Layer* const> lays = layAr->
arrayObjects();
 
  108         for (
auto *lay : lays) {
 
  109           lay->encloseDetachedTrackingVolume(*newStat);
 
  112       if (!alays.empty()) {
 
  113         for (
auto *alay : alays) {
 
  114           alay->encloseDetachedTrackingVolume(*newStat);
 
  119   if (confinedLayers) {
 
  120     std::span<Trk::Layer* const> lays = confinedLayers->
arrayObjects();
 
  121     for (
auto *lay : lays){
 
  122       lay->encloseDetachedTrackingVolume(*newStat);
 
  125   if (!confinedArbitraryLayers.empty()) {
 
  126     for (
auto *alay : confinedArbitraryLayers) {
 
  127       alay->encloseDetachedTrackingVolume(*newStat);
 
  138     m_trkVolume->compactify(cSurfaces, tSurfaces);
 
  142   if (layerRepresentation()) {
 
  144     if (layerRepresentation()->surfaceRepresentation().owner() == 
Trk::noOwn) {
 
  145       layerRepresentation()->surfaceRepresentation().setOwner(
Trk::TGOwn);
 
  150   if (!multilayerRepresentation().empty()) {
 
  151     tSurfaces += m_multilayerRepresentation->size();
 
  152     for (
const auto& mLayerIter : (*m_multilayerRepresentation)) {
 
  153       if ((*mLayerIter).surfaceRepresentation().owner() == 
Trk::noOwn) {
 
  154         (*mLayerIter).surfaceRepresentation().setOwner(
Trk::TGOwn);
 
  165   m_trkVolume->sign(signat, geotype);
 
  169   return m_trkVolume->geometrySignature();
 
  173   return m_trkVolume->geometryType();
 
  178     m_baseTransform = std::move(transf);
 
  181     m_baseTransform = std::make_unique<Amg::Transform3D>(this->trackingVolume()->
transform());