Skip to content

Commit

Permalink
feat: align amvf config with athena (#1723)
Browse files Browse the repository at this point in the history
  • Loading branch information
andiwand committed Dec 14, 2022
1 parent e73b9a6 commit 7414845
Show file tree
Hide file tree
Showing 8 changed files with 31 additions and 21 deletions.
7 changes: 2 additions & 5 deletions Core/include/Acts/Utilities/AnnealingUtility.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -29,17 +29,14 @@ class AnnealingUtility {

/// @brief The configuration struct
struct Config {
// Config constructor with default temperature list: {64.,16.,4.,2.,1.5,1.}
Config(const std::vector<double>& temperatures = {64., 16., 4., 2., 1.5,
1.})
: setOfTemperatures(temperatures) {}
Config();

// Insensitivity of calculated weight at cutoff
double cutOff{9.};

// Set of temperatures, annealing starts at setOfTemperatures[0]
// and anneals towards setOfTemperatures[last]
std::vector<double> setOfTemperatures;
std::vector<double> setOfTemperatures{64., 16., 4., 2., 1.5, 1.};
};

/// Constructor
Expand Down
2 changes: 2 additions & 0 deletions Core/src/Utilities/AnnealingUtility.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,8 @@ static double computeAnnealingWeight(double chi2, double invTemp) {
return std::exp(-chi2 * invTemp);
}

Acts::AnnealingUtility::Config::Config() = default;

void Acts::AnnealingUtility::anneal(State& state) const {
if (state.currentTemperatureIndex < m_cfg.setOfTemperatures.size() - 1) {
++state.currentTemperatureIndex;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -84,15 +84,17 @@ ActsExamples::AdaptiveMultiVertexFinderAlgorithm::execute(
Linearizer linearizer(ltConfig);

// Set up deterministic annealing with user-defined temperatures
std::vector<double> temperatures{8.0, 4.0, 2.0, 1.4142136, 1.2247449, 1.0};
Acts::AnnealingUtility::Config annealingConfig(temperatures);
Acts::AnnealingUtility::Config annealingConfig;
annealingConfig.setOfTemperatures = {1.};
Acts::AnnealingUtility annealingUtility(annealingConfig);

// Set up the vertex fitter with user-defined annealing
using Fitter =
Acts::AdaptiveMultiVertexFitter<Acts::BoundTrackParameters, Linearizer>;
Fitter::Config fitterCfg(ipEstimator);
fitterCfg.annealingTool = annealingUtility;
fitterCfg.minWeight = 0.001;
fitterCfg.doSmoothing = true;
Fitter fitter(fitterCfg);

// Set up the vertex seed finder
Expand All @@ -107,6 +109,7 @@ ActsExamples::AdaptiveMultiVertexFinderAlgorithm::execute(
std::move(linearizer), m_cfg.bField);
// We do not want to use a beamspot constraint here
finderConfig.useBeamSpotConstraint = false;
finderConfig.tracksMaxZinterval = 1. * Acts::UnitConstants::mm;

// Instantiate the finder
Finder finder(finderConfig);
Expand Down
12 changes: 6 additions & 6 deletions Examples/Python/tests/root_file_hashes.txt
Original file line number Diff line number Diff line change
Expand Up @@ -71,12 +71,12 @@ test_vertex_fitting_reading[Iterative-False-100]__performance_vertexing.root: bf
test_vertex_fitting_reading[Iterative-True-100]__performance_vertexing.root: 154a1e8f939ca622af04ad5e56be44cb7b2014eb5c68d000cb1d7c982288c70f
test_vertex_fitting_reading[Iterative-True-100]__performance_vertexing.root: 154a1e8f939ca622af04ad5e56be44cb7b2014eb5c68d000cb1d7c982288c70f
test_vertex_fitting_reading[Iterative-True-100]__performance_vertexing.root: 154a1e8f939ca622af04ad5e56be44cb7b2014eb5c68d000cb1d7c982288c70f
test_vertex_fitting_reading[AMVF-False-100]__performance_vertexing.root: b875063756494b085a3a004f6099d0b024e7d27d7be79edfa982e18576d89582
test_vertex_fitting_reading[AMVF-False-100]__performance_vertexing.root: b875063756494b085a3a004f6099d0b024e7d27d7be79edfa982e18576d89582
test_vertex_fitting_reading[AMVF-False-100]__performance_vertexing.root: b875063756494b085a3a004f6099d0b024e7d27d7be79edfa982e18576d89582
test_vertex_fitting_reading[AMVF-True-100]__performance_vertexing.root: 684f13d3a8e875a122fa8a1e20822fc902a83c478d370cc5217fd9c7fd64c755
test_vertex_fitting_reading[AMVF-True-100]__performance_vertexing.root: 684f13d3a8e875a122fa8a1e20822fc902a83c478d370cc5217fd9c7fd64c755
test_vertex_fitting_reading[AMVF-True-100]__performance_vertexing.root: 684f13d3a8e875a122fa8a1e20822fc902a83c478d370cc5217fd9c7fd64c755
test_vertex_fitting_reading[AMVF-False-100]__performance_vertexing.root: 2603c829cb0bc35656f1872821dee88becfb75afbee7593831166b2c6187be40
test_vertex_fitting_reading[AMVF-False-100]__performance_vertexing.root: 2603c829cb0bc35656f1872821dee88becfb75afbee7593831166b2c6187be40
test_vertex_fitting_reading[AMVF-False-100]__performance_vertexing.root: 2603c829cb0bc35656f1872821dee88becfb75afbee7593831166b2c6187be40
test_vertex_fitting_reading[AMVF-True-100]__performance_vertexing.root: 81f5f093fa295079ffdf2c3a5d02504adc2b9218fc3d7ccaba1090b860abc013
test_vertex_fitting_reading[AMVF-True-100]__performance_vertexing.root: 81f5f093fa295079ffdf2c3a5d02504adc2b9218fc3d7ccaba1090b860abc013
test_vertex_fitting_reading[AMVF-True-100]__performance_vertexing.root: 81f5f093fa295079ffdf2c3a5d02504adc2b9218fc3d7ccaba1090b860abc013
test_bfield_writing__solenoid.root: 7ab4d298cd1657c93c90ad7759ea536ad93f52b11cc90f8e3abe611b9cf13234
test_bfield_writing__solenoid2.root: 948435fab0d2d23b61884acb44e150adc6ab7b432dc41e4e03ae289d8ac30224
test_root_prop_step_writer[configPosConstructor]__prop_steps.root: bfdac36120b314a2ca2041600e3e4b9c07676575bd28ff0145b869f89b53cedf
Expand Down
6 changes: 4 additions & 2 deletions Tests/UnitTests/Core/Utilities/AnnealingUtilityTests.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,8 @@ namespace Test {

BOOST_AUTO_TEST_CASE(annealing_tool_singleChi2_tests) {
std::vector<double> temperatures{64., 16., 4., 2., 1.5, 1.};
AnnealingUtility::Config config(temperatures);
AnnealingUtility::Config config;
config.setOfTemperatures = temperatures;
AnnealingUtility annealingTool(config);

AnnealingUtility::State state;
Expand Down Expand Up @@ -112,7 +113,8 @@ BOOST_AUTO_TEST_CASE(annealing_tool_multiChi2_tests) {
3.5, 5.8, 11.0, 1.1, 3.5, 6.7};

std::vector<double> temperatures{64., 16., 4., 2., 1.5, 1.};
AnnealingUtility::Config config(temperatures);
AnnealingUtility::Config config;
config.setOfTemperatures = {64., 16., 4., 2., 1.5, 1.};
AnnealingUtility annealingTool(config);

AnnealingUtility::State state;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -65,7 +65,8 @@ BOOST_AUTO_TEST_CASE(adaptive_multi_vertex_finder_test) {
IPEstimator ipEstimator(ipEstimatorCfg);

std::vector<double> temperatures{8.0, 4.0, 2.0, 1.4142136, 1.2247449, 1.0};
AnnealingUtility::Config annealingConfig(temperatures);
AnnealingUtility::Config annealingConfig;
annealingConfig.setOfTemperatures = temperatures;
AnnealingUtility annealingUtility(annealingConfig);

using Fitter = AdaptiveMultiVertexFitter<BoundTrackParameters, Linearizer>;
Expand Down Expand Up @@ -221,7 +222,8 @@ BOOST_AUTO_TEST_CASE(adaptive_multi_vertex_finder_usertype_test) {
IPEstimator ipEstimator(ipEstimatorCfg);

std::vector<double> temperatures{8.0, 4.0, 2.0, 1.4142136, 1.2247449, 1.0};
AnnealingUtility::Config annealingConfig(temperatures);
AnnealingUtility::Config annealingConfig;
annealingConfig.setOfTemperatures = temperatures;
AnnealingUtility annealingUtility(annealingConfig);

using Fitter = AdaptiveMultiVertexFitter<InputTrack, Linearizer>;
Expand Down Expand Up @@ -360,7 +362,8 @@ BOOST_AUTO_TEST_CASE(adaptive_multi_vertex_finder_grid_seed_finder_test) {
IPEstimator ipEst(ipEstCfg);

std::vector<double> temperatures{8.0, 4.0, 2.0, 1.4142136, 1.2247449, 1.0};
AnnealingUtility::Config annealingConfig(temperatures);
AnnealingUtility::Config annealingConfig;
annealingConfig.setOfTemperatures = temperatures;
AnnealingUtility annealingUtility(annealingConfig);

using Fitter = AdaptiveMultiVertexFitter<BoundTrackParameters, Linearizer>;
Expand Down Expand Up @@ -510,7 +513,8 @@ BOOST_AUTO_TEST_CASE(
IPEstimator ipEst(ipEstCfg);

std::vector<double> temperatures{8.0, 4.0, 2.0, 1.4142136, 1.2247449, 1.0};
AnnealingUtility::Config annealingConfig(temperatures);
AnnealingUtility::Config annealingConfig;
annealingConfig.setOfTemperatures = temperatures;
AnnealingUtility annealingUtility(annealingConfig);

using Fitter = AdaptiveMultiVertexFitter<BoundTrackParameters, Linearizer>;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -335,7 +335,8 @@ BOOST_AUTO_TEST_CASE(adaptive_multi_vertex_fitter_test_athena) {
IPEstimator ip3dEst(ip3dEstCfg);

std::vector<double> temperatures(1, 3.);
AnnealingUtility::Config annealingConfig(temperatures);
AnnealingUtility::Config annealingConfig;
annealingConfig.setOfTemperatures = temperatures;
AnnealingUtility annealingUtility(annealingConfig);

AdaptiveMultiVertexFitter<BoundTrackParameters, Linearizer>::Config fitterCfg(
Expand Down
3 changes: 2 additions & 1 deletion docs/examples/howto/setup_and_run_vertexing.md
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,8 @@ Now, for the sake of this example, let's specify a user-defined annealing scheme
```cpp
// Set up deterministic annealing with user-defined temperatures
std::vector<double> temperatures{8.0, 4.0, 2.0, 1.4142136, 1.2247449, 1.0};
Acts::AnnealingUtility::Config annealingConfig(temperatures);
Acts::AnnealingUtility::Config annealingConfig;
annealingConfig.setOfTemperatures = temperatures;
Acts::AnnealingUtility annealingUtility(annealingConfig);
```
The AMVF strongly interplays with its dedicated vertex fitter, the *Adaptive Multi-Vertex Fitter*. Let's configure and set it up with the annealing utility defined above:
Expand Down

0 comments on commit 7414845

Please sign in to comment.