EvtBlattWeisskopf Class Reference

#include <EvtBlattWeisskopf.hh>

List of all members.

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


Detailed Description

Definition at line 16 of file EvtBlattWeisskopf.hh.


Constructor & Destructor Documentation

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  ) 

Definition at line 39 of file EvtBlattWeisskopf.cc.

00040   : _LL(other._LL), _radial(other._radial), _p0(other._p0), _F0(other._F0)
00041 {}

EvtBlattWeisskopf::~EvtBlattWeisskopf (  ) 

Definition at line 43 of file EvtBlattWeisskopf.cc.

00044 {}


Member Function Documentation

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

Definition at line 46 of file EvtBlattWeisskopf.cc.

References _F0, and compute().

00047 {
00048   double ret = compute(p)/_F0;
00049   //  report(INFO,"EvtGen") << p << " " << _p0 << " " << _F0 << " " << _LL << " " << _radial << " " << ret << endl;
00050   return ret;
00051 }


Member Data Documentation

double EvtBlattWeisskopf::_F0 [private]

Definition at line 34 of file EvtBlattWeisskopf.hh.

Referenced by EvtBlattWeisskopf(), and operator()().

int EvtBlattWeisskopf::_LL [private]

Definition at line 30 of file EvtBlattWeisskopf.hh.

Referenced by compute().

double EvtBlattWeisskopf::_p0 [private]

Definition at line 32 of file EvtBlattWeisskopf.hh.

Referenced by EvtBlattWeisskopf().

double EvtBlattWeisskopf::_radial [private]

Definition at line 31 of file EvtBlattWeisskopf.hh.

Referenced by compute(), and EvtBlattWeisskopf().


Generated on Tue Nov 29 23:18:53 2016 for BOSS_7.0.2 by  doxygen 1.4.7