Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2025-01-18 09:27:43

0001 // This file is part of the Acts project.
0002 //
0003 // Copyright (C) 2021 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/Geometry/GeometryContext.hpp"
0012 
0013 #include <memory>
0014 #include <vector>
0015 
0016 class TGeoNode;
0017 
0018 namespace Acts {
0019 
0020 class TGeoDetectorElement;
0021 
0022 /// @brief ITGeoElementSplitter
0023 ///
0024 /// Interface class that allows to define splitting of TGeoElements into
0025 /// sub-elements
0026 class ITGeoDetectorElementSplitter {
0027  public:
0028   virtual ~ITGeoDetectorElementSplitter() = default;
0029 
0030   /// Take a geometry context and TGeoElement and split it into sub elements
0031   ///
0032   /// @param gctx is a geometry context object
0033   /// @param tgde is a TGeoDetectorElement that is eventually split
0034   ///
0035   /// @note If no split is performed the unsplit detector element is returned
0036   ///
0037   /// @return a vector of TGeoDetectorElement objects
0038   virtual std::vector<std::shared_ptr<const Acts::TGeoDetectorElement>> split(
0039       const GeometryContext& gctx,
0040       std::shared_ptr<const Acts::TGeoDetectorElement> tgde) const = 0;
0041 };
0042 
0043 }  // namespace Acts