ATLAS Offline Software
ActsLayerBuilder.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_ACTSLAYERBUILDER_H
6 #define ACTSGEOMETRY_ACTSLAYERBUILDER_H
7 
8 // PACKAGE
11 
12 // ATHENA
14 
15 // ACTS
16 #include "Acts/Geometry/ILayerBuilder.hpp"
17 #include "Acts/Utilities/Logger.hpp"
18 #include "Acts/Utilities/BinningType.hpp"
19 #include "Acts/Utilities/AxisDefinitions.hpp"
20 #include "Acts/Geometry/GeometryContext.hpp"
21 #include "Acts/Definitions/Units.hpp"
22 
23 #include <mutex>
24 #include <array>
25 
26 class ActsTrackingGeomtrySvc;
27 
28 namespace InDetDD {
29  class SiDetectorManager;
30 }
31 
32 namespace Acts {
33 class Surface;
34 class LayerCreator;
35 }
36 
38 class ActsLayerBuilder : public Acts::ILayerBuilder
39 {
40 public:
41  enum class Mode {
43  };
44 
46 
49 
50  struct Config
51  {
53  std::string configurationName = "undefined";
56  std::shared_ptr<const Acts::LayerCreator> layerCreator = nullptr;
66  std::shared_ptr<ElementVector> elementStore;
67 
68  std::array<double, 2> endcapEnvelopeR = {2 * Acts::UnitConstants::mm,
70  std::array<double, 2> endcapEnvelopeZ = {2 * Acts::UnitConstants::mm,
72 
73  std::array<double, 2> barrelEnvelopeR = {2 * Acts::UnitConstants::mm,
75  std::array<double, 2> barrelEnvelopeZ = {2 * Acts::UnitConstants::mm,
77 
82  std::vector<float> passiveBarrelLayerRadii = {};
83  std::vector<float> passiveBarrelLayerHalflengthZ = {};
84  std::vector<float> passiveBarrelLayerThickness = {};
85 
86  std::pair<size_t, size_t> endcapMaterialBins = {20, 5};
87  std::pair<size_t, size_t> barrelMaterialBins = {10, 10};
88 
89  std::function<bool(const Acts::GeometryContext &, Acts::AxisDirection,
90  const Acts::Surface *, const Acts::Surface *)>
92 
93  bool doEndcapLayerMerging = true;
94 
95  bool objDebugOutput = false;
96 
100  double numberOfBinsFactor = 5.0;
101 
104 
105  };
106 
110  ActsLayerBuilder(const Config& cfg,
111  std::unique_ptr<const Acts::Logger> logger
112  = Acts::getDefaultLogger("GMLayBldr", Acts::Logging::INFO));
113 
116 
117  const Acts::LayerVector
118  negativeLayers(const Acts::GeometryContext& gctx) const override;
119 
120  const Acts::LayerVector
121  centralLayers(const Acts::GeometryContext& gctx) const override;
122 
123  const Acts::LayerVector
124  positiveLayers(const Acts::GeometryContext& gctx) const override;
125 
126 
128  // const std::string&
129  // identification() const final;
130 
133  void
135 
137  // Config
138  // getConfiguration() const;
139 
142  {
143  return m_cfg;
144  }
145 
146  virtual
147  const std::string&
148  identification() const override
149  {
150  return m_cfg.configurationName;
151  }
152 
154  void
155  setLogger(std::unique_ptr<const Acts::Logger> logger);
156 
157 private:
160 
162  const Acts::Logger&
163  logger() const
164  {
165  return *m_logger;
166  }
167 
168  std::vector<std::shared_ptr<const ActsDetectorElement>>
169  getDetectorElements() const;
170 
172  std::unique_ptr<const Acts::Logger> m_logger;
173 
175  //std::vector<std::shared_ptr<const ActsDetectorElement>> m_elementStore;
176 
177 
178  // Private helper method : build layers
179  // @param layers is goint to be filled
180  // @param type is the indication which ones to build -1 | 0 | 1
181  void
182  buildBarrel(const Acts::GeometryContext& gctx, Acts::LayerVector& layersOutput) const;
183 
184  void
185  buildEndcap(const Acts::GeometryContext& gctx, Acts::LayerVector& layersOutput, int type = 0) const;
186 
187 };
188 
189 std::ostream& operator<<(std::ostream& os, const ActsLayerBuilder::Mode& mode);
190 
191 #endif
ActsLayerBuilder::Mode::Undefined
@ Undefined
ActsLayerBuilder::buildEndcap
void buildEndcap(const Acts::GeometryContext &gctx, Acts::LayerVector &layersOutput, int type=0) const
Definition: ActsLayerBuilder.cxx:336
ActsLayerBuilder::identification
virtual const std::string & identification() const override
Definition: ActsLayerBuilder.h:148
python.SystemOfUnits.mm
float mm
Definition: SystemOfUnits.py:98
ActsLayerBuilder::logger
const Acts::Logger & logger() const
Private access to the logger.
Definition: ActsLayerBuilder.h:163
ActsLayerBuilder::centralLayers
const Acts::LayerVector centralLayers(const Acts::GeometryContext &gctx) const override
Definition: ActsLayerBuilder.cxx:61
ActsLayerBuilder::Mode::ITkPixelOuter
@ ITkPixelOuter
Trk::equidistant
@ equidistant
Definition: BinningType.h:32
ActsLayerBuilder::Config::objDebugOutput
bool objDebugOutput
Definition: ActsLayerBuilder.h:95
ActsLayerBuilder::Mode::ITkPixelInner
@ ITkPixelInner
ActsLayerBuilder::Config::mode
Mode mode
Definition: ActsLayerBuilder.h:54
ActsLayerBuilder::Config::passiveBarrelLayerRadii
std::vector< float > passiveBarrelLayerRadii
the specifications for building additional passive cylinders in the barrel region: for each cylinder ...
Definition: ActsLayerBuilder.h:82
ActsLayerBuilder::~ActsLayerBuilder
~ActsLayerBuilder()
Destructor.
Definition: ActsLayerBuilder.h:115
ActsLayerBuilder::Config::bTypeR
Acts::BinningType bTypeR
the binning type of the contained surfaces in r (equidistant/arbitrary)
Definition: ActsLayerBuilder.h:62
Surface
Definition: Trigger/TrigAccel/TrigCudaFitter/src/Surface.h:8
ActsLayerBuilder::negativeLayers
const Acts::LayerVector negativeLayers(const Acts::GeometryContext &gctx) const override
Definition: ActsLayerBuilder.cxx:53
ActsLayerBuilder::buildBarrel
void buildBarrel(const Acts::GeometryContext &gctx, Acts::LayerVector &layersOutput) const
Definition: ActsLayerBuilder.cxx:108
Trk::BinningType
BinningType
Definition: BinningType.h:31
ActsLayerBuilder::Config::numberOfInnermostLayerBinsFactor
double numberOfInnermostLayerBinsFactor
Special treatment for the innermost pixel layer to have more control on bin size to account for shall...
Definition: ActsLayerBuilder.h:103
ActsLayerBuilder::getConfiguration
const ActsLayerBuilder::Config & getConfiguration() const
get the configuration object
Definition: ActsLayerBuilder.h:141
ActsLayerBuilder::Config::endcapEnvelopeR
std::array< double, 2 > endcapEnvelopeR
Definition: ActsLayerBuilder.h:68
ActsLayerBuilder::getDetectorElements
std::vector< std::shared_ptr< const ActsDetectorElement > > getDetectorElements() const
Definition: ActsLayerBuilder.cxx:77
ActsLayerBuilder::Config
Definition: ActsLayerBuilder.h:51
ActsLayerBuilder::positiveLayers
const Acts::LayerVector positiveLayers(const Acts::GeometryContext &gctx) const override
Definition: ActsLayerBuilder.cxx:69
ActsLayerBuilder::Config::passiveBarrelLayerThickness
std::vector< float > passiveBarrelLayerThickness
Definition: ActsLayerBuilder.h:84
python.CaloAddPedShiftConfig.type
type
Definition: CaloAddPedShiftConfig.py:42
ActsLayerBuilder::Mode::Pixel
@ Pixel
ActsLayerBuilder::Config::barrelEnvelopeR
std::array< double, 2 > barrelEnvelopeR
Definition: ActsLayerBuilder.h:73
ActsLayerBuilder::m_cfg
Config m_cfg
configuration object
Definition: ActsLayerBuilder.h:159
ActsLayerBuilder::m_logger
std::unique_ptr< const Acts::Logger > m_logger
logging instance
Definition: ActsLayerBuilder.h:172
ActsLayerBuilder::Mode::ITkStrip
@ ITkStrip
ActsLayerBuilder::Config::configurationName
std::string configurationName
string based identification
Definition: ActsLayerBuilder.h:53
ActsLayerBuilder::Config::barrelEnvelopeZ
std::array< double, 2 > barrelEnvelopeZ
Definition: ActsLayerBuilder.h:75
Acts
Definition: MuonSpectrometer/MuonPhaseII/Event/xAOD/xAODMuonPrepData/xAODMuonPrepData/UtilFunctions.h:20
ActsLayerBuilder::Config::passiveBarrelLayerHalflengthZ
std::vector< float > passiveBarrelLayerHalflengthZ
Definition: ActsLayerBuilder.h:83
ActsLayerBuilder::Config::doEndcapLayerMerging
bool doEndcapLayerMerging
Definition: ActsLayerBuilder.h:93
ActsLayerBuilder::Config::barrelMaterialBins
std::pair< size_t, size_t > barrelMaterialBins
Definition: ActsLayerBuilder.h:87
ActsLayerBuilder::Config::bTypeZ
Acts::BinningType bTypeZ
the binning type of the contained surfaces in z (equidistant/arbitrary)
Definition: ActsLayerBuilder.h:65
Preparation.mode
mode
Definition: Preparation.py:107
ActsLayerBuilder
Definition: ActsLayerBuilder.h:39
ActsDetectorElement.h
ActsLayerBuilder::setConfiguration
void setConfiguration(const Config &cfg)
Name identification.
ReadFromCoolCompare.os
os
Definition: ReadFromCoolCompare.py:231
ActsLayerBuilder::Config::bTypePhi
Acts::BinningType bTypePhi
the binning type of the contained surfaces in phi (equidistant/arbitrary)
Definition: ActsLayerBuilder.h:59
operator<<
std::ostream & operator<<(std::ostream &os, const ActsLayerBuilder::Mode &mode)
Definition: ActsLayerBuilder.cxx:605
ActsLayerBuilder::Config::endcapEnvelopeZ
std::array< double, 2 > endcapEnvelopeZ
Definition: ActsLayerBuilder.h:70
ActsLayerBuilder::Config::endcapMaterialBins
std::pair< size_t, size_t > endcapMaterialBins
Definition: ActsLayerBuilder.h:86
ActsElementVector
Helper to hold elements for deletion.
Definition: ActsElementVector.h:30
WriteCaloSwCorrections.cfg
cfg
Definition: WriteCaloSwCorrections.py:23
ActsLayerBuilder::Mode
Mode
Definition: ActsLayerBuilder.h:41
ActsLayerBuilder::Mode::TRT
@ TRT
ActsLayerBuilder::Config::layerCreator
std::shared_ptr< const Acts::LayerCreator > layerCreator
Definition: ActsLayerBuilder.h:56
python.Constants.INFO
int INFO
Definition: Control/AthenaCommon/python/Constants.py:15
InDetDD
Message Stream Member.
Definition: FakeTrackBuilder.h:8
ActsLayerBuilder::Config::surfaceMatcher
std::function< bool(const Acts::GeometryContext &, Acts::AxisDirection, const Acts::Surface *, const Acts::Surface *)> surfaceMatcher
Definition: ActsLayerBuilder.h:91
InDetDD::SiDetectorManager
Definition: SiDetectorManager.h:60
ActsLayerBuilder::setLogger
void setLogger(std::unique_ptr< const Acts::Logger > logger)
set logging instance
ActsLayerBuilder::Config::mng
const InDetDD::SiDetectorManager * mng
Definition: ActsLayerBuilder.h:55
ActsLayerBuilder::Config::numberOfBinsFactor
double numberOfBinsFactor
controls how many bins are created for the sensitive surface grid.
Definition: ActsLayerBuilder.h:100
ActsLayerBuilder::ActsLayerBuilder
ActsLayerBuilder(const Config &cfg, std::unique_ptr< const Acts::Logger > logger=Acts::getDefaultLogger("GMLayBldr", Acts::Logging::INFO))
Constructor.
Definition: ActsLayerBuilder.cxx:42
checker_macros.h
Define macros for attributes used to control the static checker.
ActsElementVector.h
Helper to hold elements for deletion.
xAOD::bool
setBGCode setTAP setLVL2ErrorBits bool
Definition: TrigDecision_v1.cxx:60
ActsLayerBuilder::Config::elementStore
std::shared_ptr< ElementVector > elementStore
Definition: ActsLayerBuilder.h:66
ActsLayerBuilder::Mode::SCT
@ SCT