EvtbTosllAmp Class Reference

#include <EvtbTosllAmp.hh>

Inheritance diagram for EvtbTosllAmp:

EvtbTosllScalarAmp EvtbTosllVectorAmp List of all members.

Public Member Functions

virtual void CalcAmp (EvtParticle *parent, EvtAmp &amp, EvtbTosllFF *formFactors)=0
double CalcMaxProb (EvtId parent, EvtId meson, EvtId lepton, EvtId nudaug, EvtbTosllFF *formFactors, double &poleSize)
EvtComplex GetC7Eff (double q2, bool nnlo=true)
EvtComplex GetC9Eff (double q2, bool nnlo=true, bool btod=false)
EvtComplex GetC10Eff (double q2, bool nnlo=true)
double dGdsProb (double mb, double ms, double ml, double s)
double dGdsdupProb (double mb, double ms, double ml, double s, double u)

Detailed Description

Definition at line 31 of file EvtbTosllAmp.hh.


Member Function Documentation

virtual void EvtbTosllAmp::CalcAmp ( EvtParticle parent,
EvtAmp amp,
EvtbTosllFF formFactors 
) [pure virtual]

Implemented in EvtbTosllScalarAmp, and EvtbTosllVectorAmp.

Referenced by CalcMaxProb(), EvtbTosllBall::decay(), and EvtbTosllAli::decay().

double EvtbTosllAmp::CalcMaxProb ( EvtId  parent,
EvtId  meson,
EvtId  lepton,
EvtId  nudaug,
EvtbTosllFF formFactors,
double &  poleSize 
)

Definition at line 37 of file EvtbTosllAmp.cc.

References boostTo(), CalcAmp(), EvtParticle::deleteTree(), EvtParticle::getDaug(), EvtPDL::getMass(), EvtPDL::getMaxMass(), EvtPDL::getMeanMass(), EvtPDL::getMinMass(), EvtAmp::getSpinDensity(), EvtParticle::getSpinStates(), EvtPDL::getWidth(), genRecEmupikp::i, EvtParticle::init(), EvtAmp::init(), EvtScalarParticle::init(), ganga-rec::j, EvtParticle::makeDaughters(), EvtParticle::mass(), mass, EvtParticle::noLifeTime(), EvtSpinDensity::NormalizedProb(), EvtVector4R::set(), EvtSpinDensity::SetDiag(), and EvtParticle::setDiagonalSpinDensity().

Referenced by EvtbTosllBall::initProbMax(), and EvtbTosllAli::initProbMax().

