ATLAS Offline Software
DetachedTrackingVolume.h
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration
3 */
4 
6 // DetachedTrackingVolume.h, (c) ATLAS Detector software
8 
9 #ifndef TRKGEOMETRY_DETACHEDTRACKINGVOLUME_H
10 #define TRKGEOMETRY_DETACHEDTRACKINGVOLUME_H
11 
12 class MsgStream;
13 
15 #include "TrkGeometry/Layer.h"
17 #include "TrkGeometry/PlaneLayer.h"
18 #include "TrkSurfaces/Surface.h"
19 // Amg
21 #include <span>
22 namespace Trk {
23 class TrackingVolume;
24 class Surface;
25 class MaterialProperties;
26 class MagneticFieldProperties;
27 
40  friend class TrackingVolume;
43 
44  public:
47 
49  DetachedTrackingVolume(std::string name, std::unique_ptr<TrackingVolume> vol);
50 
52  DetachedTrackingVolume(std::string name,
53  std::unique_ptr<TrackingVolume> vol,
54  std::unique_ptr<Layer> layer,
55  std::unique_ptr<const std::vector<Layer*>> multilayer = nullptr);
56 
59 
61  const TrackingVolume* trackingVolume() const;
63 
65  const std::string& name() const;
66 
68  void move (Amg::Transform3D& shift);
69 
71  DetachedTrackingVolume* clone(const std::string& name,
72  Amg::Transform3D& shift) const;
73 
75  const Layer* layerRepresentation() const;
77 
79  std::span<Layer const * const> multilayerRepresentation() const;
80  std::span<Layer * const> multilayerRepresentation();
81 
83  void sign(GeometrySignature signat, GeometryType geotype);
84 
87 
89  GeometryType geometryType() const;
90 
93  void setBaseTransform(std::unique_ptr<Amg::Transform3D> transf = nullptr);
94 
95  private:
97  void compactify(size_t& cSurfaces, size_t& tSurfaces);
98  std::unique_ptr<TrackingVolume> m_trkVolume = nullptr;
99  std::unique_ptr<Layer> m_layerRepresentation = nullptr;
100  //We own also the elements in the vector
101  std::unique_ptr<const std::vector<Layer*>> m_multilayerRepresentation = nullptr;
102  const std::string m_name{"undefined"};
103  // optional use (for alignment purpose)
104  std::unique_ptr<Amg::Transform3D> m_baseTransform = nullptr;
105 };
106 
108  return m_trkVolume.get();
109 }
110 
112  return m_trkVolume.get();
113 }
114 
115 inline const std::string& DetachedTrackingVolume::name() const { return (m_name); }
116 
118  return m_layerRepresentation.get();
119 }
120 
122  return m_layerRepresentation.get();
123 }
124 
125 
126 inline std::span<Layer const* const>
128 {
130  return std::span<Layer const* const>(m_multilayerRepresentation->begin(),
132  }
133  return {};
134 }
135 
136 inline std::span<Layer* const>
138 {
140  return std::span<Layer* const>(m_multilayerRepresentation->begin(),
142  }
143  return {};
144 }
145 
146 } // namespace Trk
147 
148 #endif // TRKGEOMETRY_DETACHEDTRACKINGVOLUME_H
149 
Trk::DetachedTrackingVolume::sign
void sign(GeometrySignature signat, GeometryType geotype)
sign the volume - the geometry builder has to do that
Definition: DetachedTrackingVolume.cxx:162
GeometrySignature.h
Surface.h
GeometrySignature
Trk::DetachedTrackingVolume::DetachedTrackingVolume
DetachedTrackingVolume()
Default Constructor.
Trk::DetachedTrackingVolume::trackingVolume
const TrackingVolume * trackingVolume() const
returns the TrackingVolume
Definition: DetachedTrackingVolume.h:107
OverlapDescriptor.h
Trk::DetachedTrackingVolume::DetachedTrackingVolumeBuilder
friend class DetachedTrackingVolumeBuilder
Definition: DetachedTrackingVolume.h:41
Surface
Definition: Trigger/TrigAccel/TrigCudaFitter/src/Surface.h:8
Trk::DetachedTrackingVolume::compactify
void compactify(size_t &cSurfaces, size_t &tSurfaces)
Compactify – set TG as owner to surfaces.
Definition: DetachedTrackingVolume.cxx:134
Layer.h
Trk::DetachedTrackingVolume::m_baseTransform
std::unique_ptr< Amg::Transform3D > m_baseTransform
Definition: DetachedTrackingVolume.h:104
Trk::DetachedTrackingVolume::~DetachedTrackingVolume
~DetachedTrackingVolume()
Destructor.
Definition: DetachedTrackingVolume.cxx:35
Trk::DetachedTrackingVolume::m_multilayerRepresentation
std::unique_ptr< const std::vector< Layer * > > m_multilayerRepresentation
Definition: DetachedTrackingVolume.h:101
Trk::DetachedTrackingVolume::m_layerRepresentation
std::unique_ptr< Layer > m_layerRepresentation
Definition: DetachedTrackingVolume.h:99
Trk::DetachedTrackingVolume::setBaseTransform
void setBaseTransform(std::unique_ptr< Amg::Transform3D > transf=nullptr)
alignment methods: set base transform / default argument to current transform
Definition: DetachedTrackingVolume.cxx:176
GeoPrimitives.h
Trk::DetachedTrackingVolume::move
void move(Amg::Transform3D &shift)
moving object around
Definition: DetachedTrackingVolume.cxx:44
TRT::Hit::layer
@ layer
Definition: HitInfo.h:79
Amg::Transform3D
Eigen::Affine3d Transform3D
Definition: GeoPrimitives.h:46
Trk::DetachedTrackingVolume::multilayerRepresentation
std::span< Layer const *const > multilayerRepresentation() const
returns (multi)layer representation
Definition: DetachedTrackingVolume.h:127
Trk::DetachedTrackingVolume::m_trkVolume
std::unique_ptr< TrackingVolume > m_trkVolume
Definition: DetachedTrackingVolume.h:98
columnar::final
CM final
Definition: ColumnAccessor.h:106
Trk::DetachedTrackingVolume::clone
DetachedTrackingVolume * clone(const std::string &name, Amg::Transform3D &shift) const
clone with transform
Definition: DetachedTrackingVolume.cxx:58
Trk
Ensure that the ATLAS eigen extensions are properly loaded.
Definition: FakeTrackBuilder.h:9
Trk::DetachedTrackingVolume::name
const std::string & name() const
returns the Name
Definition: DetachedTrackingVolume.h:115
Trk::IDetachedTrackingVolumeBuilder
Definition: IDetachedTrackingVolumeBuilder.h:28
Trk::DetachedTrackingVolume::m_name
const std::string m_name
Definition: DetachedTrackingVolume.h:102
Trk::DetachedTrackingVolume::layerRepresentation
const Layer * layerRepresentation() const
returns layer representation
Definition: DetachedTrackingVolume.h:117
Trk::GeometryType
GeometryType
Definition: GeometrySignature.h:37
Trk::DetachedTrackingVolume::geometryType
GeometryType geometryType() const
return the Type
Definition: DetachedTrackingVolume.cxx:172
Trk::DetachedTrackingVolume
Definition: DetachedTrackingVolume.h:37
Trk::DetachedTrackingVolume::geometrySignature
GeometrySignature geometrySignature() const
return the Signature
Definition: DetachedTrackingVolume.cxx:168
Trk::TrackingVolume
Definition: TrackingVolume.h:119
PlaneLayer.h
Trk::Layer
Definition: Layer.h:72