LCOV - code coverage report
Current view: top level - TEvtGen/EvtGen/EvtGenModels - EvtbTosllAmp.cpp (source / functions) Hit Total Coverage
Test: coverage.info Lines: 0 334 0.0 %
Date: 2016-06-14 17:26:59 Functions: 0 6 0.0 %

          Line data    Source code
       1             : //--------------------------------------------------------------------------
       2             : //
       3             : // Environment:
       4             : //      This software is part of the EvtGen package developed jointly
       5             : //      for the BaBar and CLEO collaborations.  If you use all or part
       6             : //      of it, please give an appropriate acknowledgement.
       7             : //
       8             : // Copyright Information: See EvtGen/COPYRIGHT
       9             : //      Copyright (C) 1998      Caltech, UCSB
      10             : //
      11             : // Module: EvtbTosllAmp.cc
      12             : //
      13             : // Description: Routine to implement semileptonic decays to pseudo-scalar
      14             : //              mesons.
      15             : //
      16             : // Modification history:
      17             : //
      18             : //    DJL       April 17,1998       Module created
      19             : //
      20             : //------------------------------------------------------------------------
      21             : // 
      22             : #include "EvtGenBase/EvtPatches.hh"
      23             : #include "EvtGenBase/EvtPatches.hh"
      24             : #include "EvtGenBase/EvtParticle.hh"
      25             : #include "EvtGenBase/EvtGenKine.hh"
      26             : #include "EvtGenBase/EvtPDL.hh"
      27             : #include "EvtGenBase/EvtReport.hh"
      28             : #include "EvtGenBase/EvtVector4C.hh"
      29             : #include "EvtGenBase/EvtTensor4C.hh"
      30             : #include "EvtGenBase/EvtDiracSpinor.hh"
      31             : #include "EvtGenModels/EvtbTosllAmp.hh"
      32             : #include "EvtGenBase/EvtId.hh"
      33             : #include "EvtGenBase/EvtAmp.hh"
      34             : #include "EvtGenBase/EvtScalarParticle.hh"
      35             : #include "EvtGenBase/EvtVectorParticle.hh"
      36             : #include "EvtGenBase/EvtDiLog.hh"
      37             : 
      38             : double EvtbTosllAmp::CalcMaxProb( EvtId parent, EvtId meson, 
      39             :                                   EvtId lepton1, EvtId lepton2,
      40             :                                   EvtbTosllFF *FormFactors,
      41             :                                   double& poleSize) {
      42             : 
      43             :   //This routine takes the arguements parent, meson, and lepton
      44             :   //number, and a form factor model, and returns a maximum
      45             :   //probability for this semileptonic form factor model.  A
      46             :   //brute force method is used.  The 2D cos theta lepton and
      47             :   //q2 phase space is probed.
      48             : 
      49             :   //Start by declaring a particle at rest.
      50             : 
      51             :   //It only makes sense to have a scalar parent.  For now. 
      52             :   //This should be generalized later.
      53             : 
      54             :   EvtScalarParticle *scalar_part;
      55             :   EvtParticle *root_part;
      56             : 
      57           0 :   scalar_part=new EvtScalarParticle;
      58             : 
      59             :   //cludge to avoid generating random numbers!
      60           0 :   scalar_part->noLifeTime();
      61             : 
      62           0 :   EvtVector4R p_init;
      63             :   
      64           0 :   p_init.set(EvtPDL::getMass(parent),0.0,0.0,0.0);
      65           0 :   scalar_part->init(parent,p_init);
      66             :   root_part=(EvtParticle *)scalar_part;
      67           0 :   root_part->setDiagonalSpinDensity();      
      68             : 
      69             :   EvtParticle *daughter, *lep1, *lep2;
      70             :   
      71           0 :   EvtAmp amp;
      72             : 
      73           0 :   EvtId listdaug[3];
      74           0 :   listdaug[0] = meson;
      75           0 :   listdaug[1] = lepton1;
      76           0 :   listdaug[2] = lepton2;
      77             : 
      78           0 :   amp.init(parent,3,listdaug);
      79             : 
      80           0 :   root_part->makeDaughters(3,listdaug);
      81           0 :   daughter=root_part->getDaug(0);
      82           0 :   lep1=root_part->getDaug(1);
      83           0 :   lep2=root_part->getDaug(2);
      84             : 
      85             :   //cludge to avoid generating random numbers!
      86           0 :   daughter->noLifeTime();
      87           0 :   lep1->noLifeTime();
      88           0 :   lep2->noLifeTime();
      89             : 
      90             : 
      91             :   //Initial particle is unpolarized, well it is a scalar so it is 
      92             :   //trivial
      93           0 :   EvtSpinDensity rho;
      94           0 :   rho.setDiag(root_part->getSpinStates());
      95             :   
      96             :   double mass[3];
      97             :   
      98           0 :   double m = root_part->mass();
      99             :   
     100           0 :   EvtVector4R p4meson, p4lepton1, p4lepton2, p4w;
     101             :   double q2max;
     102             : 
     103             :   double q2, elepton, plepton;
     104             :   int i,j;
     105             :   double erho,prho,costl;
     106             : 
     107             :   double maxfoundprob = 0.0;
     108             :   double prob = -10.0;
     109             :   int massiter;
     110             : 
     111             :   double maxpole=0;
     112             : 
     113           0 :   for (massiter=0;massiter<3;massiter++){
     114             : 
     115           0 :     mass[0] = EvtPDL::getMeanMass(meson);
     116           0 :     mass[1] = EvtPDL::getMeanMass(lepton1);
     117           0 :     mass[2] = EvtPDL::getMeanMass(lepton2);
     118           0 :     if ( massiter==1 ) {
     119           0 :       mass[0] = EvtPDL::getMinMass(meson);
     120           0 :     }
     121           0 :     if ( massiter==2 ) {
     122           0 :       mass[0] = EvtPDL::getMaxMass(meson);
     123           0 :       if ( (mass[0]+mass[1]+mass[2])>m) mass[0]=m-mass[1]-mass[2]-0.00001; 
     124             :     }
     125             : 
     126           0 :     q2max = (m-mass[0])*(m-mass[0]);
     127             :     
     128             :     //loop over q2
     129             :     //cout << "m " << m << "mass[0] " << mass[0] << " q2max "<< q2max << endl;
     130           0 :     for (i=0;i<25;i++) {
     131             :       //want to avoid picking up the tail of the photon propagator
     132           0 :       q2 = ((i+1.5)*q2max)/26.0;
     133             : 
     134           0 :       if (i==0) q2=4*(mass[1]*mass[1]);
     135             : 
     136           0 :       erho = ( m*m + mass[0]*mass[0] - q2 )/(2.0*m);
     137             :       
     138           0 :       prho = sqrt(erho*erho-mass[0]*mass[0]);
     139             :       
     140           0 :       p4meson.set(erho,0.0,0.0,-1.0*prho);
     141           0 :       p4w.set(m-erho,0.0,0.0,prho);
     142             :       
     143             :       //This is in the W rest frame
     144           0 :       elepton = (q2+mass[1]*mass[1])/(2.0*sqrt(q2));
     145           0 :       plepton = sqrt(elepton*elepton-mass[1]*mass[1]);
     146             :       
     147           0 :       double probctl[3];
     148             : 
     149           0 :       for (j=0;j<3;j++) {
     150             :         
     151           0 :         costl = 0.99*(j - 1.0);
     152             :         
     153             :         //These are in the W rest frame. Need to boost out into
     154             :         //the B frame.
     155           0 :         p4lepton1.set(elepton,0.0,
     156           0 :                   plepton*sqrt(1.0-costl*costl),plepton*costl);
     157           0 :         p4lepton2.set(elepton,0.0,
     158           0 :                  -1.0*plepton*sqrt(1.0-costl*costl),-1.0*plepton*costl);
     159             : 
     160           0 :         EvtVector4R boost((m-erho),0.0,0.0,1.0*prho);
     161           0 :         p4lepton1=boostTo(p4lepton1,boost);
     162           0 :         p4lepton2=boostTo(p4lepton2,boost);
     163             : 
     164             :         //Now initialize the daughters...
     165             : 
     166           0 :         daughter->init(meson,p4meson);
     167           0 :         lep1->init(lepton1,p4lepton1);
     168           0 :         lep2->init(lepton2,p4lepton2);
     169             : 
     170           0 :         CalcAmp(root_part,amp,FormFactors);
     171             : 
     172             :         //Now find the probability at this q2 and cos theta lepton point
     173             :         //and compare to maxfoundprob.
     174             : 
     175             :         //Do a little magic to get the probability!!
     176             : 
     177             :         //cout <<"amp:"<<amp.getSpinDensity()<<endl;
     178             : 
     179           0 :         prob = rho.normalizedProb(amp.getSpinDensity());
     180             : 
     181             :         //cout << "prob:"<<q2<<" "<<costl<<" "<<prob<<endl;
     182             : 
     183           0 :         probctl[j]=prob;
     184           0 :       }
     185             : 
     186             :       //probclt contains prob at ctl=-1,0,1.
     187             :       //prob=a+b*ctl+c*ctl^2
     188             : 
     189           0 :       double a=probctl[1];
     190           0 :       double b=0.5*(probctl[2]-probctl[0]);
     191           0 :       double c=0.5*(probctl[2]+probctl[0])-probctl[1];
     192             : 
     193             :       prob=probctl[0];
     194           0 :       if (probctl[1]>prob) prob=probctl[1];
     195           0 :       if (probctl[2]>prob) prob=probctl[2];
     196             : 
     197           0 :       if (fabs(c)>1e-20){
     198           0 :         double ctlx=-0.5*b/c;
     199           0 :         if (fabs(ctlx)<1.0){
     200           0 :           double probtmp=a+b*ctlx+c*ctlx*ctlx;
     201           0 :           if (probtmp>prob) prob=probtmp;
     202           0 :         } 
     203             : 
     204           0 :       }
     205             : 
     206             :       //report(Severity::Debug,"EvtGen") << "prob,probctl:"<<prob<<" "
     207             :       //                            << probctl[0]<<" "
     208             :       //                            << probctl[1]<<" "
     209             :       //                            << probctl[2]<<endl;
     210             : 
     211           0 :       if (i==0) {
     212             :         maxpole=prob;
     213           0 :         continue;
     214             :       }
     215             : 
     216           0 :       if ( prob > maxfoundprob ) {
     217             :         maxfoundprob = prob; 
     218           0 :       }
     219             : 
     220             :       //cout << "q2,maxfoundprob:"<<q2<<" "<<maxfoundprob<<endl;
     221             : 
     222           0 :     }
     223           0 :     if ( EvtPDL::getWidth(meson) <= 0.0 ) {
     224             :       //if the particle is narrow dont bother with changing the mass.
     225             :       massiter = 4;
     226           0 :     }
     227             : 
     228             :   }
     229             : 
     230           0 :   root_part->deleteTree();  
     231             : 
     232           0 :   poleSize=0.04*(maxpole/maxfoundprob)*4*(mass[1]*mass[1]);
     233             : 
     234             :   //poleSize=0.002;
     235             : 
     236             :   //cout <<"maxfoundprob,maxpole,poleSize:"<<maxfoundprob<<" "
     237             :   //     <<maxpole<<" "<<poleSize<<endl;
     238             : 
     239           0 :   maxfoundprob *=1.15;
     240             : 
     241             :   return maxfoundprob;
     242             :   
     243           0 : }
     244             : 
     245             : 
     246             : EvtComplex EvtbTosllAmp::GetC7Eff(double q2, bool nnlo) 
     247             : {
     248             : 
     249           0 :   if (!nnlo) return -0.313;
     250             :   double mbeff = 4.8;
     251           0 :   double shat = q2/mbeff/mbeff;
     252             :   double logshat;
     253           0 :   logshat = log(shat);
     254             :   
     255             :   double muscale;
     256             :   muscale = 2.5;
     257             :   double alphas;
     258             :   alphas = 0.267;
     259             :   double A7;
     260             :   A7 = -0.353 + 0.023;
     261             :   double A8;
     262             :   A8 = -0.164;
     263             :   double C1;
     264             :   C1 = -0.697;
     265             :   double C2;
     266             :   C2 = 1.046;
     267             :   
     268             :   double Lmu;
     269           0 :   Lmu = log(muscale/mbeff);
     270             : 
     271           0 :   EvtComplex uniti(0.0,1.0);
     272             : 
     273           0 :   EvtComplex c7eff;
     274           0 :   if (shat > 0.25)
     275             :   { 
     276           0 :    c7eff = A7;
     277           0 :    return c7eff;
     278             :   }
     279             : 
     280             :   // change energy scale to 5.0 for full NNLO calculation below shat = 0.25
     281             :   muscale = 5.0;
     282             :   alphas = 0.215;
     283             :   A7 = -0.312 + 0.008;
     284             :   A8 = -0.148;
     285             :   C1 = -0.487;
     286             :   C2 = 1.024;
     287           0 :   Lmu = log(muscale/mbeff);
     288             : 
     289           0 :   EvtComplex F71;
     290           0 :   EvtComplex f71;
     291           0 :   EvtComplex k7100(-0.68192,-0.074998);
     292           0 :   EvtComplex k7101(0.0,0.0);
     293           0 :   EvtComplex k7110(-0.23935,-0.12289);
     294           0 :   EvtComplex k7111(0.0027424,0.019676);
     295           0 :   EvtComplex k7120(-0.0018555,-0.175);
     296           0 :   EvtComplex k7121(0.022864,0.011456);
     297           0 :   EvtComplex k7130(0.28248,-0.12783);
     298           0 :   EvtComplex k7131(0.029027,-0.0082265);
     299           0 :   f71 = k7100 + k7101*logshat + shat*(k7110 + k7111*logshat) +
     300           0 :         shat*shat*(k7120 + k7121*logshat) + 
     301           0 :         shat*shat*shat*(k7130 + k7131*logshat); 
     302           0 :   F71 = (-208.0/243.0)*Lmu + f71;
     303             : 
     304           0 :   EvtComplex F72;
     305           0 :   EvtComplex f72;
     306           0 :   EvtComplex k7200(4.0915,0.44999);
     307           0 :   EvtComplex k7201(0.0,0.0);
     308           0 :   EvtComplex k7210(1.4361,0.73732);
     309           0 :   EvtComplex k7211(-0.016454,-0.11806);
     310           0 :   EvtComplex k7220(0.011133,1.05);
     311           0 :   EvtComplex k7221(-0.13718,-0.068733);
     312           0 :   EvtComplex k7230(-1.6949,0.76698);
     313           0 :   EvtComplex k7231(-0.17416,0.049359);
     314           0 :   f72 = k7200 + k7201*logshat + shat*(k7210 + k7211*logshat) +
     315           0 :         shat*shat*(k7220 + k7221*logshat) + 
     316           0 :         shat*shat*shat*(k7230 + k7231*logshat); 
     317           0 :   F72 = (416.0/81.0)*Lmu + f72;
     318             :   
     319           0 :   EvtComplex F78;
     320           0 :   F78 = (-32.0/9.0)*Lmu + 8.0*EvtConst::pi*EvtConst::pi/27.0 + (-44.0/9.0) 
     321           0 :         + (-8.0*EvtConst::pi/9.0)*uniti +
     322           0 :         (4.0/3.0*EvtConst::pi*EvtConst::pi - 40.0/3.0)*shat +
     323           0 :         (32.0*EvtConst::pi*EvtConst::pi/9.0 - 316.0/9.0)*shat*shat +
     324           0 :         (200.0*EvtConst::pi*EvtConst::pi/27.0 - 658.0/9.0)*shat*shat*shat +
     325           0 :     (-8.0*logshat/9.0)*(shat + shat*shat + shat*shat*shat);
     326             :         
     327           0 :   c7eff = A7 - alphas/(4.0*EvtConst::pi)*(C1*F71 + C2*F72 + A8*F78);
     328             : 
     329           0 :   return c7eff;
     330           0 : }
     331             : 
     332             : 
     333             : EvtComplex EvtbTosllAmp::GetC9Eff(double q2, bool nnlo, bool btod) 
     334             : {
     335             : 
     336           0 :   if (!nnlo) return 4.344;
     337             :   double mbeff = 4.8;
     338           0 :   double shat = q2/mbeff/mbeff;
     339             :   double logshat;
     340           0 :   logshat = log(shat);
     341             :   double mchat = 0.29;
     342             : 
     343             :   
     344             :   double muscale;
     345             :   muscale = 2.5;
     346             :   double alphas;
     347             :   alphas = 0.267;
     348             :   double A8;
     349             :   A8 = -0.164;
     350             :   double A9;
     351             :   A9 = 4.287 + (-0.218);
     352             :   double C1;
     353             :   C1 = -0.697;
     354             :   double C2;
     355             :   C2 = 1.046;
     356             :   double T9;
     357             :   T9 = 0.114 + 0.280;
     358             :   double U9;
     359             :   U9 = 0.045 + 0.023;
     360             :   double W9;
     361             :   W9 = 0.044 + 0.016;
     362             :   
     363             :   double Lmu;
     364           0 :   Lmu = log(muscale/mbeff);
     365             : 
     366             : 
     367           0 :   EvtComplex uniti(0.0,1.0);
     368             : 
     369           0 :   EvtComplex hc;
     370             :   double xarg;
     371           0 :   xarg = 4.0*mchat/shat;
     372           0 :   hc = -4.0/9.0*log(mchat*mchat) + 8.0/27.0 + 4.0*xarg/9.0;
     373             : 
     374           0 : if (xarg < 1.0)
     375             :   {
     376           0 :     hc = hc - 2.0/9.0*(2.0 + xarg)*sqrt(fabs(1.0 - xarg))*
     377           0 :       (log(fabs((sqrt(1.0 - xarg)+1.0)/(sqrt(1.0 - xarg) - 1.0))) -
     378           0 :        uniti*EvtConst::pi);
     379           0 :   }
     380             :   else
     381             :   {
     382           0 :     hc = hc - 2.0/9.0*(2.0 + xarg)*sqrt(fabs(1.0 - xarg))*
     383           0 :       2.0*atan(1.0/sqrt(xarg - 1.0));
     384             :   }
     385             :                                                                                                                                                              
     386           0 :   EvtComplex h1;
     387           0 :   xarg = 4.0/shat;
     388           0 :   h1 = 8.0/27.0 + 4.0*xarg/9.0;
     389           0 :   if (xarg < 1.0)
     390             :   {
     391           0 :     h1 = h1 - 2.0/9.0*(2.0 + xarg)*sqrt(fabs(1.0 - xarg))*
     392           0 :       (log(fabs((sqrt(1.0 - xarg)+1.0)/(sqrt(1.0 - xarg) - 1.0))) -
     393           0 :        uniti*EvtConst::pi);
     394           0 :   }
     395             :   else
     396             :   {
     397           0 :     h1 = h1 - 2.0/9.0*(2.0 + xarg)*sqrt(fabs(1.0 - xarg))*
     398           0 :       2.0*atan(1.0/sqrt(xarg - 1.0));
     399             :   }
     400             : 
     401             : 
     402           0 :   EvtComplex h0;
     403           0 :   h0 = 8.0/27.0 - 4.0*log(2.0)/9.0 + 4.0*uniti*EvtConst::pi/9.0;
     404             : 
     405             : 
     406             :   // X=V_{ud}^* V_ub / V_{td}^* V_tb * (4/3 C_1 +C_2) * (h(\hat m_c^2, hat s)-
     407             :   // h(\hat m_u^2, hat s))
     408           0 :   EvtComplex Vudstar(1.0 - 0.2279*0.2279/2.0, 0.0);
     409           0 :   EvtComplex Vub((0.118+0.273)/2.0, -1.0*(0.305+0.393)/2.0);
     410           0 :   EvtComplex Vtdstar(1.0 - (0.118+0.273)/2.0,(0.305+0.393)/2.0);
     411           0 :   EvtComplex Vtb(1.0,0.0);
     412             : 
     413           0 :   EvtComplex Xd;
     414           0 :   Xd = (Vudstar * Vub / Vtdstar * Vtb) * (4.0/3.0*C1 + C2) * (hc - h0);
     415             : 
     416             : 
     417           0 :   EvtComplex c9eff=4.344;
     418           0 :   if (shat > 0.25)
     419             :   { 
     420           0 :    c9eff =  A9 + T9*hc + U9*h1 + W9*h0;
     421           0 :    if (btod)
     422             :    {
     423           0 :     c9eff += Xd; 
     424           0 :    }
     425             : 
     426           0 :    return c9eff;
     427             :   }
     428             : 
     429             :   // change energy scale to 5.0 for full NNLO calculation below shat = 0.25
     430             :   muscale = 5.0;
     431             :   alphas = 0.215;
     432             :   A9 = 4.174 + (-0.035);
     433             :   C1 = -0.487;
     434             :   C2 = 1.024;
     435             :   A8 = -0.148;
     436             :   T9 = 0.374 + 0.252;
     437             :   U9 = 0.033 + 0.015;
     438             :   W9 = 0.032 + 0.012;
     439           0 :   Lmu = log(muscale/mbeff);
     440             : 
     441           0 :   EvtComplex F91;
     442           0 :   EvtComplex f91;
     443           0 :   EvtComplex k9100(-11.973,0.16371);
     444           0 :   EvtComplex k9101(-0.081271,-0.059691);
     445           0 :   EvtComplex k9110(-28.432,-0.25044);
     446           0 :   EvtComplex k9111(-0.040243,0.016442);
     447           0 :   EvtComplex k9120(-57.114,-0.86486);
     448           0 :   EvtComplex k9121(-0.035191,0.027909);
     449           0 :   EvtComplex k9130(-128.8,-2.5243);
     450           0 :   EvtComplex k9131(-0.017587,0.050639);
     451           0 :   f91 = k9100 + k9101*logshat + shat*(k9110 + k9111*logshat) +
     452           0 :         shat*shat*(k9120 + k9121*logshat) + 
     453           0 :         shat*shat*shat*(k9130 + k9131*logshat); 
     454           0 :   F91 = (-1424.0/729.0 + 16.0*uniti*EvtConst::pi/243.0 
     455           0 :          + 64.0/27.0*log(mchat))*Lmu - 16.0*Lmu*logshat/243.0 +
     456           0 :         (16.0/1215.0 - 32.0/135.0/mchat/mchat)*Lmu*shat +
     457           0 :         (4.0/2835.0 - 8.0/315.0/mchat/mchat/mchat/mchat)*Lmu*shat*shat +
     458           0 :     (16.0/76545.0 - 32.0/8505.0/mchat/mchat/mchat/mchat/mchat/mchat)*
     459           0 :     Lmu*shat*shat*shat -256.0*Lmu*Lmu/243.0 + f91;
     460             : 
     461           0 :   EvtComplex F92;
     462           0 :   EvtComplex f92;
     463           0 :   EvtComplex k9200(6.6338,-0.98225);
     464           0 :   EvtComplex k9201(0.48763,0.35815);
     465           0 :   EvtComplex k9210(3.3585,1.5026);
     466           0 :   EvtComplex k9211(0.24146,-0.098649);
     467           0 :   EvtComplex k9220(-1.1906,5.1892);
     468           0 :   EvtComplex k9221(0.21115,-0.16745);
     469           0 :   EvtComplex k9230(-17.12,15.146);
     470           0 :   EvtComplex k9231(0.10552,-0.30383);
     471           0 :   f92 = k9200 + k9201*logshat + shat*(k9210 + k9211*logshat) +
     472           0 :         shat*shat*(k9220 + k9221*logshat) + 
     473           0 :         shat*shat*shat*(k9230 + k9231*logshat); 
     474           0 :   F92 = (256.0/243.0 - 32.0*uniti*EvtConst::pi/81.0 
     475           0 :          - 128.0/9.0*log(mchat))*Lmu + 32.0*Lmu*logshat/81.0 +
     476           0 :         (-32.0/405.0 + 64.0/45.0/mchat/mchat)*Lmu*shat +
     477           0 :         (-8.0/945.0 + 16.0/105.0/mchat/mchat/mchat/mchat)*Lmu*shat*shat +
     478           0 :     (-32.0/25515.0 + 64.0/2835.0/mchat/mchat/mchat/mchat/mchat/mchat)*
     479           0 :     Lmu*shat*shat*shat + 512.0*Lmu*Lmu/81.0 + f92;
     480             :   
     481           0 :   EvtComplex F98;
     482           0 :   F98 = 104.0/9.0 - 32.0*EvtConst::pi*EvtConst::pi/27.0 + 
     483           0 :         (1184.0/27.0 - 40.0*EvtConst::pi*EvtConst::pi/9.0)*shat +
     484           0 :         (14212.0/135.0 - 32.0*EvtConst::pi*EvtConst::pi/3.0)*shat*shat +
     485           0 :     (193444.0/945.0 - 560.0*EvtConst::pi*EvtConst::pi/27.0)*shat*shat*shat +
     486           0 :         16.0*logshat/9.0*(1.0 + shat + shat*shat + shat*shat*shat);
     487             : 
     488           0 :   Xd = (Vudstar * Vub / Vtdstar * Vtb) * (4.0/3.0*C1 + C2) * (hc - h0);
     489             : 
     490           0 :   c9eff = A9 + T9*hc + U9*h1 + W9*h0 -             
     491           0 :     alphas/(4.0*EvtConst::pi)*(C1*F91 + C2*F92 + A8*F98);
     492           0 :   if (btod)
     493             :   {
     494           0 :    c9eff += Xd; 
     495           0 :   }
     496             : 
     497           0 :   return c9eff;
     498           0 : }
     499             : 
     500             : EvtComplex EvtbTosllAmp::GetC10Eff(double /*q2*/, bool nnlo) 
     501             : {
     502             : 
     503           0 :   if (!nnlo) return -4.669;
     504             :   double A10;
     505             :   A10 = -4.592 + 0.379;
     506             : 
     507           0 :   EvtComplex c10eff;
     508           0 :   c10eff = A10;
     509             : 
     510           0 :   return c10eff;
     511           0 : }
     512             : 
     513             : double EvtbTosllAmp::dGdsProb(double mb, double ms, double ml,
     514             :                                 double s)
     515             : {
     516             :   // Compute the decay probability density function given a value of s
     517             :   // according to Ali's paper
     518             : 
     519             : 
     520             :   double delta, lambda, prob;
     521             :   double f1, f2, f3, f4;
     522             :   double msh, mlh, sh;
     523             : 
     524           0 :   mlh = ml / mb;
     525           0 :   msh = ms / mb;
     526           0 :   sh  = s  / (mb*mb);
     527             : 
     528           0 :   EvtComplex c9eff = EvtbTosllAmp::GetC9Eff(sh*mb);
     529           0 :   EvtComplex c7eff = EvtbTosllAmp::GetC7Eff(sh*mb);
     530           0 :   EvtComplex c10eff = EvtbTosllAmp::GetC10Eff(sh*mb);
     531             : 
     532           0 :   double alphas = 0.119/
     533           0 :      (1 + 0.119*log(pow(4.8,2)/pow(91.1867,2))*23.0/12.0/EvtConst::pi);
     534           0 :   double omega9 = -2.0/9.0*EvtConst::pi*EvtConst::pi - 4.0/3.0*EvtDiLog::DiLog(sh)
     535           0 :                  - 2.0/3.0*log(sh)*log(1.0-sh)
     536           0 :                  - (5.0+4.0*sh)/(3.0*(1.0+2.0*sh)) * log(1.0-sh)
     537           0 :                  - 2.0*sh*(1.0+sh)*(1.0-2.0*sh)
     538           0 :                  /(3.0*pow(1.0-sh,2)*(1.0+2.0*sh)) * log(sh)
     539           0 :                  + (5.0+9.0*sh-6.0*sh*sh)/(6.0*(1.0-sh)*(1.0+2.0*sh));
     540           0 :   double eta9 = 1.0 + alphas*omega9/EvtConst::pi;
     541           0 :   double omega7 = -8.0/3.0*log(4.8/mb)
     542           0 :                   -4.0/3.0*EvtDiLog::DiLog(sh) 
     543           0 :                   -2.0/9.0*EvtConst::pi*EvtConst::pi
     544           0 :                   -2.0/3.0*log(sh)*log(1.0-sh)
     545           0 :                   -log(1-sh)*(8.0+sh)/(2.0+sh)/3.0 
     546           0 :     -2.0/3.0*sh*(2.0 - 2.0*sh - sh*sh)*log(sh)/pow((1.0 - sh),2)/(2.0 + sh)
     547           0 :     -(16.0 - 11.0*sh - 17.0*sh*sh)/18.0/(2.0 + sh)/(1.0 - sh);
     548           0 :   double eta7 = 1.0 + alphas*omega7/EvtConst::pi;
     549             : 
     550           0 :   double omega79 = -4.0/3.0*log(4.8/mb)
     551           0 :                    -4.0/3.0*EvtDiLog::DiLog(sh) 
     552           0 :                    -2.0/9.0*EvtConst::pi*EvtConst::pi
     553           0 :                    -2.0/3.0*log(sh)*log(1.0-sh)
     554           0 :                    -1.0/9.0*(2.0+7.0*sh)*log(1.0 - sh)/sh
     555           0 :                    -2.0/9.0*sh*(3.0 - 2.0*sh)*log(sh)/pow((1.0 - sh),2) 
     556           0 :                    +1.0/18.0*(5.0 - 9.0*sh)/(1.0 - sh);
     557           0 :   double eta79 = 1.0 + alphas*omega79/EvtConst::pi;
     558             : 
     559           0 :   double c7c9 = abs(c7eff)*real(c9eff);
     560           0 :   c7c9 *= pow(eta79,2); 
     561           0 :   double c7c7 = pow(abs(c7eff),2);
     562           0 :   c7c7 *= pow(eta7,2); 
     563             : 
     564           0 :   double c9c9plusc10c10 = pow(abs(c9eff),2) + pow(abs(c10eff),2);
     565           0 :   c9c9plusc10c10 *= pow(eta9,2);
     566           0 :   double c9c9minusc10c10 = pow(abs(c9eff),2) - pow(abs(c10eff),2);
     567           0 :   c9c9minusc10c10 *= pow(eta9,2);
     568             :  
     569           0 :   lambda = 1.0 + sh*sh + pow(msh,4) - 2.0*(sh + sh*msh*msh + msh*msh);
     570             : 
     571           0 :   f1 = pow(1.0-msh*msh,2) - sh*(1.0 + msh*msh);
     572           0 :   f2 = 2.0*(1.0 + msh*msh) * pow(1.0-msh*msh,2)
     573           0 :        - sh*(1.0 + 14.0*msh*msh + pow(msh,4)) - sh*sh*(1.0 + msh*msh);
     574           0 :   f3 = pow(1.0-msh*msh,2) + sh*(1.0 + msh*msh) - 2.0*sh*sh
     575           0 :        + lambda*2.0*mlh*mlh/sh;
     576           0 :   f4 = 1.0 - sh + msh*msh;
     577             : 
     578           0 :   delta = (  12.0*c7c9*f1 + 4.0*c7c7*f2/sh ) * (1.0 + 2.0*mlh*mlh/sh)
     579           0 :             + c9c9plusc10c10*f3 
     580           0 :             + 6.0*mlh*mlh*c9c9minusc10c10*f4;
     581             : 
     582           0 :   prob =  sqrt(lambda*(1.0 - 4.0*mlh*mlh/sh)) * delta;
     583             : 
     584           0 :   return prob;
     585           0 : }
     586             : 
     587             : double EvtbTosllAmp::dGdsdupProb(double mb, double ms, double ml,
     588             :                                    double s,  double u)
     589             : {
     590             :   // Compute the decay probability density function given a value of s and u
     591             :   // according to Ali's paper
     592             : 
     593             :   double prob;
     594             :   double f1sp, f2sp, f3sp;
     595             : 
     596           0 :   double sh = s / (mb*mb);
     597             : 
     598           0 :   EvtComplex c9eff = EvtbTosllAmp::GetC9Eff(sh*mb);
     599           0 :   EvtComplex c7eff = EvtbTosllAmp::GetC7Eff(sh*mb);
     600           0 :   EvtComplex c10eff = EvtbTosllAmp::GetC10Eff(sh*mb);
     601             : 
     602           0 :   double alphas = 0.119/
     603           0 :      (1 + 0.119*log(pow(4.8,2)/pow(91.1867,2))*23.0/12.0/EvtConst::pi);
     604           0 :   double omega9 = - 2.0/9.0*EvtConst::pi*EvtConst::pi - 4.0/3.0*EvtDiLog::DiLog(sh)
     605           0 :                  - 2.0/3.0*log(sh)*log(1.0-sh)
     606           0 :                  - (5.0+4.0*sh)/(3.0*(1.0+2.0*sh)) * log(1.0-sh)
     607           0 :                  - 2.0*sh*(1.0+sh)*(1.0-2.0*sh)
     608           0 :                  /(3.0*pow(1.0-sh,2)*(1.0+2.0*sh)) * log(sh)
     609           0 :                  + (5.0+9.0*sh-6.0*sh*sh)/(6.0*(1.0-sh)*(1.0+2.0*sh));
     610           0 :   double eta9 = 1.0 + alphas*omega9/EvtConst::pi;
     611           0 :   double omega7 = -8.0/3.0*log(4.8/mb)
     612           0 :                   -4.0/3.0*EvtDiLog::DiLog(sh) 
     613           0 :                   -2.0/9.0*EvtConst::pi*EvtConst::pi
     614           0 :                   -2.0/3.0*log(sh)*log(1.0-sh)
     615           0 :                   -log(1-sh)*(8.0+sh)/(2.0+sh)/3.0 
     616           0 :     -2.0/3.0*sh*(2.0 - 2.0*sh - sh*sh)*log(sh)/pow((1.0 - sh),2)/(2.0 + sh)
     617           0 :     -(16.0 - 11.0*sh - 17.0*sh*sh)/18.0/(2.0 + sh)/(1.0 - sh);
     618           0 :   double eta7 = 1.0 + alphas*omega7/EvtConst::pi;
     619             : 
     620           0 :   double omega79 = -4.0/3.0*log(4.8/mb)
     621           0 :                    -4.0/3.0*EvtDiLog::DiLog(sh) 
     622           0 :                    -2.0/9.0*EvtConst::pi*EvtConst::pi
     623           0 :                    -2.0/3.0*log(sh)*log(1.0-sh)
     624           0 :                    -1.0/9.0*(2.0+7.0*sh)*log(1.0 - sh)/sh
     625           0 :                    -2.0/9.0*sh*(3.0 - 2.0*sh)*log(sh)/pow((1.0 - sh),2) 
     626           0 :                    +1.0/18.0*(5.0 - 9.0*sh)/(1.0 - sh);
     627           0 :   double eta79 = 1.0 + alphas*omega79/EvtConst::pi;
     628             : 
     629           0 :   double c7c9 = abs(c7eff)*real(c9eff);
     630           0 :   c7c9 *= pow(eta79,2); 
     631           0 :   double c7c7 = pow(abs(c7eff),2);
     632           0 :   c7c7 *= pow(eta7,2); 
     633             : 
     634           0 :   double c9c9plusc10c10 = pow(abs(c9eff),2) + pow(abs(c10eff),2);
     635           0 :   c9c9plusc10c10 *= pow(eta9,2);
     636           0 :   double c9c9minusc10c10 = pow(abs(c9eff),2) - pow(abs(c10eff),2);
     637             :   c9c9minusc10c10 *= pow(eta9,2);
     638           0 :   double c7c10 = abs(c7eff)*real(c10eff);
     639           0 :   c7c10 *= eta7; c7c10 *= eta9;
     640           0 :   double c9c10 = real(c9eff)*real(c10eff);
     641           0 :   c9c10 *= pow(eta9,2); 
     642             : 
     643           0 :   f1sp = ( pow(mb*mb-ms*ms,2) - s*s) * c9c9plusc10c10 
     644           0 :          + 4.0*( pow(mb,4) - ms*ms*mb*mb - pow(ms,4)*(1.0 - ms*ms/(mb*mb))
     645           0 :          - 8.0*s*ms*ms - s*s*(1.0 + ms*ms/(mb*mb) ))*mb*mb*c7c7/s
     646             :     // kludged mass term
     647           0 :          *(1.0 + 2.0*ml*ml/s)
     648           0 :          - 8.0*(s*(mb*mb + ms*ms) - pow(mb*mb-ms*ms,2)) * c7c9
     649             :     // kludged mass term
     650           0 :          *(1.0 + 2.0*ml*ml/s);
     651             : 
     652           0 :   f2sp = 4.0*s*c9c10 + 8.0*(mb*mb + ms*ms)*c7c10;
     653           0 :   f3sp = - (c9c9plusc10c10)
     654           0 :          + 4.0*(1.0 + pow(ms/mb,4)) * mb*mb*c7c7/s
     655             :     // kludged mass term
     656           0 :          *(1.0 + 2.0*ml*ml/s);
     657             : 
     658           0 :   prob = (f1sp + f2sp*u + f3sp*u*u)/ pow(mb,3);
     659             : 
     660           0 :   return prob;
     661           0 : }
     662             : 
     663             : 
     664             : 
     665             : 
     666             : 
     667             : 
     668             : 
     669             : 
     670             : 
     671             : 
     672             : 
     673             : 
     674             : 

Generated by: LCOV version 1.11