ATLAS Offline Software
ITrackingVolumeHelper.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 // 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
21 // STL
22 #include <string>
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 
90  BoundarySurfaceFace firstFace,
91  TrackingVolume& secondVol,
92  BoundarySurfaceFace secondFace,
93  std::string name) const = 0;
94 
95  virtual std::unique_ptr<Trk::TrackingVolume> glueTrackingVolumeArrays(std::shared_ptr<TrackingVolume> firstVol,
96  BoundarySurfaceFace firstFace,
97  std::shared_ptr<TrackingVolume> secondVol,
98  BoundarySurfaceFace secondFace,
99  const std::string& name) const = 0;
100 
106  BoundarySurfaceFace face,
107  TrackingVolume* insidevol) const = 0;
109  TrackingVolume& tvol,
110  BoundarySurfaceFace face,
111  BinnedArray<TrackingVolume>* insidevolarray) const = 0;
112 
114  TrackingVolume& tvol,
115  BoundarySurfaceFace face,
116  SharedObject<BinnedArray<TrackingVolume>> insidevolarray) const = 0;
117 
123  BoundarySurfaceFace face,
124  TrackingVolume* outsidevol) const = 0;
125 
131  TrackingVolume& tvol,
132  BoundarySurfaceFace face,
133  BinnedArray<TrackingVolume>* outsidevolarray) const = 0;
134 
136  TrackingVolume& tvol,
137  BoundarySurfaceFace face,
138  SharedObject<BinnedArray<TrackingVolume>> outsidevolarray) const = 0;
139 
140 protected:
142  void associateLayer(const Layer& lay, Surface& sf) const
143  {
144  sf.associateLayer(lay);
145  }
146 };
147 
148 } // end of namespace
149 
150 #endif // TRKDETDESCRINTERFACES_IITRACKINGVOLUMEHELPER_H
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.
Trk::ITrackingVolumeHelper::setOutsideTrackingVolumeArray
virtual void setOutsideTrackingVolumeArray(TrackingVolume &tvol, BoundarySurfaceFace face, BinnedArray< TrackingVolume > *outsidevolarray) const =0
Glue Volume method: set outside Volume array — Neccessary as friendship cannot be inherited: your fat...
Trk::ITrackingVolumeHelper::setOutsideTrackingVolumeArray
virtual void setOutsideTrackingVolumeArray(TrackingVolume &tvol, BoundarySurfaceFace face, SharedObject< BinnedArray< TrackingVolume >> outsidevolarray) const =0
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::glueTrackingVolumeArrays
virtual Trk::TrackingVolume * glueTrackingVolumeArrays(TrackingVolume &firstVol, BoundarySurfaceFace firstFace, TrackingVolume &secondVol, BoundarySurfaceFace secondFace, std::string name) const =0
Glue Volume method: many to many plus enveloping volume — Neccessary as friendship cannot be inherite...
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::setInsideTrackingVolumeArray
virtual void setInsideTrackingVolumeArray(TrackingVolume &tvol, BoundarySurfaceFace face, SharedObject< BinnedArray< TrackingVolume >> insidevolarray) const =0
SharedObject.h
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:192
BoundarySurfaceFace.h
BoundarySurface.h
Trk::SharedObject
std::shared_ptr< T > SharedObject
Definition: SharedObject.h:24
mapkey::sf
@ sf
Definition: TElectronEfficiencyCorrectionTool.cxx:38
Trk::ITrackingVolumeHelper::setInsideTrackingVolumeArray
virtual void setInsideTrackingVolumeArray(TrackingVolume &tvol, BoundarySurfaceFace face, BinnedArray< TrackingVolume > *insidevolarray) const =0
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
Trk::BinnedArray
Definition: BinnedArray.h:38
Trk::ITrackingVolumeHelper
Definition: ITrackingVolumeHelper.h:42
Trk::Surface
Definition: Tracking/TrkDetDescr/TrkSurfaces/TrkSurfaces/Surface.h:75
checker_macros.h
Define macros for attributes used to control the static checker.
Trk::TrackingVolume
Definition: TrackingVolume.h:121
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:142
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:73