|
||||
File indexing completed on 2025-01-18 09:10:52
0001 // This file is part of the ACTS project. 0002 // 0003 // Copyright (C) 2016 CERN for the benefit of the ACTS project 0004 // 0005 // This Source Code Form is subject to the terms of the Mozilla Public 0006 // License, v. 2.0. If a copy of the MPL was not distributed with this 0007 // file, You can obtain one at https://mozilla.org/MPL/2.0/. 0008 0009 #pragma once 0010 0011 #include "Acts/Definitions/Algebra.hpp" 0012 #include "Acts/Geometry/GeometryContext.hpp" 0013 #include "Acts/Utilities/BinningType.hpp" 0014 0015 #include <memory> 0016 #include <string> 0017 #include <vector> 0018 0019 namespace Acts { 0020 0021 class Layer; 0022 class TrackingVolume; 0023 class VolumeBounds; 0024 class IVolumeMaterial; 0025 0026 using LayerPtr = std::shared_ptr<const Layer>; 0027 using TrackingVolumePtr = std::shared_ptr<const TrackingVolume>; 0028 using MutableTrackingVolumePtr = std::shared_ptr<TrackingVolume>; 0029 0030 using LayerVector = std::vector<LayerPtr>; 0031 using TrackingVolumeVector = std::vector<TrackingVolumePtr>; 0032 using MutableTrackingVolumeVector = std::vector<MutableTrackingVolumePtr>; 0033 0034 /// @class ITrackingVolumeHelper 0035 /// 0036 /// Interface class ITrackingVolumeHelper tools, it inherits from IAlgTool. 0037 /// The ITrackingVolumeHelper is a tool to pack a set of layers into a volume, 0038 /// or - to wrap several volumes into a container volume. 0039 /// 0040 /// @todo add documentation how this is done 0041 /// 0042 /// TrackingVolumes only exist as std::shared_ptr 0043 /// 0044 class ITrackingVolumeHelper { 0045 public: 0046 /// Virtual destructor 0047 virtual ~ITrackingVolumeHelper() = default; 0048 0049 /// Create a TrackingVolume* from a set of layers and (optional) parameters 0050 /// 0051 /// @param gctx is the geometry context for witch the volume is built 0052 /// @param layers vector of static layers confined by the TrackingVolume 0053 /// if no bounds or HepTransform is given, they define the size 0054 /// together with the volume enevlope parameters 0055 /// @param volumeMaterial material properties for this TrackingVolume 0056 /// @param volumeBounds: confinement of this TrackingVolume 0057 /// @param mtvVector (optional) Vector of confined TrackingVolumes 0058 /// @param transform (optional) placement of this TrackingVolume 0059 /// @param volumeName volume name to be given 0060 /// @param btype (optional) BinningType - arbitrary(default) or equidistant 0061 /// 0062 /// @return shared pointer to a new TrackingVolume 0063 virtual MutableTrackingVolumePtr createTrackingVolume( 0064 const GeometryContext& gctx, const LayerVector& layers, 0065 std::shared_ptr<const IVolumeMaterial> volumeMaterial, 0066 std::shared_ptr<VolumeBounds> volumeBounds, 0067 MutableTrackingVolumeVector mtvVector = {}, 0068 const Transform3& transform = Transform3::Identity(), 0069 const std::string& volumeName = "UndefinedVolume", 0070 BinningType btype = arbitrary) const = 0; 0071 0072 /// Create a TrackingVolume* from a set of layers and (optional) parameters 0073 /// 0074 /// @param gctx is the geometry context for witch the volume is built 0075 /// @param layers vector of static layers confined by the TrackingVolume 0076 /// if no bounds or HepTransform is given, they define the size 0077 /// together with the volume enevlope parameters 0078 /// @param volumeMaterial material properties for this TrackingVolume 0079 /// @param mtvVector Vector of confined TrackingVolumes 0080 /// @param loc0Min, loc0Max, loc1Min, loc1Max : local position in space, 0081 /// this TrackingVolume is restricted to Translation only 0082 /// @param volumeName volume name to be given 0083 /// @param btype (optional) BinningType - arbitrary(default) or equidistant 0084 /// 0085 /// @return shared pointer to a new TrackingVolume 0086 virtual MutableTrackingVolumePtr createTrackingVolume( 0087 const GeometryContext& gctx, const LayerVector& layers, 0088 MutableTrackingVolumeVector mtvVector, 0089 std::shared_ptr<const IVolumeMaterial> volumeMaterial, double loc0Min, 0090 double loc0Max, double loc1Min, double loc1Max, 0091 const std::string& volumeName = "UndefinedVolume", 0092 BinningType btype = arbitrary) const = 0; 0093 0094 /// Create a gap volume from dimensions and 0095 /// 0096 /// @param gctx is the geometry context for witch the volume is built 0097 /// @param mtvVector Vector of confined TrackingVolumes 0098 /// @param volumeMaterial material properties for this TrackingVolume 0099 /// @param loc0Min, loc0Max, loc1Min, loc1Max : local position in space, 0100 /// this TrackingVolume is restricted to Translation only 0101 /// @param materialLayers number of material layers (equidistant binning) 0102 /// @param cylinder type of layers 0103 /// @param volumeName volume name to be given 0104 /// 0105 /// @return shared pointer to a new TrackingVolume 0106 virtual MutableTrackingVolumePtr createGapTrackingVolume( 0107 const GeometryContext& gctx, MutableTrackingVolumeVector& mtvVector, 0108 std::shared_ptr<const IVolumeMaterial> volumeMaterial, double loc0Min, 0109 double loc0Max, double loc1Min, double loc1Max, 0110 unsigned int materialLayers, bool cylinder = true, 0111 const std::string& volumeName = "UndefinedVolume") const = 0; 0112 0113 /// Create a gap volume from dimensions and 0114 /// 0115 /// @param gctx is the geometry context for witch the volume is built 0116 /// @param mtvVector Vector of confined TrackingVolumes 0117 /// @param volumeMaterial material properties for this TrackingVolume 0118 /// @param loc0Min, loc0Max, loc1Min, loc1Max local position in space, 0119 /// @param layerPositions custom layer positions 0120 /// @param cylinder type of layers 0121 /// @param volumeName : volume name to be given 0122 /// @param btype (optional) BinningType - arbitrary(default) or equidistant 0123 /// 0124 /// @return shared pointer to a new TrackingVolume 0125 virtual MutableTrackingVolumePtr createGapTrackingVolume( 0126 const GeometryContext& gctx, MutableTrackingVolumeVector& mtvVector, 0127 std::shared_ptr<const IVolumeMaterial> volumeMaterial, double loc0Min, 0128 double loc0Max, double loc1Min, double loc1Max, 0129 const std::vector<double>& layerPositions, bool cylinder = true, 0130 const std::string& volumeName = "UndefinedVolume", 0131 BinningType btype = arbitrary) const = 0; 0132 0133 /// Create a one level higher TrackingVolue 0134 /// 0135 /// @param gctx is the geometry context for witch the volume is built 0136 /// @param volumes the volumes to be contained 0137 /// 0138 /// @return shared pointer to a new TrackingVolume 0139 virtual MutableTrackingVolumePtr createContainerTrackingVolume( 0140 const GeometryContext& gctx, 0141 const TrackingVolumeVector& volumes) const = 0; 0142 }; 0143 0144 } // namespace Acts
[ Source navigation ] | [ Diff markup ] | [ Identifier search ] | [ general search ] |
This page was automatically generated by the 2.3.7 LXR engine. The LXR team |