ATLAS Offline Software
ITrackingVolumeHelper.h
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2025 CERN for the benefit of the ATLAS collaboration
3 */
4 
6 // ITrackingVolumeHelper.h, (c) ATLAS Detector software
8 
9 #ifndef TRKDETDESCRINTERFACES_ITRACKINGVOLUMEHELPER_H
10 #define TRKDETDESCRINTERFACES_ITRACKINGVOLUMEHELPER_H
11 
12 // Gaudi
13 #include "GaudiKernel/IAlgTool.h"
14 // Trk - template classes & enums
20 // STL
21 #include <string>
22 #include <memory>
23 
25 namespace Trk {
26 
27 class VolumeBounds;
28 class CylinderVolumeBounds;
29 class Material;
30 class Layer;
31 class TrackingVolume;
32 
41 class ITrackingVolumeHelper : virtual public IAlgTool
42 {
43 
44 public:
47 
49  virtual ~ITrackingVolumeHelper() = default;
54  virtual void glueTrackingVolumes(TrackingVolume& firstVol,
55  BoundarySurfaceFace firstFace,
56  TrackingVolume& secondVol,
57  BoundarySurfaceFace secondFace,
58  bool buildBoundaryLayer = false) const = 0;
59 
64  virtual void glueTrackingVolumes(
65  TrackingVolume& firstVol,
66  BoundarySurfaceFace firstFace,
67  const std::vector<TrackingVolume*>& secondVolumes,
68  BoundarySurfaceFace secondFace,
69  bool buildBoundaryLayer = false,
70  bool boundaryFaceExchange = false) const = 0;
71 
77  virtual void glueTrackingVolumes(
78  const std::vector<TrackingVolume*>& firstVolumes,
79  BoundarySurfaceFace firstFace,
80  const std::vector<TrackingVolume*>& secondVolumes,
81  BoundarySurfaceFace secondFace,
82  bool buildBoundaryLayer = false,
83  bool boundaryFaceExchange = false) const = 0;
84 
89  virtual std::unique_ptr<Trk::TrackingVolume> glueTrackingVolumeArrays(
90  std::shared_ptr<TrackingVolume> firstVol,
91  BoundarySurfaceFace firstFace,
92  std::shared_ptr<TrackingVolume> secondVol,
93  BoundarySurfaceFace secondFace,
94  const std::string& name) const = 0;
95 
101  BoundarySurfaceFace face,
102  TrackingVolume* insidevol) const = 0;
104  TrackingVolume& tvol,
105  BoundarySurfaceFace face,
106  std::shared_ptr<BinnedArray<TrackingVolume>> insidevolarray) const = 0;
107 
113  BoundarySurfaceFace face,
114  TrackingVolume* outsidevol) const = 0;
115 
121  TrackingVolume& tvol,
122  BoundarySurfaceFace face,
123  std::shared_ptr<BinnedArray<TrackingVolume>> outsidevolarray) const = 0;
124 
125 protected:
127  void associateLayer(const Layer& lay, Surface& sf) const
128  {
129  sf.associateLayer(lay);
130  }
131 };
132 
133 } // end of namespace
134 
135 #endif // TRKDETDESCRINTERFACES_IITRACKINGVOLUMEHELPER_H
Trk::ITrackingVolumeHelper::setInsideTrackingVolumeArray
virtual void setInsideTrackingVolumeArray(TrackingVolume &tvol, BoundarySurfaceFace face, std::shared_ptr< BinnedArray< TrackingVolume >> insidevolarray) const =0
Trk::ITrackingVolumeHelper::glueTrackingVolumes
virtual void glueTrackingVolumes(TrackingVolume &firstVol, BoundarySurfaceFace firstFace, TrackingVolume &secondVol, BoundarySurfaceFace secondFace, bool buildBoundaryLayer=false) const =0
Glue Volume method: One to one — Neccessary as friendship cannot be inherited: your father's friend i...
Trk::ITrackingVolumeHelper::DeclareInterfaceID
DeclareInterfaceID(ITrackingVolumeHelper, 1, 0)
Creates the InterfaceID and interfaceID() method.
BinnedArray.h
BinningType.h
Trk::BoundarySurfaceFace
BoundarySurfaceFace
Definition: BoundarySurfaceFace.h:31
python.RingerConstants.Layer
Layer
Definition: RingerConstants.py:42
Trk::ITrackingVolumeHelper::~ITrackingVolumeHelper
virtual ~ITrackingVolumeHelper()=default
Virtual destructor.
Trk::ITrackingVolumeHelper::glueTrackingVolumes
virtual void glueTrackingVolumes(TrackingVolume &firstVol, BoundarySurfaceFace firstFace, const std::vector< TrackingVolume * > &secondVolumes, BoundarySurfaceFace secondFace, bool buildBoundaryLayer=false, bool boundaryFaceExchange=false) const =0
Glue Volume method: One to many — Neccessary as friendship cannot be inherited: your father's friend ...
GeoPrimitives.h
Trk::ITrackingVolumeHelper::setOutsideTrackingVolume
virtual void setOutsideTrackingVolume(TrackingVolume &tvol, BoundarySurfaceFace face, TrackingVolume *outsidevol) const =0
Glue Volume method: set outside Volume — Neccessary as friendship cannot be inherited: your father's ...
Trk::ITrackingVolumeHelper::setOutsideTrackingVolumeArray
virtual void setOutsideTrackingVolumeArray(TrackingVolume &tvol, BoundarySurfaceFace face, std::shared_ptr< BinnedArray< TrackingVolume >> outsidevolarray) const =0
Glue Volume method: set outside Volume array — Neccessary as friendship cannot be inherited: your fat...
Trk
Ensure that the ATLAS eigen extensions are properly loaded.
Definition: FakeTrackBuilder.h:9
Trk::ITrackingVolumeHelper::glueTrackingVolumes
virtual void glueTrackingVolumes(const std::vector< TrackingVolume * > &firstVolumes, BoundarySurfaceFace firstFace, const std::vector< TrackingVolume * > &secondVolumes, BoundarySurfaceFace secondFace, bool buildBoundaryLayer=false, bool boundaryFaceExchange=false) const =0
Method to glue two VolumeArrays together (at navigation level) - without output — Necessary as friend...
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:240
BoundarySurfaceFace.h
BoundarySurface.h
mapkey::sf
@ sf
Definition: TElectronEfficiencyCorrectionTool.cxx:38
Trk::ITrackingVolumeHelper::glueTrackingVolumeArrays
virtual std::unique_ptr< Trk::TrackingVolume > glueTrackingVolumeArrays(std::shared_ptr< TrackingVolume > firstVol, BoundarySurfaceFace firstFace, std::shared_ptr< TrackingVolume > secondVol, BoundarySurfaceFace secondFace, const std::string &name) const =0
Glue Volume method: many to many plus enveloping volume — Neccessary as friendship cannot be inherite...
Trk::BinnedArray
Definition: BinnedArray.h:36
Trk::ITrackingVolumeHelper
Definition: ITrackingVolumeHelper.h:42
Trk::Surface
Definition: Tracking/TrkDetDescr/TrkSurfaces/TrkSurfaces/Surface.h:79
checker_macros.h
Define macros for attributes used to control the static checker.
Trk::TrackingVolume
Definition: TrackingVolume.h:119
Material
@ Material
Definition: MaterialTypes.h:8
Trk::ITrackingVolumeHelper::associateLayer
void associateLayer(const Layer &lay, Surface &sf) const
Protected method to register the Layer to the Surface.
Definition: ITrackingVolumeHelper.h:127
Trk::ITrackingVolumeHelper::setInsideTrackingVolume
virtual void setInsideTrackingVolume(TrackingVolume &tvol, BoundarySurfaceFace face, TrackingVolume *insidevol) const =0
Glue Volume method: set inside Volume — Neccessary as friendship cannot be inherited: your father's f...
Trk::Layer
Definition: Layer.h:72