File indexing completed on 2025-12-12 09:02:44
0001
0002
0003
0004
0005
0006
0007
0008
0009 #pragma once
0010
0011 #include "Acts/Geometry/GeometryContext.hpp"
0012
0013 #include <memory>
0014 #include <vector>
0015
0016 namespace Acts {
0017 class GeometryContext;
0018 class TrackingGeometry;
0019 class DetectorElementBase;
0020 class Logger;
0021 }
0022
0023 namespace ActsExamples {
0024 class IContextDecorator;
0025 struct Geant4ConstructionOptions;
0026 }
0027
0028 class G4VUserDetectorConstruction;
0029
0030 namespace ActsExamples {
0031
0032
0033
0034
0035
0036 class Detector {
0037 public:
0038
0039 explicit Detector(std::unique_ptr<const Acts::Logger> logger);
0040 virtual ~Detector();
0041
0042 virtual const Acts::GeometryContext& nominalGeometryContext() const;
0043
0044
0045 virtual std::shared_ptr<const Acts::TrackingGeometry> trackingGeometry()
0046 const;
0047
0048
0049 virtual std::vector<std::shared_ptr<IContextDecorator>> contextDecorators()
0050 const;
0051
0052
0053
0054
0055
0056 virtual std::unique_ptr<G4VUserDetectorConstruction>
0057 buildGeant4DetectorConstruction(
0058 const Geant4ConstructionOptions& options) const;
0059
0060 protected:
0061 const Acts::Logger& logger() const;
0062
0063 std::unique_ptr<const Acts::Logger> m_logger;
0064
0065 Acts::GeometryContext m_nominalGeometryContext;
0066 std::shared_ptr<const Acts::TrackingGeometry> m_trackingGeometry;
0067 std::vector<std::shared_ptr<const Acts::DetectorElementBase>> m_detectorStore;
0068 std::vector<std::shared_ptr<IContextDecorator>> m_contextDecorators;
0069 };
0070
0071 }