00040                                                     {
00041 
00042   //This routine takes the arguements parent, meson, and lepton
00043   //number, and a form factor model, and returns a maximum
00044   //probability for this semileptonic form factor model.  A
00045   //brute force method is used.  The 2D cos theta lepton and
00046   //q2 phase space is probed.
00047 
00048   //Start by declaring a particle at rest.
00049 
00050   //It only makes sense to have a scalar parent.  For now. 
00051   //This should be generalized later.
00052 
00053   EvtScalarParticle *scalar_part;
00054   EvtParticle *root_part;
00055 
00056   scalar_part=new EvtScalarParticle;
00057 
00058   //cludge to avoid generating random numbers!
00059   scalar_part->noLifeTime();
00060 
00061   EvtVector4R p_init;
00062   
00063   p_init.set(EvtPDL::getMass(parent),0.0,0.0,0.0);
00064   scalar_part->init(parent,p_init);
00065   root_part=(EvtParticle *)scalar_part;
00066   root_part->setDiagonalSpinDensity();      
00067 
00068   EvtParticle *daughter, *lep1, *lep2;
00069   
00070   EvtAmp amp;
00071 
00072   EvtId listdaug[3];
00073   listdaug[0] = meson;
00074   listdaug[1] = lepton1;
00075   listdaug[2] = lepton2;
00076 
00077   amp.init(parent,3,listdaug);
00078 
00079   root_part->makeDaughters(3,listdaug);
00080   daughter=root_part->getDaug(0);
00081   lep1=root_part->getDaug(1);
00082   lep2=root_part->getDaug(2);
00083 
00084   //cludge to avoid generating random numbers!
00085   daughter->noLifeTime();
00086   lep1->noLifeTime();
00087   lep2->noLifeTime();
00088 
00089 
00090   //Initial particle is unpolarized, well it is a scalar so it is 
00091   //trivial
00092   EvtSpinDensity rho;
00093   rho.SetDiag(root_part->getSpinStates());
00094   
00095   double mass[3];
00096   
00097   double m = root_part->mass();
00098   
00099   EvtVector4R p4meson, p4lepton1, p4lepton2, p4w;
00100   double q2max;
00101 
00102   double q2, elepton, plepton;
00103   int i,j;
00104   double erho,prho,costl;
00105 
00106   double maxfoundprob = 0.0;
00107   double prob = -10.0;
00108   int massiter;
00109 
00110   double maxpole=0;
00111 
00112   for (massiter=0;massiter<3;massiter++){
00113 
00114     mass[0] = EvtPDL::getMeanMass(meson);
00115     mass[1] = EvtPDL::getMeanMass(lepton1);
00116     mass[2] = EvtPDL::getMeanMass(lepton2);
00117     if ( massiter==1 ) {
00118       mass[0] = EvtPDL::getMinMass(meson);
00119     }
00120     if ( massiter==2 ) {
00121       mass[0] = EvtPDL::getMaxMass(meson);
00122       if ( (mass[0]+mass[1]+mass[2])>m) mass[0]=m-mass[1]-mass[2]-0.00001; 
00123     }
00124 
00125     q2max = (m-mass[0])*(m-mass[0]);
00126     
00127     //loop over q2
00128     //cout << "m " << m << "mass[0] " << mass[0] << " q2max "<< q2max << endl;
00129     for (i=0;i<25;i++) {
00130       //want to avoid picking up the tail of the photon propagator
00131       q2 = ((i+1.5)*q2max)/26.0;
00132 
00133       if (i==0) q2=4*(mass[1]*mass[1]);
00134 
00135       erho = ( m*m + mass[0]*mass[0] - q2 )/(2.0*m);
00136       
00137       prho = sqrt(erho*erho-mass[0]*mass[0]);
00138       
00139       p4meson.set(erho,0.0,0.0,-1.0*prho);
00140       p4w.set(m-erho,0.0,0.0,prho);
00141       
00142       //This is in the W rest frame
00143       elepton = (q2+mass[1]*mass[1])/(2.0*sqrt(q2));
00144       plepton = sqrt(elepton*elepton-mass[1]*mass[1]);
00145       
00146       double probctl[3];
00147 
00148       for (j=0;j<3;j++) {
00149         
00150         costl = 0.99*(j - 1.0);
00151         
00152         //These are in the W rest frame. Need to boost out into
00153         //the B frame.
00154         p4lepton1.set(elepton,0.0,
00155                   plepton*sqrt(1.0-costl*costl),plepton*costl);
00156         p4lepton2.set(elepton,0.0,
00157                  -1.0*plepton*sqrt(1.0-costl*costl),-1.0*plepton*costl);
00158 
00159         EvtVector4R boost((m-erho),0.0,0.0,1.0*prho);
00160         p4lepton1=boostTo(p4lepton1,boost);
00161         p4lepton2=boostTo(p4lepton2,boost);
00162 
00163         //Now initialize the daughters...
00164 
00165         daughter->init(meson,p4meson);
00166         lep1->init(lepton1,p4lepton1);
00167         lep2->init(lepton2,p4lepton2);
00168 
00169         CalcAmp(root_part,amp,FormFactors);
00170 
00171         //Now find the probability at this q2 and cos theta lepton point
00172         //and compare to maxfoundprob.
00173 
00174         //Do a little magic to get the probability!!
00175 
00176         //cout <<"amp:"<<amp.getSpinDensity()<<endl;
00177 
00178         prob = rho.NormalizedProb(amp.getSpinDensity());
00179 
00180         //cout << "prob:"<<q2<<" "<<costl<<" "<<prob<<endl;
00181 
00182         probctl[j]=prob;
00183       }
00184 
00185       //probclt contains prob at ctl=-1,0,1.
00186       //prob=a+b*ctl+c*ctl^2
00187 
00188       double a=probctl[1];
00189       double b=0.5*(probctl[2]-probctl[0]);
00190       double c=0.5*(probctl[2]+probctl[0])-probctl[1];
00191 
00192       prob=probctl[0];
00193       if (probctl[1]>prob) prob=probctl[1];
00194       if (probctl[2]>prob) prob=probctl[2];
00195 
00196       if (fabs(c)>1e-20){
00197         double ctlx=-0.5*b/c;
00198         if (fabs(ctlx)<1.0){
00199           double probtmp=a+b*ctlx+c*ctlx*ctlx;
00200           if (probtmp>prob) prob=probtmp;
00201         } 
00202 
00203       }
00204 
00205       //report(DEBUG,"EvtGen") << "prob,probctl:"<<prob<<" "
00206       //                            << probctl[0]<<" "
00207       //                            << probctl[1]<<" "
00208       //                            << probctl[2]<<endl;
00209 
00210       if (i==0) {
00211         maxpole=prob;
00212         continue;
00213       }
00214 
00215       if ( prob > maxfoundprob ) {
00216         maxfoundprob = prob; 
00217       }
00218 
00219       //cout << "q2,maxfoundprob:"<<q2<<" "<<maxfoundprob<<endl;
00220 
00221     }
00222     if ( EvtPDL::getWidth(meson) <= 0.0 ) {
00223       //if the particle is narrow dont bother with changing the mass.
00224       massiter = 4;
00225     }
00226 
00227   }
00228 
00229   root_part->deleteTree();  
00230 
00231   poleSize=0.04*(maxpole/maxfoundprob)*4*(mass[1]*mass[1]);
00232 
00233   //poleSize=0.002;
00234 
00235   //cout <<"maxfoundprob,maxpole,poleSize:"<<maxfoundprob<<" "
00236   //     <<maxpole<<" "<<poleSize<<endl;
00237 
00238   maxfoundprob *=1.15;
00239 
00240   return maxfoundprob;
00241   
00242 }

