diff --git a/Reconstruction/egamma/egammaRec/python/EMCommonRefitter.py b/Reconstruction/egamma/egammaRec/python/EMCommonRefitter.py
index 340d2986ad9abe19359067d58a493b84ad4d0b12..72fe9d7494575a6316a922a865b4acf172bcbed7 100644
--- a/Reconstruction/egamma/egammaRec/python/EMCommonRefitter.py
+++ b/Reconstruction/egamma/egammaRec/python/EMCommonRefitter.py
@@ -6,14 +6,17 @@ from InDetRecExample import TrackingCommon as TrackingCommon
 print("EMCommonRefitter.py")
 
 
-def getGSFTrackFitter():
-    egRotCreator = TrackingCommon.getInDetRotCreator(
-        name='egRotCreator',
-        private=True)
+def getGSFTrackFitter(doRefitOnMeasurementBase=True):
 
-    TrackingCommon.createAndAddCondAlg(
-        TrackingCommon.getRIO_OnTrackErrorScalingCondAlg,
-        'RIO_OnTrackErrorScalingCondAlg')
+    egRotCreator = None
+    if not doRefitOnMeasurementBase:
+        egRotCreator = TrackingCommon.getInDetRotCreator(
+            name='egRotCreator',
+            private=True)
+
+        TrackingCommon.createAndAddCondAlg(
+            TrackingCommon.getRIO_OnTrackErrorScalingCondAlg,
+            'RIO_OnTrackErrorScalingCondAlg')
 
     # get Rk propagator
     from TrkExRungeKuttaPropagator.TrkExRungeKuttaPropagatorConf import (
@@ -59,7 +62,7 @@ def getGSFTrackFitter():
         ToolForExtrapolation=GsfExtrapolator,
         ReintegrateOutliers=True,
         MakePerigee=True,
-        RefitOnMeasurementBase=True,
+        RefitOnMeasurementBase=doRefitOnMeasurementBase,
         DoHitSorting=True,
         ToolForROTCreation=egRotCreator)
     # --- end of fitter loading
diff --git a/Tracking/TrkFitter/TrkGaussianSumFilter/TrkGaussianSumFilter/GaussianSumFitter.h b/Tracking/TrkFitter/TrkGaussianSumFilter/TrkGaussianSumFilter/GaussianSumFitter.h
index 4d1492a70378b11d97c4ddfd5532fda0062709a8..f4f520e8dc5b569f76068f78afb78ce00fb19ff7 100644
--- a/Tracking/TrkFitter/TrkGaussianSumFilter/TrkGaussianSumFilter/GaussianSumFitter.h
+++ b/Tracking/TrkFitter/TrkGaussianSumFilter/TrkGaussianSumFilter/GaussianSumFitter.h
@@ -196,6 +196,7 @@ private:
     "state in final trajectory"
   };
 
+
   Gaudi::Property<bool> m_reintegrateOutliers{ this,
                                                "ReintegrateOutliers",
                                                true,
@@ -242,19 +243,19 @@ private:
 
   // Counters for fit statistics
   // Number of Fit PrepRawData Calls
-  mutable std::atomic<int> m_FitPRD;
+  mutable std::atomic<unsigned long int> m_FitPRD;
   // Number of Fit MeasurementBase Calls
-  mutable std::atomic<int> m_FitMeasurementBase;
+  mutable std::atomic<unsigned long int> m_FitMeasurementBase;
   // Number of Foward Fit Failures
-  mutable std::atomic<int> m_ForwardFailure;
+  mutable std::atomic<unsigned long int> m_ForwardFailure;
   // Number of Smoother Failures
-  mutable std::atomic<int> m_SmootherFailure;
+  mutable std::atomic<unsigned long int> m_SmootherFailure;
   // Number of MakePerigee Failures
-  mutable std::atomic<int> m_PerigeeFailure;
+  mutable std::atomic<unsigned long int> m_PerigeeFailure;
   // Number of Tracks that fail fit Quailty test
-  mutable std::atomic<int> m_fitQualityFailure;
+  mutable std::atomic<unsigned long int> m_fitQualityFailure;
   // Number of Tracks that are successfull
-  mutable std::atomic<int> m_fitSuccess;
+  mutable std::atomic<unsigned long int> m_fitSuccess;
 };
 
 } // end Trk namespace
