Loading [MathJax]/jax/input/TeX/config.js
ATLAS Offline Software
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Modules Pages
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 
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  };
97 
101  ActsLayerBuilder(const Config& cfg,
102  std::unique_ptr<const Acts::Logger> logger
103  = Acts::getDefaultLogger("GMLayBldr", Acts::Logging::INFO));
104 
107 
108  const Acts::LayerVector
109  negativeLayers(const Acts::GeometryContext& gctx) const override;
110 
111  const Acts::LayerVector
112  centralLayers(const Acts::GeometryContext& gctx) const override;
113 
114  const Acts::LayerVector
115  positiveLayers(const Acts::GeometryContext& gctx) const override;
116 
117 
119  // const std::string&
120  // identification() const final;
121 
124  void
126 
128  // Config
129  // getConfiguration() const;
130 
133  {
134  return m_cfg;
135  }
136 
137  virtual
138  const std::string&
139  identification() const override
140  {
141  return m_cfg.configurationName;
142  }
143 
145  void
146  setLogger(std::unique_ptr<const Acts::Logger> logger);
147 
148 private:
151 
153  const Acts::Logger&
154  logger() const
155  {
156  return *m_logger;
157  }
158 
159  std::vector<std::shared_ptr<const ActsDetectorElement>>
160  getDetectorElements() const;
161 
163  std::unique_ptr<const Acts::Logger> m_logger;
164 
166  //std::vector<std::shared_ptr<const ActsDetectorElement>> m_elementStore;
167 
168 
169  // Private helper method : build layers
170  // @param layers is goint to be filled
171  // @param type is the indication which ones to build -1 | 0 | 1
172  void
173  buildBarrel(const Acts::GeometryContext& gctx, Acts::LayerVector& layersOutput) const;
174 
175  void
176  buildEndcap(const Acts::GeometryContext& gctx, Acts::LayerVector& layersOutput, int type = 0) const;
177 
178 };
179 
180 std::ostream& operator<<(std::ostream& os, const ActsLayerBuilder::Mode& mode);
181 
182 #endif
ActsLayerBuilder::Mode::Undefined
@ Undefined
ActsLayerBuilder::buildEndcap
void buildEndcap(const Acts::GeometryContext &gctx, Acts::LayerVector &layersOutput, int type=0) const
Definition: ActsLayerBuilder.cxx:338
ActsLayerBuilder::identification
virtual const std::string & identification() const override
Definition: ActsLayerBuilder.h:139
ActsLayerBuilder::logger
const Acts::Logger & logger() const
Private access to the logger.
Definition: ActsLayerBuilder.h:154
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:106
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::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:150
ActsLayerBuilder::m_logger
std::unique_ptr< const Acts::Logger > m_logger
logging instance
Definition: ActsLayerBuilder.h:163
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::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
ActsLayerBuilder::getConfiguration
ActsLayerBuilder::Config getConfiguration() const
get the configuration object
Definition: ActsLayerBuilder.h:132
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:620
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
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
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::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