double EvtbTosllAmp::dGdsdupProb ( double  mb,
double  ms,
double  ml,
double  s,
double  u 
)

Definition at line 608 of file EvtbTosllAmp.cc.

References abs, ddilog_(), GetC10Eff(), GetC7Eff(), GetC9Eff(), and EvtConst::pi.

00610 {
00611   // Compute the decay probability density function given a value of s and u
00612   // according to Ali's paper
00613 
00614   double prob;
00615   double f1sp, f2sp, f3sp;
00616 
00617   double sh = s / (mb*mb);
00618 
00619   EvtComplex c9eff = EvtbTosllAmp::GetC9Eff(sh*mb);
00620   EvtComplex c7eff = EvtbTosllAmp::GetC7Eff(sh*mb);
00621   EvtComplex c10eff = EvtbTosllAmp::GetC10Eff(sh*mb);
00622 
00623   double alphas = 0.119/
00624      (1 + 0.119*log(pow(4.8,2)/pow(91.1867,2))*23.0/12.0/EvtConst::pi);
00625   double omega9 = - 2.0/9.0*EvtConst::pi*EvtConst::pi - 4.0/3.0*ddilog_(sh)
00626                  - 2.0/3.0*log(sh)*log(1.0-sh)
00627                  - (5.0+4.0*sh)/(3.0*(1.0+2.0*sh)) * log(1.0-sh)
00628                  - 2.0*sh*(1.0+sh)*(1.0-2.0*sh)
00629                  /(3.0*pow(1.0-sh,2)*(1.0+2.0*sh)) * log(sh)
00630                  + (5.0+9.0*sh-6.0*sh*sh)/(6.0*(1.0-sh)*(1.0+2.0*sh));
00631   double eta9 = 1.0 + alphas*omega9/EvtConst::pi;
00632   double omega7 = -8.0/3.0*log(4.8/mb)
00633                   -4.0/3.0*ddilog_(sh) 
00634                   -2.0/9.0*EvtConst::pi*EvtConst::pi
00635                   -2.0/3.0*log(sh)*log(1.0-sh)
00636                   -log(1-sh)*(8.0+sh)/(2.0+sh)/3.0 
00637     -2.0/3.0*sh*(2.0 - 2.0*sh - sh*sh)*log(sh)/pow((1.0 - sh),2)/(2.0 + sh)
00638     -(16.0 - 11.0*sh - 17.0*sh*sh)/18.0/(2.0 + sh)/(1.0 - sh);
00639   double eta7 = 1.0 + alphas*omega7/EvtConst::pi;
00640 
00641   double omega79 = -4.0/3.0*log(4.8/mb)
00642                    -4.0/3.0*ddilog_(sh) 
00643                    -2.0/9.0*EvtConst::pi*EvtConst::pi
00644                    -2.0/3.0*log(sh)*log(1.0-sh)
00645                    -1.0/9.0*(2.0+7.0*sh)*log(1.0 - sh)/sh
00646                    -2.0/9.0*sh*(3.0 - 2.0*sh)*log(sh)/pow((1.0 - sh),2) 
00647                    +1.0/18.0*(5.0 - 9.0*sh)/(1.0 - sh);
00648   double eta79 = 1.0 + alphas*omega79/EvtConst::pi;
00649 
00650   double c7c9 = abs(c7eff)*real(c9eff);
00651   c7c9 *= pow(eta79,2); 
00652   double c7c7 = pow(abs(c7eff),2);
00653   c7c7 *= pow(eta7,2); 
00654 
00655   double c9c9plusc10c10 = pow(abs(c9eff),2) + pow(abs(c10eff),2);
00656   c9c9plusc10c10 *= pow(eta9,2);
00657   double c9c9minusc10c10 = pow(abs(c9eff),2) - pow(abs(c10eff),2);
00658   c9c9minusc10c10 *= pow(eta9,2);
00659   double c7c10 = abs(c7eff)*real(c10eff);
00660   c7c10 *= eta7; c7c10 *= eta9;
00661   double c9c10 = real(c9eff)*real(c10eff);
00662   c9c10 *= pow(eta9,2); 
00663 
00664   f1sp = ( pow(mb*mb-ms*ms,2) - s*s) * c9c9plusc10c10 
00665          + 4.0*( pow(mb,4) - ms*ms*mb*mb - pow(ms,4)*(1.0 - ms*ms/(mb*mb))
00666          - 8.0*s*ms*ms - s*s*(1.0 + ms*ms/(mb*mb) ))*mb*mb*c7c7/s
00667     // kludged mass term
00668          *(1.0 + 2.0*ml*ml/s)
00669          - 8.0*(s*(mb*mb + ms*ms) - pow(mb*mb-ms*ms,2)) * c7c9
00670     // kludged mass term
00671          *(1.0 + 2.0*ml*ml/s);
00672 
00673   f2sp = 4.0*s*c9c10 + 8.0*(mb*mb + ms*ms)*c7c10;
00674   f3sp = - (c9c9plusc10c10)
00675          + 4.0*(1.0 + pow(ms/mb,4)) * mb*mb*c7c7/s
00676     // kludged mass term
00677          *(1.0 + 2.0*ml*ml/s);
00678 
00679   prob = (f1sp + f2sp*u + f3sp*u*u)/ pow(mb,3);
00680 
00681   return prob;
00682 }