diff --git a/Tracking/TrkFitter/TrkGaussianSumFilter/src/GaussianSumFitter.cxx b/Tracking/TrkFitter/TrkGaussianSumFilter/src/GaussianSumFitter.cxx
index 77bada201f6e21ab29fcce823e56058cfa57c81f..9d0839ba36e162203df2b77fa78228ec7b1c60c5 100644
--- a/Tracking/TrkFitter/TrkGaussianSumFilter/src/GaussianSumFitter.cxx
+++ b/Tracking/TrkFitter/TrkGaussianSumFilter/src/GaussianSumFitter.cxx
@@ -66,31 +66,32 @@ Trk::GaussianSumFitter::GaussianSumFitter(const std::string& type,
 StatusCode
 Trk::GaussianSumFitter::initialize()
 {
-  StatusCode sc;
+
+  if (m_maximumNumberOfComponents > 16) {
+    ATH_MSG_FATAL("Requested MaximumNumberOfComponents > 16");
+    return StatusCode::FAILURE;
+  }
+
   // Request the GSF extrapolator
   ATH_CHECK(m_extrapolator.retrieve());
+
   // Request the RIO_OnTrack creator
   // No need to return if RioOnTrack creator tool, only if PrepRawData is used
-  if (m_rioOnTrackCreator.retrieve().isFailure()) {
-    if (!m_refitOnMeasurementBase) {
-      ATH_MSG_FATAL("Attempting to use PrepRawData with no RIO_OnTrack creator "
-                    "tool provided... Exiting!");
-      return StatusCode::FAILURE;
-    }
-    ATH_MSG_INFO(
-      "Request to retrieve the RIO_OnTrack Creator"
-      << "failed but track is fit at the MeasurementBase level... Continuing!");
+  if (!m_refitOnMeasurementBase) {
+    ATH_MSG_INFO("NOT refitOnMeasurementBase");
+    ATH_CHECK(m_rioOnTrackCreator.retrieve());
+  } else {
+    ATH_MSG_INFO("refitOnMeasurementBase");
+    m_rioOnTrackCreator.disable();
   }
+
   if (m_overideMaterialEffectsSwitch) {
-    ATH_MSG_INFO("Material effects in forwards fitter have been overiden by "
+    ATH_MSG_INFO("Material effects in forward fitter have been overiden by "
                  "jobOptions... New "
                  "Trk::ParticleHypothesis: "
                  << m_overideMaterialEffects);
   }
-  if (m_maximumNumberOfComponents > 16) {
-    ATH_MSG_FATAL("Requested MaximumNumberOfComponents > 16");
-    return StatusCode::FAILURE;
-  }
+
   // Initialise the closest track parameters search algorithm
   Amg::Vector3D referencePosition(m_sortingReferencePoint[0],
                                   m_sortingReferencePoint[1],
@@ -922,8 +923,14 @@ Trk::GaussianSumFitter::stepForwardFit(
 {
   // Protect against undefined Measurement or PrepRawData
   if (!originalPrepRawData && !originalMeasurement) {
+    ATH_MSG_WARNING("No measurement base or PrepRawData  passed to "
+                    "StepForwardFit... Exiting!");
+    return false;
+  }
+
+  if (!originalMeasurement && m_refitOnMeasurementBase) {
     ATH_MSG_WARNING(
-      "No measurement information passed to StepForwardFit... Exiting!");
+      "No measurement base information passed to StepForwardFit... Exiting!");
     return false;
   }
 
@@ -932,7 +939,6 @@ Trk::GaussianSumFitter::stepForwardFit(
     ATH_MSG_WARNING("ForwardTrajectory object is not defined... Exiting!");
     return false;
   }
-
   // Extrapolate multi-component state to the next measurement surface
   Trk::MultiComponentState extrapolatedState =
     m_extrapolator->extrapolate(ctx,