ATLAS Offline Software
TrackingGeometry.h
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2023 CERN for the benefit of the ATLAS collaboration
3 */
4 
6 // TrackingGeometry.h, (c) ATLAS Detector software
8 
9 #ifndef TRKGEOMETRY_TRACKINGGEOMETRY_H
10 #define TRKGEOMETRY_TRACKINGGEOMETRY_H
11 
12 // Amg
14 // Trk
17 // CLASS DEF
18 #include "AthenaKernel/CLASS_DEF.h"
19 // STL
20 #include <map>
21 // ATH_MSG macros
23 //boost
24 #include <ranges>
25 
27 
28 class MsgStream;
29 
30 // must be known to declare friend class
31 namespace Muon {
32 class MuonTrackingGeometryBuilderCond;
33 }
34 
35 namespace Trk {
36 
42 {
45  association = 2
46 };
47 
48 class TrackingVolume;
49 class Layer;
50 class MaterialProperties;
51 
66 {
67 
69  friend class GeometryBuilder;
70 
71  friend class GeometryBuilderCond;
72 
73 public:
74 
76  TrackingGeometry(TrackingVolume* highestVolume,
77  NavigationLevel navlevel = globalSearch);
79  virtual ~TrackingGeometry();
80 
84 
85 
87  const TrackingVolume* lowestTrackingVolume(const Amg::Vector3D& gp) const;
88 
90  std::vector<const Trk::DetachedTrackingVolume*>
92 
95  const Amg::Vector3D& gp) const;
96 
98  const TrackingVolume* trackingVolume(const std::string& name) const;
99 
101  const Layer* associatedLayer(const Amg::Vector3D& gp) const;
102 
104  const Layer* nextLayer(const Amg::Vector3D& gp,
105  const Amg::Vector3D& mom,
106  bool skipNavLayer = false) const;
107 
109  template<class T>
112  const BoundaryCheck& bchk = true) const;
114  static bool atVolumeBoundary(const Amg::Vector3D& gp,
115  const TrackingVolume* vol,
116  double tol);
117 
119  static bool atVolumeBoundary(const Amg::Vector3D& gp,
120  const Amg::Vector3D& mom,
121  const TrackingVolume* vol,
122  const TrackingVolume*& nextVol,
124  double tol);
125 
127  const std::map<Layer*, int>& boundaryLayers() ;
128  auto boundaryLayers() const;
129 
130  size_t numBoundaryLayers() const;
134 
136  void printVolumeHierarchy(MsgStream& msgstream) const;
137 
140  void indexStaticLayers(GeometrySignature geosit, int offset = 0);
141 
142  void dump(MsgStream& out, const std::string& head) const;
143 
144  // get ownership of Muon Tracking Geometry Elements
145  void addToGarbage(std::vector<std::unique_ptr<Trk::DetachedTrackingVolume>>&& garbageVec);
146  void addToGarbage(std::vector<std::unique_ptr<Trk::TrackingVolume>>&& garbageVec);
147 
148 
149  private:
152  void sign(GeometrySignature geosit, GeometryType geotype = Static);
153 
158  void compactify(MsgStream& msgstream, TrackingVolume* vol = nullptr);
159 
162  void synchronizeLayers(MsgStream& msgstream, TrackingVolume* vol = nullptr);
163 
166 
169  TrackingVolume* mvol = nullptr,
170  int lvl = 0);
171 
175 
177  void printVolumeInformation(MsgStream& msgstream,
178  const TrackingVolume& tvol,
179  int lvl) const;
180 
181  static void dumpLayer(MsgStream& out,
182  const std::string& head,
183  const Layer* layer);
184 
187 
189  std::map<Layer*, int> m_boundaryLayers;
190 
192  std::map<const std::string, const TrackingVolume*> m_trackingVolumes;
193 
196 
203  std::vector<std::unique_ptr<DetachedTrackingVolume>> m_detachedVolGarbage{};
204  std::vector<std::unique_ptr<TrackingVolume>> m_trkVolumeGarbage{};
205 
206 };
207 
208 } // end of namespace
210 CLASS_DEF(Trk::TrackingGeometry, 167645219, 1)
211 #include "AthenaKernel/CondCont.h"
213 
214 #endif // TRKGEOMETRY_TRACKINGGEOMETRY_H
make_hlt_rep.pars
pars
Definition: make_hlt_rep.py:90
Trk::TrackingGeometry::m_world
TrackingVolume * m_world
The known world - and the beam.
Definition: TrackingGeometry.h:186
Trk::TrackingGeometry::atVolumeBoundary
static bool atVolumeBoundary(const Amg::Vector3D &gp, const TrackingVolume *vol, double tol)
check position at volume boundary
Definition: TrackingGeometry.cxx:246
Trk::Static
@ Static
Definition: GeometrySignature.h:38
Trk::TrackingGeometry::m_boundaryLayers
std::map< Layer *, int > m_boundaryLayers
The unique boundary Layers.
Definition: TrackingGeometry.h:189
GeometrySignature.h
AthMsgStreamMacros.h
Trk::TrackingGeometry::numBoundaryLayers
size_t numBoundaryLayers() const
GeometrySignature
Trk::TrackingGeometry::dump
void dump(MsgStream &out, const std::string &head) const
Definition: TrackingGeometry.cxx:290
Trk::globalSearch
@ globalSearch
Definition: TrackingGeometry.h:44
python.AthDsoLogger.out
out
Definition: AthDsoLogger.py:70
Trk::TrackingGeometry::registerTrackingVolumes
void registerTrackingVolumes(TrackingVolume &tvol, TrackingVolume *mvol=nullptr, int lvl=0)
private method to register recursively the tracking volumes
Definition: TrackingGeometry.cxx:85
Trk::alongMomentum
@ alongMomentum
Definition: PropDirection.h:20
Trk::TrackingGeometry::~TrackingGeometry
virtual ~TrackingGeometry()
Destructor.
Definition: TrackingGeometry.cxx:33
Trk::TrackingGeometry::nextLayer
const Layer * nextLayer(const Amg::Vector3D &gp, const Amg::Vector3D &mom, bool skipNavLayer=false) const
Forward the next Layer information.
Muon
NRpcCablingAlg reads raw condition data and writes derived condition data to the condition store.
Definition: TrackSystemController.h:45
Trk::TrackingGeometry::m_trkVolumeGarbage
std::vector< std::unique_ptr< TrackingVolume > > m_trkVolumeGarbage
Definition: TrackingGeometry.h:204
python.RingerConstants.Layer
Layer
Definition: RingerConstants.py:42
Trk::TrackingGeometry::synchronizeLayers
void synchronizeLayers(MsgStream &msgstream, TrackingVolume *vol=nullptr)
Geometry Builder business: synchronize all layers to enclosed volume dimensions.
Definition: TrackingGeometry.cxx:158
Trk::noNavigation
@ noNavigation
Definition: TrackingGeometry.h:43
Trk::TrackingGeometry::dumpLayer
static void dumpLayer(MsgStream &out, const std::string &head, const Layer *layer)
Definition: TrackingGeometry.cxx:325
GeoPrimitives.h
Trk::NavigationLevel
NavigationLevel
Definition: TrackingGeometry.h:42
Trk::PropDirection
PropDirection
Definition: PropDirection.h:19
Trk::TrackingGeometry::highestTrackingVolume
const TrackingVolume * highestTrackingVolume() const
return the world
ParticleGun_EoverP_Config.mom
mom
Definition: ParticleGun_EoverP_Config.py:63
Trk::TrackingGeometry::closestMaterialLayer
LayerIntersection< Amg::Vector3D > closestMaterialLayer(const T &pars, PropDirection pDir=Trk::alongMomentum, const BoundaryCheck &bchk=true) const
Closest Material Layer - used for the mapping option.
TrackingGeometry.icc
Trk::TrackingGeometry::boundaryLayers
auto boundaryLayers() const
Trk::TrackingGeometry
Definition: TrackingGeometry.h:66
Trk::GeometryBuilderCond
Definition: GeometryBuilderCond.h:50
TRT::Hit::layer
@ layer
Definition: HitInfo.h:79
Trk::TrackingGeometry::lowestStaticTrackingVolume
const TrackingVolume * lowestStaticTrackingVolume(const Amg::Vector3D &gp) const
return the lowest static tracking Volume
Definition: TrackingGeometry.cxx:72
Trk::association
@ association
Definition: TrackingGeometry.h:45
Trk::TrackingGeometry::addToGarbage
void addToGarbage(std::vector< std::unique_ptr< Trk::DetachedTrackingVolume >> &&garbageVec)
Definition: TrackingGeometry.cxx:36
Trk::TrackingGeometry::compactify
void compactify(MsgStream &msgstream, TrackingVolume *vol=nullptr)
Geometry Builder busineess: set all contained surfaces TG owned - this should save memory and avoid s...
Definition: TrackingGeometry.cxx:137
Trk::TrackingGeometry::sign
void sign(GeometrySignature geosit, GeometryType geotype=Static)
Geometry Builder busineess: the geometry builder has to sign.
beamspotman.dir
string dir
Definition: beamspotman.py:619
Trk::TrackingGeometry::indexStaticLayers
void indexStaticLayers(GeometrySignature geosit, int offset=0)
indexLayers : method to re-set the index of the layers, depending on geometrySignature
Definition: TrackingGeometry.cxx:237
head
std::string head(std::string s, const std::string &pattern)
head of a string
Definition: computils.cxx:312
Trk
Ensure that the ATLAS eigen extensions are properly loaded.
Definition: FakeTrackBuilder.h:9
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:240
Trk::TrackingGeometry::TrackingGeometry
TrackingGeometry(TrackingVolume *highestVolume, NavigationLevel navlevel=globalSearch)
Constructor.
Definition: TrackingGeometry.cxx:24
Trk::TrackingGeometry::registerNavigationLevel
void registerNavigationLevel(NavigationLevel navlevel)
private method the Navigation Level
Trk::TrackingGeometry::printVolumeHierarchy
void printVolumeHierarchy(MsgStream &msgstream) const
Print the summary of volume Hierarchy of the TrackingGeometry.
Definition: TrackingGeometry.cxx:174
Trk::TrackingGeometry::m_navigationLevel
NavigationLevel m_navigationLevel
The Navigation level for identification.
Definition: TrackingGeometry.h:195
Amg::Vector3D
Eigen::Matrix< double, 3, 1 > Vector3D
Definition: GeoPrimitives.h:47
Trk::TrackingGeometry::boundaryLayers
const std::map< Layer *, int > & boundaryLayers()
Return the unique BoundarySurfaces with MaterialInformation.
Trk::TrackingGeometry::m_detachedVolGarbage
std::vector< std::unique_ptr< DetachedTrackingVolume > > m_detachedVolGarbage
In some cases the Tracking Geometry needs to keep certain objectss alive delete them at the end of it...
Definition: TrackingGeometry.h:203
TrackingVolume.h
Trk::TrackingGeometry::highestTrackingVolume
TrackingVolume * highestTrackingVolume()
Trk::TrackingGeometry::lowestDetachedTrackingVolumes
std::vector< const Trk::DetachedTrackingVolume * > lowestDetachedTrackingVolumes(const Amg::Vector3D &gp) const
return the vector of lowest detached tracking Volume(->overlaps)
Definition: TrackingGeometry.cxx:60
Trk::BoundaryCheck
Definition: BoundaryCheck.h:51
CLASS_DEF
#define CLASS_DEF(NAME, CID, VERSION)
associate a clid and a version to a type eg
Definition: Control/AthenaKernel/AthenaKernel/CLASS_DEF.h:67
Trk::TrackingGeometry::checkoutHighestTrackingVolume
TrackingVolume * checkoutHighestTrackingVolume()
private method to be called from GeometryBuilder: return the world with ownership
Definition: TrackingGeometry.cxx:165
Trk::TrackingGeometry::trackingVolume
const TrackingVolume * trackingVolume(const std::string &name) const
return the tracking Volume by name, 0 if it doesn't exist
convertTimingResiduals.offset
offset
Definition: convertTimingResiduals.py:71
Trk::TrackingGeometry::lowestTrackingVolume
const TrackingVolume * lowestTrackingVolume(const Amg::Vector3D &gp) const
return the lowest tracking Volume
Definition: TrackingGeometry.cxx:48
Trk::TrackingGeometry::printVolumeInformation
void printVolumeInformation(MsgStream &msgstream, const TrackingVolume &tvol, int lvl) const
print VolumeInformation with Level
Definition: TrackingGeometry.cxx:185
Trk::GeometryType
GeometryType
Definition: GeometrySignature.h:37
Trk::FullIntersection
Class extension to return the object, a represenation & the result.
Definition: Intersection.h:64
CONDCONT_MIXED_DEF
CONDCONT_MIXED_DEF(Trk::TrackingGeometry, 119021535)
Trk::GeometryBuilder
Definition: GeometryBuilder.h:50
Trk::TrackingGeometry::associatedLayer
const Layer * associatedLayer(const Amg::Vector3D &gp) const
Forward the associated Layer information.
checker_macros.h
Define macros for attributes used to control the static checker.
Trk::TrackingVolume
Definition: TrackingVolume.h:119
CLASS_DEF.h
macros to associate a CLID to a type
Trk::TrackingGeometry::navigationLevel
NavigationLevel navigationLevel() const
Return the Navigation Level - only one TrackingGeometry can have full association to GeoModel.
TSU::T
unsigned long long T
Definition: L1TopoDataTypes.h:35
Trk::TrackingGeometry::m_trackingVolumes
std::map< const std::string, const TrackingVolume * > m_trackingVolumes
The Volumes in a map for later finding.
Definition: TrackingGeometry.h:192
Trk::Layer
Definition: Layer.h:72