Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2025-12-13 09:39:03

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/EventData/SeedContainer2.hpp"
0012 #include "Acts/EventData/SpacePointContainer2.hpp"
0013 #include "Acts/Seeding2/DoubletSeedFinder.hpp"
0014 #include "Acts/Seeding2/TripletSeedFinder.hpp"
0015 
0016 namespace Acts {
0017 
0018 /// Interface for triplet seed filtering.
0019 ///
0020 /// The filter is expected to be stateful and maintain internal information
0021 /// across calls.
0022 class ITripletSeedFilter {
0023  public:
0024   virtual ~ITripletSeedFilter() = default;
0025 
0026   /// @brief Check if there are sufficient top doublets for triplet formation
0027   /// @param spacePoints Container of space points
0028   /// @param spM Middle space point proxy
0029   /// @param topDoublets Collection of top doublets for the middle space point
0030   /// @return True if sufficient doublets are available for triplet seeds
0031   virtual bool sufficientTopDoublets(
0032       const SpacePointContainer2& spacePoints, const ConstSpacePointProxy2& spM,
0033       const DoubletsForMiddleSp& topDoublets) const = 0;
0034 
0035   /// Create seed candidates with fixed bottom and middle space points and
0036   /// all compatible top space points.
0037   ///
0038   /// @param spacePoints Container with all space points
0039   /// @param spM Fixed middle space point
0040   /// @param bottomLink Link to the bottom doublet space point
0041   /// @param tripletTopCandidates Collection of triplet top candidates
0042   virtual void filterTripletTopCandidates(
0043       const SpacePointContainer2& spacePoints, const ConstSpacePointProxy2& spM,
0044       const DoubletsForMiddleSp::Proxy& bottomLink,
0045       const TripletTopCandidates& tripletTopCandidates) const = 0;
0046 
0047   /// Create final seeds for all candidates with the same middle space point
0048   ///
0049   /// @param spacePoints Container with all space points
0050   /// @param outputCollection Output container for the seeds
0051   virtual void filterTripletsMiddleFixed(
0052       const SpacePointContainer2& spacePoints,
0053       SeedContainer2& outputCollection) const = 0;
0054 };
0055 
0056 }  // namespace Acts