Skip to content
Snippets Groups Projects
Commit 1c7d577e authored by Bertram Kopf's avatar Bertram Kopf
Browse files

added option to release parameters of the sigma parametrization from Bugg

parent 5529b220
No related branches found
No related tags found
No related merge requests found
...@@ -60,6 +60,14 @@ SigmaParameterization::SigmaParameterization(double mPole, double g4pi, double b ...@@ -60,6 +60,14 @@ SigmaParameterization::SigmaParameterization(double mPole, double g4pi, double b
SigmaParameterization::~SigmaParameterization(){ 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> SigmaParameterization::calc(double currentMass){
//complex<double> result(1.,0.); //complex<double> result(1.,0.);
double currentM2=currentMass*currentMass; double currentM2=currentMass*currentMass;
...@@ -73,7 +81,7 @@ complex<double> SigmaParameterization::calc(double currentMass){ ...@@ -73,7 +81,7 @@ complex<double> SigmaParameterization::calc(double currentMass){
return result; return result;
} }
complex<double> SigmaParameterization::calc(double currentMass, double gSigma){ complex<double> SigmaParameterization::calc(double currentMass, std::complex<double> gSigma){
return gSigma*calc(currentMass); return gSigma*calc(currentMass);
} }
std::complex<double> SigmaParameterization::php4pi(double currentMass2){ std::complex<double> SigmaParameterization::php4pi(double currentMass2){
......
...@@ -45,8 +45,19 @@ public: ...@@ -45,8 +45,19 @@ public:
~SigmaParameterization(); ~SigmaParameterization();
complex<double> calc(double currentMass); 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); 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: protected:
std::complex<double> php4pi(double currentMass2); std::complex<double> php4pi(double currentMass2);
...@@ -56,10 +67,10 @@ protected: ...@@ -56,10 +67,10 @@ protected:
double _b2; double _b2;
double _a; double _a;
const double _sAdler; const double _sAdler;
const double _mPoleSqr; double _mPoleSqr;
const double _g2piDenom; double _g2piDenom;
const std::complex<double> _rho2pi_mPole; std::complex<double> _rho2pi_mPole;
const std::complex<double> _rho4pi_mPole; std::complex<double> _rho4pi_mPole;
}; };
......
...@@ -34,8 +34,20 @@ ...@@ -34,8 +34,20 @@
SigmaParamDynamics::SigmaParamDynamics(std::string& name, std::vector<Particle*>& fsParticles, Particle* mother) : SigmaParamDynamics::SigmaParamDynamics(std::string& name, std::vector<Particle*>& fsParticles, Particle* mother) :
AbsDynamics(name, fsParticles, mother) AbsDynamics(name, fsParticles, mother)
,_currentStrength(1.)
,_sigmaParamDyn(std::shared_ptr<SigmaParameterization>(new SigmaParameterization)) ,_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; _isLdependent=false;
} }
...@@ -59,21 +71,52 @@ complex<double> SigmaParamDynamics::eval(EvtData* theData, AbsXdecAmp* grandmaAm ...@@ -59,21 +71,52 @@ complex<double> SigmaParamDynamics::eval(EvtData* theData, AbsXdecAmp* grandmaAm
void SigmaParamDynamics::fillDefaultParams(std::shared_ptr<AbsPawianParameters> fitPar){ void SigmaParamDynamics::fillDefaultParams(std::shared_ptr<AbsPawianParameters> fitPar){
//fill mass //fill production strength mag
std::string strengthName=_massKey+"Strength"; fitPar->Add(_strenghtNameMag, std::abs(_currentStrength), 0.01);
fitPar->Add(strengthName, _currentStrength, 0.1); //fill production strength phase
// fitPar->SetLimits(massName, minMass, maxMass); 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){ void SigmaParamDynamics::updateFitParams(std::shared_ptr<AbsPawianParameters> fitPar){
std::string strengthName=_massKey+"Strength"; double currentStrengthMag = fitPar->Value(_strenghtNameMag);
_currentStrength=fitPar->Value(strengthName); 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(){ void SigmaParamDynamics::fillParamNameList(){
_paramNameList.clear(); _paramNameList.clear();
//fill //fill
std::string strengthName=_massKey+"Strength"; _paramNameList.push_back(_strenghtNameMag);
_paramNameList.push_back(strengthName); _paramNameList.push_back(_strenghtNamePhi);
_paramNameList.push_back(_poleMassName);
_paramNameList.push_back(_b1Name);
_paramNameList.push_back(_b2Name);
_paramNameList.push_back(_aName);
_paramNameList.push_back(_g4piName);
} }
...@@ -52,9 +52,20 @@ public: ...@@ -52,9 +52,20 @@ public:
virtual void fillParamNameList(); virtual void fillParamNameList();
protected: protected:
// std::string _massKey; // std::string _massKey;
double _currentStrength;
std::shared_ptr<SigmaParameterization> _sigmaParamDyn; 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: private:
......
...@@ -24,6 +24,8 @@ ...@@ -24,6 +24,8 @@
#include <iostream> #include <iostream>
const double protonMass=0.93827208816;
class KinematicsTools class KinematicsTools
{ {
public: public:
...@@ -47,5 +49,16 @@ class KinematicsTools ...@@ -47,5 +49,16 @@ class KinematicsTools
static double breakupMom(double mass, double massDec1, double massDec2){ static double breakupMom(double mass, double massDec1, double massDec2){
return phaseSpaceFac(mass, massDec1, massDec2)*mass/2.; 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);
}
}; };
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment