EvtbTosllScalarAmp Class Reference

#include <EvtbTosllScalarAmp.hh>

Inheritance diagram for EvtbTosllScalarAmp:

EvtbTosllAmp List of all members.

Public Member Functions

 EvtbTosllScalarAmp (double c7, double c9, double c10)
void CalcAmp (EvtParticle *parent, EvtAmp &amp, EvtbTosllFF *formFactors)
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)

Private Attributes

double _c7
double _c9
double _c10

Detailed Description

Definition at line 29 of file EvtbTosllScalarAmp.hh.


Constructor & Destructor Documentation

EvtbTosllScalarAmp::EvtbTosllScalarAmp ( double  c7,
double  c9,
double  c10 
) [inline]

Definition at line 33 of file EvtbTosllScalarAmp.hh.

00033 :_c7(c7),_c9(c9),_c10(c10){}


Member Function Documentation

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

Implements EvtbTosllAmp.

Definition at line 39 of file EvtbTosllScalarAmp.cc.

References EvtIdSet::contains(), calibUtil::ERROR, EvtLeptonACurrent(), EvtLeptonVCurrent(), EvtbTosllAmp::GetC10Eff(), EvtbTosllAmp::GetC7Eff(), EvtbTosllAmp::GetC9Eff(), EvtParticle::getDaug(), EvtPDL::getId(), EvtParticle::getId(), EvtParticle::getP4(), EvtbTosllFF::getScalarFF(), EvtParticle::mass(), q, report(), EvtVector4R::set(), EvtParticle::spParent(), deljobs::string, and EvtAmp::vertex().

00041                                                              {
00042 
00043   //Add the lepton and neutrino 4 momenta to find q2
00044 
00045   EvtVector4R q = parent->getDaug(1)->getP4() 
00046                     + parent->getDaug(2)->getP4();
00047   double q2 = (q.mass2());
00048 
00049   double fp,f0,ft;
00050   double mesonmass = parent->getDaug(0)->mass();
00051   double parentmass = parent->mass();
00052 
00053   formFactors->getScalarFF(parent->getId(),
00054                            parent->getDaug(0)->getId(),
00055                            q2,
00056                            mesonmass,
00057                            fp,f0,ft);
00058 
00059   EvtId daught = parent->getDaug(0)->getId();
00060   bool btod = false;
00061   bool nnlo = true;
00062   if (daught == EvtPDL::getId(std::string("pi+")) ||
00063           daught == EvtPDL::getId(std::string("pi-")) ||
00064           daught == EvtPDL::getId(std::string("pi0")) ||
00065           daught == EvtPDL::getId(std::string("eta")) ||
00066           daught == EvtPDL::getId(std::string("eta'"))
00067          )  btod = true;
00068 
00069 
00070   EvtVector4R p4b;
00071   p4b.set(parent->mass(),0.0,0.0,0.0);
00072  
00073   EvtVector4C l11,l12;
00074   EvtVector4C l21,l22;
00075 
00076   EvtVector4C a11,a12;
00077   EvtVector4C a21,a22;
00078 
00079   EvtId l_num = parent->getDaug(1)->getId();
00080 
00081   EvtVector4C T1,T2;
00082 
00083   EvtVector4R phat=p4b/parentmass;
00084   EvtVector4R qhat=q/parentmass;
00085 
00086   EvtComplex c7eff = EvtbTosllAmp::GetC7Eff(q2,nnlo);
00087   EvtComplex c9eff = EvtbTosllAmp::GetC9Eff(q2,nnlo,btod);
00088   EvtComplex c10eff = EvtbTosllAmp::GetC10Eff(q2,nnlo);
00089 
00090   //double mbhat=1;
00091   double mbhat=4.4/(parentmass);      
00092   //double mkhat = 0.15;
00093   double mkhat=mesonmass/(parentmass);
00094   double shat=q2/(parentmass*parentmass);
00095 
00096   double fm=(f0-fp)*(1-mkhat*mkhat)/shat;
00097 
00098   EvtComplex aprime;
00099   aprime = c9eff*fp+2.0*mbhat*c7eff*ft/(1+mkhat);
00100   EvtComplex bprime;
00101   bprime = c9eff*fm-2*mbhat*c7eff*ft*(1-mkhat)/shat;
00102 
00103   EvtComplex cprime;
00104   cprime = c10eff*fp;
00105   EvtComplex dprime; 
00106   dprime = c10eff*fm;
00107 
00108   static EvtIdSet leptons("e-","mu-","tau-");
00109   static EvtIdSet antileptons("e+","mu+","tau+");
00110 
00111   if (leptons.contains(l_num)){
00112 
00113     T1=aprime*phat+bprime*qhat;
00114     T2=cprime*phat+dprime*qhat;
00115 
00116     l11=EvtLeptonVCurrent(parent->getDaug(1)->spParent(0),
00117                           parent->getDaug(2)->spParent(0));
00118     l21=EvtLeptonVCurrent(parent->getDaug(1)->spParent(1),
00119                           parent->getDaug(2)->spParent(0));
00120     l12=EvtLeptonVCurrent(parent->getDaug(1)->spParent(0),
00121                           parent->getDaug(2)->spParent(1));
00122     l22=EvtLeptonVCurrent(parent->getDaug(1)->spParent(1),
00123                           parent->getDaug(2)->spParent(1));
00124     a11=EvtLeptonACurrent(parent->getDaug(1)->spParent(0),
00125                           parent->getDaug(2)->spParent(0));
00126     a21=EvtLeptonACurrent(parent->getDaug(1)->spParent(1),
00127                           parent->getDaug(2)->spParent(0));
00128     a12=EvtLeptonACurrent(parent->getDaug(1)->spParent(0),
00129                           parent->getDaug(2)->spParent(1));
00130     a22=EvtLeptonACurrent(parent->getDaug(1)->spParent(1),
00131                           parent->getDaug(2)->spParent(1));
00132   }
00133   else{
00134     if (antileptons.contains(l_num)){
00135 
00136     T1=aprime*phat+bprime*qhat;
00137     T2=cprime*phat+dprime*qhat;
00138 
00139     l11=EvtLeptonVCurrent(parent->getDaug(1)->spParent(1),
00140                           parent->getDaug(2)->spParent(1));
00141     l21=EvtLeptonVCurrent(parent->getDaug(1)->spParent(0),
00142                           parent->getDaug(2)->spParent(1));
00143     l12=EvtLeptonVCurrent(parent->getDaug(1)->spParent(1),
00144                           parent->getDaug(2)->spParent(0));
00145     l22=EvtLeptonVCurrent(parent->getDaug(1)->spParent(0),
00146                           parent->getDaug(2)->spParent(0));
00147 
00148     a11=EvtLeptonACurrent(parent->getDaug(1)->spParent(1),
00149                           parent->getDaug(2)->spParent(1));
00150     a21=EvtLeptonACurrent(parent->getDaug(1)->spParent(0),
00151                           parent->getDaug(2)->spParent(1));
00152     a12=EvtLeptonACurrent(parent->getDaug(1)->spParent(1),
00153                           parent->getDaug(2)->spParent(0));
00154     a22=EvtLeptonACurrent(parent->getDaug(1)->spParent(0),
00155                           parent->getDaug(2)->spParent(0));
00156 
00157     }
00158     else{
00159       report(ERROR,"EvtGen") << "Wrong lepton number\n";
00160     }
00161   }
00162 
00163   amp.vertex(0,0,l11*T1+a11*T2);
00164   amp.vertex(0,1,l12*T1+a12*T2);
00165   amp.vertex(1,0,l21*T1+a21*T2);
00166   amp.vertex(1,1,l22*T1+a22*T2);
00167 
00168 }

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

