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());