63 scalar_part->
init( parent, p_init );
73 listdaug[1] = lepton1;
74 listdaug[2] = lepton2;
76 amp.
init( parent, 3, listdaug );
79 daughter = root_part->
getDaug( 0 );
95 double m = root_part->
mass();
100 double q2, elepton, plepton;
102 double erho, prho, costl;
104 double maxfoundprob = 0.0;
110 for ( massiter = 0; massiter < 3; massiter++ ) {
114 if ( massiter == 1 ) {
117 if ( massiter == 2 ) {
119 if ( ( mass[0] + mass[1] + mass[2] ) > m )
120 mass[0] = m - mass[1] - mass[2] - 0.00001;
123 q2max = ( m - mass[0] ) * ( m - mass[0] );
127 for ( i = 0; i < 25; i++ ) {
129 q2 = ( ( i + 1.5 ) * q2max ) / 26.0;
132 q2 = 4 * ( mass[1] * mass[1] );
134 erho = ( m * m + mass[0] * mass[0] - q2 ) / ( 2.0 * m );
136 prho = sqrt( erho * erho - mass[0] * mass[0] );
138 p4meson.
set( erho, 0.0, 0.0, -1.0 * prho );
139 p4w.
set( m - erho, 0.0, 0.0, prho );
142 elepton = ( q2 + mass[1] * mass[1] ) / ( 2.0 * sqrt( q2 ) );
143 plepton = sqrt( elepton * elepton - mass[1] * mass[1] );
147 for ( j = 0; j < 3; j++ ) {
148 costl = 0.99 * ( j - 1.0 );
152 p4lepton1.
set( elepton, 0.0,
153 plepton * sqrt( 1.0 - costl * costl ),
155 p4lepton2.
set( elepton, 0.0,
156 -1.0 * plepton * sqrt( 1.0 - costl * costl ),
157 -1.0 * plepton * costl );
159 EvtVector4R boost( ( m - erho ), 0.0, 0.0, 1.0 * prho );
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 );
188 double a = probctl[1];
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 )
195 if ( probctl[2] > prob )
198 if ( fabs( c ) > 1e-20 ) {
199 double ctlx = -0.5 * b / c;
200 if ( fabs( ctlx ) < 1.0 ) {
201 double probtmp = a + b * ctlx + c * ctlx * ctlx;
202 if ( probtmp > prob )
217 if ( prob > maxfoundprob ) {
231 poleSize = 0.04 * ( maxpole / maxfoundprob ) * 4 * ( mass[1] * mass[1] );
238 maxfoundprob *= 1.15;
248 double shat = q2 / mbeff / mbeff;
250 logshat = log( shat );
266 Lmu = log( muscale / mbeff );
283 Lmu = log( muscale / mbeff );
295 f71 = k7100 + k7101 * logshat + shat * ( k7110 + k7111 * logshat ) +
296 shat * shat * ( k7120 + k7121 * logshat ) +
297 shat * shat * shat * ( k7130 + k7131 * logshat );
298 F71 = ( -208.0 / 243.0 ) * Lmu + f71;
310 f72 = k7200 + k7201 * logshat + shat * ( k7210 + k7211 * logshat ) +
311 shat * shat * ( k7220 + k7221 * logshat ) +
312 shat * shat * shat * ( k7230 + k7231 * logshat );
313 F72 = ( 416.0 / 81.0 ) * Lmu + f72;
317 ( -44.0 / 9.0 ) + ( -8.0 *
EvtConst::pi / 9.0 ) * uniti +
323 ( -8.0 * logshat / 9.0 ) * ( shat + shat * shat + shat * shat * shat );
326 ( C1 * F71 + C2 * F72 + A8 * F78 );
336 double shat = q2 / mbeff / mbeff;
338 logshat = log( shat );
348 A9 = 4.287 + ( -0.218 );
361 Lmu = log( muscale / mbeff );
367 xarg = 4.0 * mchat / shat;
368 hc = -4.0 / 9.0 * log( mchat * mchat ) + 8.0 / 27.0 + 4.0 * xarg / 9.0;
371 hc = hc - 2.0 / 9.0 * ( 2.0 + xarg ) * sqrt( fabs( 1.0 - xarg ) ) *
372 ( log( fabs( ( sqrt( 1.0 - xarg ) + 1.0 ) /
373 ( sqrt( 1.0 - xarg ) - 1.0 ) ) ) -
376 hc = hc - 2.0 / 9.0 * ( 2.0 + xarg ) * sqrt( fabs( 1.0 - xarg ) ) *
377 2.0 * atan( 1.0 / sqrt( xarg - 1.0 ) );
382 h1 = 8.0 / 27.0 + 4.0 * xarg / 9.0;
384 h1 = h1 - 2.0 / 9.0 * ( 2.0 + xarg ) * sqrt( fabs( 1.0 - xarg ) ) *
385 ( log( fabs( ( sqrt( 1.0 - xarg ) + 1.0 ) /
386 ( sqrt( 1.0 - xarg ) - 1.0 ) ) ) -
389 h1 = h1 - 2.0 / 9.0 * ( 2.0 + xarg ) * sqrt( fabs( 1.0 - xarg ) ) *
390 2.0 * atan( 1.0 / sqrt( xarg - 1.0 ) );
394 h0 = 8.0 / 27.0 - 4.0 * log( 2.0 ) / 9.0 + 4.0 * uniti *
EvtConst::pi / 9.0;
398 EvtComplex Vudstar( 1.0 - 0.2279 * 0.2279 / 2.0, 0.0 );
399 EvtComplex Vub( ( 0.118 + 0.273 ) / 2.0, -1.0 * ( 0.305 + 0.393 ) / 2.0 );
400 EvtComplex Vtdstar( 1.0 - ( 0.118 + 0.273 ) / 2.0, ( 0.305 + 0.393 ) / 2.0 );
404 Xd = ( Vudstar * Vub / Vtdstar * Vtb ) * ( 4.0 / 3.0 * C1 + C2 ) *
409 c9eff = A9 + T9 * hc + U9 * h1 + W9 * h0;
420 A9 = 4.174 + ( -0.035 );
427 Lmu = log( muscale / mbeff );
439 f91 = k9100 + k9101 * logshat + shat * ( k9110 + k9111 * logshat ) +
440 shat * shat * ( k9120 + k9121 * logshat ) +
441 shat * shat * shat * ( k9130 + k9131 * logshat );
442 F91 = ( -1424.0 / 729.0 + 16.0 * uniti *
EvtConst::pi / 243.0 +
443 64.0 / 27.0 * log( mchat ) ) *
445 16.0 * Lmu * logshat / 243.0 +
446 ( 16.0 / 1215.0 - 32.0 / 135.0 / mchat / mchat ) * Lmu * shat +
447 ( 4.0 / 2835.0 - 8.0 / 315.0 / mchat / mchat / mchat / mchat ) * Lmu *
450 32.0 / 8505.0 / mchat / mchat / mchat / mchat / mchat / mchat ) *
451 Lmu * shat * shat * shat -
452 256.0 * Lmu * Lmu / 243.0 + f91;
464 f92 = k9200 + k9201 * logshat + shat * ( k9210 + k9211 * logshat ) +
465 shat * shat * ( k9220 + k9221 * logshat ) +
466 shat * shat * shat * ( k9230 + k9231 * logshat );
467 F92 = ( 256.0 / 243.0 - 32.0 * uniti *
EvtConst::pi / 81.0 -
468 128.0 / 9.0 * log( mchat ) ) *
470 32.0 * Lmu * logshat / 81.0 +
471 ( -32.0 / 405.0 + 64.0 / 45.0 / mchat / mchat ) * Lmu * shat +
472 ( -8.0 / 945.0 + 16.0 / 105.0 / mchat / mchat / mchat / mchat ) *
475 64.0 / 2835.0 / mchat / mchat / mchat / mchat / mchat / mchat ) *
476 Lmu * shat * shat * shat +
477 512.0 * Lmu * Lmu / 81.0 + f92;
486 16.0 * logshat / 9.0 *
487 ( 1.0 + shat + shat * shat + shat * shat * shat );
489 Xd = ( Vudstar * Vub / Vtdstar * Vtb ) * ( 4.0 / 3.0 * C1 + C2 ) *
492 c9eff = A9 + T9 * hc + U9 * h1 + W9 * h0 -
493 alphas / ( 4.0 *
EvtConst::pi ) * ( C1 * F91 + C2 * F92 + A8 * F98 );
506 A10 = -4.592 + 0.379;
519 double delta,
lambda, prob;
520 double f1, f2, f3, f4;
525 sh = s / ( mb * mb );
531 double alphas = 0.119 /
532 ( 1 + 0.119 * log( pow( 4.8, 2 ) / pow( 91.1867, 2 ) ) *
536 2.0 / 3.0 * log( sh ) * log( 1.0 - sh ) -
537 ( 5.0 + 4.0 * sh ) / ( 3.0 * ( 1.0 + 2.0 * sh ) ) *
539 2.0 * sh * ( 1.0 + sh ) * ( 1.0 - 2.0 * sh ) /
540 ( 3.0 * pow( 1.0 - sh, 2 ) * ( 1.0 + 2.0 * sh ) ) *
542 ( 5.0 + 9.0 * sh - 6.0 * sh * sh ) /
543 ( 6.0 * ( 1.0 - sh ) * ( 1.0 + 2.0 * sh ) );
545 double omega7 = -8.0 / 3.0 * log( 4.8 / mb ) -
548 2.0 / 3.0 * log( sh ) * log( 1.0 - sh ) -
549 log( 1 - sh ) * ( 8.0 + sh ) / ( 2.0 + sh ) / 3.0 -
550 2.0 / 3.0 * sh * ( 2.0 - 2.0 * sh - sh * sh ) * log( sh ) /
551 pow( ( 1.0 - sh ), 2 ) / ( 2.0 + sh ) -
552 ( 16.0 - 11.0 * sh - 17.0 * sh * sh ) / 18.0 /
553 ( 2.0 + sh ) / ( 1.0 - sh );
556 double omega79 = -4.0 / 3.0 * log( 4.8 / mb ) -
559 2.0 / 3.0 * log( sh ) * log( 1.0 - sh ) -
560 1.0 / 9.0 * ( 2.0 + 7.0 * sh ) * log( 1.0 - sh ) / sh -
561 2.0 / 9.0 * sh * ( 3.0 - 2.0 * sh ) * log( sh ) /
562 pow( ( 1.0 - sh ), 2 ) +
563 1.0 / 18.0 * ( 5.0 - 9.0 * sh ) / ( 1.0 - sh );
566 double c7c9 =
abs( c7eff ) *
real( c9eff );
567 c7c9 *= pow( eta79, 2 );
568 double c7c7 = pow(
abs( c7eff ), 2 );
569 c7c7 *= pow( eta7, 2 );
571 double c9c9plusc10c10 = pow(
abs( c9eff ), 2 ) + pow(
abs( c10eff ), 2 );
572 c9c9plusc10c10 *= pow( eta9, 2 );
573 double c9c9minusc10c10 = pow(
abs( c9eff ), 2 ) - pow(
abs( c10eff ), 2 );
574 c9c9minusc10c10 *= pow( eta9, 2 );
576 lambda = 1.0 + sh * sh + pow( msh, 4 ) -
577 2.0 * ( sh + sh * msh * msh + msh * msh );
579 f1 = pow( 1.0 - msh * msh, 2 ) - sh * ( 1.0 + msh * msh );
580 f2 = 2.0 * ( 1.0 + msh * msh ) * pow( 1.0 - msh * msh, 2 ) -
581 sh * ( 1.0 + 14.0 * msh * msh + pow( msh, 4 ) ) -
582 sh * sh * ( 1.0 + msh * msh );
583 f3 = pow( 1.0 - msh * msh, 2 ) + sh * ( 1.0 + msh * msh ) - 2.0 * sh * sh +
584 lambda * 2.0 * mlh * mlh / sh;
585 f4 = 1.0 - sh + msh * msh;
587 delta = ( 12.0 * c7c9 * f1 + 4.0 * c7c7 * f2 / sh ) *
588 ( 1.0 + 2.0 * mlh * mlh / sh ) +
589 c9c9plusc10c10 * f3 + 6.0 * mlh * mlh * c9c9minusc10c10 * f4;
591 prob = sqrt(
lambda * ( 1.0 - 4.0 * mlh * mlh / sh ) ) * delta;
603 double f1sp, f2sp, f3sp;
605 double sh = s / ( mb * mb );
611 double alphas = 0.119 /
612 ( 1 + 0.119 * log( pow( 4.8, 2 ) / pow( 91.1867, 2 ) ) *
616 2.0 / 3.0 * log( sh ) * log( 1.0 - sh ) -
617 ( 5.0 + 4.0 * sh ) / ( 3.0 * ( 1.0 + 2.0 * sh ) ) *
619 2.0 * sh * ( 1.0 + sh ) * ( 1.0 - 2.0 * sh ) /
620 ( 3.0 * pow( 1.0 - sh, 2 ) * ( 1.0 + 2.0 * sh ) ) *
622 ( 5.0 + 9.0 * sh - 6.0 * sh * sh ) /
623 ( 6.0 * ( 1.0 - sh ) * ( 1.0 + 2.0 * sh ) );
625 double omega7 = -8.0 / 3.0 * log( 4.8 / mb ) -
628 2.0 / 3.0 * log( sh ) * log( 1.0 - sh ) -
629 log( 1 - sh ) * ( 8.0 + sh ) / ( 2.0 + sh ) / 3.0 -
630 2.0 / 3.0 * sh * ( 2.0 - 2.0 * sh - sh * sh ) * log( sh ) /
631 pow( ( 1.0 - sh ), 2 ) / ( 2.0 + sh ) -
632 ( 16.0 - 11.0 * sh - 17.0 * sh * sh ) / 18.0 /
633 ( 2.0 + sh ) / ( 1.0 - sh );
636 double omega79 = -4.0 / 3.0 * log( 4.8 / mb ) -
639 2.0 / 3.0 * log( sh ) * log( 1.0 - sh ) -
640 1.0 / 9.0 * ( 2.0 + 7.0 * sh ) * log( 1.0 - sh ) / sh -
641 2.0 / 9.0 * sh * ( 3.0 - 2.0 * sh ) * log( sh ) /
642 pow( ( 1.0 - sh ), 2 ) +
643 1.0 / 18.0 * ( 5.0 - 9.0 * sh ) / ( 1.0 - sh );
646 double c7c9 =
abs( c7eff ) *
real( c9eff );
647 c7c9 *= pow( eta79, 2 );
648 double c7c7 = pow(
abs( c7eff ), 2 );
649 c7c7 *= pow( eta7, 2 );
651 double c9c9plusc10c10 = pow(
abs( c9eff ), 2 ) + pow(
abs( c10eff ), 2 );
652 c9c9plusc10c10 *= pow( eta9, 2 );
653 double c9c9minusc10c10 = pow(
abs( c9eff ), 2 ) - pow(
abs( c10eff ), 2 );
654 c9c9minusc10c10 *= pow( eta9, 2 );
655 double c7c10 =
abs( c7eff ) *
real( c10eff );
658 double c9c10 =
real( c9eff ) *
real( c10eff );
659 c9c10 *= pow( eta9, 2 );
661 f1sp = ( pow( mb * mb - ms * ms, 2 ) - s * s ) * c9c9plusc10c10 +
663 ( pow( mb, 4 ) - ms * ms * mb * mb -
664 pow( ms, 4 ) * ( 1.0 - ms * ms / ( mb * mb ) ) -
665 8.0 * s * ms * ms - s * s * ( 1.0 + ms * ms / ( mb * mb ) ) ) *
669 * ( 1.0 + 2.0 * ml * ml / s ) -
670 8.0 * ( s * ( mb * mb + ms * ms ) - pow( mb * mb - ms * ms, 2 ) ) *
673 * ( 1.0 + 2.0 * ml * ml / s );
675 f2sp = 4.0 * s * c9c10 + 8.0 * ( mb * mb + ms * ms ) * c7c10;
676 f3sp = -( c9c9plusc10c10 ) + 4.0 * ( 1.0 + pow( ms / mb, 4 ) ) * mb * mb *
680 * ( 1.0 + 2.0 * ml * ml / s );
682 prob = ( f1sp + f2sp * u + f3sp * u * u ) / pow( mb, 3 );
EvtComplex GetC7Eff(double q2, bool nnlo=true)
virtual void init(EvtId part_n, const EvtVector4R &p4)=0
double CalcMaxProb(EvtId parent, EvtId meson, EvtId lepton, EvtId nudaug, EvtbTosllFF *formFactors, double &poleSize)
static double getMeanMass(EvtId i)
int getSpinStates() const
void makeDaughters(unsigned int ndaug, EvtId *id)
void set(int i, double d)
EvtRaritaSchwinger boostTo(const EvtRaritaSchwinger &rs, const EvtVector4R p4)
EvtSpinDensity getSpinDensity()
EvtComplex GetC10Eff(double q2, bool nnlo=true)
static double getMinMass(EvtId i)
double abs(const EvtComplex &c)
void init(EvtId part_n, double e, double px, double py, double pz)
double lambda(double q, double m1, double m2)
static double getWidth(EvtId i)
double dGdsProb(double mb, double ms, double ml, double s)
void setDiagonalSpinDensity()
EvtParticle * getDaug(int i)
EvtComplex GetC9Eff(double q2, bool nnlo=true, bool btod=false)
static double getMass(EvtId i)
void init(EvtId p, int ndaug, EvtId *daug)
double dGdsdupProb(double mb, double ms, double ml, double s, double u)
double real(const EvtComplex &c)
virtual void CalcAmp(EvtParticle *parent, EvtAmp &, EvtbTosllFF *formFactors)=0
static double getMaxMass(EvtId i)
double normalizedProb(const EvtSpinDensity &d)