Definition at line 37 of file EvtbTosllAmp.cc.

References boostTo(), EvtbTosllAmp::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 
) [inherited]

Definition at line 608 of file EvtbTosllAmp.cc.

References abs, ddilog_(), EvtbTosllAmp::GetC10Eff(), EvtbTosllAmp::GetC7Eff(), EvtbTosllAmp::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 
) [inherited]

Definition at line 534 of file EvtbTosllAmp.cc.

References abs, ddilog_(), f1, f2, EvtbTosllAmp::GetC10Eff(), EvtbTosllAmp::GetC7Eff(), EvtbTosllAmp::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 
) [inherited]

Definition at line 521 of file EvtbTosllAmp.cc.

Referenced by EvtbTosllVectorAmp::CalcAmp(), CalcAmp(), EvtbTosllAmp::dGdsdupProb(), and EvtbTosllAmp::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 
) [inherited]

Definition at line 245 of file EvtbTosllAmp.cc.

References EvtConst::pi.

Referenced by EvtbTosllVectorAmp::CalcAmp(), CalcAmp(), EvtbTosllAmp::dGdsdupProb(), and EvtbTosllAmp::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 
) [inherited]

Definition at line 350 of file EvtbTosllAmp.cc.

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

Referenced by EvtbTosllVectorAmp::CalcAmp(), CalcAmp(), EvtbTosllAmp::dGdsdupProb(), and EvtbTosllAmp::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 }


Member Data Documentation

double EvtbTosllScalarAmp::_c10 [private]

Definition at line 41 of file EvtbTosllScalarAmp.hh.

double EvtbTosllScalarAmp::_c7 [private]

Definition at line 41 of file EvtbTosllScalarAmp.hh.

double EvtbTosllScalarAmp::_c9 [private]

Definition at line 41 of file EvtbTosllScalarAmp.hh.


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