Newer
Older
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
#include "qft++/matrix/KpoleMatrix.hh"
#include "qft++/relativistic-quantum-mechanics/Utils.hh"
KpoleMatrix::KpoleMatrix(const vector<double>& g_i, const double mass_0, const vector< pair<double, double> >& mDecPair, int orbMom):
Matrix< complex<double> >::Matrix(int(g_i.size()), int(g_i.size()))
, _orbMom(orbMom)
, _g_i(g_i)
, _poleMass(mass_0)
,_mDecPair(mDecPair)
{
//calculate phase-space factors
for (int i=0; i<int(_g_i.size()); ++i){
complex<double> tmpRhoPoleFactors=phaseSpaceFac(_poleMass,_mDecPair[i].first, _mDecPair[i].second);
_rhoPoleFactors.push_back(tmpRhoPoleFactors);
complex<double> tmpBreakupFactors=breakupMomQ(_poleMass,_mDecPair[i].first, _mDecPair[i].second);
_breakupFactors.push_back(tmpBreakupFactors);
}
}
KpoleMatrix::KpoleMatrix(const KpoleMatrix &theCopy):
Matrix< complex<double> >::Matrix(int(theCopy._g_i.size()), int(theCopy._g_i.size()))
, _orbMom(theCopy._orbMom)
,_g_i(theCopy._g_i)
, _poleMass(theCopy._poleMass)
,_mDecPair(theCopy._mDecPair)
{
//calculate phase-space factors
for (int i=0; i<int(_g_i.size()); ++i){
complex<double> tmpRhoPoleFactors=phaseSpaceFac(_poleMass,_mDecPair[i].first, _mDecPair[i].second);
_rhoPoleFactors.push_back(tmpRhoPoleFactors);
complex<double> tmpBreakupFactors=breakupMomQ(_poleMass,_mDecPair[i].first, _mDecPair[i].second);
_breakupFactors.push_back(tmpBreakupFactors);
}
}
KpoleMatrix::~KpoleMatrix(){
}
void KpoleMatrix::updateMatrix(const double mass){
//calculate phase-space factors
vector< complex<double> > rhoFactors;
vector< complex<double> > barrierFactors;
for (int i=0; i< int(_g_i.size()); ++i){
complex<double> tmpRhoFactors=phaseSpaceFac(mass,_mDecPair[i].first, _mDecPair[i].second);
rhoFactors.push_back(tmpRhoFactors);
complex<double> tmpBarrierFactor(1.,0.);
if(_orbMom>0) tmpBarrierFactor=pow(breakupMomQ(mass, _mDecPair[i].first, _mDecPair[i].second)/_breakupFactors[i], _orbMom);
barrierFactors.push_back(tmpBarrierFactor);
}
for (int i=0; i< int(_g_i.size()); ++i){
for (int j=0; j< int(_g_i.size()); ++j){
// this->operator()(i,j)= ( _g_i[i]*sqrt(conj(rhoFactors[i]))*barrierFactors[i]*_g_i[j]*sqrt(rhoFactors[j])*barrierFactors[j])/(_poleMass*_poleMass-mass*mass);
this->operator()(i,j)= ( _g_i[i]*_g_i[j]*sqrt(rhoFactors[i]*barrierFactors[i]*rhoFactors[j]*barrierFactors[j]))/(_poleMass*_poleMass-mass*mass);
// this->operator()(i,j)= ( _g_i[i]*sqrt(rhoFactors[i]*rhoFactors[j])*_g_i[j])/(_poleMass*_poleMass-mass*mass);
// this->operator()(i,j)= (( _g_i[i]*_g_i[j])/(_poleMass*_poleMass-mass*mass))*sqrt(rhoFactors[i]*rhoFactors[j]);
}
}
}
void KpoleMatrix::updateMatrixRel(const double mass){
updateMatrix(mass);
vector< complex<double> > rhoFactors;
for (int i=0; i< int(_g_i.size()); ++i){
complex<double> tmpRhoFactors=phaseSpaceFac(mass,_mDecPair[i].first, _mDecPair[i].second);
rhoFactors.push_back(tmpRhoFactors);
}
for (int i=0; i< int(_g_i.size()); ++i){
for (int j=0; j< int(_g_i.size()); ++j){
// this->operator()(i,j) /= sqrt(_rhoPoleFactors[i]*_rhoPoleFactors[j]);
this->operator()(i,j) /= sqrt(rhoFactors[i]*rhoFactors[j]);