diff --git a/Control/CalypsoExample/Reconstruction/scripts/faser_reco.py b/Control/CalypsoExample/Reconstruction/scripts/faser_reco.py
index f7ddab003a59a77df721ee1951a440a16537b614..58f6f038468d2aa678dcf6ea313bf1bd5b024fd2 100755
--- a/Control/CalypsoExample/Reconstruction/scripts/faser_reco.py
+++ b/Control/CalypsoExample/Reconstruction/scripts/faser_reco.py
@@ -58,9 +58,9 @@ else:
     # Try to pick correct geometry from run number
     # This won't work for testbeam data, 
     # so lets call this a hack for now
-    runname = filepath.parts[-2]
+    runname = filepath.parts[-1]
     try:
-        runnumber = int(runname.split('-')[1])
+        runnumber = int(runname.split('-')[2])
     except Exception as e:
         print(f"Failed to find run number in {filepath}")
         print(f"Couldn't parse {runname}")
diff --git a/Tracker/TrackerConditions/FaserSCT_ConditionsAlgorithms/src/FaserSCT_ConfigurationCondAlg.h b/Tracker/TrackerConditions/FaserSCT_ConditionsAlgorithms/src/FaserSCT_ConfigurationCondAlg.h
index fe9d8de4a52ab51f7881ff89e244b3ded6c30f09..44f81c4282b0a50d1859f31396a8d4dd8a8f335e 100644
--- a/Tracker/TrackerConditions/FaserSCT_ConditionsAlgorithms/src/FaserSCT_ConfigurationCondAlg.h
+++ b/Tracker/TrackerConditions/FaserSCT_ConditionsAlgorithms/src/FaserSCT_ConfigurationCondAlg.h
@@ -35,7 +35,7 @@ class FaserSCT_ConfigurationCondAlg : public AthReentrantAlgorithm {
   SG::WriteCondHandleKey<FaserSCT_ConfigurationCondData> m_writeKey{this, "WriteKey", "FaserSCT_ConfigurationCondData", "Key of output (derived) conditions data"};
   ServiceHandle<ICondSvc> m_condSvc{this, "CondSvc", "CondSvc"};
   const FaserSCT_ID* m_idHelper{nullptr};
-  Gaudi::Property<double> m_occupancyThreshold {this, "OccupancyThreshold", 0.015, "Mask strips with an occupancy larger than the OccupancyCut"};
+  Gaudi::Property<double> m_occupancyThreshold {this, "OccupancyThreshold", 0.01, "Mask strips with an occupancy larger than the OccupancyCut"};
 };
 
 
