ATLAS Offline Software
ActsTrackingGeometrySvc.h
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2024 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
17 
18 // ACTS
19 #include "Acts/Geometry/CylinderVolumeBuilder.hpp"
20 
21 // STL
22 #include <map>
23 
24 #include <tbb/concurrent_unordered_map.h>
25 
26 namespace InDetDD {
27  class InDetDetectorManager;
28  class SiDetectorManager;
29  class TRT_DetectorManager;
30 }
31 
32 class TRT_ID;
33 class ActsAlignmentStore;
35 class HGTD_ID;
37 
39 
40 namespace Acts {
41 
42 class TrackingGeometry;
43 class CylinderVolumeHelper;
44 class ILayerBuilder;
45 
46 class GeometryIdentifier;
47 class BinnedSurfaceMaterial;
48 
49 namespace Experimental {
50 class BlueprintNode;
51 }
52 
53 }
54 
55 class ActsTrackingGeometrySvc : public extends<AthService, IActsTrackingGeometrySvc> {
56 public:
57 
58  StatusCode initialize() override;
59 
60  ActsTrackingGeometrySvc( const std::string& name, ISvcLocator* pSvcLocator );
61 
62  std::shared_ptr<const Acts::TrackingGeometry>
63  trackingGeometry() override;
64 
65  unsigned int populateAlignmentStore(ActsTrk::DetectorAlignStore& store) const override;
66 
67  const ActsGeometryContext& getNominalContext() const override;
68 
69 private:
72 
73  std::shared_ptr<const Acts::ILayerBuilder>
75 
76  std::shared_ptr<const Acts::ILayerBuilder>
78 
79  std::shared_ptr<Acts::TrackingVolume>
80  makeSCTTRTAssembly(const Acts::GeometryContext& gctx, const Acts::ILayerBuilder& sct_lb,
81  const Acts::ILayerBuilder& trt_lb, const Acts::CylinderVolumeHelper& cvh,
82  const std::shared_ptr<const Acts::TrackingVolume>& pixel);
83 
84  Acts::CylinderVolumeBuilder::Config makeBeamPipeConfig(
85  std::shared_ptr<const Acts::CylinderVolumeHelper> cvh) const;
86 
87  bool runConsistencyChecks() const;
88 
97 
98  std::shared_ptr<ActsElementVector> m_elementStore{nullptr};
99  std::shared_ptr<const Acts::TrackingGeometry> m_trackingGeometry{nullptr};
100 
101  const TRT_ID *m_TRT_idHelper{nullptr};
102  const HGTD_ID *m_HGTD_idHelper{nullptr};
103 
105 
106  Gaudi::Property<bool> m_useMaterialMap{this, "UseMaterialMap", false, ""};
107  Gaudi::Property<bool> m_objDebugOutput{this, "ObjDebugOutput", false, ""};
108  Gaudi::Property<std::string> m_materialMapInputFileBase{this, "MaterialMapInputFile", "", ""};
109  Gaudi::Property<std::string> m_materialMapCalibFolder{this, "MaterialMapCalibFolder", ".", ""};
110  Gaudi::Property<bool> m_buildBeamPipe{this, "BuildBeamPipe", false, ""};
111 
112  Gaudi::Property<std::vector<size_t>> m_barrelMaterialBins{this, "BarrelMaterialBins", {10, 10}};
113  Gaudi::Property<std::vector<size_t>> m_endcapMaterialBins{this, "EndcapMaterialBins", {5, 20}};
114  Gaudi::Property<std::vector<std::string>> m_buildSubdetectors{this, "BuildSubDetectors", {"Pixel", "SCT", "TRT", "Calo", "HGTD", "Muon"}};
115 
120  Gaudi::Property<std::vector<float>> m_passiveITkInnerPixelBarrelLayerRadii{this, "PassiveITkInnerPixelBarrelLayerRadii", {}};
121  Gaudi::Property<std::vector<float>> m_passiveITkInnerPixelBarrelLayerHalflengthZ{this, "PassiveITkInnerPixelBarrelLayerHalflengthZ", {}};
122  Gaudi::Property<std::vector<float>> m_passiveITkInnerPixelBarrelLayerThickness{this, "PassiveITkInnerPixelBarrelLayerThickness", {}};
123 
124  Gaudi::Property<std::vector<float>> m_passiveITkOuterPixelBarrelLayerRadii{this, "PassiveITkOuterPixelBarrelLayerRadii", {}};
125  Gaudi::Property<std::vector<float>> m_passiveITkOuterPixelBarrelLayerHalflengthZ{this, "PassiveITkOuterPixelBarrelLayerHalflengthZ", {}};
126  Gaudi::Property<std::vector<float>> m_passiveITkOuterPixelBarrelLayerThickness{this, "PassiveITkOuterPixelBarrelLayerThickness", {}};
127 
128  Gaudi::Property<std::vector<float>> m_passiveITkStripBarrelLayerRadii{this, "PassiveITkStripBarrelLayerRadii", {}};
129  Gaudi::Property<std::vector<float>> m_passiveITkStripBarrelLayerHalflengthZ{this, "PassiveITkStripBarrelLayerHalflengthZ", {}};
130  Gaudi::Property<std::vector<float>> m_passiveITkStripBarrelLayerThickness{this, "PassiveITkStripBarrelLayerThickness", {}};
131 
132  BooleanProperty m_runConsistencyChecks{this, "RunConsistencyChecks",
133  false, "Run extra consistency checks w.r.t to Trk::. This is SLOW!"};
134 
135  StringProperty m_consistencyCheckOutput{this, "ConsistencyCheckOutput",
136  "", "Output file for geometry debugging, will not write if empty",};
137 
138  Gaudi::Property<size_t> m_consistencyCheckPoints{this, "ConsistencyCheckPoints",
139  1000, "number of random points for consistency check"};
140 
141  ToolHandle<IActsTrackingVolumeBuilder> m_caloVolumeBuilder{this, "CaloVolumeBuilder", ""};
142 
143  ToolHandle<IActsTrackingVolumeBuilder> m_msVolumeBuilder{this, "MSVolumeBuilder", ""};
144 
145  ToolHandleArray<ActsTrk::IBlueprintNodeBuilder> m_blueprintNodeBuilders{this, "BlueprintNodeBuilders", {}};
146 
147 
149  Gaudi::Property<std::vector<unsigned int>> m_subDetNoAlignProp{this, "NotAlignDetectors", {}};
150  std::set<ActsTrk::DetectorType> m_subDetNoAlign{};
151 
152  Gaudi::Property<bool> m_useBlueprint{this, "UseBlueprint", false, "Use the new Blueprint API for geometry construction"};
153  Gaudi::Property<std::string> m_blueprintGraphviz{this, "BlueprintGraphviz",
154  "", "Write the blueprint graph to a file. No file will be written if empty"};
155  Gaudi::Property<bool> m_doEndcapLayerMerging{this, "DoEndcapLayerMerging", true, "Merge overlapping endcap layers in z"};
156 
157 };
158 
159 
160 
161 #endif
ActsTrackingGeometrySvc::makeBeamPipeConfig
Acts::CylinderVolumeBuilder::Config makeBeamPipeConfig(std::shared_ptr< const Acts::CylinderVolumeHelper > cvh) const
Definition: ActsTrackingGeometrySvc.cxx:1137
SGTest::store
TestStore store
Definition: TestStore.cxx:23
ActsTrackingGeometrySvc::m_runConsistencyChecks
BooleanProperty m_runConsistencyChecks
Definition: ActsTrackingGeometrySvc.h:132
ActsTrackingGeometrySvc::m_passiveITkStripBarrelLayerHalflengthZ
Gaudi::Property< std::vector< float > > m_passiveITkStripBarrelLayerHalflengthZ
Definition: ActsTrackingGeometrySvc.h:129
ActsTrackingGeometrySvc::m_consistencyCheckOutput
StringProperty m_consistencyCheckOutput
Definition: ActsTrackingGeometrySvc.h:135
ActsTrk::DetectorAlignStore
Definition: DetectorAlignStore.h:20
ActsTrackingGeometrySvc::m_barrelMaterialBins
Gaudi::Property< std::vector< size_t > > m_barrelMaterialBins
Definition: ActsTrackingGeometrySvc.h:112
ActsTrackingGeometrySvc::populateAlignmentStore
unsigned int populateAlignmentStore(ActsTrk::DetectorAlignStore &store) const override
Definition: ActsTrackingGeometrySvc.cxx:1121
ActsTrackingGeometrySvc::runConsistencyChecks
bool runConsistencyChecks() const
Definition: ActsTrackingGeometrySvc.cxx:523
ActsTrackingGeometrySvc::m_consistencyCheckPoints
Gaudi::Property< size_t > m_consistencyCheckPoints
Definition: ActsTrackingGeometrySvc.h:138
ActsTrackingGeometrySvc::m_detStore
ServiceHandle< StoreGateSvc > m_detStore
Definition: ActsTrackingGeometrySvc.h:89
ActsTrackingGeometrySvc::p_ITkPixelManager
const InDetDD::SiDetectorManager * p_ITkPixelManager
Definition: ActsTrackingGeometrySvc.h:93
ActsLayerBuilder::Config
Definition: ActsLayerBuilder.h:51
ActsTrackingGeometrySvc::p_beamPipeMgr
const BeamPipeDetectorManager * p_beamPipeMgr
Definition: ActsTrackingGeometrySvc.h:95
ActsTrackingGeometrySvc::m_caloVolumeBuilder
ToolHandle< IActsTrackingVolumeBuilder > m_caloVolumeBuilder
Definition: ActsTrackingGeometrySvc.h:141
ActsTrackingGeometrySvc::getNominalContext
const ActsGeometryContext & getNominalContext() const override
Definition: ActsTrackingGeometrySvc.cxx:1134
ActsTrackingGeometrySvc::p_TRTManager
const InDetDD::TRT_DetectorManager * p_TRTManager
Definition: ActsTrackingGeometrySvc.h:92
ActsTrackingGeometrySvc::p_HGTDManager
const HGTD_DetectorManager * p_HGTDManager
Definition: ActsTrackingGeometrySvc.h:96
ActsTrackingGeometrySvc::m_msVolumeBuilder
ToolHandle< IActsTrackingVolumeBuilder > m_msVolumeBuilder
Definition: ActsTrackingGeometrySvc.h:143
ActsLayerBuilder.h
Acts
Definition: MuonSpectrometer/MuonPhaseII/Event/xAOD/xAODMuonPrepData/xAODMuonPrepData/UtilFunctions.h:17
ActsTrackingGeometrySvc::m_blueprintNodeBuilders
ToolHandleArray< ActsTrk::IBlueprintNodeBuilder > m_blueprintNodeBuilders
Definition: ActsTrackingGeometrySvc.h:145
ActsTrackingGeometrySvc::m_elementStore
std::shared_ptr< ActsElementVector > m_elementStore
Definition: ActsTrackingGeometrySvc.h:98
ActsTrackingGeometrySvc::m_materialMapInputFileBase
Gaudi::Property< std::string > m_materialMapInputFileBase
Definition: ActsTrackingGeometrySvc.h:108
ActsTrackingGeometrySvc
Definition: ActsTrackingGeometrySvc.h:55
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
ActsTrackingGeometrySvc::m_useBlueprint
Gaudi::Property< bool > m_useBlueprint
Definition: ActsTrackingGeometrySvc.h:152
IActsTrackingGeometrySvc.h
ActsTrackingGeometrySvc::p_pixelManager
const InDetDD::SiDetectorManager * p_pixelManager
Definition: ActsTrackingGeometrySvc.h:90
ActsTrackingGeometrySvc::p_SCTManager
const InDetDD::SiDetectorManager * p_SCTManager
Definition: ActsTrackingGeometrySvc.h:91
ActsTrackingGeometrySvc::m_buildBeamPipe
Gaudi::Property< bool > m_buildBeamPipe
Definition: ActsTrackingGeometrySvc.h:110
ActsTrackingGeometrySvc::m_passiveITkStripBarrelLayerRadii
Gaudi::Property< std::vector< float > > m_passiveITkStripBarrelLayerRadii
Definition: ActsTrackingGeometrySvc.h:128
ActsTrackingGeometrySvc::m_passiveITkOuterPixelBarrelLayerRadii
Gaudi::Property< std::vector< float > > m_passiveITkOuterPixelBarrelLayerRadii
Definition: ActsTrackingGeometrySvc.h:124
InDetDD::InDetDetectorManager
Definition: InDetDetectorManager.h:60
ActsTrackingGeometrySvc::makeLayerBuilderConfig
ActsLayerBuilder::Config makeLayerBuilderConfig(const InDetDD::InDetDetectorManager *manager)
Definition: ActsTrackingGeometrySvc.cxx:818
ActsTrackingGeometrySvc::trackingGeometry
std::shared_ptr< const Acts::TrackingGeometry > trackingGeometry() override
Definition: ActsTrackingGeometrySvc.cxx:750
HGTD_ID
Definition: HGTD_ID.h:47
IActsTrackingVolumeBuilder.h
ActsDetectorElement
Definition: ActsDetectorElement.h:44
ActsTrackingGeometrySvc::m_endcapMaterialBins
Gaudi::Property< std::vector< size_t > > m_endcapMaterialBins
Definition: ActsTrackingGeometrySvc.h:113
ActsTrackingGeometrySvc::m_materialMapCalibFolder
Gaudi::Property< std::string > m_materialMapCalibFolder
Definition: ActsTrackingGeometrySvc.h:109
ActsGeometryContext
Include the GeoPrimitives which need to be put first.
Definition: ActsGeometryContext.h:27
ActsTrackingGeometrySvc::m_passiveITkInnerPixelBarrelLayerThickness
Gaudi::Property< std::vector< float > > m_passiveITkInnerPixelBarrelLayerThickness
Definition: ActsTrackingGeometrySvc.h:122
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:240
ActsTrackingGeometrySvc::m_passiveITkStripBarrelLayerThickness
Gaudi::Property< std::vector< float > > m_passiveITkStripBarrelLayerThickness
Definition: ActsTrackingGeometrySvc.h:130
ActsTrackingGeometrySvc::makeSCTTRTAssembly
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)
Definition: ActsTrackingGeometrySvc.cxx:906
ActsTrackingGeometrySvc::p_ITkStripManager
const InDetDD::SiDetectorManager * p_ITkStripManager
Definition: ActsTrackingGeometrySvc.h:94
IBlueprintNodeBuilder.h
ActsTrackingGeometrySvc::m_passiveITkOuterPixelBarrelLayerHalflengthZ
Gaudi::Property< std::vector< float > > m_passiveITkOuterPixelBarrelLayerHalflengthZ
Definition: ActsTrackingGeometrySvc.h:125
TRT_ID
Definition: TRT_ID.h:82
InDetDD::TRT_DetectorManager
The Detector Manager for all TRT Detector elements, it acts as the interface to the detector elements...
Definition: TRT_DetectorManager.h:63
ActsTrackingGeometrySvc::m_subDetNoAlign
std::set< ActsTrk::DetectorType > m_subDetNoAlign
Definition: ActsTrackingGeometrySvc.h:150
ActsTrackingGeometrySvc::initialize
StatusCode initialize() override
Definition: ActsTrackingGeometrySvc.cxx:77
ActsTrackingGeometrySvc::m_passiveITkOuterPixelBarrelLayerThickness
Gaudi::Property< std::vector< float > > m_passiveITkOuterPixelBarrelLayerThickness
Definition: ActsTrackingGeometrySvc.h:126
InDetDD
Message Stream Member.
Definition: FakeTrackBuilder.h:8
ActsTrackingGeometrySvc::m_blueprintGraphviz
Gaudi::Property< std::string > m_blueprintGraphviz
Definition: ActsTrackingGeometrySvc.h:153
InDetDD::SiDetectorManager
Definition: SiDetectorManager.h:60
HGTD_DetectorManager
Definition: HGTD_DetectorManager.h:33
ActsTrackingGeometrySvc::ActsTrackingGeometrySvc
ActsTrackingGeometrySvc(const std::string &name, ISvcLocator *pSvcLocator)
Definition: ActsTrackingGeometrySvc.cxx:69
AthService.h
ActsTrackingGeometrySvc::makeStrawLayerBuilder
std::shared_ptr< const Acts::ILayerBuilder > makeStrawLayerBuilder(const InDetDD::InDetDetectorManager *manager)
Definition: ActsTrackingGeometrySvc.cxx:757
python.Logging.manager
manager
Definition: PhysicsAnalysis/D3PDTools/AnaAlgorithm/python/Logging.py:92
ActsTrackingGeometrySvc::m_useMaterialMap
Gaudi::Property< bool > m_useMaterialMap
Definition: ActsTrackingGeometrySvc.h:106
ActsTrackingGeometrySvc::m_trackingGeometry
std::shared_ptr< const Acts::TrackingGeometry > m_trackingGeometry
Definition: ActsTrackingGeometrySvc.h:99
ActsTrackingGeometrySvc::makeHGTDLayerBuilder
std::shared_ptr< const Acts::ILayerBuilder > makeHGTDLayerBuilder(const HGTD_DetectorManager *manager)
Definition: ActsTrackingGeometrySvc.cxx:788
ActsTrackingGeometrySvc::m_buildSubdetectors
Gaudi::Property< std::vector< std::string > > m_buildSubdetectors
Definition: ActsTrackingGeometrySvc.h:114
ActsTrackingGeometrySvc::m_nominalContext
ActsGeometryContext m_nominalContext
Definition: ActsTrackingGeometrySvc.h:104
ActsElementVector.h
Helper to hold elements for deletion.
ActsTrackingGeometrySvc::m_TRT_idHelper
const TRT_ID * m_TRT_idHelper
Definition: ActsTrackingGeometrySvc.h:101
ActsTrackingGeometrySvc::m_HGTD_idHelper
const HGTD_ID * m_HGTD_idHelper
Definition: ActsTrackingGeometrySvc.h:102
ActsTrackingGeometrySvc::m_passiveITkInnerPixelBarrelLayerRadii
Gaudi::Property< std::vector< float > > m_passiveITkInnerPixelBarrelLayerRadii
the specifications for building additional passive cylinders in the barrel region: for each cylinder ...
Definition: ActsTrackingGeometrySvc.h:120
ActsTrackingGeometrySvc::m_subDetNoAlignProp
Gaudi::Property< std::vector< unsigned int > > m_subDetNoAlignProp
Define the subdetectors for which the tracking geometry does not expect a valid alignment store.
Definition: ActsTrackingGeometrySvc.h:149
ActsTrackingGeometrySvc::m_objDebugOutput
Gaudi::Property< bool > m_objDebugOutput
Definition: ActsTrackingGeometrySvc.h:107
SiliconTech::pixel
@ pixel
BeamPipeDetectorManager
Definition: BeamPipeDetectorManager.h:14
ActsTrackingGeometrySvc::m_doEndcapLayerMerging
Gaudi::Property< bool > m_doEndcapLayerMerging
Definition: ActsTrackingGeometrySvc.h:155
ServiceHandle< StoreGateSvc >
ActsTrackingGeometrySvc::m_passiveITkInnerPixelBarrelLayerHalflengthZ
Gaudi::Property< std::vector< float > > m_passiveITkInnerPixelBarrelLayerHalflengthZ
Definition: ActsTrackingGeometrySvc.h:121