EvtVubdGamma Class Reference

#include <EvtVubdGamma.hh>

List of all members.

Public Member Functions

 EvtVubdGamma (const double &alphas)
virtual ~EvtVubdGamma ()
double getdGdxdzdp (const double &x, const double &z, const double &p2)

Protected Member Functions

double delta (const double &x, const double &xmin, const double &xmax)
double getW1nodelta (const double &x, const double &z, const double &p2)
double getW2nodelta (const double &x, const double &z, const double &p2)
double getW3nodelta (const double &x, const double &z, const double &p2)
double getW4nodelta (const double &x, const double &z, const double &p2)
double getW5nodelta (const double &x, const double &z, const double &p2)
double getW1delta (const double &x, const double &z)
double getW4plus5delta (const double &x, const double &z)

Private Attributes

double _alphas
double _epsilon1
double _epsilon2
double _epsilon3


Detailed Description

Definition at line 38 of file EvtVubdGamma.hh.


Constructor & Destructor Documentation

EvtVubdGamma::EvtVubdGamma ( const double &  alphas  ) 

Definition at line 52 of file EvtVubdGamma.cc.

References _alphas, _epsilon1, _epsilon2, _epsilon3, exp(), and M_PI.

00053 {
00054   _alphas = alphas;
00055 
00056   // the range for the delta distribution in p2 is from _epsilon1 to 
00057   // _epsilon2. It was checked with the single differential formulae
00058   // in the paper that these values are small enough to imitate p2 = 0
00059   // for the regular terms.
00060   // The ()* distributions, however need further treatment. In order to
00061   // generate the correct spectrum in z a threshold need to be computed 
00062   // from the desired value of the coupling alphas. The idea is that 
00063   // for z=1 p2=0 is not allowed and therefore the part of dGamma proportional
00064   // to delta(p2) should go to 0 for z->1.
00065   // Using equation (3.1) and (3.2) it is possible to find the correct value
00066   // for log(_epsilon3) from this requirement.
00067 
00068   _epsilon1 = 1e-10;
00069   _epsilon2 = 1e-5;
00070   if ( alphas > 0 ) {
00071     double lne3 = 9./16.-2*M_PI*M_PI/3.+6*M_PI/4/alphas;
00072     if ( lne3 > 0 ) 
00073       lne3 = -7./4. - sqrt(lne3);
00074     else
00075       lne3 = -7./4.;
00076     _epsilon3 = exp(lne3);
00077   }
00078   else
00079     _epsilon3 = 1;
00080 }

EvtVubdGamma::~EvtVubdGamma (  )  [virtual]

Definition at line 86 of file EvtVubdGamma.cc.

00087 {
00088 }


Member Function Documentation

double EvtVubdGamma::delta ( const double &  x,
const double &  xmin,
const double &  xmax 
) [protected]

Definition at line 140 of file EvtVubdGamma.cc.

References _epsilon1, and _epsilon2.

Referenced by getdGdxdzdp().

00141 {
00142   if ( xmin > 0 || xmax < 0 ) return 0.;
00143   if ( _epsilon1 < x && x < _epsilon2 ) return 1./(_epsilon2-_epsilon1); 
00144   return 0.0; 
00145 }

double EvtVubdGamma::getdGdxdzdp ( const double &  x,
const double &  z,
const double &  p2 
)

Definition at line 94 of file EvtVubdGamma.cc.

References _epsilon1, _epsilon2, delta(), getW1delta(), getW1nodelta(), getW2nodelta(), getW3nodelta(), getW4nodelta(), getW4plus5delta(), and getW5nodelta().

Referenced by EvtVubHybrid::decay(), and EvtVub::decay().

