/home/bes3soft/bes3soft/Boss/7.0.2/dist/7.0.2/Generator/BesEvtGen/BesEvtGen-00-03-58/src/EvtGen/EvtGenBase/EvtBlattWeisskopf.cc

Go to the documentation of this file.
00001 #include "EvtGenBase/EvtPatches.hh"
00002 /*******************************************************************************
00003  * Project: BaBar detector at the SLAC PEP-II B-factory
00004  * Package: EvtGenBase
00005  *    File: $Id: EvtBlattWeisskopf.cc,v 1.2 2015/07/01 12:28:24 pingrg Exp $
00006  *  Author: Alexei Dvoretskii, dvoretsk@slac.stanford.edu, 2001-2002
00007  *
00008  * Copyright (C) 2002 Caltech
00009  *******************************************************************************/
00010 
00011 #include <iostream>
00012 #include <assert.h>
00013 #include <math.h>
00014 #include "EvtGenBase/EvtBlattWeisskopf.hh"
00015 #include "EvtGenBase/EvtReport.hh"
00016 using std::endl;
00017 
00018 EvtBlattWeisskopf::EvtBlattWeisskopf(int LL, double R, double p0)
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 }
00038 
00039 EvtBlattWeisskopf::EvtBlattWeisskopf(const EvtBlattWeisskopf& other)
00040   : _LL(other._LL), _radial(other._radial), _p0(other._p0), _F0(other._F0)
00041 {}
00042 
00043 EvtBlattWeisskopf::~EvtBlattWeisskopf()
00044 {}
00045 
00046 double EvtBlattWeisskopf::operator()(double p) const
00047 {
00048   double ret = compute(p)/_F0;
00049   //  report(INFO,"EvtGen") << p << " " << _p0 << " " << _F0 << " " << _LL << " " << _radial << " " << ret << endl;
00050   return ret;
00051 }
00052 
00053 // Blatt-Weisskopf form factors
00054 // see e.g. hep-ex/0011065
00055 // Dalitz Analysis of the Decay D0->K-pi+pi0 (CLEO)
00056 //
00057 // p   - momentum of either daugher in the meson rest frame,
00058 //       the mass of the meson is used
00059 // pAB - momentum of either daughter in the candidate rest frame
00060 //       the mass of the candidate is used
00061 // R - meson radial parameter
00062 // 
00063 // In the CLEO paper R=5 GeV-1 for D0, R=1.5 for intermediate resonances
00064 
00065 double EvtBlattWeisskopf::compute(double p) const
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 }
00096 

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