double EvtbTosllAmp::dGdsProb ( double  mb,
double  ms,
double  ml,
double  s 
)

Definition at line 534 of file EvtbTosllAmp.cc.

References abs, ddilog_(), f1, f2, GetC10Eff(), GetC7Eff(), GetC9Eff(), lambda, and EvtConst::pi.

00536 {
00537   // Compute the decay probability density function given a value of s
00538   // according to Ali's paper
00539 
00540 
00541   double delta, lambda, prob;
00542   double f1, f2, f3, f4;
00543   double msh, mlh, sh;
00544 
00545   mlh = ml / mb;
00546   msh = ms / mb;
00547   sh  = s  / (mb*mb);
00548 
00549   EvtComplex c9eff = EvtbTosllAmp::GetC9Eff(sh*mb);
00550   EvtComplex c7eff = EvtbTosllAmp::GetC7Eff(sh*mb);
00551   EvtComplex c10eff = EvtbTosllAmp::GetC10Eff(sh*mb);
00552 
00553   double alphas = 0.119/
00554      (1 + 0.119*log(pow(4.8,2)/pow(91.1867,2))*23.0/12.0/EvtConst::pi);
00555   double omega9 = -2.0/9.0*EvtConst::pi*EvtConst::pi - 4.0/3.0*ddilog_(sh)
00556                  - 2.0/3.0*log(sh)*log(1.0-sh)
00557                  - (5.0+4.0*sh)/(3.0*(1.0+2.0*sh)) * log(1.0-sh)
00558                  - 2.0*sh*(1.0+sh)*(1.0-2.0*sh)
00559                  /(3.0*pow(1.0-sh,2)*(1.0+2.0*sh)) * log(sh)
00560                  + (5.0+9.0*sh-6.0*sh*sh)/(6.0*(1.0-sh)*(1.0+2.0*sh));
00561   double eta9 = 1.0 + alphas*omega9/EvtConst::pi;
00562   double omega7 = -8.0/3.0*log(4.8/mb)
00563                   -4.0/3.0*ddilog_(sh) 
00564                   -2.0/9.0*EvtConst::pi*EvtConst::pi
00565                   -2.0/3.0*log(sh)*log(1.0-sh)
00566                   -log(1-sh)*(8.0+sh)/(2.0+sh)/3.0 
00567     -2.0/3.0*sh*(2.0 - 2.0*sh - sh*sh)*log(sh)/pow((1.0 - sh),2)/(2.0 + sh)
00568     -(16.0 - 11.0*sh - 17.0*sh*sh)/18.0/(2.0 + sh)/(1.0 - sh);
00569   double eta7 = 1.0 + alphas*omega7/EvtConst::pi;
00570 
00571   double omega79 = -4.0/3.0*log(4.8/mb)
00572                    -4.0/3.0*ddilog_(sh) 
00573                    -2.0/9.0*EvtConst::pi*EvtConst::pi
00574                    -2.0/3.0*log(sh)*log(1.0-sh)
00575                    -1.0/9.0*(2.0+7.0*sh)*log(1.0 - sh)/sh
00576                    -2.0/9.0*sh*(3.0 - 2.0*sh)*log(sh)/pow((1.0 - sh),2) 
00577                    +1.0/18.0*(5.0 - 9.0*sh)/(1.0 - sh);
00578   double eta79 = 1.0 + alphas*omega79/EvtConst::pi;
00579 
00580   double c7c9 = abs(c7eff)*real(c9eff);
00581   c7c9 *= pow(eta79,2); 
00582   double c7c7 = pow(abs(c7eff),2);
00583   c7c7 *= pow(eta7,2); 
00584 
00585   double c9c9plusc10c10 = pow(abs(c9eff),2) + pow(abs(c10eff),2);
00586   c9c9plusc10c10 *= pow(eta9,2);
00587   double c9c9minusc10c10 = pow(abs(c9eff),2) - pow(abs(c10eff),2);
00588   c9c9minusc10c10 *= pow(eta9,2);
00589  
00590   lambda = 1.0 + sh*sh + pow(msh,4) - 2.0*(sh + sh*msh*msh + msh*msh);
00591 
00592   f1 = pow(1.0-msh*msh,2) - sh*(1.0 + msh*msh);
00593   f2 = 2.0*(1.0 + msh*msh) * pow(1.0-msh*msh,2)
00594        - sh*(1.0 + 14.0*msh*msh + pow(msh,4)) - sh*sh*(1.0 + msh*msh);
00595   f3 = pow(1.0-msh*msh,2) + sh*(1.0 + msh*msh) - 2.0*sh*sh
00596        + lambda*2.0*mlh*mlh/sh;
00597   f4 = 1.0 - sh + msh*msh;
00598 
00599   delta = (  12.0*c7c9*f1 + 4.0*c7c7*f2/sh ) * (1.0 + 2.0*mlh*mlh/sh)
00600             + c9c9plusc10c10*f3 
00601             + 6.0*mlh*mlh*c9c9minusc10c10*f4;
00602 
00603   prob =  sqrt(lambda*(1.0 - 4.0*mlh*mlh/sh)) * delta;
00604 
00605   return prob;
00606 }

