From 97f96d0128ef4e237801a49fd368737ef6779733 Mon Sep 17 00:00:00 2001
From: Tobias Bockh <tobias.boeckh@cern.ch>
Date: Thu, 4 Aug 2022 11:45:07 +0200
Subject: [PATCH] added Gaudi parameters to ignore all hits in a list of layers

---
 .../FaserActsGeometry/FaserActsLayerBuilder.h |  2 +-
 .../FaserActsKalmanFilter/ITrackSeedTool.h    |  2 +-
 .../python/CKF2Config.py                      | 19 +++++----
 .../python/TI12CKF2Config.py                  |  8 +---
 .../src/ActsTrackSeedTool.cxx                 |  2 +-
 .../src/ActsTrackSeedTool.h                   |  2 +-
 .../Acts/FaserActsKalmanFilter/src/CKF2.cxx   |  2 +-
 .../Acts/FaserActsKalmanFilter/src/CKF2.h     |  2 +-
 .../src/CircleFitTrackSeedTool.cxx            | 40 +++++--------------
 .../src/CircleFitTrackSeedTool.h              |  6 +--
 .../src/MyTrackSeedTool.cxx                   |  2 +-
 .../src/MyTrackSeedTool.h                     |  2 +-
 .../src/ThreeStationTrackSeedTool.cxx         |  2 +-
 .../src/ThreeStationTrackSeedTool.h           |  2 +-
 .../Acts/FaserActsKalmanFilter/test/CKF2.py   |  2 +-
 .../FaserActsKalmanFilter/test/TI12CKF2.py    | 18 ++++++---
 16 files changed, 47 insertions(+), 66 deletions(-)

diff --git a/Tracking/Acts/FaserActsGeometry/FaserActsGeometry/FaserActsLayerBuilder.h b/Tracking/Acts/FaserActsGeometry/FaserActsGeometry/FaserActsLayerBuilder.h
index 9ab2ae89..132fd1ca 100644
--- a/Tracking/Acts/FaserActsGeometry/FaserActsGeometry/FaserActsLayerBuilder.h
+++ b/Tracking/Acts/FaserActsGeometry/FaserActsGeometry/FaserActsLayerBuilder.h
@@ -117,7 +117,7 @@ private:
   Config m_cfg;
   Acts::Vector3 m_worldDimensions = { 400.0_mm, 400.0_mm, 8000.0_mm };
   Acts::Vector3 m_worldCenter = {0.0, 0.0, 0.0};
-  Acts::Vector3 m_trackerDimensions = { 400.0_mm, 400.0_mm, 50.0_mm };
+  Acts::Vector3 m_trackerDimensions = { 400.0_mm, 400.0_mm, 100.0_mm };
 
   /// Private access to the logger
   const Acts::Logger&
