ATLAS Offline Software
Loading...
Searching...
No Matches
ActsTrackingGeometrySvc.h
Go to the documentation of this file.
1/*
2 Copyright (C) 2002-2025 CERN for the benefit of the ATLAS collaboration
3*/
4
5#ifndef ACTSGEOMETRY_ACTSTRACKINGGEOMETRYSVC_H
6#define ACTSGEOMETRY_ACTSTRACKINGGEOMETRYSVC_H
7
8// ATHENA
10
11// PACKAGE
18
19// ACTS
20#include "Acts/Geometry/CylinderVolumeBuilder.hpp"
21
22// STL
23#include <map>
24
25#include <tbb/concurrent_unordered_map.h>
26
27namespace InDetDD {
31}
32
33class TRT_ID;
34class ActsAlignmentStore;
36class HGTD_ID;
38
40
41namespace Acts {
42
43class TrackingGeometry;
44class CylinderVolumeHelper;
45class ILayerBuilder;
46
47class GeometryIdentifier;
48class BinnedSurfaceMaterial;
49
50namespace Experimental {
51class BlueprintNode;
52}
53
54}
55
56class ActsTrackingGeometrySvc : public extends<AthService, ActsTrk::ITrackingGeometrySvc> {
57public:
58
59 StatusCode initialize() override;
60
61 ActsTrackingGeometrySvc( const std::string& name, ISvcLocator* pSvcLocator );
63 std::shared_ptr<const Acts::TrackingGeometry> trackingGeometry() override;
65 unsigned int populateAlignmentStore(ActsTrk::DetectorAlignStore& store) const override;
66
68 const ActsTrk::GeometryContext& getNominalContext() const override;
70 const Acts::TrackingVolume* getEnvelope(const ActsTrk::SystemEnvelope envType) const override;
71
72private:
75
76 std::shared_ptr<const Acts::ILayerBuilder>
78
79 std::shared_ptr<const Acts::ILayerBuilder>
81
82 std::shared_ptr<Acts::TrackingVolume>
83 makeSCTTRTAssembly(const Acts::GeometryContext& gctx, const Acts::ILayerBuilder& sct_lb,
84 const Acts::ILayerBuilder& trt_lb, const Acts::CylinderVolumeHelper& cvh,
85 const std::shared_ptr<const Acts::TrackingVolume>& pixel);
86
87 Acts::CylinderVolumeBuilder::Config makeBeamPipeConfig(
88 std::shared_ptr<const Acts::CylinderVolumeHelper> cvh) const;
89
90 bool runConsistencyChecks() const;
91
100
101 std::shared_ptr<ActsElementVector> m_elementStore{nullptr};
102 std::shared_ptr<const Acts::TrackingGeometry> m_trackingGeometry{nullptr};
103
104 const TRT_ID *m_TRT_idHelper{nullptr};
105 const HGTD_ID *m_HGTD_idHelper{nullptr};
106
108
109 Gaudi::Property<bool> m_useMaterialMap{this, "UseMaterialMap", false, ""};
110 Gaudi::Property<bool> m_objDebugOutput{this, "ObjDebugOutput", false, ""};
111 Gaudi::Property<std::string> m_materialMapInputFileBase{this, "MaterialMapInputFile", "", ""};
112 Gaudi::Property<std::string> m_materialMapCalibFolder{this, "MaterialMapCalibFolder", ".", ""};
113 Gaudi::Property<bool> m_buildBeamPipe{this, "BuildBeamPipe", false, ""};
114
116 Gaudi::Property<bool> m_printGeo{this, "printGeometry", false};
117
118 Gaudi::Property<std::vector<size_t>> m_barrelMaterialBins{this, "BarrelMaterialBins", {10, 10}};
119 Gaudi::Property<std::vector<size_t>> m_endcapMaterialBins{this, "EndcapMaterialBins", {5, 20}};
120 Gaudi::Property<std::vector<std::string>> m_buildSubdetectors{this, "BuildSubDetectors", {"Pixel", "SCT", "TRT", "Calo", "HGTD", "Muon"}};
121
126 Gaudi::Property<std::vector<float>> m_passiveITkInnerPixelBarrelLayerRadii{this, "PassiveITkInnerPixelBarrelLayerRadii", {}};
127 Gaudi::Property<std::vector<float>> m_passiveITkInnerPixelBarrelLayerHalflengthZ{this, "PassiveITkInnerPixelBarrelLayerHalflengthZ", {}};
128 Gaudi::Property<std::vector<float>> m_passiveITkInnerPixelBarrelLayerThickness{this, "PassiveITkInnerPixelBarrelLayerThickness", {}};
129
130 Gaudi::Property<std::vector<float>> m_passiveITkOuterPixelBarrelLayerRadii{this, "PassiveITkOuterPixelBarrelLayerRadii", {}};
131 Gaudi::Property<std::vector<float>> m_passiveITkOuterPixelBarrelLayerHalflengthZ{this, "PassiveITkOuterPixelBarrelLayerHalflengthZ", {}};
132 Gaudi::Property<std::vector<float>> m_passiveITkOuterPixelBarrelLayerThickness{this, "PassiveITkOuterPixelBarrelLayerThickness", {}};
133
134 Gaudi::Property<std::vector<float>> m_passiveITkStripBarrelLayerRadii{this, "PassiveITkStripBarrelLayerRadii", {}};
135 Gaudi::Property<std::vector<float>> m_passiveITkStripBarrelLayerHalflengthZ{this, "PassiveITkStripBarrelLayerHalflengthZ", {}};
136 Gaudi::Property<std::vector<float>> m_passiveITkStripBarrelLayerThickness{this, "PassiveITkStripBarrelLayerThickness", {}};
137
138 BooleanProperty m_runConsistencyChecks{this, "RunConsistencyChecks",
139 false, "Run extra consistency checks w.r.t to Trk::. This is SLOW!"};
140
141 StringProperty m_consistencyCheckOutput{this, "ConsistencyCheckOutput",
142 "", "Output file for geometry debugging, will not write if empty",};
143
144 Gaudi::Property<size_t> m_consistencyCheckPoints{this, "ConsistencyCheckPoints",
145 1000, "number of random points for consistency check"};
146
147 ToolHandle<IActsTrackingVolumeBuilder> m_caloVolumeBuilder{this, "CaloVolumeBuilder", ""};
148
149 ToolHandleArray<ActsTrk::IBlueprintNodeBuilder> m_blueprintNodeBuilders{this, "BlueprintNodeBuilders", {}};
150
151 ToolHandleArray<ActsTrk::IRefineTrackingGeoTool> m_refineVisitors{this, "RefinementTools", {}};
153 Gaudi::Property<std::vector<unsigned int>> m_subDetNoAlignProp{this, "NotAlignDetectors", {}};
154 std::set<ActsTrk::DetectorType> m_subDetNoAlign{};
155
156 Gaudi::Property<bool> m_useBlueprint{this, "UseBlueprint", false, "Use the new Blueprint API for geometry construction"};
157
158 Gaudi::Property<std::string> m_blueprintGraphviz{this, "BlueprintGraphviz",
159 "", "Write the blueprint graph to a file. No file will be written if empty"};
160 Gaudi::Property<bool> m_doEndcapLayerMerging{this, "DoEndcapLayerMerging", true, "Merge overlapping endcap layers in z"};
161
165 Gaudi::Property<double> m_numberOfBinsFactor{this, "NumberOfBinsFactor", 5.0};
166
168 Gaudi::Property<double> m_numberOfInnermostLayerBinsFactor{this, "NumberOfInnermostLayerBinsFactor",2.0};
169
170
171};
172
173
174
175#endif
Helper to hold elements for deletion.
ActsTrk::GeometryContext m_nominalContext
ToolHandleArray< ActsTrk::IBlueprintNodeBuilder > m_blueprintNodeBuilders
Acts::CylinderVolumeBuilder::Config makeBeamPipeConfig(std::shared_ptr< const Acts::CylinderVolumeHelper > cvh) const
ToolHandleArray< ActsTrk::IRefineTrackingGeoTool > m_refineVisitors
std::shared_ptr< ActsElementVector > m_elementStore
Gaudi::Property< std::vector< float > > m_passiveITkInnerPixelBarrelLayerHalflengthZ
Gaudi::Property< std::vector< float > > m_passiveITkStripBarrelLayerThickness
unsigned int populateAlignmentStore(ActsTrk::DetectorAlignStore &store) const override
Loops through the volumes of the tracking geometry and caches the aligned transforms in the store.
const InDetDD::TRT_DetectorManager * p_TRTManager
ServiceHandle< StoreGateSvc > m_detStore
Gaudi::Property< std::vector< unsigned int > > m_subDetNoAlignProp
Define the subdetectors for which the tracking geometry does not expect a valid alignment store.
Gaudi::Property< std::string > m_blueprintGraphviz
std::shared_ptr< const Acts::ILayerBuilder > makeHGTDLayerBuilder(const HGTD_DetectorManager *manager)
Gaudi::Property< bool > m_useMaterialMap
std::shared_ptr< const Acts::TrackingGeometry > m_trackingGeometry
Gaudi::Property< std::string > m_materialMapCalibFolder
std::shared_ptr< const Acts::TrackingGeometry > trackingGeometry() override
Returns a pointer to the internal ACTS tracking geometry.
const HGTD_DetectorManager * p_HGTDManager
Gaudi::Property< std::vector< float > > m_passiveITkOuterPixelBarrelLayerThickness
const InDetDD::SiDetectorManager * p_pixelManager
Gaudi::Property< bool > m_objDebugOutput
Gaudi::Property< std::vector< float > > m_passiveITkOuterPixelBarrelLayerRadii
std::shared_ptr< const Acts::ILayerBuilder > makeStrawLayerBuilder(const InDetDD::InDetDetectorManager *manager)
Gaudi::Property< size_t > m_consistencyCheckPoints
const ActsTrk::GeometryContext & getNominalContext() const override
Returns an empty nominal context without any alignment caches.
const Acts::TrackingVolume * getEnvelope(const ActsTrk::SystemEnvelope envType) const override
Returns the envelope volume from the tracking geometry that's containing all volumes of the subsystem...
Gaudi::Property< double > m_numberOfBinsFactor
controls how many bins are created for the sensitive surface grid.
Gaudi::Property< std::string > m_materialMapInputFileBase
const InDetDD::SiDetectorManager * p_ITkStripManager
Gaudi::Property< std::vector< size_t > > m_endcapMaterialBins
Gaudi::Property< std::vector< float > > m_passiveITkStripBarrelLayerRadii
Gaudi::Property< double > m_numberOfInnermostLayerBinsFactor
Special treatment for the innermost pixel layer to have more control on bin size to account for shall...
std::set< ActsTrk::DetectorType > m_subDetNoAlign
const BeamPipeDetectorManager * p_beamPipeMgr
Gaudi::Property< bool > m_printGeo
Print the assembled tracking geometry after building.
Gaudi::Property< bool > m_buildBeamPipe
Gaudi::Property< std::vector< std::string > > m_buildSubdetectors
Gaudi::Property< bool > m_doEndcapLayerMerging
ToolHandle< IActsTrackingVolumeBuilder > m_caloVolumeBuilder
ActsTrackingGeometrySvc(const std::string &name, ISvcLocator *pSvcLocator)
std::shared_ptr< Acts::TrackingVolume > makeSCTTRTAssembly(const Acts::GeometryContext &gctx, const Acts::ILayerBuilder &sct_lb, const Acts::ILayerBuilder &trt_lb, const Acts::CylinderVolumeHelper &cvh, const std::shared_ptr< const Acts::TrackingVolume > &pixel)
Gaudi::Property< std::vector< float > > m_passiveITkOuterPixelBarrelLayerHalflengthZ
Gaudi::Property< std::vector< size_t > > m_barrelMaterialBins
Gaudi::Property< std::vector< float > > m_passiveITkInnerPixelBarrelLayerRadii
the specifications for building additional passive cylinders in the barrel region: for each cylinder ...
Gaudi::Property< std::vector< float > > m_passiveITkInnerPixelBarrelLayerThickness
Gaudi::Property< std::vector< float > > m_passiveITkStripBarrelLayerHalflengthZ
const InDetDD::SiDetectorManager * p_SCTManager
const InDetDD::SiDetectorManager * p_ITkPixelManager
ActsLayerBuilder::Config makeLayerBuilderConfig(const InDetDD::InDetDetectorManager *manager)
Gaudi::Property< bool > m_useBlueprint
The Detector manager has methods to retrieve the Identifier helper and methods to retrieve the detect...
This is an Identifier helper class for the HGTD subdetector.
Definition HGTD_ID.h:47
Virtual base class for all ID detector managers.
Base class for Pixel and SCT Detector managers.
The Detector Manager for all TRT Detector elements, it acts as the interface to the detector elements...
This is an Identifier helper class for the TRT subdetector.
Definition TRT_ID.h:84
SystemEnvelope
Define an enumeration to retrieve the envelope tracking volume from.
Message Stream Member.
nested configuration struct for steering of the layer builder