64 scalar_part->
init(parent,p_init);
74 listdaug[1] = lepton1;
75 listdaug[2] = lepton2;
77 amp.
init(parent,3,listdaug);
97 double m = root_part->
mass();
102 double q2, elepton, plepton;
104 double erho,prho,costl;
106 double maxfoundprob = 0.0;
112 for (massiter=0;massiter<3;massiter++){
131 q2 = ((i+1.5)*q2max)/26.0;
135 erho = ( m*m +
mass[0]*
mass[0] - q2 )/(2.0*m);
137 prho = sqrt(erho*erho-
mass[0]*
mass[0]);
139 p4meson.
set(erho,0.0,0.0,-1.0*prho);
140 p4w.
set(m-erho,0.0,0.0,prho);
143 elepton = (q2+
mass[1]*
mass[1])/(2.0*sqrt(q2));
144 plepton = sqrt(elepton*elepton-
mass[1]*
mass[1]);
150 costl = 0.99*(j - 1.0);
154 p4lepton1.
set(elepton,0.0,
155 plepton*sqrt(1.0-costl*costl),plepton*costl);
156 p4lepton2.
set(elepton,0.0,
157 -1.0*plepton*sqrt(1.0-costl*costl),-1.0*plepton*costl);
160 p4lepton1=
boostTo(p4lepton1,boost);
161 p4lepton2=
boostTo(p4lepton2,boost);
165 daughter->
init(meson,p4meson);
166 lep1->
init(lepton1,p4lepton1);
167 lep2->
init(lepton2,p4lepton2);
169 CalcAmp(root_part,amp,FormFactors);
189 double b=0.5*(probctl[2]-probctl[0]);
190 double c=0.5*(probctl[2]+probctl[0])-probctl[1];
193 if (probctl[1]>prob) prob=probctl[1];
194 if (probctl[2]>prob) prob=probctl[2];
197 double ctlx=-0.5*b/c;
199 double probtmp=a+b*ctlx+c*ctlx*ctlx;
200 if (probtmp>prob) prob=probtmp;
215 if ( prob > maxfoundprob ) {
231 poleSize=0.04*(maxpole/maxfoundprob)*4*(
mass[1]*
mass[1]);
248 if (!nnlo)
return -0.313;
250 double shat = q2/mbeff/mbeff;
263 A9 = 4.287 + (-0.218);
265 A10 = -4.592 + 0.379;
278 Lmu = log(muscale/mbeff);
297 A9 = 4.174 + (-0.035);
298 A10 = -4.592 + 0.379;
304 Lmu = log(muscale/mbeff);
316 f71 = k7100 + k7101*logshat + shat*(k7110 + k7111*logshat) +
317 shat*shat*(k7120 + k7121*logshat) +
318 shat*shat*shat*(k7130 + k7131*logshat);
319 F71 = (-208.0/243.0)*Lmu + f71;
331 f72 = k7200 + k7201*logshat + shat*(k7210 + k7211*logshat) +
332 shat*shat*(k7220 + k7221*logshat) +
333 shat*shat*shat*(k7230 + k7231*logshat);
334 F72 = (416.0/81.0)*Lmu + f72;
342 (-8.0*logshat/9.0)*(shat + shat*shat + shat*shat*shat);
344 c7eff = A7 - alphas/(4.0*
EvtConst::pi)*(C1*F71 + C2*F72 + A8*F78);
353 if (!nnlo)
return 4.344;
355 double shat = q2/mbeff/mbeff;
370 A9 = 4.287 + (-0.218);
372 A10 = -4.592 + 0.379;
385 Lmu = log(muscale/mbeff);
392 xarg = 4.0*mchat/shat;
393 hc = -4.0/9.0*log(mchat*mchat) + 8.0/27.0 + 4.0*xarg/9.0;
397 hc = hc - 2.0/9.0*(2.0 + xarg)*sqrt(fabs(1.0 - xarg))*
398 (log(fabs((sqrt(1.0 - xarg)+1.0)/(sqrt(1.0 - xarg) - 1.0))) -
403 hc = hc - 2.0/9.0*(2.0 + xarg)*sqrt(fabs(1.0 - xarg))*
404 2.0*atan(1.0/sqrt(xarg - 1.0));
409 h1 = 8.0/27.0 + 4.0*xarg/9.0;
412 h1 = h1 - 2.0/9.0*(2.0 + xarg)*sqrt(fabs(1.0 - xarg))*
413 (log(fabs((sqrt(1.0 - xarg)+1.0)/(sqrt(1.0 - xarg) - 1.0))) -
418 h1 = h1 - 2.0/9.0*(2.0 + xarg)*sqrt(fabs(1.0 - xarg))*
419 2.0*atan(1.0/sqrt(xarg - 1.0));
424 h0 = 8.0/27.0 - 4.0*log(2.0)/9.0 + 4.0*uniti*
EvtConst::pi/9.0;
429 EvtComplex Vudstar(1.0 - 0.2279*0.2279/2.0, 0.0);
430 EvtComplex Vub((0.118+0.273)/2.0, -1.0*(0.305+0.393)/2.0);
431 EvtComplex Vtdstar(1.0 - (0.118+0.273)/2.0,(0.305+0.393)/2.0);
435 Xd = (Vudstar * Vub / Vtdstar * Vtb) * (4.0/3.0*C1 + C2) * (hc - h0);
441 c9eff = A9 + T9*hc + U9*h1 + W9*h0;
453 A9 = 4.174 + (-0.035);
460 Lmu = log(muscale/mbeff);
472 f91 = k9100 + k9101*logshat + shat*(k9110 + k9111*logshat) +
473 shat*shat*(k9120 + k9121*logshat) +
474 shat*shat*shat*(k9130 + k9131*logshat);
476 + 64.0/27.0*log(mchat))*Lmu - 16.0*Lmu*logshat/243.0 +
477 (16.0/1215.0 - 32.0/135.0/mchat/mchat)*Lmu*shat +
478 (4.0/2835.0 - 8.0/315.0/mchat/mchat/mchat/mchat)*Lmu*shat*shat +
479 (16.0/76545.0 - 32.0/8505.0/mchat/mchat/mchat/mchat/mchat/mchat)*
480 Lmu*shat*shat*shat -256.0*Lmu*Lmu/243.0 + f91;
492 f92 = k9200 + k9201*logshat + shat*(k9210 + k9211*logshat) +
493 shat*shat*(k9220 + k9221*logshat) +
494 shat*shat*shat*(k9230 + k9231*logshat);
496 - 128.0/9.0*log(mchat))*Lmu + 32.0*Lmu*logshat/81.0 +
497 (-32.0/405.0 + 64.0/45.0/mchat/mchat)*Lmu*shat +
498 (-8.0/945.0 + 16.0/105.0/mchat/mchat/mchat/mchat)*Lmu*shat*shat +
499 (-32.0/25515.0 + 64.0/2835.0/mchat/mchat/mchat/mchat/mchat/mchat)*
500 Lmu*shat*shat*shat + 512.0*Lmu*Lmu/81.0 + f92;
507 16.0*logshat/9.0*(1.0 + shat + shat*shat + shat*shat*shat);
509 Xd = (Vudstar * Vub / Vtdstar * Vtb) * (4.0/3.0*C1 + C2) * (hc - h0);
511 c9eff = A9 + T9*hc + U9*h1 + W9*h0 -
524 if (!nnlo)
return -4.669;
526 A10 = -4.592 + 0.379;
541 double delta, lambda, prob;
542 double f1, f2, f3, f4;
553 double alphas = 0.119/
554 (1 + 0.119*log(pow(4.8,2)/pow(91.1867,2))*23.0/12.0/
EvtConst::pi);
556 - 2.0/3.0*log(sh)*log(1.0-sh)
557 - (5.0+4.0*sh)/(3.0*(1.0+2.0*sh)) * log(1.0-sh)
558 - 2.0*sh*(1.0+sh)*(1.0-2.0*sh)
559 /(3.0*pow(1.0-sh,2)*(1.0+2.0*sh)) * log(sh)
560 + (5.0+9.0*sh-6.0*sh*sh)/(6.0*(1.0-sh)*(1.0+2.0*sh));
562 double omega7 = -8.0/3.0*log(4.8/mb)
565 -2.0/3.0*log(sh)*log(1.0-sh)
566 -log(1-sh)*(8.0+sh)/(2.0+sh)/3.0
567 -2.0/3.0*sh*(2.0 - 2.0*sh - sh*sh)*log(sh)/pow((1.0 - sh),2)/(2.0 + sh)
568 -(16.0 - 11.0*sh - 17.0*sh*sh)/18.0/(2.0 + sh)/(1.0 - sh);
571 double omega79 = -4.0/3.0*log(4.8/mb)
574 -2.0/3.0*log(sh)*log(1.0-sh)
575 -1.0/9.0*(2.0+7.0*sh)*log(1.0 - sh)/sh
576 -2.0/9.0*sh*(3.0 - 2.0*sh)*log(sh)/pow((1.0 - sh),2)
577 +1.0/18.0*(5.0 - 9.0*sh)/(1.0 - sh);
580 double c7c9 =
abs(c7eff)*
real(c9eff);
581 c7c9 *= pow(eta79,2);
582 double c7c7 = pow(
abs(c7eff),2);
585 double c9c9plusc10c10 = pow(
abs(c9eff),2) + pow(
abs(c10eff),2);
586 c9c9plusc10c10 *= pow(eta9,2);
587 double c9c9minusc10c10 = pow(
abs(c9eff),2) - pow(
abs(c10eff),2);
588 c9c9minusc10c10 *= pow(eta9,2);
590 lambda = 1.0 + sh*sh + pow(msh,4) - 2.0*(sh + sh*msh*msh + msh*msh);
592 f1 = pow(1.0-msh*msh,2) - sh*(1.0 + msh*msh);
593 f2 = 2.0*(1.0 + msh*msh) * pow(1.0-msh*msh,2)
594 - sh*(1.0 + 14.0*msh*msh + pow(msh,4)) - sh*sh*(1.0 + msh*msh);
595 f3 = pow(1.0-msh*msh,2) + sh*(1.0 + msh*msh) - 2.0*sh*sh
596 + lambda*2.0*mlh*mlh/sh;
597 f4 = 1.0 - sh + msh*msh;
599 delta = ( 12.0*c7c9*
f1 + 4.0*c7c7*f2/sh ) * (1.0 + 2.0*mlh*mlh/sh)
601 + 6.0*mlh*mlh*c9c9minusc10c10*f4;
603 prob = sqrt(lambda*(1.0 - 4.0*mlh*mlh/sh)) * delta;
615 double f1sp, f2sp, f3sp;
617 double sh =
s / (mb*mb);
623 double alphas = 0.119/
624 (1 + 0.119*log(pow(4.8,2)/pow(91.1867,2))*23.0/12.0/
EvtConst::pi);
626 - 2.0/3.0*log(sh)*log(1.0-sh)
627 - (5.0+4.0*sh)/(3.0*(1.0+2.0*sh)) * log(1.0-sh)
628 - 2.0*sh*(1.0+sh)*(1.0-2.0*sh)
629 /(3.0*pow(1.0-sh,2)*(1.0+2.0*sh)) * log(sh)
630 + (5.0+9.0*sh-6.0*sh*sh)/(6.0*(1.0-sh)*(1.0+2.0*sh));
632 double omega7 = -8.0/3.0*log(4.8/mb)
635 -2.0/3.0*log(sh)*log(1.0-sh)
636 -log(1-sh)*(8.0+sh)/(2.0+sh)/3.0
637 -2.0/3.0*sh*(2.0 - 2.0*sh - sh*sh)*log(sh)/pow((1.0 - sh),2)/(2.0 + sh)
638 -(16.0 - 11.0*sh - 17.0*sh*sh)/18.0/(2.0 + sh)/(1.0 - sh);
641 double omega79 = -4.0/3.0*log(4.8/mb)
644 -2.0/3.0*log(sh)*log(1.0-sh)
645 -1.0/9.0*(2.0+7.0*sh)*log(1.0 - sh)/sh
646 -2.0/9.0*sh*(3.0 - 2.0*sh)*log(sh)/pow((1.0 - sh),2)
647 +1.0/18.0*(5.0 - 9.0*sh)/(1.0 - sh);
650 double c7c9 =
abs(c7eff)*
real(c9eff);
651 c7c9 *= pow(eta79,2);
652 double c7c7 = pow(
abs(c7eff),2);
655 double c9c9plusc10c10 = pow(
abs(c9eff),2) + pow(
abs(c10eff),2);
656 c9c9plusc10c10 *= pow(eta9,2);
657 double c9c9minusc10c10 = pow(
abs(c9eff),2) - pow(
abs(c10eff),2);
658 c9c9minusc10c10 *= pow(eta9,2);
659 double c7c10 =
abs(c7eff)*
real(c10eff);
660 c7c10 *= eta7; c7c10 *= eta9;
661 double c9c10 =
real(c9eff)*
real(c10eff);
662 c9c10 *= pow(eta9,2);
664 f1sp = ( pow(mb*mb-ms*ms,2) -
s*
s) * c9c9plusc10c10
665 + 4.0*( pow(mb,4) - ms*ms*mb*mb - pow(ms,4)*(1.0 - ms*ms/(mb*mb))
666 - 8.0*
s*ms*ms -
s*
s*(1.0 + ms*ms/(mb*mb) ))*mb*mb*c7c7/
s
669 - 8.0*(
s*(mb*mb + ms*ms) - pow(mb*mb-ms*ms,2)) * c7c9
671 *(1.0 + 2.0*ml*ml/
s);
673 f2sp = 4.0*
s*c9c10 + 8.0*(mb*mb + ms*ms)*c7c10;
674 f3sp = - (c9c9plusc10c10)
675 + 4.0*(1.0 + pow(ms/mb,4)) * mb*mb*c7c7/
s
677 *(1.0 + 2.0*ml*ml/
s);
679 prob = (f1sp + f2sp*u + f3sp*u*u)/ pow(mb,3);
EvtDiracSpinor boostTo(const EvtDiracSpinor &sp, const EvtVector4R p4)
double ddilog_(const double &sh)
void init(EvtId p, int ndaug, EvtId *daug)
EvtSpinDensity getSpinDensity()
static double getWidth(EvtId i)
static double getMeanMass(EvtId i)
static double getMinMass(EvtId i)
static double getMaxMass(EvtId i)
static double getMass(EvtId i)
void makeDaughters(int ndaug, EvtId *id)
virtual void init(EvtId part_n, const EvtVector4R &p4)=0
int getSpinStates() const
void setDiagonalSpinDensity()
EvtParticle * getDaug(int i)
void init(EvtId part_n, double e, double px, double py, double pz)
double NormalizedProb(const EvtSpinDensity &d)
void set(int i, double d)
EvtComplex GetC7Eff(double q2, bool nnlo=true)
EvtComplex GetC10Eff(double q2, bool nnlo=true)
double dGdsProb(double mb, double ms, double ml, double s)
virtual void CalcAmp(EvtParticle *parent, EvtAmp &, EvtbTosllFF *formFactors)=0
double dGdsdupProb(double mb, double ms, double ml, double s, double u)
EvtComplex GetC9Eff(double q2, bool nnlo=true, bool btod=false)
double CalcMaxProb(EvtId parent, EvtId meson, EvtId lepton, EvtId nudaug, EvtbTosllFF *formFactors, double &poleSize)