diff --git a/Tracking/Acts/FaserActsKalmanFilter/FaserActsKalmanFilter/ITrackSeedTool.h b/Tracking/Acts/FaserActsKalmanFilter/FaserActsKalmanFilter/ITrackSeedTool.h
index 238fbb13..1ef1a792 100644
--- a/Tracking/Acts/FaserActsKalmanFilter/FaserActsKalmanFilter/ITrackSeedTool.h
+++ b/Tracking/Acts/FaserActsKalmanFilter/FaserActsKalmanFilter/ITrackSeedTool.h
@@ -20,7 +20,7 @@ class ITrackSeedTool : virtual public IAlgTool {
 public:
   DeclareInterfaceID(ITrackSeedTool, 1, 0);
 
-  virtual StatusCode run() = 0;
+  virtual StatusCode run(std::vector<int> maskedLayers = {}) = 0;
   virtual const std::shared_ptr<std::vector<Acts::CurvilinearTrackParameters>> initialTrackParameters() const = 0;
   virtual const std::shared_ptr<const Acts::Surface> initialSurface() const = 0;
   virtual const std::shared_ptr<std::vector<IndexSourceLink>> sourceLinks() const = 0;
diff --git a/Tracking/Acts/FaserActsKalmanFilter/python/CKF2Config.py b/Tracking/Acts/FaserActsKalmanFilter/python/CKF2Config.py
index 0be78f0c..07861f8b 100644
--- a/Tracking/Acts/FaserActsKalmanFilter/python/CKF2Config.py
+++ b/Tracking/Acts/FaserActsKalmanFilter/python/CKF2Config.py
@@ -59,29 +59,28 @@ def CKF2Cfg(flags, **kwargs):
     track_seed_tool.TrackCollection = "Segments"
 
     trajectory_states_writer_tool = CompFactory.RootTrajectoryStatesWriterTool()
-    trajectory_states_writer_tool.noDiagnostics = kwargs["noDiagnostics"]
+    trajectory_states_writer_tool.noDiagnostics = kwargs.pop("noDiagnostics", True)
     trajectory_states_writer_tool1 = CompFactory.RootTrajectoryStatesWriterTool()
-    trajectory_states_writer_tool1.noDiagnostics = kwargs["noDiagnostics"]
+    trajectory_states_writer_tool1.noDiagnostics = kwargs.pop("noDiagnostics", True)
     trajectory_states_writer_tool1.FilePath = "track_states_ckf1.root"
 
-    trajectory_summary_writer_tool = CompFactory.RootTrajectorySummaryWriterTool(**kwargs)
-    trajectory_summary_writer_tool.noDiagnostics = kwargs["noDiagnostics"]
+    trajectory_summary_writer_tool = CompFactory.RootTrajectorySummaryWriterTool()
+    trajectory_summary_writer_tool.noDiagnostics = kwargs.pop("noDiagnostics", True)
     trajectory_summary_writer_tool1 = CompFactory.RootTrajectorySummaryWriterTool()
     trajectory_summary_writer_tool1.FilePath = "track_summary_ckf1.root"
-    trajectory_summary_writer_tool1.noDiagnostics = kwargs["noDiagnostics"]
+    trajectory_summary_writer_tool1.noDiagnostics = kwargs.pop("noDiagnostics", True)
 
     actsExtrapolationTool = CompFactory.FaserActsExtrapolationTool("FaserActsExtrapolationTool")
     actsExtrapolationTool.MaxSteps = 1000
     actsExtrapolationTool.TrackingGeometryTool = CompFactory.FaserActsTrackingGeometryTool("TrackingGeometryTool")
 
-    trajectory_performance_writer_tool = CompFactory.PerformanceWriterTool("PerformanceWriterTool", **kwargs)
+    trajectory_performance_writer_tool = CompFactory.PerformanceWriterTool("PerformanceWriterTool")
     trajectory_performance_writer_tool.ExtrapolationTool = actsExtrapolationTool
-    trajectory_performance_writer_tool.noDiagnostics = kwargs["noDiagnostics"]
-
+    trajectory_performance_writer_tool.noDiagnostics = kwargs.pop("noDiagnostics", True)
 
     ckf = CompFactory.CKF2(**kwargs)
-    kalman_fitter1 = CompFactory.KalmanFitterTool(name="fitterTool1", **kwargs)
-    kalman_fitter1.noDiagnostics = kwargs["noDiagnostics"]
+    kalman_fitter1 = CompFactory.KalmanFitterTool(name="fitterTool1")
+    kalman_fitter1.noDiagnostics = kwargs.pop("noDiagnostics", True)
     kalman_fitter1.ActsLogging = "INFO"
     kalman_fitter1.SummaryWriter = True
     kalman_fitter1.StatesWriter = False
diff --git a/Tracking/Acts/FaserActsKalmanFilter/python/TI12CKF2Config.py b/Tracking/Acts/FaserActsKalmanFilter/python/TI12CKF2Config.py
index 28b0aa9d..35d29956 100644
--- a/Tracking/Acts/FaserActsKalmanFilter/python/TI12CKF2Config.py
+++ b/Tracking/Acts/FaserActsKalmanFilter/python/TI12CKF2Config.py
@@ -54,8 +54,6 @@ def TI12CKF2Cfg(flags, **kwargs):
     track_seed_tool.covTheta = initial_variance_inflation[3] * sigma_theta * sigma_theta
     track_seed_tool.covQOverP = initial_variance_inflation[4] * sigma_qop * sigma_qop
     track_seed_tool.std_cluster = 0.0231
-    origin = -1900
-    track_seed_tool.origin = origin
     track_seed_tool.TrackCollection = "Segments"
 
     trajectory_states_writer_tool = CompFactory.RootTrajectoryStatesWriterTool()
@@ -64,7 +62,7 @@ def TI12CKF2Cfg(flags, **kwargs):
     trajectory_states_writer_tool1.noDiagnostics = kwargs["noDiagnostics"]
     trajectory_states_writer_tool1.FilePath = "track_states_ckf1.root"
 
-    trajectory_summary_writer_tool = CompFactory.RootTrajectorySummaryWriterTool(**kwargs)
+    trajectory_summary_writer_tool = CompFactory.RootTrajectorySummaryWriterTool()
     trajectory_summary_writer_tool.noDiagnostics = kwargs["noDiagnostics"]
     trajectory_summary_writer_tool1 = CompFactory.RootTrajectorySummaryWriterTool()
     trajectory_summary_writer_tool1.FilePath = "track_summary_ckf1.root"
@@ -80,7 +78,7 @@ def TI12CKF2Cfg(flags, **kwargs):
 
 
     ckf = CompFactory.CKF2(**kwargs)
-    kalman_fitter1 = CompFactory.KalmanFitterTool(name="fitterTool1", **kwargs)
+    kalman_fitter1 = CompFactory.KalmanFitterTool(name="fitterTool1")
     kalman_fitter1.noDiagnostics = kwargs["noDiagnostics"]
     kalman_fitter1.ActsLogging = "INFO"
     kalman_fitter1.SummaryWriter = True
@@ -88,7 +86,6 @@ def TI12CKF2Cfg(flags, **kwargs):
     kalman_fitter1.SeedCovarianceScale = 10
     kalman_fitter1.RootTrajectoryStatesWriterTool = trajectory_states_writer_tool1
     kalman_fitter1.RootTrajectorySummaryWriterTool = trajectory_summary_writer_tool1
-    kalman_fitter1.origin = origin
     ckf.KalmanFitterTool1 = kalman_fitter1
 
     ckf.TrackSeed = track_seed_tool
@@ -99,7 +96,6 @@ def TI12CKF2Cfg(flags, **kwargs):
     ckf.StatesWriter = True
     ckf.PerformanceWriter = False
     # ckf.PerformanceWriterTool = trajectory_performance_writer_tool
-    ckf.origin = origin
 
     ckf.nMax = 10
     ckf.chi2Max = 100000
diff --git a/Tracking/Acts/FaserActsKalmanFilter/src/ActsTrackSeedTool.cxx b/Tracking/Acts/FaserActsKalmanFilter/src/ActsTrackSeedTool.cxx
index b311727d..4161c19e 100644
--- a/Tracking/Acts/FaserActsKalmanFilter/src/ActsTrackSeedTool.cxx
+++ b/Tracking/Acts/FaserActsKalmanFilter/src/ActsTrackSeedTool.cxx
@@ -27,7 +27,7 @@ StatusCode ActsTrackSeedTool::initialize() {
 }
 
 
-StatusCode ActsTrackSeedTool::run() {
+StatusCode ActsTrackSeedTool::run(std::vector<int> /*maskedLayers*/) {
   SG::ReadHandle<TrackCollection> trackCollection {m_trackCollection};
   ATH_CHECK(trackCollection.isValid());
 
diff --git a/Tracking/Acts/FaserActsKalmanFilter/src/ActsTrackSeedTool.h b/Tracking/Acts/FaserActsKalmanFilter/src/ActsTrackSeedTool.h
index 95311206..41aebd49 100644
--- a/Tracking/Acts/FaserActsKalmanFilter/src/ActsTrackSeedTool.h
+++ b/Tracking/Acts/FaserActsKalmanFilter/src/ActsTrackSeedTool.h
@@ -18,7 +18,7 @@ public:
   virtual ~ActsTrackSeedTool() = default;
   virtual StatusCode initialize() override;
   virtual StatusCode finalize() override;
-  virtual StatusCode run() override;
+  virtual StatusCode run(std::vector<int> /*maskedLayers*/) override;
 
   const std::shared_ptr<std::vector<Acts::CurvilinearTrackParameters>> initialTrackParameters() const override;
   const std::shared_ptr<const Acts::Surface> initialSurface() const override;
diff --git a/Tracking/Acts/FaserActsKalmanFilter/src/CKF2.cxx b/Tracking/Acts/FaserActsKalmanFilter/src/CKF2.cxx
index 9a47b291..858b97d6 100644
--- a/Tracking/Acts/FaserActsKalmanFilter/src/CKF2.cxx
+++ b/Tracking/Acts/FaserActsKalmanFilter/src/CKF2.cxx
@@ -89,7 +89,7 @@ StatusCode CKF2::execute() {
   Acts::MagneticFieldContext magFieldContext = getMagneticFieldContext(ctx);
   Acts::CalibrationContext calibContext;
 
-  CHECK(m_trackSeedTool->run());
+  CHECK(m_trackSeedTool->run(m_maskedLayers));
   std::shared_ptr<const Acts::Surface> initialSurface =
       m_trackSeedTool->initialSurface();
   std::shared_ptr<std::vector<Acts::CurvilinearTrackParameters>> initialParameters =
diff --git a/Tracking/Acts/FaserActsKalmanFilter/src/CKF2.h b/Tracking/Acts/FaserActsKalmanFilter/src/CKF2.h
index 2c4f510a..2111afcf 100644
--- a/Tracking/Acts/FaserActsKalmanFilter/src/CKF2.h
+++ b/Tracking/Acts/FaserActsKalmanFilter/src/CKF2.h
@@ -137,6 +137,7 @@ private:
   Gaudi::Property<double> m_maxSteps {this, "maxSteps", 10000};
   Gaudi::Property<double> m_chi2Max {this, "chi2Max", 15};
   Gaudi::Property<unsigned long> m_nMax {this, "nMax", 10};
+  Gaudi::Property<std::vector<int>> m_maskedLayers {this, "maskedLayers", {}};
   SG::ReadCondHandleKey<FaserFieldCacheCondObj> m_fieldCondObjInputKey {this, "FaserFieldCacheCondObj", "fieldCondObj", "Name of the Magnetic Field conditions object key"};
   ToolHandle<ITrackSeedTool> m_trackSeedTool {this, "TrackSeed", "ClusterTrackSeedTool"};
   ToolHandle<IFaserActsTrackingGeometryTool> m_trackingGeometryTool {this, "TrackingGeometryTool", "FaserActsTrackingGeometryTool"};
@@ -150,4 +151,3 @@ private:
 };
 
 #endif // FASERACTSKALMANFILTER_CKF2_H
-
diff --git a/Tracking/Acts/FaserActsKalmanFilter/src/CircleFitTrackSeedTool.cxx b/Tracking/Acts/FaserActsKalmanFilter/src/CircleFitTrackSeedTool.cxx
index e7c4f064..066698a4 100644
--- a/Tracking/Acts/FaserActsKalmanFilter/src/CircleFitTrackSeedTool.cxx
+++ b/Tracking/Acts/FaserActsKalmanFilter/src/CircleFitTrackSeedTool.cxx
@@ -34,7 +34,7 @@ StatusCode CircleFitTrackSeedTool::initialize() {
 }
 
 
-StatusCode CircleFitTrackSeedTool::run() {
+StatusCode CircleFitTrackSeedTool::run(std::vector<int> maskedLayers) {
   SG::ReadHandle<Tracker::FaserSCT_ClusterContainer> clusterContainer {m_clusterContainerKey};
       ATH_CHECK(clusterContainer.isValid());
 
@@ -76,6 +76,9 @@ StatusCode CircleFitTrackSeedTool::run() {
     for (const Tracker::FaserSCT_Cluster* cluster : *clusterCollection) {
       clusters.push_back(cluster);
       Identifier id = cluster->detectorElement()->identify();
+      if (std::find(maskedLayers.begin(), maskedLayers.end(), 3 * m_idHelper->station(id) + m_idHelper->layer(id)) != maskedLayers.end()) {
+        continue;
+      }
       CircleFitTrackSeedTool::s_indexMap[cluster->identify()] = measurements.size();
       if (identifierMap->count(id) != 0) {
         Acts::GeometryIdentifier geoId = identifierMap->at(id);
@@ -96,8 +99,8 @@ StatusCode CircleFitTrackSeedTool::run() {
 
   std::array<std::vector<Segment>, 4> segments {};
   for (const Trk::Track* track : *trackCollection) {
-    auto s = Segment(track, m_idHelper);
-    segments[s.station].push_back(s);
+    auto s = Segment(track, m_idHelper, maskedLayers);
+    if (s.station != -1) segments[s.station].push_back(s);
   }
 
   std::vector<Segment> combination {};
@@ -162,32 +165,6 @@ StatusCode CircleFitTrackSeedTool::run() {
       Acts::Vector3 {0, 0, origin}, Acts::Vector3{0, 0, -1});
   m_clusters = std::make_shared<std::vector<const Tracker::FaserSCT_Cluster*>>(clusters);
   m_spacePoints = std::make_shared<std::vector<const Tracker::FaserSCT_SpacePoint*>>(spacePoints);
-
-  /*
-  std::cout.precision(17);
-  for (auto &seed : selectedSeeds) {
-    std::cout << "np.array([";
-    for (const Acts::Vector3 &pos : seed.fakePositions) {
-      std::cout << "[" << pos.x() << ", " << pos.y() << ", " << pos.z() << "], ";
-    }
-    std::cout << "])" << std::endl;
-    std::cout << "chi2: " << seed.chi2 << ", momentum: " << seed.momentum << ", charge: " << seed.charge << std::endl;
-    std::cout << "fit = np.array([" << seed.c1 << ", " << seed.c0 << ", " << seed.cy << ", " << seed.cx << ", " << seed.r << "])" << std::endl;
-
-    std::vector<ParticleHitCount> particleHitCounts;
-    identifyContributingParticles(*simData, seed.clusters, particleHitCounts);
-    auto ip = particles.find(particleHitCounts.front().particleId);
-    if (ip != particles.end()) {
-      const HepMC::GenParticle* particle = ip->second;
-      HepMC::FourVector momentum = particle->momentum();
-      std::cout << "true momentum: " << momentum.rho() * 0.001 << std::endl;
-    }
-    for (const ParticleHitCount &hitCount : particleHitCounts) {
-      std::cout << hitCount.particleId << " : " << hitCount.hitCount << std::endl;
-    }
-  }
-  */
-
   s_indexMap.clear();
 
   return StatusCode::SUCCESS;
@@ -216,13 +193,16 @@ void CircleFitTrackSeedTool::go(const std::array<std::vector<Segment>, 4> &v,
   }
 }
 
-CircleFitTrackSeedTool::Segment::Segment(const Trk::Track* track, const FaserSCT_ID *idHelper) :
+CircleFitTrackSeedTool::Segment::Segment(const Trk::Track* track, const FaserSCT_ID *idHelper, const std::vector<int> &maskedLayers) :
     clusterSet(CircleFitTrackSeedTool::s_indexMap.size()) {
   for (const Trk::TrackStateOnSurface* trackState : *(track->trackStateOnSurfaces())) {
     auto clusterOnTrack = dynamic_cast<const Tracker::FaserSCT_ClusterOnTrack*> (trackState->measurementOnTrack());
     if (clusterOnTrack) {
       const Tracker::FaserSCT_Cluster* cluster = clusterOnTrack->prepRawData();
       Identifier id = cluster->identify();
+      if (std::find(maskedLayers.begin(), maskedLayers.end(), 3 * idHelper->station(id) + idHelper->layer(id)) != maskedLayers.end()) {
+        continue;
+      }
       clusters.push_back(cluster);
       if (CircleFitTrackSeedTool::s_spacePointMap.count(id) > 0) {
         const Tracker::FaserSCT_SpacePoint *sp = CircleFitTrackSeedTool::s_spacePointMap.at(cluster->identify());
diff --git a/Tracking/Acts/FaserActsKalmanFilter/src/CircleFitTrackSeedTool.h b/Tracking/Acts/FaserActsKalmanFilter/src/CircleFitTrackSeedTool.h
index 368abb1f..7866b89f 100644
--- a/Tracking/Acts/FaserActsKalmanFilter/src/CircleFitTrackSeedTool.h
+++ b/Tracking/Acts/FaserActsKalmanFilter/src/CircleFitTrackSeedTool.h
@@ -30,7 +30,7 @@ public:
   virtual ~CircleFitTrackSeedTool() = default;
   virtual StatusCode initialize() override;
   virtual StatusCode finalize() override;
-  virtual StatusCode run() override;
+  virtual StatusCode run(std::vector<int> maskedLayers = {}) override;
 
   const std::shared_ptr<std::vector<Acts::CurvilinearTrackParameters>> initialTrackParameters() const override;
   const std::shared_ptr<const Acts::Surface> initialSurface() const override;
@@ -45,8 +45,8 @@ public:
 private:
   struct Segment {
   public:
-    Segment(const Trk::Track* track, const FaserSCT_ID *idHelper);
-    int station;
+    Segment(const Trk::Track* track, const FaserSCT_ID *idHelper, const std::vector<int> &maskedLayers = {});
+    int station = -1;
     std::vector<const Tracker::FaserSCT_Cluster*> clusters;
     std::vector<const Tracker::FaserSCT_SpacePoint*> spacePoints;
     ClusterSet clusterSet;
diff --git a/Tracking/Acts/FaserActsKalmanFilter/src/MyTrackSeedTool.cxx b/Tracking/Acts/FaserActsKalmanFilter/src/MyTrackSeedTool.cxx
index 28e4c094..b5a5e048 100644
--- a/Tracking/Acts/FaserActsKalmanFilter/src/MyTrackSeedTool.cxx
+++ b/Tracking/Acts/FaserActsKalmanFilter/src/MyTrackSeedTool.cxx
@@ -26,7 +26,7 @@ StatusCode MyTrackSeedTool::initialize() {
 }
 
 
-StatusCode MyTrackSeedTool::run() {
+StatusCode MyTrackSeedTool::run(std::vector<int> /*maskedLayers*/) {
 
   // create track seeds for multiple tracks
   SG::ReadHandle<TrackCollection> trackCollection {m_trackCollection};
diff --git a/Tracking/Acts/FaserActsKalmanFilter/src/MyTrackSeedTool.h b/Tracking/Acts/FaserActsKalmanFilter/src/MyTrackSeedTool.h
index abc4e987..df545c34 100644
--- a/Tracking/Acts/FaserActsKalmanFilter/src/MyTrackSeedTool.h
+++ b/Tracking/Acts/FaserActsKalmanFilter/src/MyTrackSeedTool.h
@@ -25,7 +25,7 @@ public:
   virtual ~MyTrackSeedTool() = default;
   virtual StatusCode initialize() override;
   virtual StatusCode finalize() override;
-  virtual StatusCode run() override;
+  virtual StatusCode run(std::vector<int> /*maskedLayers*/) override;
 
   const std::shared_ptr<std::vector<Acts::CurvilinearTrackParameters>> initialTrackParameters() const override;
   const std::shared_ptr<const Acts::Surface> initialSurface() const override;
diff --git a/Tracking/Acts/FaserActsKalmanFilter/src/ThreeStationTrackSeedTool.cxx b/Tracking/Acts/FaserActsKalmanFilter/src/ThreeStationTrackSeedTool.cxx
index be491832..15db3001 100644
--- a/Tracking/Acts/FaserActsKalmanFilter/src/ThreeStationTrackSeedTool.cxx
+++ b/Tracking/Acts/FaserActsKalmanFilter/src/ThreeStationTrackSeedTool.cxx
@@ -23,7 +23,7 @@ StatusCode ThreeStationTrackSeedTool::initialize() {
 }
 
 
-StatusCode ThreeStationTrackSeedTool::run() {
+StatusCode ThreeStationTrackSeedTool::run(std::vector<int> /*maskedLayers*/) {
   // create track seeds for multiple tracks
   SG::ReadHandle<TrackCollection> trackCollection {m_trackCollection};
   ATH_CHECK(trackCollection.isValid());
diff --git a/Tracking/Acts/FaserActsKalmanFilter/src/ThreeStationTrackSeedTool.h b/Tracking/Acts/FaserActsKalmanFilter/src/ThreeStationTrackSeedTool.h
index 22cbf9af..deab07bb 100644
--- a/Tracking/Acts/FaserActsKalmanFilter/src/ThreeStationTrackSeedTool.h
+++ b/Tracking/Acts/FaserActsKalmanFilter/src/ThreeStationTrackSeedTool.h
@@ -23,7 +23,7 @@ public:
   virtual ~ThreeStationTrackSeedTool() = default;
   virtual StatusCode initialize() override;
   virtual StatusCode finalize() override;
-  virtual StatusCode run() override;
+  virtual StatusCode run(std::vector<int> /*maskedLayers*/) override;
 
   const std::shared_ptr<std::vector<Acts::CurvilinearTrackParameters>> initialTrackParameters() const override;
   const std::shared_ptr<const Acts::Surface> initialSurface() const override;
diff --git a/Tracking/Acts/FaserActsKalmanFilter/test/CKF2.py b/Tracking/Acts/FaserActsKalmanFilter/test/CKF2.py
index 5585743c..27c50d9a 100644
--- a/Tracking/Acts/FaserActsKalmanFilter/test/CKF2.py
+++ b/Tracking/Acts/FaserActsKalmanFilter/test/CKF2.py
@@ -44,7 +44,7 @@ acc.merge(FaserSCT_ClusterizationCfg(ConfigFlags))
 acc.merge(TrackerSpacePointFinderCfg(ConfigFlags))
 acc.merge(SegmentFitAlgCfg(ConfigFlags, SharedHitFraction=0.61, MinClustersPerFit=5, TanThetaXZCut=0.083))
 acc.merge(GhostBustersCfg(ConfigFlags))
-acc.merge(CKF2Cfg(ConfigFlags, noDiagnostics=True))
+acc.merge(CKF2Cfg(ConfigFlags))
 # acc.getEventAlgo("CKF2").OutputLevel = DEBUG
 
 # logging.getLogger('forcomps').setLevel(VERBOSE)
diff --git a/Tracking/Acts/FaserActsKalmanFilter/test/TI12CKF2.py b/Tracking/Acts/FaserActsKalmanFilter/test/TI12CKF2.py
index fffb0717..8d440f05 100644
--- a/Tracking/Acts/FaserActsKalmanFilter/test/TI12CKF2.py
+++ b/Tracking/Acts/FaserActsKalmanFilter/test/TI12CKF2.py
@@ -16,18 +16,24 @@ from TrackerSpacePointFormation.TrackerSpacePointFormationConfig import TrackerS
 from TrackerSegmentFit.TrackerSegmentFitConfig import SegmentFitAlgCfg
 from FaserActsKalmanFilter.GhostBustersConfig import GhostBustersCfg
 from FaserActsKalmanFilter.TI12CKF2Config import TI12CKF2Cfg
+import argparse
+
+parser = argparse.ArgumentParser()
+parser.add_argument("file", nargs="+", help="full path to input file")
+parser.add_argument("--nevents", "-n", default=-1, type=int, help="Number of events to process")
+args = parser.parse_args()
 
 log.setLevel(DEBUG)
 Configurable.configurableRun3Behavior = True
 
-ConfigFlags.Input.Files = ['threeStationRun6833.raw']
+ConfigFlags.Input.Files = args.file
 ConfigFlags.Output.ESDFileName = "CKF.ESD.pool.root"
 ConfigFlags.addFlag("Output.xAODFileName", f"CKF.xAOD.root")
 ConfigFlags.IOVDb.GlobalTag = "OFLCOND-FASER-02"
 ConfigFlags.IOVDb.DatabaseInstance = "OFLP200"
 ConfigFlags.Input.ProjectName = "data22"
 ConfigFlags.Input.isMC = False
-ConfigFlags.GeoModel.FaserVersion = "FASER-02"
+ConfigFlags.GeoModel.FaserVersion = "FASERNU-03"
 ConfigFlags.Common.isOnline = False
 ConfigFlags.GeoModel.Align.Dynamic = False
 ConfigFlags.Beam.NumberOfCollisions = 0.
@@ -39,11 +45,11 @@ acc = MainServicesCfg(ConfigFlags)
 acc.merge(FaserGeometryCfg(ConfigFlags))
 acc.merge(PoolWriteCfg(ConfigFlags))
 acc.merge(FaserByteStreamCnvSvcCfg(ConfigFlags))
-acc.merge(FaserSCT_ClusterizationCfg(ConfigFlags, DataObjectName="SCT_LEVELMODE_RDOs", ClusterToolTimingPattern="X1X"))
+acc.merge(FaserSCT_ClusterizationCfg(ConfigFlags, DataObjectName="SCT_EDGEMODE_RDOs", ClusterToolTimingPattern="01X"))
 acc.merge(TrackerSpacePointFinderCfg(ConfigFlags))
 acc.merge(SegmentFitAlgCfg(ConfigFlags, SharedHitFraction=0.61, MinClustersPerFit=5, TanThetaXZCut=0.083))
 acc.merge(GhostBustersCfg(ConfigFlags))
-acc.merge(TI12CKF2Cfg(ConfigFlags, noDiagnostics=False))
+acc.merge(TI12CKF2Cfg(ConfigFlags))
 acc.getEventAlgo("CKF2").OutputLevel = DEBUG
 
 # logging.getLogger('forcomps').setLevel(VERBOSE)
@@ -61,5 +67,5 @@ replicaSvc.UseCOOLSQLite = True
 replicaSvc.UseCOOLFrontier = False
 replicaSvc.UseGeomSQLite = True
 
-sc = acc.run(maxEvents=-1)
-sys.exit(not sc.isSuccess())
+sc = acc.run(maxEvents=args.nevents)
+sys.exit(not sc.isSuccess())
\ No newline at end of file
-- 
GitLab