Analysis Software
Documentation for sPHENIX simulation software
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
LayerStructureBuilder.hpp
Go to the documentation of this file. Or view the newest version in sPHENIX GitHub for file LayerStructureBuilder.hpp
1 // This file is part of the Acts project.
2 //
3 // Copyright (C) 2023 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 
22 
23 #include <array>
24 #include <cstddef>
25 #include <functional>
26 #include <memory>
27 #include <optional>
28 #include <string>
29 #include <vector>
30 
31 namespace Acts {
32 namespace Experimental {
33 
56  public:
58  class SurfacesHolder final : public ISurfacesProvider {
59  public:
62  SurfacesHolder(std::vector<std::shared_ptr<Surface>> isurfaces)
63  : m_surfaces(std::move(isurfaces)) {}
64 
67  std::vector<std::shared_ptr<Surface>> surfaces(
68  [[maybe_unused]] const GeometryContext& gctx) const final {
69  return m_surfaces;
70  }
71 
72  private:
73  std::vector<std::shared_ptr<Surface>> m_surfaces = {};
74  };
75 
82  struct Config {
84  std::shared_ptr<ISurfacesProvider> surfacesProvider = nullptr;
86  std::vector<ProtoSupport> supports = {};
88  std::vector<ProtoBinning> binnings = {};
90  unsigned int nSegments = 1u;
93  };
94 
100  std::unique_ptr<const Logger> logger = getDefaultLogger(
101  "LayerStructureBuilder", Logging::INFO));
102 
108  InternalStructure construct(const GeometryContext& gctx) const final;
109 
110  private:
113 
115  const Logger& logger() const { return *m_logger; }
116 
118  std::unique_ptr<const Logger> m_logger;
119 };
120 
121 } // namespace Experimental
122 } // namespace Acts