Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2025-07-15 08:11:48

0001 // This file is part of the ACTS project.
0002 //
0003 // Copyright (C) 2016 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 https://mozilla.org/MPL/2.0/.
0008 
0009 #pragma once
0010 
0011 #include "Acts/Definitions/Algebra.hpp"
0012 
0013 namespace Acts {
0014 
0015 template <typename container_t>
0016 class SpacePointProxy {
0017  public:
0018   using ContainerType = container_t;
0019   using ValueType = typename ContainerType::ValueType;
0020 
0021   // Never take the ownership of the container
0022   SpacePointProxy(container_t&& container, std::size_t index) = delete;
0023   // Only get the reference
0024   SpacePointProxy(const container_t& container, std::size_t index);
0025 
0026   const ValueType& externalSpacePoint() const;
0027   std::size_t index() const;
0028 
0029   float x() const;
0030   float y() const;
0031   float z() const;
0032   float phi() const;
0033   float radius() const;
0034   float varianceR() const;
0035   float varianceZ() const;
0036 
0037   const Acts::Vector3& topStripVector() const;
0038   const Acts::Vector3& bottomStripVector() const;
0039   const Acts::Vector3& stripCenterDistance() const;
0040   const Acts::Vector3& topStripCenterPosition() const;
0041 
0042  private:
0043   const container_t& container() const;
0044 
0045   const container_t* m_container{nullptr};
0046   std::size_t m_index{0ul};
0047 };
0048 
0049 }  // namespace Acts
0050 
0051 #include "Acts/EventData/SpacePointProxy.ipp"