diff --git a/PwaDynamics/SigmaParameterization.hh b/PwaDynamics/SigmaParameterization.hh
index 0c02ed4d9ed392888724b846bc961a170503bcad..41075aa218fbe32398e999cbf115cba84e0660e8 100644
--- a/PwaDynamics/SigmaParameterization.hh
+++ b/PwaDynamics/SigmaParameterization.hh
@@ -58,6 +58,7 @@ public:
   void setaParam(double a) {_a=a;}
   const double g4piParam() const {return _g4pi;}
   void setg4piParam(double g4pi) {_g4pi=g4pi;}
+  std::complex<double> rho2pi() {return _rho2pi_mPole;}
   
 protected:
   std::complex<double> php4pi(double currentMass2);
diff --git a/PwaUtils/DynRegistry.cc b/PwaUtils/DynRegistry.cc
index 1f1100b2568124eb2576b6722a638d5cab74e598..2bde8e1f821fd029db457f87f7b22a524e0d5b8a 100644
--- a/PwaUtils/DynRegistry.cc
+++ b/PwaUtils/DynRegistry.cc
@@ -57,6 +57,7 @@
 #include "PwaUtils/OmnesDynamics.hh"
 #include "PwaUtils/SExpDynamics.hh"
 #include "PwaUtils/SigmaParamDynamics.hh"
+#include "PwaUtils/TMatrixSigmaParDynamics.hh"
 
 #include "PwaUtils/ProdChannelInfo.hh"
 
@@ -137,7 +138,14 @@ std::shared_ptr<AbsDynamics> DynRegistry::getDynamics(std::shared_ptr<AbsDecay>
 	result= std::shared_ptr<AbsDynamics>(theTMatrixDynamics);	
 	//	result= std::shared_ptr<AbsDynamics>(new TMatrixDynamics(theName, fsParticles, theDec->motherPart(), pathToConfigFile, currentDataType, projectionParticleNames));
       }
