#include <EvtbTosllVectorAmp.hh>
Inheritance diagram for EvtbTosllVectorAmp:
Public Member Functions | |
EvtbTosllVectorAmp (double c7, double c9, double c10) | |
void | CalcAmp (EvtParticle *parent, EvtAmp &, 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 |
Definition at line 30 of file EvtbTosllVectorAmp.hh.
EvtbTosllVectorAmp::EvtbTosllVectorAmp | ( | double | c7, | |
double | c9, | |||
double | c10 | |||
) | [inline] |
void EvtbTosllVectorAmp::CalcAmp | ( | EvtParticle * | parent, | |
EvtAmp & | amp, | |||
EvtbTosllFF * | formFactors | |||
) | [virtual] |
Implements EvtbTosllAmp.
Definition at line 38 of file EvtbTosllVectorAmp.cc.
References a0, EvtPDL::chg3(), EvtVector4C::conj(), EvtIdSet::contains(), directProd(), dual(), eps(), EvtParticle::epsParent(), calibUtil::ERROR, EvtLeptonACurrent(), EvtLeptonVCurrent(), EvtTensor4C::g(), EvtbTosllAmp::GetC10Eff(), EvtbTosllAmp::GetC7Eff(), EvtbTosllAmp::GetC9Eff(), EvtParticle::getDaug(), EvtPDL::getId(), EvtParticle::getId(), EvtParticle::getP4(), EvtbTosllFF::getVectorFF(), genRecEmupikp::i, EvtParticle::mass(), q, report(), EvtVector4R::set(), EvtParticle::spParent(), deljobs::string, v, and EvtAmp::vertex().
00040 { 00041 00042 //Add the lepton and neutrino 4 momenta to find q2 00043 00044 EvtVector4R q = parent->getDaug(1)->getP4() 00045 + parent->getDaug(2)->getP4(); 00046 double q2 = (q.mass2()); 00047 00048 00049 double a1,a2,a0,v,t1,t2,t3; 00050 double mesonmass = parent->getDaug(0)->mass(); 00051 double parentmass = parent->mass(); 00052 00053 formFactors->getVectorFF(parent->getId(), 00054 parent->getDaug(0)->getId(), 00055 q2, 00056 mesonmass, 00057 a1,a2,a0,v,t1,t2,t3); 00058 00059 00060 EvtId daught = parent->getDaug(0)->getId(); 00061 bool btod = false; 00062 bool nnlo = true; 00063 if 00064 ( 00065 daught == EvtPDL::getId(std::string("rho+")) || 00066 daught == EvtPDL::getId(std::string("rho-")) || 00067 daught == EvtPDL::getId(std::string("rho0")) || 00068 daught == EvtPDL::getId(std::string("omega")) 00069 ) 00070 btod = true; 00071 00072 EvtVector4R p4b; 00073 p4b.set(parent->mass(),0.0,0.0,0.0); 00074 EvtVector4R p4meson = parent->getDaug(0)->getP4(); 00075 00076 EvtVector4C l11,l12; 00077 EvtVector4C l21,l22; 00078 00079 EvtVector4C a11,a12; 00080 EvtVector4C a21,a22; 00081 00082 EvtId parentID = parent->getId(); 00083 00084 //EvtId l_num = parent->getDaug(1)->getId(); 00085 00086 EvtVector4R pbhat=p4b/parentmass; 00087 EvtVector4R qhat=q/parentmass; 00088 EvtVector4R pkstarhat=p4meson/parentmass; 00089 EvtVector4R phat=pbhat+pkstarhat; 00090 00091 EvtComplex c7eff = EvtbTosllAmp::GetC7Eff(q2,nnlo); 00092 EvtComplex c9eff = EvtbTosllAmp::GetC9Eff(q2,nnlo,btod); 00093 EvtComplex c10eff = EvtbTosllAmp::GetC10Eff(q2,nnlo); 00094 EvtComplex uniti(0.0,1.0); 00095 00096 double mhatb=4.4/(parentmass); 00097 double mhatkstar=mesonmass/(parentmass); 00098 double shat=q2/(parentmass*parentmass); 00099 00100 00101 EvtComplex a; 00102 a=c9eff*v*2/(1+mhatkstar)+4*mhatb*c7eff*t1/shat; 00103 EvtComplex b; 00104 b=(1+mhatkstar)*(c9eff*a1+2*mhatb*(1-mhatkstar)*c7eff*t2/shat); 00105 EvtComplex c; 00106 c=((1-mhatkstar)*c9eff*a2+ 00107 2*mhatb*c7eff*(t3+(1-mhatkstar*mhatkstar)*t2/shat))/ 00108 (1-mhatkstar*mhatkstar); 00109 EvtComplex d; 00110 d=(c9eff*((1+mhatkstar)*a1-(1-mhatkstar)*a2-2*mhatkstar*a0) 00111 -2*mhatb*c7eff*t3)/shat; 00112 EvtComplex e; 00113 e=2*c10eff*v/(1+mhatkstar); 00114 EvtComplex f; 00115 f=(1+mhatkstar)*c10eff*a1; 00116 EvtComplex g; 00117 g=c10eff*a2/(1+mhatkstar); 00118 EvtComplex h; 00119 h=c10eff*((1+mhatkstar)*a1-(1-mhatkstar)*a2-2*mhatkstar*a0)/shat; 00120 00121 EvtTensor4C T1,T2; 00122 00123 static EvtIdSet bmesons("B-","anti-B0"); 00124 static EvtIdSet bbarmesons("B+","B0"); 00125 00126 EvtParticle* lepPlus(0); 00127 EvtParticle* lepMinus(0); 00128 00129 int charge1 = EvtPDL::chg3(parent->getDaug(1)->getId()); 00130 int charge2 = EvtPDL::chg3(parent->getDaug(2)->getId()); 00131 00132 lepPlus = (charge1 > charge2) ? parent->getDaug(1) : parent->getDaug(2); 00133 lepMinus = (charge1 < charge2) ? parent->getDaug(1) : parent->getDaug(2); 00134 00135 // static EvtIdSet leptons("e-","mu-","tau-"); 00136 // static EvtIdSet antileptons("e+","mu+","tau+"); 00137 00138 // if (leptons.contains(l_num)){ 00139 if (bmesons.contains(parentID)) { 00140 00141 T1=a*dual(directProd(pbhat,pkstarhat)) 00142 -b*uniti*EvtTensor4C::g() 00143 +c*uniti*directProd(pbhat,phat) 00144 +d*uniti*directProd(pbhat,qhat); 00145 00146 T2=e*dual(directProd(pbhat,pkstarhat)) 00147 -f*uniti*EvtTensor4C::g() 00148 +g*uniti*directProd(pbhat,phat) 00149 +h*uniti*directProd(pbhat,qhat); 00150 00151 l11=EvtLeptonVCurrent(lepPlus->spParent(0), 00152 lepMinus->spParent(0)); 00153 l21=EvtLeptonVCurrent(lepPlus->spParent(1), 00154 lepMinus->spParent(0)); 00155 l12=EvtLeptonVCurrent(lepPlus->spParent(0), 00156 lepMinus->spParent(1)); 00157 l22=EvtLeptonVCurrent(lepPlus->spParent(1), 00158 lepMinus->spParent(1)); 00159 00160 a11=EvtLeptonACurrent(lepPlus->spParent(0), 00161 lepMinus->spParent(0)); 00162 a21=EvtLeptonACurrent(lepPlus->spParent(1), 00163 lepMinus->spParent(0)); 00164 a12=EvtLeptonACurrent(lepPlus->spParent(0), 00165 lepMinus->spParent(1)); 00166 a22=EvtLeptonACurrent(lepPlus->spParent(1), 00167 lepMinus->spParent(1)); 00168 00169 } else { 00170 00171 if (bbarmesons.contains(parentID)) { 00172 00173 T1=-a*dual(directProd(pbhat,pkstarhat)) 00174 -b*uniti*EvtTensor4C::g() 00175 +c*uniti*directProd(pbhat,phat) 00176 +d*uniti*directProd(pbhat,qhat); 00177 00178 T2=-e*dual(directProd(pbhat,pkstarhat)) 00179 -f*uniti*EvtTensor4C::g() 00180 +g*uniti*directProd(pbhat,phat) 00181 +h*uniti*directProd(pbhat,qhat); 00182 00183 l11=EvtLeptonVCurrent(lepPlus->spParent(1), 00184 lepMinus->spParent(1)); 00185 l21=EvtLeptonVCurrent(lepPlus->spParent(0), 00186 lepMinus->spParent(1)); 00187 l12=EvtLeptonVCurrent(lepPlus->spParent(1), 00188 lepMinus->spParent(0)); 00189 l22=EvtLeptonVCurrent(lepPlus->spParent(0), 00190 lepMinus->spParent(0)); 00191 00192 a11=EvtLeptonACurrent(lepPlus->spParent(1), 00193 lepMinus->spParent(1)); 00194 a21=EvtLeptonACurrent(lepPlus->spParent(0), 00195 lepMinus->spParent(1)); 00196 a12=EvtLeptonACurrent(lepPlus->spParent(1), 00197 lepMinus->spParent(0)); 00198 a22=EvtLeptonACurrent(lepPlus->spParent(0), 00199 lepMinus->spParent(0)); 00200 00201 } 00202 else{ 00203 report(ERROR,"EvtGen") << "Wrong lepton number\n"; 00204 } 00205 } 00206 00207 00208 int i; 00209 00210 for(i=0;i<3;i++){ 00211 EvtVector4C eps=parent->getDaug(0)->epsParent(i).conj(); 00212 00213 EvtVector4C E1=T1.cont1(eps); 00214 EvtVector4C E2=T2.cont1(eps); 00215 00216 amp.vertex(i,0,0,l11*E1+a11*E2); 00217 amp.vertex(i,0,1,l12*E1+a12*E2); 00218 amp.vertex(i,1,0,l21*E1+a21*E2); 00219 amp.vertex(i,1,1,l22*E1+a22*E2); 00220 } 00221 }
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 CalcAmp(), EvtbTosllScalarAmp::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 CalcAmp(), EvtbTosllScalarAmp::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 CalcAmp(), EvtbTosllScalarAmp::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 }
double EvtbTosllVectorAmp::_c10 [private] |
Definition at line 43 of file EvtbTosllVectorAmp.hh.
double EvtbTosllVectorAmp::_c7 [private] |
Definition at line 43 of file EvtbTosllVectorAmp.hh.
double EvtbTosllVectorAmp::_c9 [private] |
Definition at line 43 of file EvtbTosllVectorAmp.hh.