-
Notifications
You must be signed in to change notification settings - Fork 236
Expand file tree
/
Copy pathGsfMixtureReduction.hpp
More file actions
47 lines (40 loc) · 2.19 KB
/
GsfMixtureReduction.hpp
File metadata and controls
47 lines (40 loc) · 2.19 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
// This file is part of the ACTS project.
//
// Copyright (C) 2016 CERN for the benefit of the ACTS project
//
// This Source Code Form is subject to the terms of the Mozilla Public
// License, v. 2.0. If a copy of the MPL was not distributed with this
// file, You can obtain one at https://mozilla.org/MPL/2.0/.
#pragma once
#include "Acts/Surfaces/Surface.hpp"
#include "Acts/TrackFitting/GsfOptions.hpp"
namespace Acts {
/// Very simple mixture reduction method: Just removes the components with the
/// smallest weight until the required number of components is reached
/// @param cmpCache the component collection
/// @param maxCmpsAfterMerge the number of components we want to reach
/// @param surface the surface type on which the components are (unused here)
/// @ingroup track_fitting
void reduceMixtureLargestWeights(std::vector<Acts::GsfComponent> &cmpCache,
std::size_t maxCmpsAfterMerge,
const Surface &surface);
/// Greedy component reduction algorithm. Reduces the components with the
/// minimal symmetric KL-distance (applied only to the q/p-dimension) until the
/// required number of components is reached.
/// @param cmpCache the component collection
/// @param maxCmpsAfterMerge the number of components we want to reach
/// @param surface the surface type on which the components are
/// @ingroup track_fitting
void reduceMixtureWithKLDistance(std::vector<GsfComponent> &cmpCache,
std::size_t maxCmpsAfterMerge,
const Surface &surface);
/// Naive implementation of component reduction with KL-distance. Recomputes all
/// distances in every iteration without any caching or optimization. This
/// serves as a baseline for testing and benchmarking the optimized version.
/// @param cmpCache the component collection
/// @param maxCmpsAfterMerge the number of components we want to reach
/// @param surface the surface type on which the components are
void reduceMixtureWithKLDistanceNaive(std::vector<GsfComponent> &cmpCache,
std::size_t maxCmpsAfterMerge,
const Surface &surface);
} // namespace Acts