@@ -65,8 +65,9 @@ inline void select_seeds(
6565 const traccc::details::spacepoint_grid_types::const_view& sp_view,
6666 const triplet_counter_spM_collection_types::const_view& spM_tc_view,
6767 const triplet_counter_collection_types::const_view& tc_view,
68- const device_triplet_collection_types::const_view& triplet_view,
69- triplet* data, edm::seed_collection::view seed_view) {
68+ device_triplet_collection_types::view& triplet_view, triplet* data,
69+ const vecmem::data::vector_view<const unsigned int > votes_per_triplet_view,
70+ edm::seed_collection::view seed_view) {
7071
7172 // Check if anything needs to be done.
7273 const triplet_counter_spM_collection_types::const_device triplet_counts_spM (
@@ -83,7 +84,9 @@ inline void select_seeds(
8384 const traccc::details::spacepoint_grid_types::const_device sp_device (
8485 sp_view);
8586
86- const device_triplet_collection_types::const_device triplets (triplet_view);
87+ device_triplet_collection_types::device triplets (triplet_view);
88+ const vecmem::device_vector<const unsigned int > votes_per_triplet (
89+ votes_per_triplet_view);
8790 edm::seed_collection::device seeds_device (seed_view);
8891
8992 // Current work item = middle spacepoint
@@ -97,9 +100,14 @@ inline void select_seeds(
97100
98101 const unsigned int end_triplets_spM =
99102 spM_counter.posTriplets + spM_counter.m_nTriplets ;
103+
100104 // iterate over the triplets in the bin
101105 for (unsigned int i = spM_counter.posTriplets ; i < end_triplets_spM; ++i) {
102- device_triplet aTriplet = triplets[i];
106+ device_triplet& aTriplet = triplets[i];
107+
108+ if (votes_per_triplet.at (i) < 3 ) {
109+ continue ;
110+ }
103111
104112 // spacepoints bottom and top for this triplet
105113 const sp_location spB_loc =
@@ -111,16 +119,6 @@ inline void select_seeds(
111119 const edm::spacepoint_collection::const_device::const_proxy_type spT =
112120 spacepoints.at (sp_device.bin (spT_loc.bin_idx )[spT_loc.sp_idx ]);
113121
114- // update weight of triplet
115- seed_selecting_helper::seed_weight (filter_config, spM, spB, spT,
116- aTriplet.weight );
117-
118- // check if it is a good triplet
119- if (!seed_selecting_helper::single_seed_cut (filter_config, spM, spB,
120- spT, aTriplet.weight )) {
121- continue ;
122- }
123-
124122 // if the number of good triplets is larger than the threshold,
125123 // the triplet with the lowest weight is removed
126124 if (n_triplets_per_spM >= filter_config.max_triplets_per_spM ) {
@@ -169,18 +167,12 @@ inline void select_seeds(
169167 break ;
170168 }
171169
172- // check if it is a good triplet
173- if (seed_selecting_helper::cut_per_middle_sp (filter_config, spacepoints,
174- sp_device, aTriplet) ||
175- n_seeds_per_spM == 0 ) {
170+ n_seeds_per_spM++;
176171
177- n_seeds_per_spM++;
178-
179- seeds_device.push_back (
180- {sp_device.bin (spB_loc.bin_idx )[spB_loc.sp_idx ],
181- sp_device.bin (spM_loc.bin_idx )[spM_loc.sp_idx ],
182- sp_device.bin (spT_loc.bin_idx )[spT_loc.sp_idx ]});
183- }
172+ seeds_device.push_back (
173+ {sp_device.bin (spB_loc.bin_idx )[spB_loc.sp_idx ],
174+ sp_device.bin (spM_loc.bin_idx )[spM_loc.sp_idx ],
175+ sp_device.bin (spT_loc.bin_idx )[spT_loc.sp_idx ]});
184176 }
185177}
186178
0 commit comments