EvtComplex EvtbTosllAmp::GetC10Eff ( double  q2,
bool  nnlo = true 
)

Definition at line 521 of file EvtbTosllAmp.cc.

Referenced by EvtbTosllVectorAmp::CalcAmp(), EvtbTosllScalarAmp::CalcAmp(), dGdsdupProb(), and dGdsProb().

00522 {
00523 
00524   if (!nnlo) return -4.669;
00525   double A10;
00526   A10 = -4.592 + 0.379;
00527 
00528   EvtComplex c10eff;
00529   c10eff = A10;
00530 
00531   return c10eff;
00532 }

EvtComplex EvtbTosllAmp::GetC7Eff ( double  q2,
bool  nnlo = true 
)

Definition at line 245 of file EvtbTosllAmp.cc.

References EvtConst::pi.

Referenced by EvtbTosllVectorAmp::CalcAmp(), EvtbTosllScalarAmp::CalcAmp(), dGdsdupProb(), and dGdsProb().

00246 {
00247 
00248   if (!nnlo) return -0.313;
00249   double mbeff = 4.8;
00250   double shat = q2/mbeff/mbeff;
00251   double logshat;
00252   logshat = log(shat);
00253   
00254   double muscale;
00255   muscale = 2.5;
00256   double alphas;
00257   alphas = 0.267;
00258   double A7;
00259   A7 = -0.353 + 0.023;
00260   double A8;
00261   A8 = -0.164;
00262   double A9;
00263   A9 = 4.287 + (-0.218);
00264   double A10;
00265   A10 = -4.592 + 0.379;
00266   double C1;
00267   C1 = -0.697;
00268   double C2;
00269   C2 = 1.046;
00270   double T9;
00271   T9 = 0.114 + 0.280;
00272   double U9;
00273   U9 = 0.045 + 0.023;
00274   double W9;
00275   W9 = 0.044 + 0.016;
00276   
00277   double Lmu;
00278   Lmu = log(muscale/mbeff);
00279 
00280   EvtComplex uniti(0.0,1.0);
00281 
00282   EvtComplex c7eff;
00283   if (shat > 0.25)
00284   { 
00285    c7eff = A7;
00286    return c7eff;
00287   }
00288 
00289 
00290 
00291 
00292   // change energy scale to 5.0 for full NNLO calculation below shat = 0.25
00293   muscale = 5.0;
00294   alphas = 0.215;
00295   A7 = -0.312 + 0.008;
00296   A8 = -0.148;
00297   A9 = 4.174 + (-0.035);
00298   A10 = -4.592 + 0.379;
00299   C1 = -0.487;
00300   C2 = 1.024;
00301   T9 = 0.374 + 0.252;
00302   U9 = 0.033 + 0.015;
00303   W9 = 0.032 + 0.012;
00304   Lmu = log(muscale/mbeff);
00305 
00306   EvtComplex F71;
00307   EvtComplex f71;
00308   EvtComplex k7100(-0.68192,-0.074998);
00309   EvtComplex k7101(0.0,0.0);
00310   EvtComplex k7110(-0.23935,-0.12289);
00311   EvtComplex k7111(0.0027424,0.019676);
00312   EvtComplex k7120(-0.0018555,-0.175);
00313   EvtComplex k7121(0.022864,0.011456);
00314   EvtComplex k7130(0.28248,-0.12783);
00315   EvtComplex k7131(0.029027,-0.0082265);
00316   f71 = k7100 + k7101*logshat + shat*(k7110 + k7111*logshat) +
00317         shat*shat*(k7120 + k7121*logshat) + 
00318         shat*shat*shat*(k7130 + k7131*logshat); 
00319   F71 = (-208.0/243.0)*Lmu + f71;
00320 
00321   EvtComplex F72;
00322   EvtComplex f72;
00323   EvtComplex k7200(4.0915,0.44999);
00324   EvtComplex k7201(0.0,0.0);
00325   EvtComplex k7210(1.4361,0.73732);
00326   EvtComplex k7211(-0.016454,-0.11806);
00327   EvtComplex k7220(0.011133,1.05);
00328   EvtComplex k7221(-0.13718,-0.068733);
00329   EvtComplex k7230(-1.6949,0.76698);
00330   EvtComplex k7231(-0.17416,0.049359);
00331   f72 = k7200 + k7201*logshat + shat*(k7210 + k7211*logshat) +
00332         shat*shat*(k7220 + k7221*logshat) + 
00333         shat*shat*shat*(k7230 + k7231*logshat); 
00334   F72 = (416.0/81.0)*Lmu + f72;
00335   
00336   EvtComplex F78;
00337   F78 = (-32.0/9.0)*Lmu + 8.0*EvtConst::pi*EvtConst::pi/27.0 + (-44.0/9.0) 
00338         + (-8.0*EvtConst::pi/9.0)*uniti +
00339         (4.0/3.0*EvtConst::pi*EvtConst::pi - 40.0/3.0)*shat +
00340         (32.0*EvtConst::pi*EvtConst::pi/9.0 - 316.0/9.0)*shat*shat +
00341         (200.0*EvtConst::pi*EvtConst::pi/27.0 - 658.0/9.0)*shat*shat*shat +
00342     (-8.0*logshat/9.0)*(shat + shat*shat + shat*shat*shat);
00343         
00344   c7eff = A7 - alphas/(4.0*EvtConst::pi)*(C1*F71 + C2*F72 + A8*F78);
00345 
00346   return c7eff;
00347 }

