Page MenuHomeHEPForge

GenericWidthGenerator.icc
No OneTemporary

GenericWidthGenerator.icc

// -*- C++ -*-
//
// This is the implementation of the inlined member functions of
// the GenericWidthGenerator class.
//
namespace Herwig {
using namespace ThePEG;
inline GenericWidthGenerator::GenericWidthGenerator()
: _mass(),_prefactor(0.),_initialize(false),_BRnorm(true),_npoints(50),
_BRminimum(0.01)
{}
inline IBPtr GenericWidthGenerator::clone() const {
return new_ptr(*this);
}
inline IBPtr GenericWidthGenerator::fullclone() const {
return new_ptr(*this);
}
inline Energy GenericWidthGenerator::partial2BodyWidth(int imode,Energy q) const {
return partial2BodyWidth(imode,q,_MEmass1[imode],_MEmass2[imode]);
}
inline Energy GenericWidthGenerator::partial2BodyWidth(int imode, Energy q,Energy m1,
Energy m2) const {
using Constants::pi;
if(q<m1+m2){return Energy();}
// calcluate the decay momentum
Energy2 q2(q*q),m02(_mass*_mass),m12(m1*m1),m22(m2*m2),
pcm2(0.25*(q2*(q2-2.*m12-2.*m22)+(m12-m22)*(m12-m22))/q2);
Energy pcm(sqrt(pcm2)),gam=Energy();
if(_MEcode[imode]==-1)
{gam=q/_mass*_theParticle->width();}
// V -> P P
else if(_MEcode[imode]==0){gam=pcm2*pcm/6./pi/q2;}
// V -> P V
else if(_MEcode[imode]==1){gam=pcm2*pcm/12./pi/m02;}
// V -> f fbar
else if(_MEcode[imode]==2)
{gam=pcm/12./pi*(q2*(2.*q2-m12-m22+6.*m1*m2)-(m12-m22)*(m12-m22))/q2/q2;}
// P -> VV
else if(_MEcode[imode]==3){gam=0.25*pcm2*pcm/m02/pi;}
// A -> VP
else if(_MEcode[imode]==4){gam = pcm*(2.*pcm2+3.*m12)/24./pi/m02;}
// V -> VV
else if(_MEcode[imode]==5){gam = pcm2*pcm/3./pi/q2*(1.+m12/q2+m22/q2);}
// S -> SS
else if(_MEcode[imode]==6){gam = pcm/8./pi/q2*m02;}
// T -> PP
else if(_MEcode[imode]==7){gam = pcm2*pcm2*pcm/60./pi/q2/m02;}
// T -> VP
else if(_MEcode[imode]==8){gam = pcm2*pcm2*pcm/40./pi/m02/m02;}
// T -> VV
else if(_MEcode[imode]==9)
{gam = pcm/30./pi/q2/q2/m02*(3.*q2*(8.*pcm2*pcm2+5.*(m12*m22+pcm2*(m12+m22)))
-5.*(m12-m22)*(m12-m22)*pcm2);}
// P -> PV
else if(_MEcode[imode]==10){gam = pcm*pcm2/2./pi/m22;}
// P -> PT
else if(_MEcode[imode]==11){gam=pcm2*pcm2*pcm/12./pi*q2/m12/m12/m02;}
// S -> VV
else if(_MEcode[imode]==12){gam=pcm*(2.*pcm2+3.*m12*m22/q2)/8./pi/m02;}
// unknowm
else{throw Exception() << "Unknown type of mode " << _MEcode[imode]
<< " in GenericWidthGenerator::partial2BodyWidth() "
<< Exception::abortnow;}
return gam*_MEcoupling[imode]*_MEcoupling[imode];
}
inline int GenericWidthGenerator::MEcode(int imode) const {
return _MEcode[imode];
}
inline double GenericWidthGenerator::MEcoupling(int imode) const {
return _MEcoupling[imode];
}
inline Energy GenericWidthGenerator::mass() const {
return _mass;
}
inline bool GenericWidthGenerator::initialize() const {
return _initialize;
}
inline tPDPtr GenericWidthGenerator::particle() const {
return _theParticle;
}
}

File Metadata

Mime Type
text/plain
Expires
Sat, May 3, 6:57 AM (6 h, 47 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
4983206
Default Alt Text
GenericWidthGenerator.icc (2 KB)

Event Timeline