ATLAS Offline Software
Loading...
Searching...
No Matches
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
25namespace Trk {
26
27class VolumeBounds;
29class Material;
30class Layer;
31class TrackingVolume;
32
41class ITrackingVolumeHelper : virtual public IAlgTool
42{
43
44public:
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
102 TrackingVolume* insidevol) const = 0;
104 TrackingVolume& tvol,
106 std::shared_ptr<BinnedArray<TrackingVolume>> insidevolarray) const = 0;
107
114 TrackingVolume* outsidevol) const = 0;
115
121 TrackingVolume& tvol,
123 std::shared_ptr<BinnedArray<TrackingVolume>> outsidevolarray) const = 0;
124
125protected:
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
Define macros for attributes used to control the static checker.
Binned Array for avoiding map searches/.
Definition BinnedArray.h:36
Bounds for a cylindrical Volume, the decomposeToSurfaces method creates a vector of up to 6 surfaces:
Interface class ITrackingVolumeHelpers It inherits from IAlgTool.
void associateLayer(const Layer &lay, Surface &sf) const
Protected method to register the Layer to the Surface.
virtual ~ITrackingVolumeHelper()=default
Virtual destructor.
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...
virtual void setInsideTrackingVolumeArray(TrackingVolume &tvol, BoundarySurfaceFace face, std::shared_ptr< BinnedArray< TrackingVolume > > insidevolarray) const =0
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...
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 ...
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 ...
DeclareInterfaceID(ITrackingVolumeHelper, 1, 0)
Creates the InterfaceID and interfaceID() method.
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...
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...
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...
Base Class for a Detector Layer in the Tracking realm.
Definition Layer.h:72
A common object to be contained by.
Definition Material.h:117
Abstract Base Class for tracking surfaces.
Full Volume description used in Tracking, it inherits from Volume to get the geometrical structure,...
Pure Absract Base Class for Volume bounds.
Ensure that the ATLAS eigen extensions are properly loaded.
BoundarySurfaceFace
Enum to describe the position of the BoundarySurface respectively to the frame orientatin of the volu...