File indexing completed on 2025-01-18 09:11:43
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 class Detector {
0037 public:
0038 explicit Detector(std::unique_ptr<const Acts::Logger> logger);
0039 virtual ~Detector();
0040
0041 virtual const Acts::GeometryContext& nominalGeometryContext() const;
0042
0043 virtual std::shared_ptr<const Acts::TrackingGeometry> trackingGeometry()
0044 const;
0045 virtual std::shared_ptr<Acts::Experimental::Detector> gen2Geometry() const;
0046 virtual std::vector<std::shared_ptr<IContextDecorator>> contextDecorators()
0047 const;
0048
0049
0050
0051
0052
0053 virtual std::unique_ptr<G4VUserDetectorConstruction>
0054 buildGeant4DetectorConstruction(
0055 const Geant4ConstructionOptions& options) const;
0056
0057 protected:
0058 const Acts::Logger& logger() const;
0059
0060 std::unique_ptr<const Acts::Logger> m_logger;
0061
0062 Acts::GeometryContext m_nominalGeometryContext;
0063 std::shared_ptr<const Acts::TrackingGeometry> m_trackingGeometry;
0064 std::shared_ptr<Acts::Experimental::Detector> m_gen2Geometry;
0065 std::vector<std::shared_ptr<const Acts::DetectorElementBase>> m_detectorStore;
0066 std::vector<std::shared_ptr<IContextDecorator>> m_contextDecorators;
0067 };
0068
0069 }