diff --git a/MuonSpectrometer/MuonCalib/NSWCalib/NSWCalibTools/NSWCalibTools/INSWCalibTool.h b/MuonSpectrometer/MuonCalib/NSWCalib/NSWCalibTools/NSWCalibTools/INSWCalibTool.h
index e4bec41e8632c6af32b0c1e9a3cfe101a2aa78c3..c1248b88044395536372acf5877942da95c20046 100644
--- a/MuonSpectrometer/MuonCalib/NSWCalib/NSWCalibTools/NSWCalibTools/INSWCalibTool.h
+++ b/MuonSpectrometer/MuonCalib/NSWCalib/NSWCalibTools/NSWCalibTools/INSWCalibTool.h
@@ -30,11 +30,12 @@ namespace NSWCalib {
   };
 
 }
- 
+
 namespace Muon {
 
   class MM_RawData;
   class MMPrepData;
+  class STGC_RawData;
 
   class INSWCalibTool : virtual public IAlgTool {
     
@@ -44,9 +45,10 @@ namespace Muon {
 
   public:  // interface methods
     
-    virtual StatusCode calibrateClus(const Muon::MMPrepData* prepData, const Amg::Vector3D& globalPos, std::vector<NSWCalib::CalibratedStrip>& calibClus) const = 0;
+    virtual StatusCode calibrateClus(const Muon::MMPrepData* prepRawData, const Amg::Vector3D& globalPos, std::vector<NSWCalib::CalibratedStrip>& calibClus) const = 0;
     virtual StatusCode calibrateStrip(const Muon::MM_RawData* mmRawData, NSWCalib::CalibratedStrip& calibStrip) const = 0;
     virtual StatusCode calibrateStrip(const double time,  const double charge, const double lorentzAngle, NSWCalib::CalibratedStrip&calibStrip) const = 0;
+    virtual StatusCode calibrateStrip(const Muon::STGC_RawData* sTGCRawData, NSWCalib::CalibratedStrip& calibStrip) const = 0;
     virtual StatusCode mmGasProperties(float &vDrift, float &longDiff, float &transDiff, float &interactionDensityMean, float &interactionDensitySigma, TF1* &lorentzAngleFunction) const = 0;
   };
   
diff --git a/MuonSpectrometer/MuonCalib/NSWCalib/NSWCalibTools/src/NSWCalibTool.cxx b/MuonSpectrometer/MuonCalib/NSWCalib/NSWCalibTools/src/NSWCalibTool.cxx
index 5f59708b5579c0b6afcc25dcced22dd265c7f5df..85e0ad17ca7bed15ccd2eed0a869501f06d19087 100644
--- a/MuonSpectrometer/MuonCalib/NSWCalib/NSWCalibTools/src/NSWCalibTool.cxx
+++ b/MuonSpectrometer/MuonCalib/NSWCalib/NSWCalibTools/src/NSWCalibTool.cxx
@@ -6,6 +6,7 @@
 #include "GaudiKernel/SystemOfUnits.h"
 #include "GaudiKernel/PhysicalConstants.h"
 #include "MuonReadoutGeometry/MMReadoutElement.h"
+#include "MuonReadoutGeometry/sTgcReadoutElement.h"
 
 namespace {
   static constexpr double const& toRad = M_PI/180;
@@ -138,6 +139,8 @@ StatusCode Muon::NSWCalibTool::calibrateClus(const Muon::MMPrepData* prepData, c
   return StatusCode::SUCCESS;
 }
 
+
+
 StatusCode Muon::NSWCalibTool::calibrateStrip(const double time, const double charge, const double lorentzAngle, NSWCalib::CalibratedStrip& calibStrip) const {
   calibStrip.charge = charge;
   calibStrip.time = time;
@@ -153,6 +156,7 @@ StatusCode Muon::NSWCalibTool::calibrateStrip(const double time, const double ch
   return StatusCode::SUCCESS;
 }
 
+
 StatusCode Muon::NSWCalibTool::calibrateStrip(const Muon::MM_RawData* mmRawData, NSWCalib::CalibratedStrip& calibStrip) const
 {
   Identifier rdoId = mmRawData->identify();
@@ -178,6 +182,28 @@ StatusCode Muon::NSWCalibTool::calibrateStrip(const Muon::MM_RawData* mmRawData,
   return StatusCode::SUCCESS;
 }
 
+StatusCode Muon::NSWCalibTool::calibrateStrip(const Muon::STGC_RawData* sTGCRawData, NSWCalib::CalibratedStrip& calibStrip) const
+{
+  Identifier rdoId = sTGCRawData->identify();
+
+  // MuonDetectorManager from the conditions store
+  SG::ReadCondHandle<MuonGM::MuonDetectorManager> muDetMgrHandle{m_muDetMgrKey};
+  const MuonGM::MuonDetectorManager* muDetMgr = muDetMgrHandle.cptr();
+
+  //get globalPos
+  Amg::Vector3D globalPos;
+  const MuonGM::sTgcReadoutElement* detEl = muDetMgr->getsTgcReadoutElement(rdoId);
+  detEl->stripGlobalPosition(rdoId,globalPos);
+
+  calibStrip.charge =sTGCRawData->charge();
+  calibStrip.time = sTGCRawData->time() - globalPos.norm() * reciprocalSpeedOfLight + m_timeOffset;
+  calibStrip.identifier = sTGCRawData->identify();
+
+  return StatusCode::SUCCESS;
+}
+
+
+
 double Muon::NSWCalibTool::pdoToCharge(const int pdoCounts, const Identifier& stripID) const {
   double charge = 0;
   if (m_idHelperSvc->isMM(stripID)){
diff --git a/MuonSpectrometer/MuonCalib/NSWCalib/NSWCalibTools/src/NSWCalibTool.h b/MuonSpectrometer/MuonCalib/NSWCalib/NSWCalibTools/src/NSWCalibTool.h
index 9ec27924373a450fe76743a5f73258eeee98f235..981f6bf2caa0e8adbb94dc527a6394f80ce1b0e9 100644
--- a/MuonSpectrometer/MuonCalib/NSWCalib/NSWCalibTools/src/NSWCalibTool.h
+++ b/MuonSpectrometer/MuonCalib/NSWCalib/NSWCalibTools/src/NSWCalibTool.h
@@ -4,23 +4,24 @@
 #ifndef NSWCalibTool_h
 #define NSWCalibTool_h
 
-#include <map>
-#include <string>
-
 #include "NSWCalibTools/INSWCalibTool.h"
-
 #include "AthenaBaseComps/AthAlgTool.h"
 #include "GaudiKernel/ServiceHandle.h"
 
 #include "MuonIdHelpers/IMuonIdHelperSvc.h"
 #include "MuonPrepRawData/MMPrepData.h"
 #include "MuonRDO/MM_RawData.h"
+#include "MuonRDO/STGC_RawData.h"
 #include "StoreGate/ReadCondHandleKey.h"
 #include "MuonReadoutGeometry/MuonDetectorManager.h"
 #include "MagFieldConditions/AtlasFieldCacheCondObj.h"
 
 #include "TRandom3.h"
 #include "TTree.h"
+#include "TF1.h"
+
+#include <string>
+#include <vector>
 
 namespace Muon {
 
@@ -33,8 +34,9 @@ namespace Muon {
     virtual ~NSWCalibTool() = default;
     
     virtual StatusCode calibrateClus(const Muon::MMPrepData* prepData, const Amg::Vector3D& globalPos, std::vector<NSWCalib::CalibratedStrip>& calibClus) const override;
-    virtual StatusCode calibrateStrip(const double time,  const double charge, const double lorentzAngle, NSWCalib::CalibratedStrip& calibStrip) const override;
+    virtual StatusCode calibrateStrip(const double time, const double charge, const double lorentzAngle, NSWCalib::CalibratedStrip& calibStrip) const override;
     virtual StatusCode calibrateStrip(const Muon::MM_RawData* mmRawData, NSWCalib::CalibratedStrip& calibStrip) const override;
+    virtual StatusCode calibrateStrip(const Muon::STGC_RawData* sTGCRawData, NSWCalib::CalibratedStrip& calibStrip) const override;
 
     double pdoToCharge(const int pdoCounts, const Identifier& stripID) const;
     int chargeToPdo(const float charge, const Identifier& stripID) const;
@@ -43,6 +45,7 @@ namespace Muon {
     virtual StatusCode finalize() override;
 
     StatusCode mmGasProperties(float &vDrift, float &longDiff, float &transDiff, float &interactionDensityMean, float &interactionDensitySigma, TF1* &lorentzAngleFunction) const override;
+
   private:
 
     ServiceHandle<Muon::IMuonIdHelperSvc> m_idHelperSvc {this, "MuonIdHelperSvc", "Muon::MuonIdHelperSvc/MuonIdHelperSvc"};
diff --git a/MuonSpectrometer/MuonDetDescr/MuonReadoutGeometry/MuonReadoutGeometry/sTgcReadoutElement.h b/MuonSpectrometer/MuonDetDescr/MuonReadoutGeometry/MuonReadoutGeometry/sTgcReadoutElement.h
index f1dfc00daa68171bcfe03787e5dfe0a8757308c1..df6421468c77ed97dd52faa1fdde3608008de9ea 100644
--- a/MuonSpectrometer/MuonDetDescr/MuonReadoutGeometry/MuonReadoutGeometry/sTgcReadoutElement.h
+++ b/MuonSpectrometer/MuonDetDescr/MuonReadoutGeometry/MuonReadoutGeometry/sTgcReadoutElement.h
@@ -2,19 +2,13 @@
   Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
 */
 
-/***************************************************************************
- sTgc Readout Element properties
- -----------------------------------------
-***************************************************************************/
-
 #ifndef MUONGEOMODEL_STGCREADOUTELEMENT_H
-# define MUONGEOMODEL_STGCREADOUTELEMENT_H
+#define MUONGEOMODEL_STGCREADOUTELEMENT_H
 
 #include "MuonReadoutGeometry/MuonClusterReadoutElement.h"
 #include "MuonReadoutGeometry/MuonDetectorManager.h"
 #include "MuonReadoutGeometry/MuonChannelDesign.h"
 #include "MuonReadoutGeometry/MuonPadDesign.h"
-
 #include "MuonIdHelpers/sTgcIdHelper.h"
 
 class BLinePar;
@@ -23,7 +17,6 @@ namespace Trk{
   class PlaneSurface;
 }
 
-
 namespace MuonGM {
   /**
      An sTgcReadoutElement corresponds to a single STGC module; therefore