00095 {
00096   // check phase space
00097   
00098   double xb = (1-x);
00099 
00100   if ( x < 0 || x > 1 || z < xb || z > (1+xb) ) 
00101     return 0;
00102   
00103   //not used
00104   //double mx = (0>z-1?0:z-1);
00105 
00106   double p2min = (0>z-1.?0:z-1.);
00107   double p2max = (1.-x)*(z-1.+x);
00108 
00109   if (p2 < p2min || p2 > p2max) 
00110     return 0;
00111 
00112   //  // check the phase space
00113   //  return 1.;
00114 
00115   double dG;
00116 
00117   if ( p2 >_epsilon1 && p2< _epsilon2) {
00118     
00119     double W1      = getW1delta(x,z);
00120     double W4plus5 = getW4plus5delta(x,z);
00121     
00122     dG = 12. * delta(p2,p2min,p2max) * ((1.+xb-z) * (z-xb) * W1
00123                                         + xb*(z-xb) * (W4plus5));
00124   }
00125   else {
00126 
00127     double W1 = getW1nodelta(x,z,p2);
00128     double W2 = getW2nodelta(x,z,p2);
00129     double W3 = getW3nodelta(x,z,p2);
00130     double W4 = getW4nodelta(x,z,p2);
00131     double W5 = getW5nodelta(x,z,p2);
00132 
00133     dG = 12. * ((1.+xb-z) * (z-xb-p2) * W1 
00134                 + (1.-z+p2) * W2
00135                 + (xb*(z-xb)-p2) * (W3+W4+W5));
00136   }
00137   return dG;
00138 }

double EvtVubdGamma::getW1delta ( const double &  x,
const double &  z 
) [protected]

Definition at line 147 of file EvtVubdGamma.cc.

References _alphas, _epsilon3, ddilog_(), M_PI, and w.

Referenced by getdGdxdzdp().

00148 {
00149   double mz = 1.-z;
00150   //double p2min = (0>z-1.?0:z-1.);
00151   //double p2max = (1.-x)*(z-1.+x);
00152 
00153   double lz;
00154   if (z == 1) lz = -1.;
00155   else        lz = log(z)/(1.-z);
00156   
00157   // ddilog_(&z) is actually the dilog of (1-z) in maple,
00158   // also in Neuberts paper the limit dilog(1) = pi^2/6 is used 
00159   // this corresponds to maple's dilog(0), so
00160   // I take ddilog_(&mz) where mz=1-z in order to satisfy Neubert's definition
00161   // and to compare with Maple the argument in maple should be (1-mz) ...
00162 
00163   double dl = 4.*ddilog_(&mz) + 4.*pow(M_PI,2)/3.;
00164 
00165   double w = -(8.*pow(log(z),2) - 10.*log(z) + 2.*lz + dl + 5.)
00166     + (8.*log(z)-7.)*log(_epsilon3) - 2.*pow(log(_epsilon3),2); 
00167 
00168   return (1. + w*_alphas/3./M_PI);
00169 }

double EvtVubdGamma::getW1nodelta ( const double &  x,
const double &  z,
const double &  p2 
) [protected]

Definition at line 171 of file EvtVubdGamma.cc.

References _alphas, _epsilon2, _epsilon3, M_PI, t(), and w.

Referenced by getdGdxdzdp().

00172 {
00173 
00174   double z2 = z*z;
00175   double t2 = 1.-4.*p2/z2;
00176   double t = sqrt(t2);
00177   
00178   double w = 0;
00179   if ( p2 > _epsilon2 ) 
00180     w += 4./p2*(log((1.+t)/(1.-t))/t + log(p2/z2))  
00181       + 1. - (8.-z)*(2.-z)/z2/t2 
00182       + ((2.-z)/2./z+(8.-z)*(2.-z)/2./z2/t2)*log((1.+t)/(1.-t))/t;
00183   if ( p2 > _epsilon3 )
00184     w += (8.*log(z)-7.)/p2 - 4.*log(p2)/p2;
00185  
00186   return w*_alphas/3./M_PI;
00187 }

double EvtVubdGamma::getW2nodelta ( const double &  x,
const double &  z,
const double &  p2 
) [protected]

Definition at line 189 of file EvtVubdGamma.cc.

References _alphas, _epsilon2, M_PI, t(), and w.

Referenced by getdGdxdzdp().

00190 {
00191 
00192   double z2 = z*z;
00193   double t2 = 1.-4.*p2/z2;
00194   double t = sqrt(t2);
00195   double w11 = (32.-8.*z+z2)/4./z/t2;
00196 
00197   double w = 0;
00198   if ( p2 > _epsilon2 ) 
00199     w -=  (z*t2/8. + (4.-z)/4. + w11/2.)*log((1.+t)/(1.-t))/t;
00200   if ( p2 > _epsilon2 ) 
00201     w += (8.-z)/4. + w11;
00202  
00203   return (w*_alphas/3./M_PI);
00204 }

double EvtVubdGamma::getW3nodelta ( const double &  x,
const double &  z,
const double &  p2 
) [protected]

Definition at line 206 of file EvtVubdGamma.cc.

