File indexing completed on 2025-07-11 07:50:28
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 namespace Experimental {
0022 class Detector;
0023 }
0024 }
0025
0026 namespace ActsExamples {
0027 class IContextDecorator;
0028 struct Geant4ConstructionOptions;
0029 }
0030
0031 class G4VUserDetectorConstruction;
0032
0033 namespace ActsExamples {
0034
0035
0036
0037
0038
0039 class Detector {
0040 public:
0041
0042 explicit Detector(std::unique_ptr<const Acts::Logger> logger);
0043 virtual ~Detector();
0044
0045 virtual const Acts::GeometryContext& nominalGeometryContext() const;
0046
0047
0048 virtual std::shared_ptr<const Acts::TrackingGeometry> trackingGeometry()
0049 const;
0050
0051
0052 virtual std::shared_ptr<Acts::Experimental::Detector> gen2Geometry() const;
0053 virtual std::vector<std::shared_ptr<IContextDecorator>> contextDecorators()
0054 const;
0055
0056
0057
0058
0059
0060 virtual std::unique_ptr<G4VUserDetectorConstruction>
0061 buildGeant4DetectorConstruction(
0062 const Geant4ConstructionOptions& options) const;
0063
0064 protected:
0065 const Acts::Logger& logger() const;
0066
0067 std::unique_ptr<const Acts::Logger> m_logger;
0068
0069 Acts::GeometryContext m_nominalGeometryContext;
0070 std::shared_ptr<const Acts::TrackingGeometry> m_trackingGeometry;
0071 std::shared_ptr<Acts::Experimental::Detector> m_gen2Geometry;
0072 std::vector<std::shared_ptr<const Acts::DetectorElementBase>> m_detectorStore;
0073 std::vector<std::shared_ptr<IContextDecorator>> m_contextDecorators;
0074 };
0075
0076 }