From a9ee4195ea8f40ab39a648ead6448ee64372c1c6 Mon Sep 17 00:00:00 2001
From: Carlo Varni <cvarni@lxplus734.cern.ch>
Date: Wed, 12 Jan 2022 14:18:07 +0100
Subject: [PATCH] Fit run time error

---
 .../python/ActsSeedingToolConfig.py           |  2 ++
 .../ActsTrkFinding/src/ActsSeedingTool.cxx    | 27 +++++++++++++++----
 .../Acts/ActsTrkFinding/src/ActsSeedingTool.h |  2 ++
 3 files changed, 26 insertions(+), 5 deletions(-)

diff --git a/Tracking/Acts/ActsTrkFinding/python/ActsSeedingToolConfig.py b/Tracking/Acts/ActsTrkFinding/python/ActsSeedingToolConfig.py
index 151cc8442c42..4d1fcec64dc3 100644
--- a/Tracking/Acts/ActsTrkFinding/python/ActsSeedingToolConfig.py
+++ b/Tracking/Acts/ActsTrkFinding/python/ActsSeedingToolConfig.py
@@ -65,6 +65,8 @@ def ActsSeedingToolBaseCfg(ConfigFlags,
     options.setdefault('radLengthPerSeed', 0.5)
     options.setdefault('minPt', 500. * UnitConstants.MeV)
     options.setdefault('impactMax', 3 * UnitConstants.mm)
+    options.setdefault('numPhiNeighbors', 1)
+    options.setdefault('zBinEdges', [])
     options.setdefault('zBinNeighborsTop', [])
     options.setdefault('zBinNeighborsBottom', [])
     
diff --git a/Tracking/Acts/ActsTrkFinding/src/ActsSeedingTool.cxx b/Tracking/Acts/ActsTrkFinding/src/ActsSeedingTool.cxx
index 343065736b8f..c49287dd6c44 100644
--- a/Tracking/Acts/ActsTrkFinding/src/ActsSeedingTool.cxx
+++ b/Tracking/Acts/ActsTrkFinding/src/ActsSeedingTool.cxx
@@ -39,6 +39,21 @@ namespace ActsTrk {
     ATH_MSG_INFO( "   " << m_radLengthPerSeed );
     ATH_MSG_INFO( "   " << m_minPt );
     ATH_MSG_INFO( "   " << m_impactMax );
+    ATH_MSG_INFO( "   " << m_numPhiNeighbors );
+
+    if (m_zBinEdges.size() - 1 != 
+	m_zBinNeighborsTop.size() and
+	not m_zBinNeighborsTop.empty()) {
+      ATH_MSG_ERROR("Inconsistent config zBinNeighborsTop");
+      return StatusCode::FAILURE;
+    }
+
+    if (m_zBinEdges.size() - 1 !=
+	m_zBinNeighborsBottom.size() and
+	not m_zBinNeighborsBottom.empty()) {
+      ATH_MSG_ERROR("Inconsistent config zBinNeighborsBottom");
+      return StatusCode::FAILURE;
+    }
     
     return StatusCode::SUCCESS;
   }
@@ -56,7 +71,7 @@ namespace ActsTrk {
 		   spContainer.end(),
 		   beamSpotData,
 		   magFieldContext );
-    
+
     // Store seeds
     seedContainer.reserve(groupSeeds.size());
     for (unsigned int i(0);i<groupSeeds.size();i++) {
@@ -110,9 +125,9 @@ namespace ActsTrk {
     };
 
     std::shared_ptr< Acts::BinFinder< external_spacepoint_t > > bottomBinFinder =
-      std::make_shared< Acts::BinFinder< external_spacepoint_t > >(m_zBinNeighborsBottom, 1);
+      std::make_shared< Acts::BinFinder< external_spacepoint_t > >(m_zBinNeighborsBottom, m_numPhiNeighbors);
     std::shared_ptr< Acts::BinFinder< external_spacepoint_t > > topBinFinder =
-      std::make_shared< Acts::BinFinder< external_spacepoint_t > >(m_zBinNeighborsTop, 1);
+      std::make_shared< Acts::BinFinder< external_spacepoint_t > >(m_zBinNeighborsTop, m_numPhiNeighbors);
     
     std::unique_ptr< Acts::SpacePointGrid< external_spacepoint_t > > grid = 
       Acts::SpacePointGridCreator::createGrid< external_spacepoint_t >(gridCfg);
@@ -121,9 +136,8 @@ namespace ActsTrk {
     
     Acts::Seedfinder< external_spacepoint_t > finder(finderCfg);
     
-    
     static thread_local typename decltype(finder)::State state;
-    
+
     auto group = spacePointsGrouping.begin();
     auto groupEnd = spacePointsGrouping.end();
     for (; group != groupEnd; ++group) {
@@ -152,6 +166,9 @@ namespace ActsTrk {
     gridCfg.deltaRMax = m_deltaRMax;
     gridCfg.cotThetaMax = m_cotThetaMax;
     gridCfg.bFieldInZ = bField[2];
+    gridCfg.impactMax = m_impactMax;
+    gridCfg.numPhiNeighbors = m_numPhiNeighbors;
+    gridCfg.zBinEdges = m_zBinEdges;
 
     // Configuration for Acts::Seedfinder
     // These values will not be changed during execution
diff --git a/Tracking/Acts/ActsTrkFinding/src/ActsSeedingTool.h b/Tracking/Acts/ActsTrkFinding/src/ActsSeedingTool.h
index 24f1f22541cb..cfa374316ab2 100644
--- a/Tracking/Acts/ActsTrkFinding/src/ActsSeedingTool.h
+++ b/Tracking/Acts/ActsTrkFinding/src/ActsSeedingTool.h
@@ -94,6 +94,8 @@ namespace ActsTrk {
     Gaudi::Property< float > m_radLengthPerSeed {this,"radLengthPerSeed",0.5,""};
     Gaudi::Property< float > m_minPt {this,"minPt",500. * Acts::UnitConstants::MeV,""};
     Gaudi::Property< float > m_impactMax {this,"impactMax",3. * Acts::UnitConstants::mm,""};
+    Gaudi::Property< int > m_numPhiNeighbors {this, "numPhiNeighbors", 1, ""};
+    Gaudi::Property< std::vector<float> > m_zBinEdges {this, "zBinEdges", {} , ""};
     Gaudi::Property< std::vector<std::pair<int, int>> > m_zBinNeighborsTop{this, "zBinNeighborsTop", {}, ""};
     Gaudi::Property< std::vector<std::pair<int, int>> > m_zBinNeighborsBottom{this, "zBinNeighborsBottom", {}, ""};
   };
-- 
GitLab