diff --git a/MuonSpectrometer/MuonCalib/NSWCalib/NSWCalibTools/NSWCalibTools/INSWCalibTool.h b/MuonSpectrometer/MuonCalib/NSWCalib/NSWCalibTools/NSWCalibTools/INSWCalibTool.h
index 0b7e78c0cafcba65bf3b47cb4fa3e19e29fc2434..49dc27e6bc8476947fccc5f9256c8f301a132a74 100644
--- a/MuonSpectrometer/MuonCalib/NSWCalib/NSWCalibTools/NSWCalibTools/INSWCalibTool.h
+++ b/MuonSpectrometer/MuonCalib/NSWCalib/NSWCalibTools/NSWCalibTools/INSWCalibTool.h
@@ -10,6 +10,7 @@
 
 #include <cmath>
 #include <vector>
+#include "float.h"
 
 #include "TF1.h"
 
@@ -26,6 +27,7 @@ namespace NSWCalib {
     double resTransDistDrift = 0;
     double resLongDistDrift = 0;
     double dx = 0;
+    Amg::Vector2D locPos = Amg::Vector2D(-FLT_MAX,-FLT_MAX);
     Identifier identifier;
   };
 
@@ -47,7 +49,7 @@ namespace Muon {
     
     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 Identifier id, 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;
     virtual float peakTime() const = 0;
diff --git a/MuonSpectrometer/MuonCalib/NSWCalib/NSWCalibTools/src/NSWCalibTool.cxx b/MuonSpectrometer/MuonCalib/NSWCalib/NSWCalibTools/src/NSWCalibTool.cxx
index 75b401902c71e4d784ecb3a2841b060d9c4a372f..5bfc299ee2813c6989d302b4f0127e4f1969e485 100644
--- a/MuonSpectrometer/MuonCalib/NSWCalib/NSWCalibTools/src/NSWCalibTool.cxx
+++ b/MuonSpectrometer/MuonCalib/NSWCalib/NSWCalibTools/src/NSWCalibTool.cxx
@@ -130,10 +130,11 @@ StatusCode Muon::NSWCalibTool::calibrateClus(const Muon::MMPrepData* prepData, c
 
   /// loop over prepData strips
   for (unsigned int i = 0; i < prepData->stripNumbers().size(); i++){
+    Identifier id = prepData->rdoList().at(i);
     double time = prepData->stripTimes().at(i);
     double charge = prepData->stripCharges().at(i);
     NSWCalib::CalibratedStrip calibStrip;
-    ATH_CHECK(calibrateStrip(time, charge, lorentzAngle, calibStrip));
+    ATH_CHECK(calibrateStrip(id,time, charge, lorentzAngle, calibStrip));
     calibClus.push_back(calibStrip);
   }
   return StatusCode::SUCCESS;
@@ -141,7 +142,16 @@ StatusCode Muon::NSWCalibTool::calibrateClus(const Muon::MMPrepData* prepData, c
 
 
 
-StatusCode Muon::NSWCalibTool::calibrateStrip(const double time, const double charge, const double lorentzAngle, NSWCalib::CalibratedStrip& calibStrip) const {
+StatusCode Muon::NSWCalibTool::calibrateStrip(const Identifier id, const double time, const double charge, const double lorentzAngle, NSWCalib::CalibratedStrip& calibStrip) const {
+  //get local positon
+  Amg::Vector2D locPos;
+  if(!localStripPosition(id,locPos)) {
+    ATH_MSG_WARNING("Failed to retrieve local strip position");
+    return StatusCode::FAILURE;
+  }
+  
+  calibStrip.identifier = id;
+
   calibStrip.charge = charge;
   calibStrip.time = time;
 
@@ -153,6 +163,7 @@ StatusCode Muon::NSWCalibTool::calibrateStrip(const double time, const double ch
   calibStrip.resLongDistDrift = std::pow(m_ionUncertainty * vDriftCorrected, 2)
     + std::pow(m_longDiff * calibStrip.distDrift, 2);
   calibStrip.dx = std::sin(lorentzAngle) * calibStrip.time * m_vDrift;
+  calibStrip.locPos = Amg::Vector2D(locPos.x() + calibStrip.dx, locPos.y()); 
   return StatusCode::SUCCESS;
 }
 
@@ -170,6 +181,16 @@ StatusCode Muon::NSWCalibTool::calibrateStrip(const Muon::MM_RawData* mmRawData,
   const MuonGM::MMReadoutElement* detEl = muDetMgr->getMMReadoutElement(rdoId);
   detEl->stripGlobalPosition(rdoId,globalPos);
 
+  //get local postion
+  Amg::Vector2D locPos;
+  if(!localStripPosition(rdoId,locPos)) {
+    ATH_MSG_WARNING("Failed to retrieve local strip position");
+    return StatusCode::FAILURE;
+  }
+
+  //get stripWidth
+  detEl->getDesign(rdoId)->channelWidth(locPos); // positon is not used for strip width 
+
   calibStrip.charge = mmRawData->charge();
   calibStrip.time = mmRawData->time() - globalPos.norm() * reciprocalSpeedOfLight - m_peakTime;
   calibStrip.identifier = mmRawData->identify();
@@ -179,6 +200,8 @@ StatusCode Muon::NSWCalibTool::calibrateStrip(const Muon::MM_RawData* mmRawData,
   calibStrip.resLongDistDrift = std::pow(m_ionUncertainty * m_vDrift, 2)
     + std::pow(m_longDiff * calibStrip.distDrift, 2);
 
+  calibStrip.locPos = locPos;
+
   return StatusCode::SUCCESS;
 }
 
@@ -194,10 +217,18 @@ StatusCode Muon::NSWCalibTool::calibrateStrip(const Muon::STGC_RawData* sTGCRawD
   Amg::Vector3D globalPos;
   const MuonGM::sTgcReadoutElement* detEl = muDetMgr->getsTgcReadoutElement(rdoId);
   detEl->stripGlobalPosition(rdoId,globalPos);
+  
+  //get local postion
+  Amg::Vector2D locPos;
+  if(!localStripPosition(rdoId,locPos)) {
+    ATH_MSG_WARNING("Failed to retrieve local strip position");
+    return StatusCode::FAILURE;
+  }
 
   calibStrip.charge =sTGCRawData->charge();
   calibStrip.time = sTGCRawData->time() - globalPos.norm() * reciprocalSpeedOfLight - m_peakTime;
   calibStrip.identifier = sTGCRawData->identify();
+  calibStrip.locPos = locPos;
 
   return StatusCode::SUCCESS;
 }
@@ -247,3 +278,19 @@ StatusCode Muon::NSWCalibTool::mmGasProperties(float &vDrift, float &longDiff, f
   lorentzAngleFunction = m_lorentzAngleFunction;
   return StatusCode::SUCCESS;
 }
+
+
+bool Muon::NSWCalibTool::localStripPosition(const Identifier& id, Amg::Vector2D &locPos) const {
+  if(m_idHelperSvc->isMM(id)){
+    const MuonGM::MMReadoutElement* detEl = m_muonMgr->getMMReadoutElement(id);
+    return detEl->stripPosition(id,locPos);
+
+  } else if(m_idHelperSvc->issTgc(id)){
+    const MuonGM::sTgcReadoutElement* detEl = m_muonMgr->getsTgcReadoutElement(id);
+    return detEl->stripPosition(id,locPos);
+
+  } else {
+    return false;
+  }
+  
+}
diff --git a/MuonSpectrometer/MuonCalib/NSWCalib/NSWCalibTools/src/NSWCalibTool.h b/MuonSpectrometer/MuonCalib/NSWCalib/NSWCalibTools/src/NSWCalibTool.h
index 60d44d2f5dade4901705765366cab0eac724cb88..1a895f52b526a030807bbf4fc49d3e05cddd8589 100644
--- a/MuonSpectrometer/MuonCalib/NSWCalib/NSWCalibTools/src/NSWCalibTool.h
+++ b/MuonSpectrometer/MuonCalib/NSWCalib/NSWCalibTools/src/NSWCalibTool.h
@@ -66,6 +66,8 @@ namespace Muon {
     float m_ionUncertainty;
     double m_peakTime;
 
+    bool localStripPosition(const Identifier& id, Amg::Vector2D &locPos) const;
+
     std::string m_gasMixture;
   };