diff --git a/PwaDynamics/SigmaParameterization.cc b/PwaDynamics/SigmaParameterization.cc
index f79da72595595dcd4d6d423647631f4c74865b1a..ebdd711fa5f87348ced334b0ffe2cd575dab3653 100644
--- a/PwaDynamics/SigmaParameterization.cc
+++ b/PwaDynamics/SigmaParameterization.cc
@@ -60,6 +60,14 @@ SigmaParameterization::SigmaParameterization(double mPole, double g4pi, double b
 SigmaParameterization::~SigmaParameterization(){
 }
 
+void SigmaParameterization::setBarePoleMass(double barePoleMass){
+  _mPole = barePoleMass;
+  _mPoleSqr = barePoleMass*barePoleMass;
+  _g2piDenom = _mPoleSqr-PawianConstants::mPiSq/2.;
+  _rho2pi_mPole = PawianQFT::phaseSpaceFacDefault(barePoleMass,PawianConstants::mPi, PawianConstants::mPi);
+  _rho4pi_mPole = php4pi(barePoleMass*barePoleMass);  
+}
+
 complex<double> SigmaParameterization::calc(double currentMass){
   //complex<double> result(1.,0.);
   double currentM2=currentMass*currentMass;
@@ -73,7 +81,7 @@ complex<double> SigmaParameterization::calc(double currentMass){
   return result;
 }
 
-complex<double> SigmaParameterization::calc(double currentMass, double gSigma){
+complex<double> SigmaParameterization::calc(double currentMass, std::complex<double> gSigma){
   return gSigma*calc(currentMass);
 }
   std::complex<double> SigmaParameterization::php4pi(double currentMass2){
diff --git a/PwaDynamics/SigmaParameterization.hh b/PwaDynamics/SigmaParameterization.hh
index b80fd0b1976514a843442c8cc691334c19828783..0c02ed4d9ed392888724b846bc961a170503bcad 100644
--- a/PwaDynamics/SigmaParameterization.hh
+++ b/PwaDynamics/SigmaParameterization.hh
@@ -45,8 +45,19 @@ public:
   ~SigmaParameterization();
 
   complex<double> calc(double currentMass);
-  complex<double> calc(double currentMass, double gSigma);
+  complex<double> calc(double currentMass, std::complex<double> gSigma);
   complex<double> calcT(double currentMass);
+
+  const double barePoleMass() const {return _mPole;}
+  void setBarePoleMass(double barePoleMass);
+  const double b1Param() const {return _b1;}
+  void setb1Param(double b1) {_b1=b1;}
+  const double b2Param() const {return _b2;}
+  void setb2Param(double b2) {_b2=b2;}
+  const double aParam() const {return _a;}
+  void setaParam(double a) {_a=a;}
+  const double g4piParam() const {return _g4pi;}
+  void setg4piParam(double g4pi) {_g4pi=g4pi;}
   
 protected:
   std::complex<double> php4pi(double currentMass2);
@@ -56,10 +67,10 @@ protected:
   double _b2;
   double _a;
   const double _sAdler;
-  const double _mPoleSqr;
-  const double _g2piDenom;
-  const std::complex<double> _rho2pi_mPole;
-  const std::complex<double> _rho4pi_mPole;
+  double _mPoleSqr;
+  double _g2piDenom;
+  std::complex<double> _rho2pi_mPole;
+  std::complex<double> _rho4pi_mPole;
 };
 
 
diff --git a/PwaUtils/SigmaParamDynamics.cc b/PwaUtils/SigmaParamDynamics.cc
index 2564af57f805978fb3d31947d990e5fb816786a9..e06aa628f2f0de091da8e60ae5beda176b86b5ee 100644
--- a/PwaUtils/SigmaParamDynamics.cc
+++ b/PwaUtils/SigmaParamDynamics.cc
@@ -34,8 +34,20 @@
 
 SigmaParamDynamics::SigmaParamDynamics(std::string& name, std::vector<Particle*>& fsParticles, Particle* mother) :
   AbsDynamics(name, fsParticles, mother)
-  ,_currentStrength(1.)
   ,_sigmaParamDyn(std::shared_ptr<SigmaParameterization>(new SigmaParameterization))
+  ,_currentStrength(std::complex<double>(1.,0.))  
+  ,_currentPoleMass(_sigmaParamDyn->barePoleMass())
+  ,_currentb1(_sigmaParamDyn->b1Param())
+  ,_currentb2(_sigmaParamDyn->b2Param())
+  ,_currenta(_sigmaParamDyn->aParam())
+  ,_currentg4pi(_sigmaParamDyn->g4piParam())
+  ,_strenghtNameMag(_massKey+"StrengthMag")
+  ,_strenghtNamePhi(_massKey+"StrengthPhi")
+  ,_poleMassName("sigmaPoleBareMass")
+  ,_b1Name("sigmab1")
+  ,_b2Name("sigmab2")
+  ,_aName("sigmaa")
+  ,_g4piName("sigmag4pi")
 {
   _isLdependent=false;
 }
@@ -59,21 +71,52 @@ complex<double> SigmaParamDynamics::eval(EvtData* theData, AbsXdecAmp* grandmaAm
 
 
 void SigmaParamDynamics::fillDefaultParams(std::shared_ptr<AbsPawianParameters> fitPar){
-  //fill mass
-  std::string strengthName=_massKey+"Strength";
-  fitPar->Add(strengthName, _currentStrength, 0.1);
-  //  fitPar->SetLimits(massName, minMass, maxMass);
+  //fill production strength mag
+  fitPar->Add(_strenghtNameMag, std::abs(_currentStrength), 0.01);
+  //fill production strength phase
+  fitPar->Add(_strenghtNamePhi, std::arg(_currentStrength), 0.01);
+  //fill pole bare mass
+  fitPar->Add(_poleMassName, _currentPoleMass, 0.01, std::abs(_currentPoleMass-0.2), _currentPoleMass+0.2);
+  //fill b1 param
+  fitPar->Add(_b1Name, _currentb1, 0.01, std::abs(_currentb1-0.2), _currentb1+0.2);
+  //fill b2 param
+  fitPar->Add(_b2Name, _currentb2, 0.01, std::abs(_currentb2-0.2), _currentb2+0.2);
+  //fill a param
+  fitPar->Add(_aName, _currenta, 0.01, std::abs(_currenta-0.2), _currenta+0.2);
+  //fill g4pi param
+  fitPar->Add(_g4piName, _currentg4pi, 0.00001, 0., _currentg4pi+0.0001);
 }
 
 
 void SigmaParamDynamics::updateFitParams(std::shared_ptr<AbsPawianParameters> fitPar){
-  std::string strengthName=_massKey+"Strength";
-  _currentStrength=fitPar->Value(strengthName);
+  double currentStrengthMag = fitPar->Value(_strenghtNameMag);
+  double currentStrengthPhi = fitPar->Value(_strenghtNamePhi);
+  _currentStrength=std::polar(currentStrengthMag,currentStrengthPhi);
+
+  _currentPoleMass = fitPar->Value(_poleMassName);
+  _sigmaParamDyn->setBarePoleMass(_currentPoleMass);
+
+  _currentb1= fitPar->Value(_b1Name);
+  _sigmaParamDyn->setb1Param(_currentb1);
+
+  _currentb2= fitPar->Value(_b2Name);
+  _sigmaParamDyn->setb2Param(_currentb2);
+
+  _currenta= fitPar->Value(_aName);
+  _sigmaParamDyn->setaParam(_currenta);
+
+  _currentg4pi= fitPar->Value(_g4piName);
+  _sigmaParamDyn->setg4piParam(_currentg4pi);  
 }
 
 void SigmaParamDynamics::fillParamNameList(){
   _paramNameList.clear();
   //fill
-  std::string strengthName=_massKey+"Strength";
-  _paramNameList.push_back(strengthName);
+  _paramNameList.push_back(_strenghtNameMag);
+  _paramNameList.push_back(_strenghtNamePhi);
+  _paramNameList.push_back(_poleMassName);
+  _paramNameList.push_back(_b1Name);
+  _paramNameList.push_back(_b2Name);
+  _paramNameList.push_back(_aName);
+  _paramNameList.push_back(_g4piName);
 }
diff --git a/PwaUtils/SigmaParamDynamics.hh b/PwaUtils/SigmaParamDynamics.hh
index 831ee59e5a964054a5d4aefb28b5236e96cbe6f7..638969ef1021d382fc66ab7ccab9bca15dd1dac6 100644
--- a/PwaUtils/SigmaParamDynamics.hh
+++ b/PwaUtils/SigmaParamDynamics.hh
@@ -52,9 +52,20 @@ public:
   virtual void fillParamNameList();
 protected:
   //  std::string _massKey;
-
-   double _currentStrength;
   std::shared_ptr<SigmaParameterization> _sigmaParamDyn; 
+  complex<double> _currentStrength;
+  double _currentPoleMass;
+  double _currentb1;
+  double _currentb2;
+  double _currenta;
+  double _currentg4pi;
+  const std::string _strenghtNameMag;
+  const std::string _strenghtNamePhi;
+  const std::string _poleMassName;
+  const std::string  _b1Name;
+  const std::string  _b2Name;
+  const std::string  _aName;
+  const std::string  _g4piName;
   
 private:
 
diff --git a/Scripts/KinematicsTools.C b/Scripts/KinematicsTools.C
index 02f08504c0463e19de9436830e162ea6f9d1ea3d..2a9d801c1f6d4611433ed947a062f915ccf38668 100644
--- a/Scripts/KinematicsTools.C
+++ b/Scripts/KinematicsTools.C
@@ -24,6 +24,8 @@
 
 #include <iostream>
 
+const double protonMass=0.93827208816;
+
 class KinematicsTools
 {
  public:
@@ -47,5 +49,16 @@ class KinematicsTools
   static double breakupMom(double mass, double massDec1, double massDec2){
     return phaseSpaceFac(mass, massDec1, massDec2)*mass/2.;
   }
+
+ static double pbarpMassFrompbarp(double pbarMom){
+   TLorentzVector pbarpVec(0.,0.,pbarMom,sqrt(protonMass*protonMass+pbarMom*pbarMom)+protonMass);
+   return pbarpVec.M();  
+  }
+
+  static double pbarMomFrompbarp(double pbarpMass){
+    double pbarpSqr=std::pow((pbarpMass*pbarpMass-2.*protonMass*protonMass)/(2.*protonMass), 2.)-protonMass*protonMass;
+    return sqrt( pbarpSqr);  
+  }
+  
 };