Back to home page

EIC code displayed by LXR

 
 

    


Warning, file /include/Acts/Geometry/DetectorElementBase.hpp was not indexed or was modified since last indexation (in which case cross-reference links may be missing, inaccurate or erroneous).

0001 // This file is part of the Acts project.
0002 //
0003 // Copyright (C) 2016-2018 CERN for the benefit of the Acts project
0004 //
0005 // This Source Code Form is subject to the terms of the Mozilla Public
0006 // License, v. 2.0. If a copy of the MPL was not distributed with this
0007 // file, You can obtain one at http://mozilla.org/MPL/2.0/.
0008 
0009 #pragma once
0010 
0011 #include "Acts/Definitions/Algebra.hpp"
0012 #include "Acts/Geometry/GeometryContext.hpp"
0013 
0014 #include <memory>
0015 #include <vector>
0016 
0017 /// This is the plugin mechanism to exchange the entire DetectorElementBase
0018 ///
0019 /// By defining ACTS_DETECTOR_ELEMENT_BASE_REPLACEMENT pre-compile time the
0020 /// detector element entire detector element can be exchanged with a file
0021 /// provided by the client.
0022 ///
0023 /// The API has to be present though
0024 #ifdef ACTS_DETECTOR_ELEMENT_BASE_REPLACEMENT
0025 #include ACTS_DETECTOR_ELEMENT_BASE_REPLACEMENT
0026 #else
0027 
0028 namespace Acts {
0029 
0030 class Surface;
0031 
0032 class DetectorElementBase {
0033  public:
0034   DetectorElementBase() = default;
0035   virtual ~DetectorElementBase() = default;
0036 
0037   /// Return the transform for the Element proxy mechanism
0038   ///
0039   /// @param gctx The current geometry context object, e.g. alignment
0040   virtual const Transform3& transform(const GeometryContext& gctx) const = 0;
0041 
0042   /// Return surface representation - const return pattern
0043   virtual const Surface& surface() const = 0;
0044 
0045   /// Non-const return pattern
0046   virtual Surface& surface() = 0;
0047 
0048   /// Returns the thickness of the module
0049   /// @return double that indicates the thickness of the module
0050   virtual double thickness() const = 0;
0051 };
0052 
0053 }  // namespace Acts
0054 
0055 #endif