#include <EvtBlattWeisskopf.hh>
Public Member Functions | |
EvtBlattWeisskopf (int LL, double R, double p0) | |
EvtBlattWeisskopf (const EvtBlattWeisskopf &) | |
~EvtBlattWeisskopf () | |
double | operator() (double p) const |
double | get (double p) |
Private Member Functions | |
double | compute (double p) const |
Private Attributes | |
int | _LL |
double | _radial |
double | _p0 |
double | _F0 |
Definition at line 16 of file EvtBlattWeisskopf.hh.
EvtBlattWeisskopf::EvtBlattWeisskopf | ( | int | LL, | |
double | R, | |||
double | p0 | |||
) |
Definition at line 18 of file EvtBlattWeisskopf.cc.
References _F0, _p0, _radial, compute(), Bes_Common::INFO, and report().
00019 : _LL(LL), _radial(R), _p0(p0) 00020 { 00021 if(R < 0) { 00022 00023 report(INFO,"EvtGen") << "Radius " << R << " negative" << endl; 00024 assert(0); 00025 } 00026 00027 _radial = R; 00028 00029 // compute formula for nominal momentum 00030 00031 _F0 = compute(_p0); 00032 if(_F0 <= 0) { 00033 00034 report(INFO,"EvtGen") << "Invalid nominal form factor computed " << _F0 << endl; 00035 assert(0); 00036 } 00037 }
EvtBlattWeisskopf::EvtBlattWeisskopf | ( | const EvtBlattWeisskopf & | ) |
EvtBlattWeisskopf::~EvtBlattWeisskopf | ( | ) |
double EvtBlattWeisskopf::compute | ( | double | p | ) | const [private] |
Definition at line 65 of file EvtBlattWeisskopf.cc.
References _LL, _radial, Bes_Common::INFO, report(), and x.
Referenced by EvtBlattWeisskopf(), get(), and operator()().
00066 { 00067 if(p < 0) { 00068 00069 report(INFO,"EvtGen") << "Momentum " << p << " negative in form factor calculation" << endl; 00070 assert(0); 00071 } 00072 else { 00073 double rp = p*_radial; 00074 double rp2 = rp*rp; 00075 double rp4 = rp2*rp2; 00076 double rp6 = rp2 * rp4; 00077 double rp8 = rp4 * rp4; 00078 00079 double x = p*p*_radial*_radial; 00080 00081 if(0 == _LL) return 1.; 00082 else 00083 if(1 == _LL) return sqrt(1.0/(1.0+x)); 00084 else 00085 if(2 == _LL) return sqrt(1.0/(1.0+x/3.0+x*x/9.0)); 00086 else 00087 if(3 == _LL) return 1.0/sqrt(225 + 45*rp2 + 6*rp4 + rp6 ); 00088 else 00089 if(4 == _LL) return 1.0/sqrt(11025 + 1575*rp2 + 135*rp4 + 10*rp6 + rp8 ); 00090 else { 00091 report(INFO,"EvtGen") << "Angular momentum " << _LL << " not implemented" << endl; 00092 assert(0); 00093 } 00094 } 00095 }
double EvtBlattWeisskopf::get | ( | double | p | ) | [inline] |
Definition at line 26 of file EvtBlattWeisskopf.hh.
References compute().
Referenced by EvtCalHelAmp::decay().
00026 {return compute(p);}
double EvtBlattWeisskopf::operator() | ( | double | p | ) | const |
double EvtBlattWeisskopf::_F0 [private] |
Definition at line 34 of file EvtBlattWeisskopf.hh.
Referenced by EvtBlattWeisskopf(), and operator()().
int EvtBlattWeisskopf::_LL [private] |
double EvtBlattWeisskopf::_p0 [private] |
double EvtBlattWeisskopf::_radial [private] |
Definition at line 31 of file EvtBlattWeisskopf.hh.
Referenced by compute(), and EvtBlattWeisskopf().