File indexing completed on 2026-07-26 08:22:01
0001
0002
0003
0004
0005
0006
0007
0008 #pragma once
0009
0010
0011 #include "traccc/edm/seed_collection.hpp"
0012 #include "traccc/edm/spacepoint_collection.hpp"
0013 #include "traccc/seeding/detail/seeding_config.hpp"
0014
0015 namespace traccc {
0016
0017
0018 struct seed_selecting_helper {
0019
0020
0021
0022
0023
0024
0025
0026
0027 template <typename T1, typename T2, typename T3>
0028 static TRACCC_HOST_DEVICE void seed_weight(
0029 const seedfilter_config& filter_config, const edm::spacepoint<T1>&,
0030 const edm::spacepoint<T2>& spB, const edm::spacepoint<T3>& spT,
0031 scalar& triplet_weight) {
0032 scalar weight = 0;
0033
0034 if (spB.radius() > filter_config.good_spB_min_radius) {
0035 weight = filter_config.good_spB_weight_increase;
0036 }
0037 if (spT.radius() < filter_config.good_spT_max_radius) {
0038 weight = filter_config.good_spT_weight_increase;
0039 }
0040
0041 triplet_weight += weight;
0042 return;
0043 }
0044
0045
0046
0047
0048
0049
0050
0051
0052
0053
0054 template <typename T1, typename T2, typename T3>
0055 static TRACCC_HOST_DEVICE bool single_seed_cut(
0056 const seedfilter_config& filter_config, const edm::spacepoint<T1>&,
0057 const edm::spacepoint<T2>& spB, const edm::spacepoint<T3>&,
0058 scalar triplet_weight) {
0059 return !(spB.radius() > filter_config.good_spB_min_radius &&
0060 triplet_weight < filter_config.good_spB_min_weight);
0061 }
0062
0063
0064
0065
0066
0067
0068
0069
0070
0071 template <typename spacepoint_type>
0072 static TRACCC_HOST_DEVICE bool cut_per_middle_sp(
0073 const seedfilter_config& filter_config, const spacepoint_type& spB,
0074 const scalar weight) {
0075 return (weight > filter_config.seed_min_weight ||
0076 spB.radius() > filter_config.spB_min_radius);
0077 }
0078 };
0079
0080 }