ATLAS Offline Software
ActsHGTDLayerBuilder.h
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2023 CERN for the benefit of the ATLAS collaboration
3 */
4 
5 #ifndef ACTSGEOMETRY_ACTSHGTDLAYERBUILDER_H
6 #define ACTSGEOMETRY_ACTSHGTDLAYERBUILDER_H
7 
8 // PACKAGE
11 
12 // ATHENA
14 #include <mutex>
15 
16 // ACTS
17 #include "Acts/Geometry/ILayerBuilder.hpp"
18 #include "Acts/Utilities/Logger.hpp"
19 #include "Acts/Utilities/BinningType.hpp"
20 #include "Acts/Geometry/GeometryContext.hpp"
21 #include "Acts/Definitions/Units.hpp"
22 
23 class ActsTrackingGeomtrySvc;
24 
25 class HGTD_ID;
28 
29 namespace Acts {
30 class Surface;
31 class LayerCreator;
32 }
33 
35 class ActsHGTDLayerBuilder : public Acts::ILayerBuilder
36 {
37 public:
38 
40 
43 
44  struct Config
45  {
47  std::string configurationName = "undefined";
48  const HGTD_DetectorManager* mng {nullptr};
49  const HGTD_ID* idHelper = nullptr;
50  std::shared_ptr<const Acts::LayerCreator> layerCreator = nullptr;
58 
59  std::shared_ptr<ElementVector> elementStore {nullptr};
60 
61  std::array<double, 2> endcapEnvelopeR = {50 * Acts::UnitConstants::mm,
62  50 * Acts::UnitConstants::mm}; // m_discEnvelopeR in athena/HighGranularityTimingDetector/HGTD_Reconstruction/HGTD_TrackingGeometry/src/HGTD_LayerBuilderCond.cxx
63  std::array<double, 2> endcapEnvelopeZ = {0.2 * Acts::UnitConstants::mm,
64  0.2 * Acts::UnitConstants::mm}; // m_discThickness
65 
66  std::pair<size_t, size_t> endcapMaterialBins = {20, 50}; //{Phi, R}
67 
68  bool objDebugOutput = false;
69 
73  double numberOfBinsFactor = 5.0;
74  };
75 
79 
81  std::unique_ptr<const Acts::Logger> logger);
82 
84  virtual ~ActsHGTDLayerBuilder() = default;
85 
86  virtual const Acts::LayerVector
87  negativeLayers(const Acts::GeometryContext& gctx) const override;
88 
89  virtual const Acts::LayerVector
90  centralLayers(const Acts::GeometryContext& gctx) const override;
91 
92  virtual const Acts::LayerVector
93  positiveLayers(const Acts::GeometryContext& gctx) const override;
94 
95  virtual
96  const std::string&
97  identification() const override
98  {
99  return m_cfg.configurationName;
100  }
101 
102 private:
105 
107  const Acts::Logger&
108  logger() const
109  {
110  return *m_logger;
111  }
112 
113  std::vector<std::shared_ptr<const ActsDetectorElement>>
114  getDetectorElements() const;
115 
117  std::unique_ptr<const Acts::Logger> m_logger;
118 
119  // Private helper method : build layers
120  // @param layers is goint to be filled
121  // @param type is the indication which ones to build -1 | 0 | 1
122  void
123  buildEndcap(const Acts::GeometryContext& gctx, Acts::LayerVector& layersOutput, int type = 0) const;
124 
125 };
126 
127 #endif
ActsHGTDLayerBuilder::Config::endcapEnvelopeZ
std::array< double, 2 > endcapEnvelopeZ
Definition: ActsHGTDLayerBuilder.h:63
ActsHGTDLayerBuilder::Config::layerCreator
std::shared_ptr< const Acts::LayerCreator > layerCreator
Definition: ActsHGTDLayerBuilder.h:50
ActsHGTDLayerBuilder::getDetectorElements
std::vector< std::shared_ptr< const ActsDetectorElement > > getDetectorElements() const
Definition: ActsHGTDLayerBuilder.cxx:236
ActsHGTDLayerBuilder::Config::bTypeR
Acts::BinningType bTypeR
the binning type of the contained surfaces in r (equidistant/arbitrary)
Definition: ActsHGTDLayerBuilder.h:54
python.SystemOfUnits.mm
float mm
Definition: SystemOfUnits.py:98
ActsHGTDLayerBuilder::logger
const Acts::Logger & logger() const
Private access to the logger.
Definition: ActsHGTDLayerBuilder.h:108
Trk::equidistant
@ equidistant
Definition: BinningType.h:32
ActsHGTDLayerBuilder::Config
Definition: ActsHGTDLayerBuilder.h:45
ActsHGTDLayerBuilder::negativeLayers
virtual const Acts::LayerVector negativeLayers(const Acts::GeometryContext &gctx) const override
Definition: ActsHGTDLayerBuilder.cxx:49
ActsHGTDLayerBuilder::buildEndcap
void buildEndcap(const Acts::GeometryContext &gctx, Acts::LayerVector &layersOutput, int type=0) const
Definition: ActsHGTDLayerBuilder.cxx:71
Surface
Definition: Trigger/TrigAccel/TrigCudaFitter/src/Surface.h:8
Trk::BinningType
BinningType
Definition: BinningType.h:31
ActsHGTDLayerBuilder::Config::bTypeZ
Acts::BinningType bTypeZ
the binning type of the contained surfaces in z (equidistant/arbitrary)
Definition: ActsHGTDLayerBuilder.h:57
python.CaloAddPedShiftConfig.type
type
Definition: CaloAddPedShiftConfig.py:42
ActsHGTDLayerBuilder::m_logger
std::unique_ptr< const Acts::Logger > m_logger
logging instance
Definition: ActsHGTDLayerBuilder.h:117
ActsHGTDLayerBuilder::Config::idHelper
const HGTD_ID * idHelper
Definition: ActsHGTDLayerBuilder.h:49
ActsHGTDLayerBuilder::Config::configurationName
std::string configurationName
string based identification
Definition: ActsHGTDLayerBuilder.h:47
Acts
Definition: MuonSpectrometer/MuonPhaseII/Event/xAOD/xAODMuonPrepData/xAODMuonPrepData/UtilFunctions.h:20
ActsHGTDLayerBuilder::Config::objDebugOutput
bool objDebugOutput
Definition: ActsHGTDLayerBuilder.h:68
HGTD_ID
Definition: HGTD_ID.h:47
ActsHGTDLayerBuilder::positiveLayers
virtual const Acts::LayerVector positiveLayers(const Acts::GeometryContext &gctx) const override
Definition: ActsHGTDLayerBuilder.cxx:64
ActsDetectorElement
Definition: ActsDetectorElement.h:44
ActsDetectorElement.h
ActsHGTDLayerBuilder::~ActsHGTDLayerBuilder
virtual ~ActsHGTDLayerBuilder()=default
Destructor.
ActsHGTDLayerBuilder::Config::numberOfBinsFactor
double numberOfBinsFactor
controls how many bins are created for the sensitive surface grid.
Definition: ActsHGTDLayerBuilder.h:73
ActsHGTDLayerBuilder::ActsHGTDLayerBuilder
ActsHGTDLayerBuilder(const Config &cfg, std::unique_ptr< const Acts::Logger > logger)
Constructor.
Definition: ActsHGTDLayerBuilder.cxx:41
ActsHGTDLayerBuilder
Definition: ActsHGTDLayerBuilder.h:36
ActsElementVector
Helper to hold elements for deletion.
Definition: ActsElementVector.h:30
ActsHGTDLayerBuilder::Config::endcapEnvelopeR
std::array< double, 2 > endcapEnvelopeR
Definition: ActsHGTDLayerBuilder.h:61
WriteCaloSwCorrections.cfg
cfg
Definition: WriteCaloSwCorrections.py:23
ActsHGTDLayerBuilder::Config::bTypePhi
Acts::BinningType bTypePhi
Definition: ActsHGTDLayerBuilder.h:51
ActsHGTDLayerBuilder::Config::mng
const HGTD_DetectorManager * mng
Definition: ActsHGTDLayerBuilder.h:48
ActsHGTDLayerBuilder::centralLayers
virtual const Acts::LayerVector centralLayers(const Acts::GeometryContext &gctx) const override
Definition: ActsHGTDLayerBuilder.cxx:57
ActsHGTDLayerBuilder::Config::elementStore
std::shared_ptr< ElementVector > elementStore
Definition: ActsHGTDLayerBuilder.h:59
ActsHGTDLayerBuilder::identification
virtual const std::string & identification() const override
Definition: ActsHGTDLayerBuilder.h:97
HGTD_DetectorManager
Definition: HGTD_DetectorManager.h:33
ActsHGTDLayerBuilder::Config::endcapMaterialBins
std::pair< size_t, size_t > endcapMaterialBins
Definition: ActsHGTDLayerBuilder.h:66
checker_macros.h
Define macros for attributes used to control the static checker.
ActsElementVector.h
Helper to hold elements for deletion.
ActsHGTDLayerBuilder::m_cfg
Config m_cfg
configuration object
Definition: ActsHGTDLayerBuilder.h:104