Skip to content
Snippets Groups Projects
Commit 772b61f3 authored by Julian Pychy's avatar Julian Pychy
Browse files

made barrier factors complex, added them to k/p-poles

parent 957bc0b6
No related branches found
No related tags found
No related merge requests found
......@@ -27,43 +27,29 @@
const double BarrierFactor::qRDefault = 0.1973; // GeV
BarrierFactor::BarrierFactor(double l, double q0, double qR) :
BarrierFactor::BarrierFactor(int l, std::complex<double> q0, double qR) :
_l(l),
_qR(qR),
_q0(q0)
{
if(q0 < 0){
Alert << "q0 < 0" << endmsg;
}
_B0 = BlattWeisskopf(_q0);
if(_B0 < 0){
Alert << "_B0 < 0" << endmsg;
}
}
double BarrierFactor::BlattWeisskopf(double q){
std::complex<double> BarrierFactor::BlattWeisskopf(std::complex<double> q){
return BlattWeisskopf(_l, q*q/_qR/_qR);
}
double BarrierFactor::BlattWeisskopf(int l, double q, double qR){
std::complex<double> BarrierFactor::BlattWeisskopf(int l, std::complex<double> q, double qR){
return BlattWeisskopf(l, q*q/qR/qR);
}
double BarrierFactor::BlattWeisskopf(int l, double z){
if(z<0){
Alert << "z<0" << endmsg;
return 0;
}
std::complex<double> BarrierFactor::BlattWeisskopf(int l, std::complex<double> z){
if(0==l){
return 1.0;
......@@ -99,12 +85,12 @@ double BarrierFactor::BlattWeisskopf(int l, double z){
double BarrierFactor::D(double q){
std::complex<double> BarrierFactor::D(std::complex<double> q){
return BlattWeisskopf(q) / _B0;
}
double BarrierFactor::D(int l, double q, double q0, double qR){
std::complex<double> BarrierFactor::D(int l, std::complex<double> q, std::complex<double> q0, double qR){
return BlattWeisskopf(l, q, qR) / BlattWeisskopf(l, q0, qR);
}
......@@ -23,23 +23,24 @@
#pragma once
#include <complex>
class BarrierFactor
{
public:
BarrierFactor(double l, double q0, double qR);
double D(double q);
double BlattWeisskopf(double q);
static double D(int l, double q, double q0, double qR);
static double BlattWeisskopf(int l, double q, double qR);
static double BlattWeisskopf(int l, double z);
BarrierFactor(int l, std::complex<double> q0, double qR);
std::complex<double> D(std::complex<double> q);
std::complex<double> BlattWeisskopf(std::complex<double> q);
static std::complex<double> D(int l, std::complex<double> q, std::complex<double> q0, double qR);
static std::complex<double> BlattWeisskopf(int l, std::complex<double> q, double qR);
static std::complex<double> BlattWeisskopf(int l, std::complex<double> z);
static const double qRDefault;
private:
double _l;
double _qR;
double _q0;
double _B0;
std::complex<double> _q0;
std::complex<double> _B0;
};
......@@ -43,9 +43,7 @@ complex<double> BreitWignerFunction::BlattWRel(int orbMom, double currentMass,d
complex<double> momQ0=breakupMomQ(mass0, massA, massB);
complex<double> momQ=breakupMomQ(currentMass, massA, massB);
// BarrierFactor theBarrierFac(orbMom, momQ0.real(), BarrierFactor::qRDefault);
// double bwkFactor=theBarrierFac.D(momQ.real());
double bwkFactor=BarrierFactor::D(orbMom, momQ.real(), momQ0.real(), BarrierFactor::qRDefault);
std::complex<double> bwkFactor=BarrierFactor::D(orbMom, momQ, momQ0, BarrierFactor::qRDefault);
return mass0*width*bwkFactor/(mass0*mass0 - currentMass*currentMass- i*(rho/rho0)*mass0*width*bwkFactor*bwkFactor);
......
......@@ -23,7 +23,7 @@
#include "PwaDynamics/KPoleBarrier.hh"
#include "PwaDynamics/AbsPhaseSpace.hh"
#include "qft++/relativistic-quantum-mechanics/Utils.hh"
#include "PwaDynamics/BarrierFactor.hh"
KPoleBarrier::KPoleBarrier(vector<double>& g_i, double mass_0, vector<std::shared_ptr<AbsPhaseSpace> > phpVecs, int orbMom):
KPole(g_i, mass_0)
......@@ -43,8 +43,7 @@ KPoleBarrier::~KPoleBarrier(){
void KPoleBarrier::evalMatrix(const double mass){
for (int i=0; i< int(_phpVecs.size()); ++i){
_barrierFactor.at(i)=pow(_phpVecs.at(i)->breakUpMom(mass)/_breakUpM0.at(i), _orbMom);
//std::cout << "Barrier factor " << i << ": " << _barrierFactor.at(i) << std::endl;
_barrierFactor.at(i) = BarrierFactor::D(_orbMom, _phpVecs.at(i)->breakUpMom(mass), _breakUpM0.at(i), BarrierFactor::qRDefault);
}
double denom=_poleMass*_poleMass-mass*mass;
......
......@@ -22,7 +22,7 @@
//************************************************************************//
#include "PwaDynamics/PPoleBarrier.hh"
#include "qft++/relativistic-quantum-mechanics/Utils.hh"
#include "PwaDynamics/BarrierFactor.hh"
PPoleBarrier::PPoleBarrier(complex<double>& beta, vector<double>& g_i, double mass_0, vector<std::shared_ptr<AbsPhaseSpace> > phpVecs, int orbMom):
PPole(beta, g_i, mass_0)
......@@ -42,7 +42,7 @@ PPoleBarrier::~PPoleBarrier(){
void PPoleBarrier::evalMatrix(const double mass){
for (int i=0; i< int(_phpVecs.size()); ++i){
_barrierFactor.at(i)=pow(_phpVecs[i]->breakUpMom(mass)/_breakUpM0.at(i), _orbMom);
_barrierFactor.at(i) = BarrierFactor::D(_orbMom, _phpVecs.at(i)->breakUpMom(mass), _breakUpM0.at(i), BarrierFactor::qRDefault);
}
double denom=_poleMass*_poleMass-mass*mass;
......
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