ATLAS Offline Software
ActsLayerBuilder.h
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2022 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 
78  std::pair<size_t, size_t> endcapMaterialBins = {20, 5};
79  std::pair<size_t, size_t> barrelMaterialBins = {10, 10};
80 
81  std::function<bool(const Acts::GeometryContext &, Acts::AxisDirection,
82  const Acts::Surface *, const Acts::Surface *)>
84 
85  bool doEndcapLayerMerging = true;
86 
87  bool objDebugOutput = false;
88  };
89 
94  std::unique_ptr<const Acts::Logger> logger
95  = Acts::getDefaultLogger("GMLayBldr", Acts::Logging::INFO));
96 
99 
100  const Acts::LayerVector
101  negativeLayers(const Acts::GeometryContext& gctx) const override;
102 
103  const Acts::LayerVector
104  centralLayers(const Acts::GeometryContext& gctx) const override;
105 
106  const Acts::LayerVector
107  positiveLayers(const Acts::GeometryContext& gctx) const override;
108 
109 
111  // const std::string&
112  // identification() const final;
113 
116  void
118 
120  // Config
121  // getConfiguration() const;
122 
125  {
126  return m_cfg;
127  }
128 
129  virtual
130  const std::string&
131  identification() const override
132  {
133  return m_cfg.configurationName;
134  }
135 
137  void
138  setLogger(std::unique_ptr<const Acts::Logger> logger);
139 
140 private:
143 
145  const Acts::Logger&
146  logger() const
147  {
148  return *m_logger;
149  }
150 
151  std::vector<std::shared_ptr<const ActsDetectorElement>>
152  getDetectorElements() const;
153 
155  std::unique_ptr<const Acts::Logger> m_logger;
156 
158  //std::vector<std::shared_ptr<const ActsDetectorElement>> m_elementStore;
159 
160 
161  // Private helper method : build layers
162  // @param layers is goint to be filled
163  // @param type is the indication which ones to build -1 | 0 | 1
164  void
165  buildBarrel(const Acts::GeometryContext& gctx, Acts::LayerVector& layersOutput) const;
166 
167  void
168  buildEndcap(const Acts::GeometryContext& gctx, Acts::LayerVector& layersOutput, int type = 0) const;
169 
170 };
171 
172 std::ostream& operator<<(std::ostream& os, const ActsLayerBuilder::Mode& mode);
173 
174 #endif
ActsLayerBuilder::Mode::Undefined
@ Undefined
ActsLayerBuilder::buildEndcap
void buildEndcap(const Acts::GeometryContext &gctx, Acts::LayerVector &layersOutput, int type=0) const
Definition: ActsLayerBuilder.cxx:315
ActsLayerBuilder::identification
virtual const std::string & identification() const override
Definition: ActsLayerBuilder.h:131
ActsLayerBuilder::logger
const Acts::Logger & logger() const
Private access to the logger.
Definition: ActsLayerBuilder.h:146
ActsLayerBuilder::centralLayers
const Acts::LayerVector centralLayers(const Acts::GeometryContext &gctx) const override
Definition: ActsLayerBuilder.cxx:60
ActsLayerBuilder::Mode::ITkPixelOuter
@ ITkPixelOuter
Trk::equidistant
@ equidistant
Definition: BinningType.h:32
ActsLayerBuilder::Config::objDebugOutput
bool objDebugOutput
Definition: ActsLayerBuilder.h:87
ActsLayerBuilder::Mode::ITkPixelInner
@ ITkPixelInner
ActsLayerBuilder::Config::mode
Mode mode
Definition: ActsLayerBuilder.h:54
ActsLayerBuilder::~ActsLayerBuilder
~ActsLayerBuilder()
Destructor.
Definition: ActsLayerBuilder.h:98
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:52
ActsLayerBuilder::buildBarrel
void buildBarrel(const Acts::GeometryContext &gctx, Acts::LayerVector &layersOutput) const
Definition: ActsLayerBuilder.cxx:107
Trk::BinningType
BinningType
Definition: BinningType.h:31
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:76
ActsLayerBuilder::Config
Definition: ActsLayerBuilder.h:51
ActsLayerBuilder::positiveLayers
const Acts::LayerVector positiveLayers(const Acts::GeometryContext &gctx) const override
Definition: ActsLayerBuilder.cxx:68
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:142
ActsLayerBuilder::m_logger
std::unique_ptr< const Acts::Logger > m_logger
logging instance
Definition: ActsLayerBuilder.h:155
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: ChamberAssembleTool.h:18
ActsLayerBuilder::Config::doEndcapLayerMerging
bool doEndcapLayerMerging
Definition: ActsLayerBuilder.h:85
ActsLayerBuilder::Config::barrelMaterialBins
std::pair< size_t, size_t > barrelMaterialBins
Definition: ActsLayerBuilder.h:79
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
ActsLayerBuilder::getConfiguration
ActsLayerBuilder::Config getConfiguration() const
get the configuration object
Definition: ActsLayerBuilder.h:124
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:597
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:78
ActsElementVector
Helper to hold elements for deletion.
Definition: ActsElementVector.h:30
WriteCaloSwCorrections.cfg
cfg
Definition: WriteCaloSwCorrections.py:23
python.SystemOfUnits.mm
int mm
Definition: SystemOfUnits.py:83
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
python.CaloScaleNoiseConfig.type
type
Definition: CaloScaleNoiseConfig.py:78
ActsLayerBuilder::Config::surfaceMatcher
std::function< bool(const Acts::GeometryContext &, Acts::AxisDirection, const Acts::Surface *, const Acts::Surface *)> surfaceMatcher
Definition: ActsLayerBuilder.h:83
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::ActsLayerBuilder
ActsLayerBuilder(const Config &cfg, std::unique_ptr< const Acts::Logger > logger=Acts::getDefaultLogger("GMLayBldr", Acts::Logging::INFO))
Constructor.
Definition: ActsLayerBuilder.cxx:41
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