ATLAS Offline Software
Loading...
Searching...
No Matches
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
23class ActsTrackingGeomtrySvc;
24
25class HGTD_ID;
28
29namespace Acts {
30class Surface;
31class LayerCreator;
32}
33
35class ActsHGTDLayerBuilder : public Acts::ILayerBuilder
36{
37public:
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;
51 Acts::BinningType bTypePhi = Acts::equidistant;
54 Acts::BinningType bTypeR = Acts::equidistant;
57 Acts::BinningType bTypeZ = Acts::equidistant;
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
102private:
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
Helper to hold elements for deletion.
Define macros for attributes used to control the static checker.
Helper to hold elements for deletion.
virtual const Acts::LayerVector negativeLayers(const Acts::GeometryContext &gctx) const override
ActsElementVector ElementVector
ActsHGTDLayerBuilder(const Config &cfg, std::unique_ptr< const Acts::Logger > logger)
Constructor.
std::unique_ptr< const Acts::Logger > m_logger
logging instance
std::vector< std::shared_ptr< const ActsDetectorElement > > getDetectorElements() const
virtual ~ActsHGTDLayerBuilder()=default
Destructor.
virtual const Acts::LayerVector centralLayers(const Acts::GeometryContext &gctx) const override
virtual const Acts::LayerVector positiveLayers(const Acts::GeometryContext &gctx) const override
Config m_cfg
configuration object
void buildEndcap(const Acts::GeometryContext &gctx, Acts::LayerVector &layersOutput, int type=0) const
const Acts::Logger & logger() const
Private access to the logger.
virtual const std::string & identification() const override
The Detector manager has methods to retrieve the Identifier helper and methods to retrieve the detect...
This is an Identifier helper class for the HGTD subdetector.
Definition HGTD_ID.h:47
nested configuration struct for steering of the layer builder
Acts::BinningType bTypeZ
the binning type of the contained surfaces in z (equidistant/arbitrary)
std::shared_ptr< const Acts::LayerCreator > layerCreator
Acts::BinningType bTypeR
the binning type of the contained surfaces in r (equidistant/arbitrary)
std::pair< size_t, size_t > endcapMaterialBins
const HGTD_DetectorManager * mng
double numberOfBinsFactor
controls how many bins are created for the sensitive surface grid.
std::shared_ptr< ElementVector > elementStore
std::array< double, 2 > endcapEnvelopeZ
std::array< double, 2 > endcapEnvelopeR
std::string configurationName
string based identification