References _alphas, _epsilon2, M_PI, t(), and w.

Referenced by getdGdxdzdp().

00207 {
00208   double z2 = z*z;
00209   double t2 = 1.-4.*p2/z2;
00210   double t4 = t2*t2;
00211   double t = sqrt(t2);
00212 
00213   double w = 0;
00214 
00215   if ( p2 > _epsilon2 ) 
00216     w += (z*t2/16. + 5.*(4.-z)/16. - (64.+56.*z-7.*z2)/16./z/t2 
00217           + 3.*(12.-z)/16./t4) * log((1.+t)/(1.-t))/t;
00218   if ( p2 > _epsilon2 ) 
00219     w += -(8.-3.*z)/8. + (32.+22.*z-3.*z2)/4./z/t2 - 3.*(12.-z)/8./t4;
00220  
00221   return (w*_alphas/3./M_PI);
00222 }

double EvtVubdGamma::getW4nodelta ( const double &  x,
const double &  z,
const double &  p2 
) [protected]

Definition at line 224 of file EvtVubdGamma.cc.

References _alphas, _epsilon2, M_PI, t(), and w.

Referenced by getdGdxdzdp().

00225 {
00226   double z2 = z*z;
00227   double t2 = 1.-4.*p2/z2;
00228   double t4 = t2*t2;
00229   double t = sqrt(t2);
00230 
00231   double w = 0;
00232 
00233   if ( p2 > _epsilon2 ) 
00234     w -= ((8.-3.*z)/4./z - (22.-3.*z)/2./z/t2 + 3.*(12.-z)/4./z/t4) 
00235       * log((1.+t)/(1.-t))/t;
00236   if ( p2 > _epsilon2 ) 
00237     w += -1. - (32.-5.*z)/2./z/t2 + 3.*(12.-z)/2./z/t4 ;
00238  
00239   return w*_alphas/3./M_PI;
00240 }

double EvtVubdGamma::getW4plus5delta ( const double &  x,
const double &  z 
) [protected]

Definition at line 242 of file EvtVubdGamma.cc.

References _alphas, M_PI, and w.

Referenced by getdGdxdzdp().

00243 {
00244 
00245   double w = 0;
00246 
00247   if ( z == 1 )
00248     w = -2;
00249   else
00250     w = 2.*log(z)/(1.-z);
00251 
00252   return (w*_alphas/3./M_PI);
00253 }

double EvtVubdGamma::getW5nodelta ( const double &  x,
const double &  z,
const double &  p2 
) [protected]

Definition at line 255 of file EvtVubdGamma.cc.

References _alphas, _epsilon2, M_PI, t(), and w.

Referenced by getdGdxdzdp().

00256 {
00257   double z2 = z*z;
00258   double t2 = 1.-4.*p2/z2;
00259   double t4 = t2*t2;
00260   double t = sqrt(t2);
00261 
00262   double w = 0;
00263   if ( p2 > _epsilon2 )
00264     w += (1./4./z - (2.-z)/2./z2/t2 + 3.*(12.-z)/4./z2/t4) 
00265       * log((1.+t)/(1.-t))/t;
00266   if ( p2 > _epsilon2 )
00267     w += -(8.+z)/2./z2/t2 - 3.*(12.-z)/2./z2/t4;
00268 
00269  
00270   return (w*_alphas/3./M_PI);
00271 }


Member Data Documentation

double EvtVubdGamma::_alphas [private]

Definition at line 86 of file EvtVubdGamma.hh.

Referenced by EvtVubdGamma(), getW1delta(), getW1nodelta(), getW2nodelta(), getW3nodelta(), getW4nodelta(), getW4plus5delta(), and getW5nodelta().

double EvtVubdGamma::_epsilon1 [private]

Definition at line 87 of file EvtVubdGamma.hh.

Referenced by delta(), EvtVubdGamma(), and getdGdxdzdp().

double EvtVubdGamma::_epsilon2 [private]

Definition at line 88 of file EvtVubdGamma.hh.

Referenced by delta(), EvtVubdGamma(), getdGdxdzdp(), getW1nodelta(), getW2nodelta(), getW3nodelta(), getW4nodelta(), and getW5nodelta().

double EvtVubdGamma::_epsilon3 [private]

Definition at line 89 of file EvtVubdGamma.hh.

Referenced by EvtVubdGamma(), getW1delta(), and getW1nodelta().


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