Page MenuHomeHEPForge

a1ThreePionDecayer.icc
No OneTemporary

a1ThreePionDecayer.icc

// -*- C++ -*-
//
// This is the implementation of the inlined member functions of
// the a1ThreePionDecayer class.
//
namespace Herwig {
using namespace ThePEG;
inline IBPtr a1ThreePionDecayer::clone() const {
return new_ptr(*this);
}
inline IBPtr a1ThreePionDecayer::fullclone() const {
return new_ptr(*this);
}
// breit-wigner for the sigma meson
inline Complex a1ThreePionDecayer::sigmaBreitWigner(Energy2 q2) const {
Energy q=sqrt(q2);
Energy width=_sigmawidth*Kinematics::pstarTwoBodyDecay(q,_mpi,_mpi)/_psigma;
Energy2 msigma2=_sigmamass*_sigmamass;
Complex ii(0.,1.);
complex<Energy2> denom = q>2.*_mpi ? q2-msigma2+ii*msigma2*width/q :
q2-msigma2;
return msigma2/denom;
}
// a_1 form factor
inline double a1ThreePionDecayer::a1FormFactor(Energy2 q2) const {
return (1.+_a1mass2/_lambda2)/(1.+q2/_lambda2);
}
// the h function in the rho propagator
inline Energy2 a1ThreePionDecayer::hFunction(const Energy q)const {
static const Energy2 eps(0.01*MeV2);
Energy2 q2=q*q;
double root = sqrt(1.-4.*_mpi2/q2);
Energy2 output;
if(q2>4*_mpi2) {
output=root*log((1.+root)/(1.-root))*(q2-4*_mpi2)/Constants::pi;
}
else if(q2>eps) output=0.*MeV2;
else output=-8.*_mpi2/Constants::pi;
return output;
}
// the dh/dq2 rho the propagator
inline double a1ThreePionDecayer::dhdq2Parameter(int ires) const {
Energy2 mrho2(sqr(_rhomass[ires]));
double root = sqrt(1.-4.*_mpi2/mrho2);
using Constants::pi;
return root/pi*(root+(1.+2*_mpi2/mrho2)*log((1+root)/(1-root)));
}
// the numerator for the rho propagator
inline Energy2 a1ThreePionDecayer::DParameter(int ires) const {
Energy2 grhom = 8.*_prho[ires]*_prho[ires]*_prho[ires]/_rhomass[ires];
return _rhomass[ires]*_rhomass[ires]+_rhowidth[ires]*_rhomass[ires]*
(hFunction(0.*MeV)-_hm2[ires]+sqr(_rhomass[ires])*_dhdq2m2[ires])/grhom;
}
// the rho Breit-Wigner
inline Complex a1ThreePionDecayer::rhoBreitWigner(Energy2 q2, int ires) const {
Energy q=sqrt(q2);
Energy2 grhom = 8.*_prho[ires]*_prho[ires]*_prho[ires]/_rhomass[ires];
complex<Energy2> denom;
Complex ii(0.,1.);
if(q2<4.*_mpi2) {
denom=q2-_rhomass[ires]*_rhomass[ires]-_rhowidth[ires]*_rhomass[ires]*
(hFunction(q)-_hm2[ires]-(q2-_rhomass[ires]*_rhomass[ires])*_dhdq2m2[ires])
/grhom;
}
else {
Energy pcm=2.*Kinematics::pstarTwoBodyDecay(q,_mpi,_mpi);
Energy2 grho = pcm*pcm*pcm/q;
denom=q2-_rhomass[ires]*_rhomass[ires]
-_rhowidth[ires]*_rhomass[ires]*
(hFunction(q)-_hm2[ires]-(q2-_rhomass[ires]*_rhomass[ires])*_dhdq2m2[ires])/grhom
+ii*_rhomass[ires]*_rhowidth[ires]*grho/grhom;
}
return _rhoD[ires]/denom;
}
inline Energy4 a1ThreePionDecayer::lambda(Energy2 a, Energy2 b, Energy2 c) const {
return sqr(a)+sqr(b)+sqr(c)-2.*a*b-2.*a*c-2.*b*c;
}
}

File Metadata

Mime Type
text/plain
Expires
Wed, May 14, 11:59 AM (1 h, 35 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
5111581
Default Alt Text
a1ThreePionDecayer.icc (2 KB)

Event Timeline