From 4a47a8eb54f21b07adffbbf6aa370fe18b1fa0a2 Mon Sep 17 00:00:00 2001
From: Vladimir Lyubushkin <Vladimir.Lyubushkin@cern.ch>
Date: Mon, 18 May 2020 15:45:40 +0200
Subject: [PATCH] update TrigMultiTrkHypo alg due to change of the Magnetic
 Field Svc usage in TrkVKalVrtFitter (ATR-21340, ATR-21379)

---
 .../TrigBphysHypo/python/TrigMultiTrkHypoConfig.py        | 3 ++-
 .../TrigHypothesis/TrigBphysHypo/src/TrigMultiTrkHypo.cxx | 8 ++++----
 .../TrigHypothesis/TrigBphysHypo/src/TrigMultiTrkHypo.h   | 1 -
 3 files changed, 6 insertions(+), 6 deletions(-)

diff --git a/Trigger/TrigHypothesis/TrigBphysHypo/python/TrigMultiTrkHypoConfig.py b/Trigger/TrigHypothesis/TrigBphysHypo/python/TrigMultiTrkHypoConfig.py
index 5632dd3145d..e70018acaf5 100644
--- a/Trigger/TrigHypothesis/TrigBphysHypo/python/TrigMultiTrkHypoConfig.py
+++ b/Trigger/TrigHypothesis/TrigBphysHypo/python/TrigMultiTrkHypoConfig.py
@@ -25,12 +25,13 @@ class TrigMultiTrkHypoConfig(object):
         except KeyError:
             log.error('TrigMultiTrkHypo.trigLevel should be L2 or EF, but %s provided.', trigLevel)
 
+        from TrkExTools.AtlasExtrapolator import AtlasExtrapolator
         from TrkVKalVrtFitter.TrkVKalVrtFitterConf import Trk__TrkVKalVrtFitter
         VertexFitter = Trk__TrkVKalVrtFitter(
             name = 'TrigBphysFitter_'+trigSequenceName+trigLevel,
             FirstMeasuredPoint = False,
             MakeExtendedVertex = False,
-            Extrapolator = 'Trk::Extrapolator/InDetExtrapolator')
+            Extrapolator = AtlasExtrapolator())
 
         from InDetConversionFinderTools.InDetConversionFinderToolsConf import InDet__VertexPointEstimator
         VertexPointEstimator = InDet__VertexPointEstimator(
diff --git a/Trigger/TrigHypothesis/TrigBphysHypo/src/TrigMultiTrkHypo.cxx b/Trigger/TrigHypothesis/TrigBphysHypo/src/TrigMultiTrkHypo.cxx
index 89389346ad2..8b698c4b4d1 100644
--- a/Trigger/TrigHypothesis/TrigBphysHypo/src/TrigMultiTrkHypo.cxx
+++ b/Trigger/TrigHypothesis/TrigBphysHypo/src/TrigMultiTrkHypo.cxx
@@ -92,8 +92,6 @@ StatusCode TrigMultiTrkHypo::initialize() {
   ATH_CHECK( m_trigBphysContainerKey.initialize() );
 
   ATH_CHECK( m_vertexFitter.retrieve() );
-  m_vertexFitterState = m_vertexFitter->makeState();
-  m_vertexFitter->setMassInputParticles(m_trkMass, *m_vertexFitterState);
   ATH_CHECK( m_vertexPointEstimator.retrieve() );
 
   ATH_CHECK( m_hypoTools.retrieve() );
@@ -317,7 +315,9 @@ xAOD::TrigBphys* TrigMultiTrkHypo::fit(const std::vector<ElementLink<xAOD::Track
   if (errorcode != 0) startingPoint = Amg::Vector3D::Zero(3);
   ATH_MSG_DEBUG( "Starting point: (" << startingPoint(0) << ", " << startingPoint(1) << ", " << startingPoint(2) << ")" );
 
-  xAOD::Vertex* vertex = m_vertexFitter->fit(tracklist, startingPoint, *m_vertexFitterState);
+  auto fitterState = m_vertexFitter->makeState();
+  m_vertexFitter->setMassInputParticles(m_trkMass, *fitterState);
+  xAOD::Vertex* vertex = m_vertexFitter->fit(tracklist, startingPoint, *fitterState);
   if (!vertex) {
     ATH_MSG_DEBUG( "Vertex fit fails" );
     return result;
@@ -331,7 +331,7 @@ xAOD::TrigBphys* TrigMultiTrkHypo::fit(const std::vector<ElementLink<xAOD::Track
 
   double invariantMass = 0.;
   double invariantMassError = 0.;
-  if (!m_vertexFitter->VKalGetMassError(invariantMass, invariantMassError, *m_vertexFitterState).isSuccess()) {
+  if (!m_vertexFitter->VKalGetMassError(invariantMass, invariantMassError, *fitterState).isSuccess()) {
     ATH_MSG_DEBUG( "Warning from TrkVKalVrtFitter: can not calculate uncertainties" );
     invariantMass = -9999.;
   }
diff --git a/Trigger/TrigHypothesis/TrigBphysHypo/src/TrigMultiTrkHypo.h b/Trigger/TrigHypothesis/TrigBphysHypo/src/TrigMultiTrkHypo.h
index 31c66a69da5..dbb368538d2 100644
--- a/Trigger/TrigHypothesis/TrigBphysHypo/src/TrigMultiTrkHypo.h
+++ b/Trigger/TrigHypothesis/TrigBphysHypo/src/TrigMultiTrkHypo.h
@@ -79,7 +79,6 @@ class TrigMultiTrkHypo: public ::HypoBase {
 
   ToolHandle<InDet::VertexPointEstimator> m_vertexPointEstimator {this, "VertexPointEstimator", "", "tool to find starting point for the vertex fitter"};
   ToolHandle<Trk::TrkVKalVrtFitter> m_vertexFitter {this, "VertexFitter", "", "VKalVrtFitter tool to fit tracks into the common vertex"};
-  std::unique_ptr<Trk::IVKalState> m_vertexFitterState;
 
   ToolHandleArray<TrigMultiTrkHypoTool> m_hypoTools {this, "HypoTools", {}, "tools to perform selection"};
   ToolHandle<GenericMonitoringTool> m_monTool {this, "MonTool", "", "monitoring tool"};
-- 
GitLab