File indexing completed on 2025-01-19 09:23:22
0001
0002
0003
0004
0005
0006
0007
0008
0009 #pragma once
0010
0011 #include "Acts/Geometry/BoundarySurfaceFace.hpp"
0012 #include "Acts/Utilities/BinnedArray.hpp"
0013
0014 #include <iosfwd>
0015 #include <map>
0016 #include <memory>
0017 #include <string>
0018 #include <vector>
0019
0020 namespace Acts {
0021
0022 class TrackingVolume;
0023
0024 using TrackingVolumePtr = std::shared_ptr<const TrackingVolume>;
0025 using TrackingVolumeArray = BinnedArray<TrackingVolumePtr>;
0026
0027
0028
0029
0030
0031
0032
0033
0034 class GlueVolumesDescriptor {
0035 public:
0036
0037 GlueVolumesDescriptor() = default;
0038
0039
0040
0041 GlueVolumesDescriptor(
0042 const std::map<BoundarySurfaceFace,
0043 std::shared_ptr<const TrackingVolumeArray>>& gvs);
0044
0045
0046 ~GlueVolumesDescriptor() = default;
0047
0048
0049
0050
0051 void registerGlueVolumes(Acts::BoundarySurfaceFace bsf,
0052 std::shared_ptr<const TrackingVolumeArray> gvs);
0053
0054
0055
0056
0057
0058
0059
0060 std::shared_ptr<const TrackingVolumeArray> glueVolumes(
0061 BoundarySurfaceFace bsf) const;
0062
0063
0064
0065 const std::vector<BoundarySurfaceFace>& glueFaces() const;
0066
0067
0068 std::string screenOutput() const;
0069
0070 private:
0071 std::map<BoundarySurfaceFace, std::shared_ptr<const TrackingVolumeArray>>
0072 m_glueVolumes;
0073 std::vector<BoundarySurfaceFace> m_glueFaces;
0074 };
0075
0076 inline const std::vector<BoundarySurfaceFace>&
0077 GlueVolumesDescriptor::glueFaces() const {
0078 return m_glueFaces;
0079 }
0080
0081 std::ostream& operator<<(std::ostream& sl, const GlueVolumesDescriptor& gvd);
0082 }