EvtComplex EvtbTosllAmp::GetC9Eff ( double  q2,
bool  nnlo = true,
bool  btod = false 
)

Definition at line 350 of file EvtbTosllAmp.cc.

References rb::hc, and EvtConst::pi.

Referenced by EvtbTosllVectorAmp::CalcAmp(), EvtbTosllScalarAmp::CalcAmp(), dGdsdupProb(), and dGdsProb().

00351 {
00352 
00353   if (!nnlo) return 4.344;
00354   double mbeff = 4.8;
00355   double shat = q2/mbeff/mbeff;
00356   double logshat;
00357   logshat = log(shat);
00358   double mchat = 0.29;
00359 
00360   
00361   double muscale;
00362   muscale = 2.5;
00363   double alphas;
00364   alphas = 0.267;
00365   double A7;
00366   A7 = -0.353 + 0.023;
00367   double A8;
00368   A8 = -0.164;
00369   double A9;
00370   A9 = 4.287 + (-0.218);
00371   double A10;
00372   A10 = -4.592 + 0.379;
00373   double C1;
00374   C1 = -0.697;
00375   double C2;
00376   C2 = 1.046;
00377   double T9;
00378   T9 = 0.114 + 0.280;
00379   double U9;
00380   U9 = 0.045 + 0.023;
00381   double W9;
00382   W9 = 0.044 + 0.016;
00383   
00384   double Lmu;
00385   Lmu = log(muscale/mbeff);
00386 
00387 
00388   EvtComplex uniti(0.0,1.0);
00389 
00390   EvtComplex hc;
00391   double xarg;
00392   xarg = 4.0*mchat/shat;
00393   hc = -4.0/9.0*log(mchat*mchat) + 8.0/27.0 + 4.0*xarg/9.0;
00394 
00395 if (xarg < 1.0)
00396   {
00397     hc = hc - 2.0/9.0*(2.0 + xarg)*sqrt(fabs(1.0 - xarg))*
00398       (log(fabs((sqrt(1.0 - xarg)+1.0)/(sqrt(1.0 - xarg) - 1.0))) -
00399        uniti*EvtConst::pi);
00400   }
00401   else
00402   {
00403     hc = hc - 2.0/9.0*(2.0 + xarg)*sqrt(fabs(1.0 - xarg))*
00404       2.0*atan(1.0/sqrt(xarg - 1.0));
00405   }
00406                                                                                                                                                              
00407   EvtComplex h1;
00408   xarg = 4.0/shat;
00409   h1 = 8.0/27.0 + 4.0*xarg/9.0;
00410   if (xarg < 1.0)
00411   {
00412     h1 = h1 - 2.0/9.0*(2.0 + xarg)*sqrt(fabs(1.0 - xarg))*
00413       (log(fabs((sqrt(1.0 - xarg)+1.0)/(sqrt(1.0 - xarg) - 1.0))) -
00414        uniti*EvtConst::pi);
00415   }
00416   else
00417   {
00418     h1 = h1 - 2.0/9.0*(2.0 + xarg)*sqrt(fabs(1.0 - xarg))*
00419       2.0*atan(1.0/sqrt(xarg - 1.0));
00420   }
00421 
00422 
00423   EvtComplex h0;
00424   h0 = 8.0/27.0 - 4.0*log(2.0)/9.0 + 4.0*uniti*EvtConst::pi/9.0;
00425 
00426 
00427   // X=V_{ud}^* V_ub / V_{td}^* V_tb * (4/3 C_1 +C_2) * (h(\hat m_c^2, hat s)-
00428   // h(\hat m_u^2, hat s))
00429   EvtComplex Vudstar(1.0 - 0.2279*0.2279/2.0, 0.0);
00430   EvtComplex Vub((0.118+0.273)/2.0, -1.0*(0.305+0.393)/2.0);
00431   EvtComplex Vtdstar(1.0 - (0.118+0.273)/2.0,(0.305+0.393)/2.0);
00432   EvtComplex Vtb(1.0,0.0);
00433 
00434   EvtComplex Xd;
00435   Xd = (Vudstar * Vub / Vtdstar * Vtb) * (4.0/3.0*C1 + C2) * (hc - h0);
00436 
00437 
00438   EvtComplex c9eff=4.344;
00439   if (shat > 0.25)
00440   { 
00441    c9eff =  A9 + T9*hc + U9*h1 + W9*h0;
00442    if (btod)
00443    {
00444     c9eff += Xd; 
00445    }
00446 
00447    return c9eff;
00448   }
00449 
00450   // change energy scale to 5.0 for full NNLO calculation below shat = 0.25
00451   muscale = 5.0;
00452   alphas = 0.215;
00453   A9 = 4.174 + (-0.035);
00454   C1 = -0.487;
00455   C2 = 1.024;
00456   A8 = -0.148;
00457   T9 = 0.374 + 0.252;
00458   U9 = 0.033 + 0.015;
00459   W9 = 0.032 + 0.012;
00460   Lmu = log(muscale/mbeff);
00461 
00462   EvtComplex F91;
00463   EvtComplex f91;
00464   EvtComplex k9100(-11.973,0.16371);
00465   EvtComplex k9101(-0.081271,-0.059691);
00466   EvtComplex k9110(-28.432,-0.25044);
00467   EvtComplex k9111(-0.040243,0.016442);
00468   EvtComplex k9120(-57.114,-0.86486);
00469   EvtComplex k9121(-0.035191,0.027909);
00470   EvtComplex k9130(-128.8,-2.5243);
00471   EvtComplex k9131(-0.017587,0.050639);
00472   f91 = k9100 + k9101*logshat + shat*(k9110 + k9111*logshat) +
00473         shat*shat*(k9120 + k9121*logshat) + 
00474         shat*shat*shat*(k9130 + k9131*logshat); 
00475   F91 = (-1424.0/729.0 + 16.0*uniti*EvtConst::pi/243.0 
00476          + 64.0/27.0*log(mchat))*Lmu - 16.0*Lmu*logshat/243.0 +
00477         (16.0/1215.0 - 32.0/135.0/mchat/mchat)*Lmu*shat +
00478         (4.0/2835.0 - 8.0/315.0/mchat/mchat/mchat/mchat)*Lmu*shat*shat +
00479     (16.0/76545.0 - 32.0/8505.0/mchat/mchat/mchat/mchat/mchat/mchat)*
00480     Lmu*shat*shat*shat -256.0*Lmu*Lmu/243.0 + f91;
00481 
00482   EvtComplex F92;
00483   EvtComplex f92;
00484   EvtComplex k9200(6.6338,-0.98225);
00485   EvtComplex k9201(0.48763,0.35815);
00486   EvtComplex k9210(3.3585,1.5026);
00487   EvtComplex k9211(0.24146,-0.098649);
00488   EvtComplex k9220(-1.1906,5.1892);
00489   EvtComplex k9221(0.21115,-0.16745);
00490   EvtComplex k9230(-17.12,15.146);
00491   EvtComplex k9231(0.10552,-0.30383);
00492   f92 = k9200 + k9201*logshat + shat*(k9210 + k9211*logshat) +
00493         shat*shat*(k9220 + k9221*logshat) + 
00494         shat*shat*shat*(k9230 + k9231*logshat); 
00495   F92 = (256.0/243.0 - 32.0*uniti*EvtConst::pi/81.0 
00496          - 128.0/9.0*log(mchat))*Lmu + 32.0*Lmu*logshat/81.0 +
00497         (-32.0/405.0 + 64.0/45.0/mchat/mchat)*Lmu*shat +
00498         (-8.0/945.0 + 16.0/105.0/mchat/mchat/mchat/mchat)*Lmu*shat*shat +
00499     (-32.0/25515.0 + 64.0/2835.0/mchat/mchat/mchat/mchat/mchat/mchat)*
00500     Lmu*shat*shat*shat + 512.0*Lmu*Lmu/81.0 + f92;
00501   
00502   EvtComplex F98;
00503   F98 = 104.0/9.0 - 32.0*EvtConst::pi*EvtConst::pi/27.0 + 
00504         (1184.0/27.0 - 40.0*EvtConst::pi*EvtConst::pi/9.0)*shat +
00505         (14212.0/135.0 - 32.0*EvtConst::pi*EvtConst::pi/3.0)*shat*shat +
00506     (193444.0/945.0 - 560.0*EvtConst::pi*EvtConst::pi/27.0)*shat*shat*shat +
00507         16.0*logshat/9.0*(1.0 + shat + shat*shat + shat*shat*shat);
00508 
00509   Xd = (Vudstar * Vub / Vtdstar * Vtb) * (4.0/3.0*C1 + C2) * (hc - h0);
00510 
00511   c9eff = A9 + T9*hc + U9*h1 + W9*h0 -             
00512     alphas/(4.0*EvtConst::pi)*(C1*F91 + C2*F92 + A8*F98);
00513   if (btod)
00514   {
00515    c9eff += Xd; 
00516   }
00517 
00518   return c9eff;
00519 }


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