Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2026-07-26 08:21:58

0001 /** TRACCC library, part of the ACTS project (R&D line)
0002  *
0003  * (c) 2022-2024 CERN for the benefit of the ACTS project
0004  *
0005  * Mozilla Public License Version 2.0
0006  */
0007 
0008 #pragma once
0009 
0010 // Local include(s).
0011 #include "traccc/definitions/qualifiers.hpp"
0012 
0013 // VecMem include(s).
0014 #include <vecmem/edm/container.hpp>
0015 
0016 namespace traccc::edm {
0017 
0018 /// Interface for the @c traccc::edm::silicon_cluster_collection class.
0019 ///
0020 /// It provides the API that users would interact with, while using the
0021 /// column(s)/array(s) defined in @c traccc::edm::silicon_cluster_collection.
0022 ///
0023 template <typename BASE>
0024 class silicon_cluster : public BASE {
0025  public:
0026   /// Inherit the base class's constructor(s)
0027   using BASE::BASE;
0028 
0029   /// @name Cell Information
0030   /// @{
0031 
0032   /// Indices of the silicon cells belonging to a cluster (non-const)
0033   ///
0034   /// @return A (non-const) jagged vector of <tt>unsigned int</tt> values
0035   ///
0036   TRACCC_HOST_DEVICE
0037   auto& cell_indices() { return BASE::template get<0>(); }
0038   /// Indices of the silicon cells belonging to a cluster (const)
0039   ///
0040   /// @return A (const) jagged vector of <tt>unsigned int</tt> values
0041   ///
0042   TRACCC_HOST_DEVICE
0043   const auto& cell_indices() const { return BASE::template get<0>(); }
0044 
0045 };  // class silicon_cell_collection_interface
0046 
0047 /// SoA container describing reconstructed silicon clusters
0048 using silicon_cluster_collection =
0049     vecmem::edm::container<silicon_cluster,
0050                            vecmem::edm::type::jagged_vector<unsigned int> >;
0051 
0052 }  // namespace traccc::edm