EIC Software
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
PassiveLayerBuilder.hpp
Go to the documentation of this file. Or view the newest version in sPHENIX GitHub for file PassiveLayerBuilder.hpp
1 // This file is part of the Acts project.
2 //
3 // Copyright (C) 2016-2020 CERN for the benefit of the Acts project
4 //
5 // This Source Code Form is subject to the terms of the Mozilla Public
6 // License, v. 2.0. If a copy of the MPL was not distributed with this
7 // file, You can obtain one at http://mozilla.org/MPL/2.0/.
8 
9 #pragma once
10 
13 #include "Acts/Geometry/Layer.hpp"
16 
17 namespace Acts {
18 
24 
26  public:
30  struct Config {
32  std::string layerIdentification;
33 
34  std::vector<double> centralLayerRadii;
35  std::vector<double> centralLayerHalflengthZ;
36  std::vector<double> centralLayerThickness;
37  std::vector<std::shared_ptr<const ISurfaceMaterial>>
39 
40  // the layers at p/e side
41  std::vector<double> posnegLayerPositionZ;
42  std::vector<double> posnegLayerRmin;
43  std::vector<double> posnegLayerRmax;
44  std::vector<double> posnegLayerThickness;
45  std::vector<std::shared_ptr<const ISurfaceMaterial>>
47  };
48 
53  PassiveLayerBuilder(const Config& plConfig,
54  std::unique_ptr<const Logger> logger = getDefaultLogger(
55  "PassiveLayerBuilder", Logging::INFO));
56 
58  ~PassiveLayerBuilder() override = default;
59 
66  const LayerVector negativeLayers(const GeometryContext& gctx) const override;
67 
74  const LayerVector centralLayers(const GeometryContext& gctx) const override;
75 
82  const LayerVector positiveLayers(const GeometryContext& gctx) const override;
83 
86  const std::string& identification() const override {
88  }
89 
94  void setConfiguration(const Config& plConfig);
95 
97  Config getConfiguration() const;
98 
102  void setLogger(std::unique_ptr<const Logger> newLogger);
103 
104  protected:
106 
107  private:
115  const LayerVector endcapLayers(const GeometryContext& gctx, int side) const;
116 
117  const Logger& logger() const { return *m_logger; }
118 
120  std::unique_ptr<const Logger> m_logger;
121 };
122 
124  const {
125  return m_cfg;
126 }
127 
128 } // namespace Acts