-      else if(theDec->dynType()=="TMatrixCompare"){
+  else if (theDec->dynType()=="TMatrixSigmaPar"){
+    std::string pathToConfigFile="";
+    std::string projectionParticleNames = theDec->projectionParticleNames();
+    std::string currentDataType=GlobalEnv::instance()->Channel(currentChannelId)->parser()->productionFormalism();
+    TMatrixDynamics* theTMatrixDynamics=new TMatrixSigmaParDynamics(theName, fsParticles, theDec->motherPart(), pathToConfigFile, currentDataType, projectionParticleNames);
+    result= std::shared_ptr<AbsDynamics>(theTMatrixDynamics);
+  }
+  else if(theDec->dynType()=="TMatrixCompare"){
 	std::string pathToConfigFile=theDec->pathToConfigParser();
 	std::string pathToConfigCompareFile=thePiPiScatteringParser->pathToKMatrixCompareFile();
 	std::string projectionParticleNames = theDec->projectionParticleNames();
diff --git a/PwaUtils/SigmaParamDynamics.cc b/PwaUtils/SigmaParamDynamics.cc
index e06aa628f2f0de091da8e60ae5beda176b86b5ee..c5e9dc69e33e6a6d7b789312fb9442dd13533fa1 100644
--- a/PwaUtils/SigmaParamDynamics.cc
+++ b/PwaUtils/SigmaParamDynamics.cc
@@ -1,7 +1,7 @@
 //************************************************************************//
 //									  //
 //  Copyright 2025 Bertram Kopf (bertram@ep1.rub.de)			  //
-//          	   - Ruhr-Universität Bochum 				  //
+//          	   - Ruhr-Universit??t Bochum 				  //
 //									  //
 //  This file is part of Pawian.					  //
 //									  //
@@ -28,28 +28,23 @@
 #include <string>
 
 #include "PwaUtils/SigmaParamDynamics.hh"
+#include "Utils/PawianIOUtils.hh"
+#include "PwaUtils/XdecAmpRegistry.hh"
+#include "PwaUtils/GlobalEnv.hh"
 #include "ErrLogger/ErrLogger.hh"
 #include "Particle/Particle.hh"
+#include "Particle/ParticleTable.hh"
 #include "PwaDynamics/SigmaParameterization.hh"
+#include "FitParams/AbsPawianParameters.hh"
+#include "Utils/IdStringMapRegistry.hh"
+#include "Utils/PawianConstants.hh"
 
 SigmaParamDynamics::SigmaParamDynamics(std::string& name, std::vector<Particle*>& fsParticles, Particle* mother) :
-  AbsDynamics(name, fsParticles, mother)
-  ,_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())
+  TMatrixSigmaParDynamics(name, fsParticles, mother)
+   ,_currentStrength(std::complex<double>(1.,0.))  
   ,_strenghtNameMag(_massKey+"StrengthMag")
   ,_strenghtNamePhi(_massKey+"StrengthPhi")
-  ,_poleMassName("sigmaPoleBareMass")
-  ,_b1Name("sigmab1")
-  ,_b2Name("sigmab2")
-  ,_aName("sigmaa")
-  ,_g4piName("sigmag4pi")
 {
-  _isLdependent=false;
 }
 
 SigmaParamDynamics::~SigmaParamDynamics()
@@ -57,11 +52,12 @@ SigmaParamDynamics::~SigmaParamDynamics()
 }
 
 complex<double> SigmaParamDynamics::eval(EvtData* theData, AbsXdecAmp* grandmaAmp, Spin OrbMom){
+
   if ( !_recalculate){
     return _cachedMap[theData->evtNo];
   }
 
-  complex<double> result=_sigmaParamDyn->calc(theData->DoubleMassId.at(_dynId), _currentStrength);
+  complex<double> result=_sigmaParameterization->calc(theData->DoubleMassId.at(_dynId), _currentStrength);
   if ( _cacheAmps){
      _cachedMap[theData->evtNo]=result;
   }  
@@ -69,54 +65,32 @@ complex<double> SigmaParamDynamics::eval(EvtData* theData, AbsXdecAmp* grandmaAm
   return result;
 }
 
-
 void SigmaParamDynamics::fillDefaultParams(std::shared_ptr<AbsPawianParameters> fitPar){
+  TMatrixSigmaParDynamics::fillDefaultParams(fitPar);
   //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::fillParamNameList(){
+  _paramNameList.clear();
+  TMatrixSigmaParDynamics::fillParamNameList();
+  _paramNameList.push_back(_strenghtNameMag);
+  _paramNameList.push_back(_strenghtNamePhi);
+}
+
+bool SigmaParamDynamics::checkRecalculation(std::shared_ptr<AbsPawianParameters> fitParNew, std::shared_ptr<AbsPawianParameters> fitParOld){
+  return AbsParamHandler::checkRecalculation(fitParNew, fitParOld);
+}
 
 void SigmaParamDynamics::updateFitParams(std::shared_ptr<AbsPawianParameters> fitPar){
+
+  TMatrixSigmaParDynamics::updateFitParams(fitPar);
   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
-  _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 638969ef1021d382fc66ab7ccab9bca15dd1dac6..7dfc3c9223c114014a457a84fb05da7d3ffdc900 100644
--- a/PwaUtils/SigmaParamDynamics.hh
+++ b/PwaUtils/SigmaParamDynamics.hh
@@ -21,7 +21,7 @@
 //************************************************************************//
 
 // SigmaParamDynamics class definition file. -*- C++ -*-
-// Copyright 2025 Bertram Kopf
+// Copyright 2017 Bertram Kopf
 
 #pragma once
 
@@ -32,40 +32,32 @@
 #include <string>
 #include <memory>
 
-#include "PwaUtils/AbsDynamics.hh"
-#include "FitParams/AbsPawianParameters.hh"
+#include "PwaUtils/TMatrixSigmaParDynamics.hh"
 
+class AbsXdecAmp;
+class AbsPhaseSpace;
+class AbsPawianParameters;
 class SigmaParameterization;
 
-class SigmaParamDynamics : public AbsDynamics{
+class SigmaParamDynamics : public TMatrixSigmaParDynamics{
 
 public:
+  //  SigmaParamDynamics();
   SigmaParamDynamics(std::string& name, std::vector<Particle*>& fsParticles, Particle* mother);
   virtual ~SigmaParamDynamics();
 
   virtual std::string type() {return "SigmaParamDynamics";}
-  virtual complex<double> eval(EvtData* theData, AbsXdecAmp* grandmaAmp, Spin OrbMom=0);
-  
+  virtual complex<double> eval(EvtData* theData, AbsXdecAmp* grandmaAmp=0, Spin OrbMom=0);
   virtual void fillDefaultParams(std::shared_ptr<AbsPawianParameters> fitPar);
-
-  virtual void updateFitParams(std::shared_ptr<AbsPawianParameters> fitPar);
   virtual void fillParamNameList();
+  virtual bool checkRecalculation(std::shared_ptr<AbsPawianParameters> fitParNew, std::shared_ptr<AbsPawianParameters> fitParOld); 
+  virtual void updateFitParams(std::shared_ptr<AbsPawianParameters> fitPar);
+
+  
 protected:
-  //  std::string _massKey;
-  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/PwaUtils/TMatrixDynamics.cc b/PwaUtils/TMatrixDynamics.cc
index 6cfc550d97dfb5dfbf8da25045a89f8571ed193d..6efd3134b790fa1ea9aecab479c9322b7acf1a8a 100644
--- a/PwaUtils/TMatrixDynamics.cc
+++ b/PwaUtils/TMatrixDynamics.cc
@@ -68,6 +68,7 @@ TMatrixDynamics::TMatrixDynamics(std::string& name, std::vector<Particle*>& fsPa
   ,_projectionParticleNames(projectionParticleNames)
 {
   _pathToKMatCfgParser=PawianIOUtils::getFileName(GlobalEnv::instance()->KMatrixStorePath(), pathToConfigParser);
+
   _kMatrixParser = std::shared_ptr<KMatrixParser>(new KMatrixParser(_pathToKMatCfgParser));
   
   if(dataType=="Elasticity") _dataTypeID=1;
@@ -93,6 +94,12 @@ TMatrixDynamics::TMatrixDynamics(std::string& name, std::vector<Particle*>& fsPa
   _isLdependent=true;
 }
 
+TMatrixDynamics::TMatrixDynamics(std::string& name, std::vector<Particle*>& fsParticles, Particle* mother) :
+  AbsDynamics(name, fsParticles, mother)
+ {
+}
+
+
 TMatrixDynamics::TMatrixDynamics(std::shared_ptr<KMatrixParser> kMatrixParser) :
   AbsDynamics()
   ,_kMatrixParser(kMatrixParser) 
diff --git a/PwaUtils/TMatrixDynamics.hh b/PwaUtils/TMatrixDynamics.hh
index 031a4d90bc55323fcfcc18b1d0f26d29c77fd525..5160b79b2829d78b6d00c3255101da3c6ccf889b 100644
--- a/PwaUtils/TMatrixDynamics.hh
+++ b/PwaUtils/TMatrixDynamics.hh
@@ -48,6 +48,7 @@ public:
   TMatrixDynamics(std::shared_ptr<KMatrixParser> kMatrixParser);
   //  TMatrixDynamics(std::string& name, std::vector<Particle*>& fsParticles, Particle* mother, std::string& pathToConfigParser, std::string dataType="Elasticity");
   TMatrixDynamics(std::string& name, std::vector<Particle*>& fsParticles, Particle* mother, std::string& pathToConfigParser, std::string dataType, std::string projectionParticleNames="");
+  TMatrixDynamics(std::string& name, std::vector<Particle*>& fsParticles, Particle* mother);
   virtual ~TMatrixDynamics();
 
   virtual std::string type() {return "TMatrixDynamics";}
diff --git a/PwaUtils/TMatrixSigmaParDynamics.cc b/PwaUtils/TMatrixSigmaParDynamics.cc
new file mode 100644
index 0000000000000000000000000000000000000000..0bed6669ea0820b81e758a668d6081bd27ea9b23
--- /dev/null
+++ b/PwaUtils/TMatrixSigmaParDynamics.cc
@@ -0,0 +1,246 @@
+//************************************************************************//
+//									  //
+//  Copyright 2025 Bertram Kopf (bertram@ep1.rub.de)			  //
+//          	   - Ruhr-Universit??t Bochum 				  //
+//									  //
+//  This file is part of Pawian.					  //
+//									  //
+//  Pawian is free software: you can redistribute it and/or modify	  //
+//  it under the terms of the GNU General Public License as published by  //
+//  the Free Software Foundation, either version 3 of the License, or 	  //
+//  (at your option) any later version.	 	      	  	   	  //
+//									  //
+//  Pawian is distributed in the hope that it will be useful,		  //
+//  but WITHOUT ANY WARRANTY; without even the implied warranty of	  //
+//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the	  //
+//  GNU General Public License for more details.	      		  //
+//									  //
+//  You should have received a copy of the GNU General Public License     //
+//  along with Pawian.  If not, see <http://www.gnu.org/licenses/>.	  //
+//									  //
+//************************************************************************//
+
+// TMatrixSigmaParDynamics class definition file. -*- C++ -*-
+// Copyright 2025 Bertram Kopf
+
+#include <getopt.h>
+#include <fstream>
+#include <string>
+
+#include "Utils/PawianIOUtils.hh"
+#include "PwaUtils/TMatrixSigmaParDynamics.hh"
+#include "PwaUtils/XdecAmpRegistry.hh"
+#include "PwaUtils/AbsDecay.hh"
+#include "PwaUtils/AbsXdecAmp.hh"
+#include "PwaUtils/GlobalEnv.hh"
+#include "PwaUtils/EvtDataScatteringList.hh"
+#include "ErrLogger/ErrLogger.hh"
+#include "Particle/Particle.hh"
+#include "Particle/ParticleTable.hh"
+#include "PwaDynamics/AbsPhaseSpace.hh"
+#include "PwaDynamics/PhaseSpaceFactory.hh"
+#include "PwaDynamics/KMatrixFunctions.hh"
+#include "PwaDynamics/SigmaParameterization.hh"
+#include "FitParams/AbsPawianParameters.hh"
+#include "Utils/IdStringMapRegistry.hh"
+#include "Utils/PawianConstants.hh"
+
+TMatrixSigmaParDynamics::TMatrixSigmaParDynamics(std::string& name, std::vector<Particle*>& fsParticles, Particle* mother, std::string& pathToConfigParser, std::string dataType, std::string projectionParticleNames) :
+  TMatrixDynamics(name,fsParticles, mother)
+  ,_sigmaParameterization(std::shared_ptr<SigmaParameterization>(new SigmaParameterization()))
+  ,_currentPoleMass(_sigmaParameterization->barePoleMass())
+  ,_currentb1(_sigmaParameterization->b1Param())
+  ,_currentb2(_sigmaParameterization->b2Param())
+  ,_currenta(_sigmaParameterization->aParam())
+  ,_currentg4pi(_sigmaParameterization->g4piParam())
+  ,_poleMassName("sigmaPoleBareMass")
+  ,_b1Name("sigmab1")
+  ,_b2Name("sigmab2")
+  ,_aName("sigmaa")
+  ,_g4piName("sigmag4pi")
+{
+  
+  if(dataType=="Elasticity") _dataTypeID=1;
+  else if(dataType=="Phase") _dataTypeID=2;
+  else if(dataType=="ArgandUnits") _dataTypeID=3;
+  else if(dataType=="Data") _dataTypeID=4;
+  else if(dataType=="PhaseDiff") _dataTypeID=5; //in TMatrixCompareDynamics and FVectorCompareDynamics only
+  else if(dataType=="PVecIntensity") _dataTypeID=6; //in FVectorIntensityDynamics only
+  else if(dataType=="Treal") _dataTypeID=7;
+  else if(dataType=="Timag") _dataTypeID=8;
+  else if(dataType=="Tcheck") _dataTypeID=9;
+  else if(dataType=="Tabs") _dataTypeID=10;
+  else if(dataType=="PhasePhi") _dataTypeID=11;
+  else {
+    Alert << "production formalism/data type with the name" << dataType 
+	  << " is not supported for pi pi scattering fits! \n It is working for: "
+	  << "Elasticity, ArgandUnits, Phase or PhaseDiff!!!" << endmsg;
+    exit(1); 
+  }
+}
+
+
+TMatrixSigmaParDynamics::TMatrixSigmaParDynamics(std::string& name, std::vector<Particle*>& fsParticles, Particle* mother) :
+  TMatrixDynamics(name,fsParticles, mother)
+  ,_sigmaParameterization(std::shared_ptr<SigmaParameterization>(new SigmaParameterization()))
+  ,_currentPoleMass(_sigmaParameterization->barePoleMass())
+  ,_currentb1(_sigmaParameterization->b1Param())
+  ,_currentb2(_sigmaParameterization->b2Param())
+  ,_currenta(_sigmaParameterization->aParam())
+  ,_currentg4pi(_sigmaParameterization->g4piParam())
+  ,_poleMassName("sigmaPoleBareMass")
+  ,_b1Name("sigmab1")
+  ,_b2Name("sigmab2")
+  ,_aName("sigmaa")
+  ,_g4piName("sigmag4pi")
+{
+}
+
+TMatrixSigmaParDynamics::~TMatrixSigmaParDynamics()
+{
+}
+
+complex<double> TMatrixSigmaParDynamics::eval(EvtData* theData, AbsXdecAmp* grandmaAmp, Spin OrbMom){
+
+  double currentMass =
+    theData->DoubleMassId.at(IdStringMapRegistry::instance()->stringId(EvtDataScatteringList::M_PIPISCAT_NAME));
+
+  if(_dataTypeID==1) evalElasticity(theData, currentMass, OrbMom);   
+  else if(_dataTypeID==2){
+    // if(!_prodIsNotDecChannel) evalPhase(theData, currentMass, OrbMom);
+    //    else evalRelativePhase(theData, currentMass, OrbMom);
+    evalPhase(theData, currentMass, OrbMom);
+  }
+  else if(_dataTypeID==3){
+    evalArgandUnits(theData, currentMass, OrbMom);
+  }
+  else if(_dataTypeID==7){
+    evalTreal(theData, currentMass, OrbMom);
+  }
+  else if(_dataTypeID==8){
+    evalTimag(theData, currentMass, OrbMom);
+  }
+  else if(_dataTypeID==10){
+    evalTabs(theData, currentMass, OrbMom);
+  }
+  else if(_dataTypeID==11){
+    evalPhasePhi(theData, currentMass, OrbMom);
+  }
+  else{
+    Alert << "_dataTypeID = " <<_dataTypeID << " is not supported!!!" << endmsg;
+    exit(1); 
+  }
+
+  return complex<double>(1.,0);
+}
+
+void TMatrixSigmaParDynamics::fillDefaultParams(std::shared_ptr<AbsPawianParameters> fitPar){
+  //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 TMatrixSigmaParDynamics::fillParamNameList(){
+  _paramNameList.clear();
+  //fill
+  _paramNameList.push_back(_poleMassName);
+  _paramNameList.push_back(_b1Name);
+  _paramNameList.push_back(_b2Name);
+  _paramNameList.push_back(_aName);
+  _paramNameList.push_back(_g4piName);
+}
+
+// bool TMatrixSigmaParDynamics::checkRecalculation(std::shared_ptr<AbsPawianParameters> fitParNew, std::shared_ptr<AbsPawianParameters> fitParOld){
+//   return true;
+// }
+
+void TMatrixSigmaParDynamics::updateFitParams(std::shared_ptr<AbsPawianParameters> fitPar){
+
+  _sigmaParameterization->setBarePoleMass(_currentPoleMass);
+
+  _currentb1= fitPar->Value(_b1Name);
+  _sigmaParameterization->setb1Param(_currentb1);
+
+  _currentb2= fitPar->Value(_b2Name);
+  _sigmaParameterization->setb2Param(_currentb2);
+
+  _currenta= fitPar->Value(_aName);
+  _sigmaParameterization->setaParam(_currenta);
+
+  _currentg4pi= fitPar->Value(_g4piName);
+  _sigmaParameterization->setg4piParam(_currentg4pi);
+}
+
+
+
+void TMatrixSigmaParDynamics::evalElasticity(EvtData* theData, double currentMass, Spin OrbMom){
+  complex<double> currentTijRel= _sigmaParameterization->calcT(currentMass);
+  std::complex<double> rho2pi=_sigmaParameterization->rho2pi();
+  
+  complex<double> SijRel=complex<double>(1.,0.)+2.*PawianConstants::i *
+    sqrt(rho2pi.real()*rho2pi.real()) * currentTijRel;
+  
+  theData->DoubleId.at(IdStringMapRegistry::instance()->stringId(EvtDataScatteringList::FIT_PIPISCAT_NAME))=sqrt(norm(SijRel));
+}
+
+
+void TMatrixSigmaParDynamics::evalPhase(EvtData* theData, double currentMass, Spin OrbMom=0){
+  complex<double> currentTijRel= _sigmaParameterization->calcT(currentMass);
+  std::complex<double> rho2pi=_sigmaParameterization->rho2pi();
+
+  complex<double> currentTiiRel_rho= currentTijRel*rho2pi.real();
+  double currentReERel = currentTiiRel_rho.real();
+  double currentImERel = currentTiiRel_rho.imag() - 0.5;
+
+  double deltaRel = 0.5*atan2(currentImERel, fabs(currentReERel))*PawianConstants::radToDeg + 45.0;
+  if (currentTiiRel_rho.real()  < 0.0) {deltaRel = 180.0 - deltaRel;}
+
+  while(deltaRel>180.) deltaRel-=180.;
+  while(deltaRel<0.) deltaRel+=180.;
+
+  double phiData=theData->DoubleId.at(IdStringMapRegistry::instance()->stringId(EvtDataScatteringList::DATA_PIPISCAT_NAME));
+
+  while( (phiData-deltaRel) > 90.) deltaRel+=180.;
+  while( (deltaRel-phiData) > 90.) deltaRel-=180.;
+
+  theData->DoubleId.at(IdStringMapRegistry::instance()->stringId(EvtDataScatteringList::FIT_PIPISCAT_NAME))=deltaRel;
+
+}
+
+void TMatrixSigmaParDynamics::evalRelativePhase(EvtData* theData, double currentMass, Spin OrbMom){
+  Alert << "mode evalRelativePhase is not supported!!!" << endmsg;
+  exit(1);
+}
+
+void TMatrixSigmaParDynamics::evalArgandUnits(EvtData* theData, double currentMass, Spin OrbMom){
+  Alert << "mode evalArgandUnits is not supported!!!" << endmsg;
+  exit(1);
+}
+
+void TMatrixSigmaParDynamics::evalTreal(EvtData* theData, double currentMass, Spin OrbMom){
+  Alert << "mode evalTreal is not supported!!!" << endmsg;
+  exit(1);
+}
+
+void TMatrixSigmaParDynamics::evalTimag(EvtData* theData, double currentMass, Spin OrbMom){
+  Alert << "mode evalTimag is not supported!!!" << endmsg;
+  exit(1);
+}
+
+void TMatrixSigmaParDynamics::evalTabs(EvtData* theData, double currentMass, Spin OrbMom){
+  Alert << "mode evalTabs is not supported!!!" << endmsg;
+  exit(1);
+}
+
+void TMatrixSigmaParDynamics::evalPhasePhi(EvtData* theData, double currentMass, Spin OrbMom=0){
+  Alert << "mode evalPhasePhi is not supported!!!" << endmsg;
+  exit(1);
+}
+
diff --git a/PwaUtils/TMatrixSigmaParDynamics.hh b/PwaUtils/TMatrixSigmaParDynamics.hh
new file mode 100644
index 0000000000000000000000000000000000000000..170c23fe96b407b753c7ec3995bd7c55dd885a7e
--- /dev/null
+++ b/PwaUtils/TMatrixSigmaParDynamics.hh
@@ -0,0 +1,87 @@
+//************************************************************************//
+//									  //
+//  Copyright 2025 Bertram Kopf (bertram@ep1.rub.de)			  //
+//          	   - Ruhr-Universität Bochum 				  //
+//									  //
+//  This file is part of Pawian.					  //
+//									  //
+//  Pawian is free software: you can redistribute it and/or modify	  //
+//  it under the terms of the GNU General Public License as published by  //
+//  the Free Software Foundation, either version 3 of the License, or 	  //
+//  (at your option) any later version.	 	      	  	   	  //
+//									  //
+//  Pawian is distributed in the hope that it will be useful,		  //
+//  but WITHOUT ANY WARRANTY; without even the implied warranty of	  //
+//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the	  //
+//  GNU General Public License for more details.	      		  //
+//									  //
+//  You should have received a copy of the GNU General Public License     //
+//  along with Pawian.  If not, see <http://www.gnu.org/licenses/>.	  //
+//									  //
+//************************************************************************//
+
+// TMatrixSigmaParDynamics class definition file. -*- C++ -*-
+// Copyright 2025 Bertram Kopf
+
+#pragma once
+
+#include <iostream>
+#include <vector>
+#include <complex>
+#include <map>
+#include <string>
+#include <memory>
+
+#include "PwaUtils/TMatrixDynamics.hh"
+
+class AbsXdecAmp;
+class AbsPhaseSpace;
+class AbsPawianParameters;
+class SigmaParameterization;
+
+class TMatrixSigmaParDynamics : public TMatrixDynamics{
+
+public:
+  //  TMatrixSigmaParDynamics();
+  TMatrixSigmaParDynamics(std::string& name, std::vector<Particle*>& fsParticles, Particle* mother, std::string& pathToConfigParser, std::string dataType, std::string projectionParticleNames="");
+  TMatrixSigmaParDynamics(std::string& name, std::vector<Particle*>& fsParticles, Particle* mother);
+  virtual ~TMatrixSigmaParDynamics();
+
+  virtual std::string type() {return "TMatrixSigmaParDynamics";}
+  virtual complex<double> eval(EvtData* theData, AbsXdecAmp* grandmaAmp=0, Spin OrbMom=0);
+  virtual void fillDefaultParams(std::shared_ptr<AbsPawianParameters> fitPar);
+  virtual void fillParamNameList();
+  //  virtual bool checkRecalculation(std::shared_ptr<AbsPawianParameters> fitParNew, std::shared_ptr<AbsPawianParameters> fitParOld); 
+  virtual void updateFitParams(std::shared_ptr<AbsPawianParameters> fitPar);
+
+  int prodProjectionIndex() {return _prodProjectionIndex;}
+  void setProdProjectionIndex(int idx);
+  
+protected:
+  std::shared_ptr<SigmaParameterization> _sigmaParameterization;
+  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;  
+  
+  virtual void evalElasticity(EvtData* theData, double currentMass, Spin OrbMom);
+  virtual void evalPhase(EvtData* theData, double currentMass, Spin OrbMom);
+  virtual void evalRelativePhase(EvtData* theData, double currentMass, Spin OrbMom);
+  virtual void evalArgandUnits(EvtData* theData, double currentMass, Spin OrbMom);
+  virtual void evalTreal(EvtData* theData, double currentMass, Spin OrbMom);
+  virtual void evalTimag(EvtData* theData, double currentMass, Spin OrbMom);
+  virtual void evalTabs(EvtData* theData, double currentMass, Spin OrbMom);
+  virtual void evalPhasePhi(EvtData* theData, double currentMass, Spin OrbMom);
+
+  
+private:
+
+};
diff --git a/pipiScatteringUtils/PiPiScatteringChannelEnv.cc b/pipiScatteringUtils/PiPiScatteringChannelEnv.cc
index 305048357e30f388495307b3255a03e86dcd5bda..8a13f656447f8cbb762ba2373384119a0720a65e 100644
--- a/pipiScatteringUtils/PiPiScatteringChannelEnv.cc
+++ b/pipiScatteringUtils/PiPiScatteringChannelEnv.cc
@@ -212,6 +212,7 @@ void PiPiScatteringChannelEnv::addDynamics(){
   InfoMsg << "dynStr: " << dynStr << endmsg;
 
   if(dynStr=="KMatrix" || dynStr=="FixedKMatrix" || dynStr=="TMatrix" || dynStr=="FVectorIntensity"|| dynStr=="TMatrixCompare" || dynStr=="FVectorCompare") _pathKMatrixParserFile=additionalStringVec[0];
+  else if(dynStr=="TMatrixSigmaPar") _pathKMatrixParserFile="";
   else{
     Alert << "dyn type " << dynStr << " is not supported for pipi scattering reactions!!!" << endmsg;
     exit(0);