diff --git a/Tracker/TrackerConditions/FaserSCT_ConditionsTools/python/FaserSCT_ConditionsSummaryToolConfig.py b/Tracker/TrackerConditions/FaserSCT_ConditionsTools/python/FaserSCT_ConditionsSummaryToolConfig.py
index 07248a130d49726b724b42198317e14542e687af..8f07c6531bc9023cf6959cff9e9ccc44fb9990af 100644
--- a/Tracker/TrackerConditions/FaserSCT_ConditionsTools/python/FaserSCT_ConditionsSummaryToolConfig.py
+++ b/Tracker/TrackerConditions/FaserSCT_ConditionsTools/python/FaserSCT_ConditionsSummaryToolConfig.py
@@ -11,19 +11,15 @@ def FaserSCT_ConfigurationCondAlgCfg(flags, name="FaserSCT_ConfigurationCondAlg"
     acc = ComponentAccumulator()
     dbInstance = kwargs.get("dbInstance", "INDET_OFL")
     dbFolder = kwargs.get("dbFolder", "/SCT/DAQ/NoisyStrips")
-    acc.merge(addFolders(flags, folderstrings=dbFolder, detDb=dbInstance, className="CondAttrListCollection"))
+    #dbFolder = kwargs.get("dbFolder", "/INDET/NoisyStrips")
+    acc.merge(addFolders(flags, dbFolder, dbInstance, className="CondAttrListCollection"))
     acc.addCondAlgo(FaserSCT_ConfigurationCondAlg(name, **kwargs))
     return acc
 
 
 def FaserSCT_ConfigurationConditionsToolCfg(flags, name="FaserSCT_ConfigurationCondAlg", **kwargs):
     acc = ComponentAccumulator()
-    # tool = kwargs.get("ConditionsTools", FaserSCT_ConfigurationConditionsToolCfg(flags))
-    # folder arguments
-    dbInstance = kwargs.get("dbInstance", "INDET_OFL")
-    dbFolder = kwargs.get("dbFolder", "/SCT/DAQ/NoisyStrips")
     acc.merge(FaserSCT_ConfigurationCondAlgCfg(flags, name="FaserSCT_ConfigurationCondAlg", **kwargs))
-    # acc.setPrivateTools(tool)
     acc.setPrivateTools(FaserSCT_ConfigurationConditionsTool(name, **kwargs))
     return acc
 
diff --git a/Tracker/TrackerConditions/FaserSCT_ConditionsTools/python/FaserSCT_NoisyStripsConfig.py b/Tracker/TrackerConditions/FaserSCT_ConditionsTools/python/FaserSCT_NoisyStripsConfig.py
index c7bd2106f85fb75cae7e0069a248580cc6945272..2ac8a632f87fdc8faf7046001188806dfd1a6dd0 100644
--- a/Tracker/TrackerConditions/FaserSCT_ConditionsTools/python/FaserSCT_NoisyStripsConfig.py
+++ b/Tracker/TrackerConditions/FaserSCT_ConditionsTools/python/FaserSCT_NoisyStripsConfig.py
@@ -16,7 +16,7 @@ def FaserSCT_NoisyStripsCfg(flags, **kwargs):
     NoisyStripsTool may be provided in kwargs
     """
     acc = ComponentAccumulator()
-    dbInstance = kwargs.get("dbInstance", "TDAQ_OFL")
+    dbInstance = kwargs.get("dbInstance", "INDET_OFL")
     dbFolder = kwargs.get("dbFolder", "/SCT/DAQ/NoisyStrips")
     acc.merge(addFolders(flags, dbFolder, dbInstance, className="CondAttrListCollection"))
     # acc.addPublicTool(tool)
diff --git a/Tracker/TrackerRecAlgs/NoisyStripFinder/CMakeLists.txt b/Tracker/TrackerRecAlgs/NoisyStripFinder/CMakeLists.txt
index 29e80551e078ae78985801f204169932da2dcb94..d78cc17e7b1ef8b6cd24ddef92748f163beddbfc 100644
--- a/Tracker/TrackerRecAlgs/NoisyStripFinder/CMakeLists.txt
+++ b/Tracker/TrackerRecAlgs/NoisyStripFinder/CMakeLists.txt
@@ -17,5 +17,5 @@ atlas_add_component( NoisyStripFinder
 
 atlas_install_python_modules( python/*.py )
 
-#atlas_install_scripts( test/*.py )
+atlas_install_scripts( share/*.py test/*.py )
 
diff --git a/Tracker/TrackerRecAlgs/NoisyStripFinder/share/NoisyStripFinderHist_Analysis.py b/Tracker/TrackerRecAlgs/NoisyStripFinder/share/NoisyStripFinderHist_Analysis.py
old mode 100644
new mode 100755
diff --git a/Tracker/TrackerRecAlgs/NoisyStripFinder/share/makeEmptyNoisyStripDB.py b/Tracker/TrackerRecAlgs/NoisyStripFinder/share/makeEmptyNoisyStripDB.py
new file mode 100755
index 0000000000000000000000000000000000000000..aa10f2564913b8ed240920792fe97f53d23dc271
--- /dev/null
+++ b/Tracker/TrackerRecAlgs/NoisyStripFinder/share/makeEmptyNoisyStripDB.py
@@ -0,0 +1,69 @@
+#!/usr/bin/env python
+
+import ROOT
+
+from PyCool import cool
+
+dbSvc = cool.DatabaseSvcFactory.databaseService()
+# Data DB name
+connectString = 'sqlite://;schema=noisy_strips.db;dbname=CONDBR3'
+
+print('Creating empty database')
+
+dbSvc.dropDatabase(connectString)
+
+db = dbSvc.createDatabase(connectString)
+
+noisyStripsSpec = cool.RecordSpecification()
+noisyStripsSpec.extend('sensor', cool.StorageType.Int32)
+noisyStripsSpec.extend('strip', cool.StorageType.Int32)
+noisyStripsSpec.extend('occupancy', cool.StorageType.Float)
+
+description = '<timeStamp>run-lumi</timeStamp><addrHeader><address_header clid="1238547719" service_type="71" /></addrHeader><typeName>CondAttrListCollection</typeName>'
+noisyStripsFolderSpec = cool.FolderSpecification(cool.FolderVersioning.SINGLE_VERSION, noisyStripsSpec)
+noisyStripsFolder = db.createFolder('/SCT/DAQ/NoisyStrips', noisyStripsFolderSpec, description, True)
+
+firstValid = cool.ValidityKeyMin
+lastValid = cool.ValidityKeyMax
+
+numNoisyStrips = 0  # This is used as a channel...
+for dictkey in range(0, 192):
+    for bini in range(1): # Could go to 768, but no need to write too many empty strips
+        noisyStripsRecord = cool.Record(noisyStripsSpec)
+        noisyStripsRecord['sensor'] = int(dictkey)
+        noisyStripsRecord['strip'] = int(bini)
+        noisyStripsRecord['occupancy'] = 0.
+        numNoisyStrips += 1
+        noisyStripsFolder.storeObject(firstValid, lastValid, noisyStripsRecord, numNoisyStrips)
+
+db.closeDatabase()
+
+# Do this again for MC
+connectString = 'sqlite://;schema=noisy_strips.db;dbname=OFLP200'
+
+print('Creating empty MC database')
+
+# Don't drop the DB we just made
+#dbSvc.dropDatabase(connectString)
+
+# Create new DB (different name in same file for MC
+db = dbSvc.createDatabase(connectString)
+
+noisyStripsFolder = db.createFolder('/SCT/DAQ/NoisyStrips', noisyStripsFolderSpec, description, True)
+
+firstValid = cool.ValidityKeyMin
+lastValid = cool.ValidityKeyMax
+
+numNoisyStrips = 0  # This is used as a channel...
+for dictkey in range(0, 192):
+    for bini in range(1): # Could go to 768, but no need to write too many empty strips
+        noisyStripsRecord = cool.Record(noisyStripsSpec)
+        noisyStripsRecord['sensor'] = int(dictkey)
+        noisyStripsRecord['strip'] = int(bini)
+        noisyStripsRecord['occupancy'] = 0.
+        numNoisyStrips += 1
+        noisyStripsFolder.storeObject(firstValid, lastValid, noisyStripsRecord, numNoisyStrips)
+
+db.closeDatabase()
+
+print('Database completed')
diff --git a/Tracker/TrackerRecAlgs/NoisyStripFinder/share/makeNoisyStripDB.py b/Tracker/TrackerRecAlgs/NoisyStripFinder/share/makeNoisyStripDB.py
old mode 100644
new mode 100755
index db03286cab1eb9a017a8297fb8305d0f796c2e3f..11ab39ae5341432be8dd2f624496601294635e81
--- a/Tracker/TrackerRecAlgs/NoisyStripFinder/share/makeNoisyStripDB.py
+++ b/Tracker/TrackerRecAlgs/NoisyStripFinder/share/makeNoisyStripDB.py
@@ -1,11 +1,18 @@
 #!/usr/bin/env python
 
+import os
+import sys
 import ROOT
 import argparse
+from PyCool import cool
+from CoolConvUtilities.AtlCoolLib import indirectOpen
 
 parser = argparse.ArgumentParser()
 parser.add_argument("file", nargs="+", help="full path to input file")
 parser.add_argument("-t", "--threshold", type=float, default=0.01, help="add strips with an occupancy larger this threshold to the database")
+parser.add_argument("--force", "-f", action="store_true", help="Overwrite existing DB")
+parser.add_argument("--output", "-o", default="noisy_strips.db", help="Specify output DB")
+parser.add_argument("--isMC", action="store_true", help="Write MC DB (default: real data")
 args = parser.parse_args()
 
 def GetKeyNames(self):
@@ -19,34 +26,69 @@ HistDict = {}
 
 ROOT.TH1.AddDirectory(0) # This is necessary in order to have the histogram data after closing the file
 
+iovlo = cool.ValidityKeyMax
+iovhi = cool.ValidityKeyMin
+
+# Keys to skip
+skipList = ["numEvents", "trigger", "IOVLoRun", "IOVLoLB", "IOVHiRun", "IOVHiLB"]
+
 for inputfile in args.file:
     f = ROOT.TFile.Open(inputfile, "r")
     numEvents += f.Get("numEvents").GetVal()
+    lorun = f.Get("IOVLoRun").GetVal()
+    hirun = f.Get("IOVHiRun").GetVal()
+    lo = (lorun << 32)
+    hi = ((hirun+1) << 32) - 1
+    if lo < iovlo: iovlo = lo
+    if hi > iovhi: iovhi = hi
+
     if nfiles == 0:
         trigger = f.Get("trigger").GetVal()
+
     for rootkey in f.GetKeyNames():
-        if rootkey == 'numEvents' or rootkey == 'trigger':
-            continue # skip over the root objects TParameters that store the trigger and number of events data
+
+        # skip over the root objects TParameters that store the trigger and number of events data
+        if rootkey in skipList: continue 
+
         if rootkey in HistDict: # if sensor histogram has already been stored, then add to it
             HistDict[rootkey].Add(f.Get(rootkey),1.0)
         else: # if sensor histogram has not already been stored, then store this histogram
             HistDict[rootkey] = f.Get(rootkey).Clone()
+
     nfiles += 1
     f.Close()
 
 print("Total # of root files analyzed = ", nfiles)
-print("Trigger mask = ", trigger)
+print(f"Trigger mask = 0x{trigger:02x}")
 print("Total number of events = ", numEvents)
+print(f"IOV from {(iovlo >> 32)}/{(iovlo & 0xFFFFFFFF)} to {(iovhi >> 32)}/{(iovhi & 0xFFFFFFFF)}")
 
-from PyCool import cool
+# Write DB
 
 dbSvc = cool.DatabaseSvcFactory.databaseService()
-connectString = 'sqlite://;schema=noisy_strips.db;dbname=OFLP200'
-
-print('Recreating database')
-
-dbSvc.dropDatabase(connectString)
-db = dbSvc.createDatabase(connectString)
+dbname = "CONDBR3"   # Real data
+if args.isMC:
+    dbname="OFLP200" # MC
+
+connectString = f'sqlite://;schema={args.output};dbname={dbname}'
+
+print(f"Using connection string {connectString}")
+
+if os.path.exists(args.output):
+    if args.force:
+        print(f"Deleting {args.output} due to --force")
+        os.remove(args.output)
+    else:
+        print(f"File {args.output} exists, use --force to overwrite")
+        sys.exit(1)
+
+try:
+    print('Creating database')
+    dbSvc.dropDatabase(connectString)
+    db = dbSvc.createDatabase(connectString)
+except Exception as e:
+    print(e)
+    sys.exit(1)
 
 noisyStripsSpec = cool.RecordSpecification()
 noisyStripsSpec.extend('sensor', cool.StorageType.Int32)
@@ -55,10 +97,12 @@ noisyStripsSpec.extend('occupancy', cool.StorageType.Float)
 
 description = '<timeStamp>run-lumi</timeStamp><addrHeader><address_header clid="1238547719" service_type="71" /></addrHeader><typeName>CondAttrListCollection</typeName>'
 noisyStripsFolderSpec = cool.FolderSpecification(cool.FolderVersioning.SINGLE_VERSION, noisyStripsSpec)
+
+print("Creating new folder")
 noisyStripsFolder = db.createFolder('/SCT/DAQ/NoisyStrips', noisyStripsFolderSpec, description, True)
 
-firstValid = 429 << 32
-lastValid = cool.ValidityKeyMax
+firstValid = iovlo
+lastValid  = iovhi
 
 numNoisyStrips = 0
 for dictkey in HistDict:
diff --git a/Tracker/TrackerRecAlgs/NoisyStripFinder/src/NoisyStripFinder.cxx b/Tracker/TrackerRecAlgs/NoisyStripFinder/src/NoisyStripFinder.cxx
index 7cedc520613ea374b08eb4fe76111ce368609201..f665127f964ee94b71ac2d0eeb00fc027e280a2d 100644
--- a/Tracker/TrackerRecAlgs/NoisyStripFinder/src/NoisyStripFinder.cxx
+++ b/Tracker/TrackerRecAlgs/NoisyStripFinder/src/NoisyStripFinder.cxx
@@ -9,6 +9,7 @@
 #include "TrackerRawData/FaserSCT_RDO_Container.h"
 #include "TrackerRawData/FaserSCT_RDORawData.h"
 #include "StoreGate/WriteHandle.h"
+#include "xAODEventInfo/EventInfo.h"
 
 #include <sstream>
 #include <string.h>
@@ -24,6 +25,7 @@ NoisyStripFinder::NoisyStripFinder(const std::string& name, ISvcLocator* pSvcLoc
   AthReentrantAlgorithm(name, pSvcLocator),
   m_idHelper{nullptr}
 {
+  m_iovrange = IOVRange(IOVTime(), IOVTime());  // Make sure this starts undefined
 }
 
 // Initialize method:
@@ -32,6 +34,7 @@ StatusCode NoisyStripFinder::initialize() {
 
   ATH_CHECK(m_rdoContainerKey.initialize());
   ATH_CHECK(m_FaserTriggerData.initialize());
+  ATH_CHECK(m_eventInfo.initialize());
 
   // Get the SCT ID helper
   ATH_CHECK(detStore()->retrieve(m_idHelper, "FaserSCT_ID"));
@@ -43,7 +46,7 @@ StatusCode NoisyStripFinder::initialize() {
 StatusCode NoisyStripFinder::execute(const EventContext& ctx) const {
 
   SG::ReadHandle<xAOD::FaserTriggerData> xaod(m_FaserTriggerData, ctx);
-
+ 
   int trig_int = xaod->tap();
   int trigmask_int = m_triggerMask.value();
 
@@ -54,7 +57,21 @@ StatusCode NoisyStripFinder::execute(const EventContext& ctx) const {
   if (!(xaod->tap() & m_triggerMask.value())) return StatusCode::SUCCESS; // only process events that pass the trigger mask
 
   ATH_MSG_INFO("trigger passed mask");
-  ++m_numberOfEvents;                                                                
+  ++m_numberOfEvents;
+
+  // Keep track of run
+  SG::ReadHandle<xAOD::EventInfo> xevt(m_eventInfo, ctx);
+  ATH_MSG_DEBUG("Found run number: " << xevt->runNumber());
+  IOVTime iov(xevt->runNumber(), xevt->lumiBlock());
+  ATH_MSG_DEBUG("IOV: " << iov);
+
+  if (!m_iovrange.start().isValid()) 
+    m_iovrange = IOVRange(iov, iov);
+   
+  if (iov > m_iovrange.stop())
+    m_iovrange = IOVRange(m_iovrange.start(), iov);
+
+  ATH_MSG_DEBUG("Range: " << m_iovrange);
 
   // First, we have to retrieve and access the container, not because we want to 
   // use it, but in order to generate the proxies for the collections, if they 
@@ -110,6 +127,8 @@ StatusCode NoisyStripFinder::finalize()
     }
   }
 
+  ATH_MSG_INFO("IOV range found = " << m_iovrange);
+
   const char *outputname = m_OutputRootName.value().c_str();
 
   TFile* outputfile = new TFile(outputname,"RECREATE");
@@ -119,6 +138,27 @@ StatusCode NoisyStripFinder::finalize()
   TParameter("numEvents", m_numberOfEvents).Write();
   TParameter("trigger", trigmask_int).Write();
 
+  // Write IOV range so we can save this to the DB 
+  if (m_iovrange.start().isValid()) {
+    long run = m_iovrange.start().run();
+    long lb = m_iovrange.start().event();
+    TParameter("IOVLoRun", run).Write();  // re_time()
+    TParameter("IOVLoLB",  lb).Write();
+    ATH_MSG_INFO("IOV Lo: " << run << "," << lb );
+  }
+  else
+    ATH_MSG_WARNING("Starting IOV time invalid");
+
+  if (m_iovrange.stop().isValid()) {
+    long run = m_iovrange.stop().run();
+    long lb = m_iovrange.stop().event();
+    TParameter("IOVHiRun", run).Write();
+    TParameter("IOVHiLB", lb).Write();
+    ATH_MSG_INFO("IOV Hi: " << run << "," << lb );
+  }
+  else
+    ATH_MSG_WARNING("Ending IOV time invalid");
+
   std::map<int,TH1D*>::iterator it = NoisyStrip_histmap.begin();
   // Iterate over the map using Iterator till end.
   while (it != NoisyStrip_histmap.end()){
diff --git a/Tracker/TrackerRecAlgs/NoisyStripFinder/src/NoisyStripFinder.h b/Tracker/TrackerRecAlgs/NoisyStripFinder/src/NoisyStripFinder.h
index a1d977595765f494217f8a63f044ba40cba26540..24009b93bba234368548e53052c42df7bcb86420 100644
--- a/Tracker/TrackerRecAlgs/NoisyStripFinder/src/NoisyStripFinder.h
+++ b/Tracker/TrackerRecAlgs/NoisyStripFinder/src/NoisyStripFinder.h
@@ -17,7 +17,8 @@
 #include "GaudiKernel/ToolHandle.h"
 
 #include "StoreGate/ReadHandleKey.h"
-
+#include "AthenaKernel/IOVRange.h"
+#include "xAODEventInfo/EventInfo.h"
 
 //STL
 #include <map>
@@ -72,6 +73,7 @@ class NoisyStripFinder : public AthReentrantAlgorithm {
 
     SG::ReadHandleKey<FaserSCT_RDO_Container> m_rdoContainerKey{this, "DataObjectName", "FaserSCT_RDOs", "FaserSCT RDOs"};
     SG::ReadHandleKey<xAOD::FaserTriggerData> m_FaserTriggerData{ this, "FaserTriggerDataKey", "FaserTriggerData", "ReadHandleKey for xAOD::FaserTriggerData"};
+    SG::ReadHandleKey<xAOD::EventInfo> m_eventInfo{ this, "EventInfoKey", "EventInfo", "ReadHandleKey for xAOD::EventInfo"};
 
     mutable int m_numberOfEvents{0};
     mutable std::atomic<int> m_numberOfRDOCollection{0};
@@ -79,6 +81,9 @@ class NoisyStripFinder : public AthReentrantAlgorithm {
 
     mutable std::map<int,TH1D*> NoisyStrip_histmap;
 
+    // Keep track of first/last IOV seen
+    // Stored as (run << 32) + lumi block
+    mutable IOVRange m_iovrange;
 };
 }
 #endif // NoisyStripFinder_H
diff --git a/Tracker/TrackerRecAlgs/NoisyStripFinder/test/NoisyStripFinderDbg.py b/Tracker/TrackerRecAlgs/NoisyStripFinder/test/NoisyStripFinderDbg.py
old mode 100644
new mode 100755
diff --git a/Tracker/TrackerRecAlgs/NoisyStripFinder/test/NoisyStripFinderJob.py b/Tracker/TrackerRecAlgs/NoisyStripFinder/test/NoisyStripFinderJob.py
new file mode 100755
index 0000000000000000000000000000000000000000..e9f61e4b3a68806c47639941e9186fd0d061f878
--- /dev/null
+++ b/Tracker/TrackerRecAlgs/NoisyStripFinder/test/NoisyStripFinderJob.py
@@ -0,0 +1,72 @@
+#!/usr/bin/env python
+"""
+    Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration
+"""
+
+import sys
+from AthenaCommon.Logging import log, logging
+from AthenaCommon.Constants import DEBUG, VERBOSE, INFO
+from AthenaCommon.Configurable import Configurable
+from CalypsoConfiguration.AllConfigFlags import ConfigFlags
+from CalypsoConfiguration.MainServicesConfig import MainServicesCfg
+from AthenaPoolCnvSvc.PoolWriteConfig import PoolWriteCfg
+from FaserByteStreamCnvSvc.FaserByteStreamCnvSvcConfig import FaserByteStreamCnvSvcCfg
+from TrackerPrepRawDataFormation.TrackerPrepRawDataFormationConfig import FaserSCT_ClusterizationCfg
+from NoisyStripFinder.NoisyStripFinderConfig import NoisyStripFinderCfg
+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")
+parser.add_argument("--outfile", "-o", default="NoisyStripFinderHist.root", help="Specify output file")
+
+parser.add_argument("--verbose", "-v", action="store_true", help="Debug output")
+args = parser.parse_args()
+
+if args.verbose:
+    log.setLevel(DEBUG)
+else:
+    log.setLevel(INFO)
+
+Configurable.configurableRun3Behavior = True
+
+#
+filelist = []
+for filename in args.file:
+    if filename[:22] == "/eos/experiment/faser/":
+        filelist.append(f"root://eospublic.cern.ch/{filename}")
+    else:
+        filelist.append(filename)
+
+ConfigFlags.Input.Files = args.file
+ConfigFlags.IOVDb.GlobalTag = "OFLCOND-FASER-02"
+#ConfigFlags.IOVDb.DatabaseInstance = "OFLP200"
+ConfigFlags.IOVDb.DatabaseInstance = "CONDBR3"
+ConfigFlags.Input.ProjectName = "data22"
+ConfigFlags.Input.isMC = False
+ConfigFlags.GeoModel.FaserVersion = "FASERNU-03"
+ConfigFlags.Common.isOnline = False
+ConfigFlags.GeoModel.Align.Dynamic = False
+ConfigFlags.Beam.NumberOfCollisions = 0.
+ConfigFlags.Detector.GeometryFaserSCT = True
+ConfigFlags.lock()
+
+acc = MainServicesCfg(ConfigFlags)
+acc.merge(PoolWriteCfg(ConfigFlags))
+acc.merge(FaserByteStreamCnvSvcCfg(ConfigFlags, OccupancyCut=-1))
+acc.merge(NoisyStripFinderCfg(ConfigFlags, OutputHistRootName=args.outfile))
+
+# Hack to avoid problem with our use of MC databases when isMC = False
+replicaSvc = acc.getService("DBReplicaSvc")
+replicaSvc.COOLSQLiteVetoPattern = ""
+replicaSvc.UseCOOLSQLite = True
+replicaSvc.UseCOOLFrontier = False
+replicaSvc.UseGeomSQLite = True
+
+if args.verbose:
+    acc.foreach_component("*").OutputLevel = VERBOSE
+else:
+    acc.foreach_component("*").OutputLevel = INFO
+
+sc = acc.run(maxEvents=args.nevents)
+sys.exit(not sc.isSuccess())
diff --git a/Tracking/Acts/FaserActsKalmanFilter/test/TI12CKF2.py b/Tracking/Acts/FaserActsKalmanFilter/test/TI12CKF2.py
index 404df8b339d95fa6be277e62d755415fd8eb0353..cf63c3e400de073ad330df6498129996863b6c3a 100644
--- a/Tracking/Acts/FaserActsKalmanFilter/test/TI12CKF2.py
+++ b/Tracking/Acts/FaserActsKalmanFilter/test/TI12CKF2.py
@@ -16,7 +16,7 @@ from TrackerSpacePointFormation.TrackerSpacePointFormationConfig import TrackerS
 from TrackerSegmentFit.TrackerSegmentFitConfig import SegmentFitAlgCfg
 from FaserActsKalmanFilter.GhostBustersConfig import GhostBustersCfg
 from FaserActsKalmanFilter.TI12CKF2Config import TI12CKF2Cfg
-from FaserGeoModel.FaserGeoModelConfig import FaserGeometryCfg
+
 import argparse
 
 parser = argparse.ArgumentParser()
@@ -40,7 +40,6 @@ ConfigFlags.GeoModel.Align.Dynamic = False
 ConfigFlags.Beam.NumberOfCollisions = 0.
 ConfigFlags.Detector.GeometryFaserSCT = True
 ConfigFlags.TrackingGeometry.MaterialSource = "geometry-maps.json"
-# ConfigFlags.TrackingGeometry.MaterialSource = "geometry-maps.json"
 ConfigFlags.lock()
 
 acc = MainServicesCfg(ConfigFlags)