1#include "EvtGenBase/EvtPatches.hh"
14#include "EvtGenBase/EvtBlattWeisskopf.hh"
15#include "EvtGenBase/EvtReport.hh"
19 : _LL(LL), _radial(
R), _p0(p0)
23 report(
INFO,
"EvtGen") <<
"Radius " <<
R <<
" negative" << endl;
34 report(
INFO,
"EvtGen") <<
"Invalid nominal form factor computed " << _F0 << endl;
48 double ret = compute(p)/_F0;
65double EvtBlattWeisskopf::compute(
double p)
const
69 report(
INFO,
"EvtGen") <<
"Momentum " << p <<
" negative in form factor calculation" << endl;
73 double rp = p*_radial;
76 double rp6 = rp2 * rp4;
77 double rp8 = rp4 * rp4;
79 double x = p*p*_radial*_radial;
81 if(0 == _LL)
return 1.;
83 if(1 == _LL)
return sqrt(1.0/(1.0+x));
85 if(2 == _LL)
return sqrt(1.0/(1.0+x/3.0+x*x/9.0));
87 if(3 == _LL)
return 1.0/sqrt(225 + 45*rp2 + 6*rp4 + rp6 );
89 if(4 == _LL)
return 1.0/sqrt(11025 + 1575*rp2 + 135*rp4 + 10*rp6 + rp8 );
91 report(
INFO,
"EvtGen") <<
"Angular momentum " << _LL <<
" not implemented" << endl;
ostream & report(Severity severity, const char *facility)
double operator()(double p) const
EvtBlattWeisskopf(int LL, double R, double p0)
Index other(Index i, Index j)
complex_t R(double Q2, double M2, double G, double Mp2, double Mm2)