70 rho[1] = 1.121155232058;
71 phi[1] = 3.322105212534;
73 rho[2] = 1.214264427529;
74 phi[2] = -5.321965906572;
76 rho[3] = 1.086952630367;
77 phi[3] = -4.213398459878;
79 rho[4] = 1.121071578335;
80 phi[4] = -1.055595448689;
82 rho[5] = -1.473195648049;
83 phi[5] = 5.841826108667;
85 rho[6] = 5.396864431453;
86 phi[6] = -0.360227442474;
88 rho[7] = 0.436480711396;
89 phi[7] = 0.778423040673;
127 mass_Pion2 = 0.0194797849;
128 mass_2Pion = 0.27914;
129 math_2pi = 6.2831852;
139 int GG[4][4] = { { 1, 0, 0, 0 }, { 0, -1, 0, 0 }, { 0, 0, -1, 0 }, { 0, 0, 0, -1 } };
140 for (
int i = 0; i < 4; i++ )
142 for (
int j = 0; j < 4; j++ ) { G[i][j] = GG[i][j]; }
191 double P1[4], P2[4], P3[4];
212 int g0[8] = { 1, 1, 4, 1, 1, 1, 3, 1 };
213 double r0[8] = { 3.0, 3.0, 3.0, 3.0, 3.0, 3.0, 3.0, 3.0 };
214 double r1[8] = { 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0 };
216 calEva( P1, P2, P3, mass, width, rho, phi, g0, spin, modetype, nstates, value, r0, r1 );
221void EvtDToKKpi::Com_Multi(
double a1[2],
double a2[2],
double res[2] ) {
222 res[0] = a1[0] * a2[0] - a1[1] * a2[1];
223 res[1] = a1[1] * a2[0] + a1[0] * a2[1];
225void EvtDToKKpi::Com_Divide(
double a1[2],
double a2[2],
double res[2] ) {
226 double tmp = a2[0] * a2[0] + a2[1] * a2[1];
227 res[0] = ( a1[0] * a2[0] + a1[1] * a2[1] ) / tmp;
228 res[1] = ( a1[1] * a2[0] - a1[0] * a2[1] ) / tmp;
231double EvtDToKKpi::SCADot(
double a1[4],
double a2[4] ) {
232 double _cal = a1[0] * a2[0] - a1[1] * a2[1] - a1[2] * a2[2] - a1[3] * a2[3];
235double EvtDToKKpi::barrier(
int l,
double sa,
double sb,
double sc,
double r,
double mass ) {
236 double q = fabs( ( sa + sb - sc ) * ( sa + sb - sc ) / ( 4 * sa ) - sb );
241 double q0 = fabs( ( sa0 + sb - sc ) * ( sa0 + sb - sc ) / ( 4 * sa0 ) - sb );
242 double z0 = q0 * r * r;
245 if ( l == 1 ) F = sqrt( ( 1 + z0 ) / ( 1 + z ) );
246 if ( l == 2 ) F = sqrt( ( 9 + 3 * z0 + z0 * z0 ) / ( 9 + 3 * z + z * z ) );
250void EvtDToKKpi::calt1(
double daug1[4],
double daug2[4],
double t1[4] ) {
253 for (
int i = 0; i < 4; i++ )
255 pa[i] = daug1[i] + daug2[i];
256 qa[i] = daug1[i] - daug2[i];
258 p = SCADot( pa, pa );
259 pq = SCADot( pa, qa );
261 for (
int i = 0; i < 4; i++ ) { t1[i] = qa[i] - tmp * pa[i]; }
263void EvtDToKKpi::calt2(
double daug1[4],
double daug2[4],
double t2[4][4] ) {
266 calt1( daug1, daug2, t1 );
267 r = SCADot( t1, t1 ) / 3.0;
268 for (
int i = 0; i < 4; i++ ) { pa[i] = daug1[i] + daug2[i]; }
269 p = SCADot( pa, pa );
270 for (
int i = 0; i < 4; i++ )
272 for (
int j = 0; j < 4; j++ )
273 { t2[i][j] = t1[i] * t1[j] - r * ( G[i][j] - pa[i] * pa[j] / p ); }
277void EvtDToKKpi::propagator(
double mass2,
double mass,
double width,
double sx,
283 b[1] = -mass * width;
284 Com_Divide( a, b, prop );
286double EvtDToKKpi::wid(
double mass2,
double mass,
double sa,
double sb,
double sc,
double r2,
289 double m = sqrt( sa );
290 double tmp = sb - sc;
291 double tmp1 = sa + tmp;
292 double q = fabs( 0.25 * tmp1 * tmp1 / sa - sb );
293 double tmp2 = mass2 + tmp;
294 double q0 = fabs( 0.25 * tmp2 * tmp2 / mass2 - sb );
298 if ( l == 0 ) { widm = sqrt(
t ) * mass / m; }
299 else if ( l == 1 ) { widm =
t * sqrt(
t ) * mass / m * ( 1 + z0 ) / ( 1 + z ); }
301 { widm =
t *
t * sqrt(
t ) * mass / m * ( 9 + 3 * z0 + z0 * z0 ) / ( 9 + 3 * z + z * z ); }
304double EvtDToKKpi::widl1(
double mass2,
double mass,
double sa,
double sb,
double sc,
307 double m = sqrt( sa );
308 double tmp = sb - sc;
309 double tmp1 = sa + tmp;
310 double q = fabs( 0.25 * tmp1 * tmp1 / sa - sb );
311 double tmp2 = mass2 + tmp;
312 double q0 = fabs( 0.25 * tmp2 * tmp2 / mass2 - sb );
315 double F = ( 1 + z0 ) / ( 1 + z );
317 widm =
t * sqrt(
t ) * mass / m * F;
320void EvtDToKKpi::propagatorRBW(
double mass,
double width,
double sa,
double sb,
double sc,
321 double r2,
int l,
double prop[2] ) {
324 double mass2 = mass * mass;
328 b[1] = -mass * width * wid( mass2, mass, sa, sb, sc, r2, l );
329 Com_Divide( a, b, prop );
332void EvtDToKKpi::propagatorFlatte(
double mass,
double width,
double sa,
double prop[2] ) {
334 double rhoPi[2], rhoKa[2];
336 q2_Pi = 0.25 * sa - mPi * mPi;
337 q2_Ka = 0.25 * sa - mKa * mKa;
341 rhoPi[0] = 2.0 * sqrt( q2_Pi / sa );
347 rhoPi[1] = 2.0 * sqrt( -q2_Pi / sa );
352 rhoKa[0] = 2.0 * sqrt( q2_Ka / sa );
358 rhoKa[1] = 2.0 * sqrt( -q2_Ka / sa );
364 b[0] = mass * mass - sa + 0.165 * rhoPi[1] + 0.69465 * rhoKa[1];
365 b[1] = -( 0.165 * rhoPi[0] + 0.69465 * rhoKa[0] );
366 Com_Divide( a, b, prop );
369void EvtDToKKpi::rhoab(
double sa,
double sb,
double sc,
double res[2] ) {
370 double tmp = sa + sb - sc;
371 double q = 0.25 * tmp * tmp / sa - sb;
374 res[0] = 2.0 * sqrt(
q / sa );
380 res[1] = 2.0 * sqrt( -
q / sa );
383void EvtDToKKpi::rho4Pi(
double sa,
double res[2] ) {
384 double temp = 1.0 - 0.3116765584 / sa;
387 res[0] = sqrt( temp ) / ( 1.0 +
exp( 9.8 - 3.5 * sa ) );
393 res[1] = sqrt( -temp ) / ( 1.0 +
exp( 9.8 - 3.5 * sa ) );
397void EvtDToKKpi::propagatorsigma500(
double sa,
double sb,
double sc,
double prop[2] ) {
398 double f = 0.5843 + 1.6663 * sa;
399 const double M = 0.9264;
400 const double mass2 = 0.85821696;
401 const double mpi2d2 = 0.00973989245;
402 double g1 =
f * ( sa - mpi2d2 ) / ( mass2 - mpi2d2 ) *
exp( ( mass2 - sa ) / 1.082 );
403 double rho1s[2], rho1M[2], rho2s[2], rho2M[2], rho1[2], rho2[2];
404 rhoab( sa, sb, sc, rho1s );
405 rhoab( mass2, sb, sc, rho1M );
407 rho4Pi( mass2, rho2M );
408 Com_Divide( rho1s, rho1M, rho1 );
409 Com_Divide( rho2s, rho2M, rho2 );
413 b[0] = mass2 - sa + M * (
g1 * rho1[1] + 0.0024 * rho2[1] );
414 b[1] = -M * (
g1 * rho1[0] + 0.0024 * rho2[0] );
415 Com_Divide( a, b, prop );
417void EvtDToKKpi::Flatte_rhoab(
double sa,
double sb,
double rho[2] ) {
418 double q = 1.0 - ( 4 * sb / sa );
432void EvtDToKKpi::propagator980(
double mass,
double sx,
double* sb,
double prop[2] ) {
434 double gpipi1 = 2.0 / 3.0 * 0.165;
435 double gpipi2 = 1.0 / 3.0 * 0.165;
436 double gKK1 = 0.5 * 0.69465;
437 double gKK2 = 0.5 * 0.69465;
439 double unit[2] = { 1.0 };
440 double ci[2] = { 0, 1 };
442 Flatte_rhoab( sx, sb[0], rho1 );
444 Flatte_rhoab( sx, sb[1], rho2 );
446 Flatte_rhoab( sx, sb[2], rho3 );
448 Flatte_rhoab( sx, sb[3], rho4 );
450 double tmp1[2] = { gpipi1, 0 };
452 double tmp2[2] = { gpipi2, 0 };
454 double tmp3[2] = { gKK1, 0 };
456 double tmp4[2] = { gKK2, 0 };
459 Com_Multi( tmp1, rho1, tmp11 );
460 Com_Multi( tmp2, rho2, tmp22 );
461 Com_Multi( tmp3, rho3, tmp33 );
462 Com_Multi( tmp4, rho4, tmp44 );
464 double tmp5[2] = { tmp11[0] + tmp22[0] + tmp33[0] + tmp44[0],
465 tmp11[1] + tmp22[1] + tmp33[1] + tmp44[1] };
467 Com_Multi( tmp5, ci, tmp51 );
468 double tmp6[2] = { mass * mass - sx - tmp51[0], -1.0 * tmp51[1] };
470 Com_Divide(
unit, tmp6, prop );
473void EvtDToKKpi::KPiSLASS(
double sa,
double sb,
double sc,
double prop[2] ) {
474 const double m1430 = 1.441;
475 const double sa0 = 2.076481;
476 const double w1430 = 0.193;
477 const double Lass1 = 0.25 / sa0;
478 double tmp = sb - sc;
479 double tmp1 = sa0 + tmp;
480 double q0 = fabs( Lass1 * tmp1 * tmp1 - sb );
481 double tmp2 = sa + tmp;
482 double qs = 0.25 * tmp2 * tmp2 / sa - sb;
483 double q = sqrt( qs );
484 double width = w1430 *
q * m1430 / sqrt( sa * q0 );
485 double temp_R = atan( m1430 * width / ( sa0 - sa ) );
486 if ( temp_R < 0 ) temp_R += math_pi;
487 double deltaR = -109.7 * math_pi / 180.0 + temp_R;
489 atan( 0.226 *
q / ( 2.0 - 3.8194 * qs ) );
490 if ( temp_F < 0 ) temp_F += math_pi;
491 double deltaF = 0.1 * math_pi / 180.0 + temp_F;
492 double deltaS = deltaR + 2.0 * deltaF;
493 double t1 = 0.96 *
sin( deltaF );
494 double t2 =
sin( deltaR );
496 CF[0] =
cos( deltaF );
497 CF[1] =
sin( deltaF );
498 CS[0] =
cos( deltaS );
499 CS[1] =
sin( deltaS );
500 prop[0] = t1 * CF[0] + t2 *
CS[0];
501 prop[1] = t1 * CF[1] + t2 *
CS[1];
504void EvtDToKKpi::propagatorGS(
double mass2,
double mass,
double width,
double sa,
double sb,
505 double sc,
double r2,
double prop[2] ) {
507 double tmp = sb - sc;
508 double tmp1 = sa + tmp;
509 double q2 = fabs( 0.25 * tmp1 * tmp1 / sa - sb );
511 double tmp2 = mass2 + tmp;
512 double q02 = fabs( 0.25 * tmp2 * tmp2 / mass2 - sb );
514 double q = sqrt( q2 );
515 double q0 = sqrt( q02 );
516 double m = sqrt( sa );
517 double q03 = q0 * q02;
518 double tmp3 = log( mass + 2 * q0 ) + 1.2926305904;
520 double h = GS1 *
q / m * ( log( m + 2 *
q ) + 1.2926305904 );
521 double h0 = GS1 * q0 / mass * tmp3;
522 double dh = h0 * ( 0.125 / q02 - 0.5 / mass2 ) + GS3 / mass2;
523 double d = GS2 / q02 * tmp3 + GS3 * mass / q0 - GS4 * mass / q03;
524 double f = mass2 / q03 * ( q2 * ( h - h0 ) + ( mass2 - sa ) * q02 * dh );
526 a[0] = 1.0 + d * width / mass;
528 b[0] = mass2 - sa + width *
f;
529 b[1] = -mass * width * widl1( mass2, mass, sa, sb, sc, r2 );
530 Com_Divide( a, b, prop );
533double EvtDToKKpi::DDalitz(
double P1[4],
double P2[4],
double P3[4],
int Ang,
double mass ) {
535 double temp_PDF, v_re;
538 double B[2], s1, s2, s3, sR, sD;
539 for (
int i = 0; i < 4; i++ )
541 pR[i] = P1[i] + P2[i];
542 pD[i] = pR[i] + P3[i];
544 s1 = SCADot( P1, P1 );
545 s2 = SCADot( P2, P2 );
546 s3 = SCADot( P3, P3 );
547 sR = SCADot( pR, pR );
548 sD = SCADot( pD, pD );
550 for (
int i = 0; i != 4; i++ )
552 for (
int j = 0; j != 4; j++ )
556 if ( i == 0 ) G[i][j] = 1;
570 B[0] = barrier( 1, sR, s1, s2, 3.0, mass );
571 B[1] = barrier( 1, sD, sR, s3, 5.0, mDp );
576 for (
int i = 0; i < 4; i++ ) { temp_PDF += t1[i] * T1[i] * G[i][i]; }
580 B[0] = barrier( 2, sR, s1, s2, 3.0, mass );
581 B[1] = barrier( 2, sD, sR, s3, 5.0, mDp );
582 double t2[4][4], T2[4][4];
586 for (
int i = 0; i < 4; i++ )
588 for (
int j = 0; j < 4; j++ ) { temp_PDF += t2[i][j] * T2[j][i] * G[i][i] * G[j][j]; }
591 v_re = temp_PDF *
B[0] *
B[1];
595void EvtDToKKpi::calEva(
double* K01,
double* K02,
double* Pi,
double* mass1,
double* width1,
596 double* amp,
double* phase,
int* g0,
int* spin,
int* modetype,
597 int nstates,
double& Result,
double* r0,
double* r1 ) {
599 double P12[4], P23[4], P13[4];
600 double cof[2], amp_PDF[2], PDF[2];
603 double s12, s13, s23;
604 for (
int i = 0; i < 4; i++ )
606 P12[i] = K01[i] + K02[i];
607 P13[i] = K01[i] + Pi[i];
608 P23[i] = K02[i] + Pi[i];
610 s1 = SCADot( K01, K01 );
611 s2 = SCADot( K02, K02 );
612 s3 = SCADot( Pi, Pi );
614 s12 = SCADot( P12, P12 );
615 s13 = SCADot( P13, P13 );
616 s23 = SCADot( P23, P23 );
618 double pro[2], temp_PDF, amp_tmp[2];
626 for (
int i = 0; i < nstates; i++ )
630 mass1sq = mass1[i] * mass1[i];
631 cof[0] = amp[i] *
cos( phase[i] );
632 cof[1] = amp[i] *
sin( phase[i] );
635 if ( modetype[i] == 12 )
637 temp_PDF = DDalitz( K01, K02, Pi, spin[i], mass1[i] );
638 if ( g0[i] == 1 ) propagatorRBW( mass1[i], width1[i], s12, s1, s2, rRes2, spin[i], pro );
639 if ( g0[i] == 4 ) propagatorFlatte( mass1[i], width1[i], s12, pro );
640 amp_tmp[0] = temp_PDF * pro[0];
641 amp_tmp[1] = temp_PDF * pro[1];
644 if ( modetype[i] == 13 )
646 temp_PDF = DDalitz( K01, Pi, K02, spin[i], mass1[i] );
647 if ( g0[i] == 1 ) propagatorRBW( mass1[i], width1[i], s13, s1, s3, rRes2, spin[i], pro );
648 if ( g0[i] == 3 ) KPiSLASS( s13, s1, s3, pro );
650 amp_tmp[0] = temp_PDF * pro[0];
651 amp_tmp[1] = temp_PDF * pro[1];
654 Com_Multi( amp_tmp, cof, amp_PDF );
655 PDF[0] += amp_PDF[0];
656 PDF[1] += amp_PDF[1];
658 double value = PDF[0] * PDF[0] + PDF[1] * PDF[1];
659 if ( value <= 0 ) value = 1e-20;
TFile f("ana_bhabha660a_dqa_mcPat_zy_old.root")
EvtComplex exp(const EvtComplex &c)
*******INTEGER m_nBinMax INTEGER m_NdiMax !No of bins in histogram for cell exploration division $ !Last vertex $ !Last active cell $ !Last cell in buffer $ !No of sampling when dividing cell $ !No of function total $ !Flag for random ceel for $ !Flag for type of for WtMax $ !Flag which decides whether vertices are included in the sampling $ entire domain is hyp !Maximum effective eevents per saves r n generator level $ !Flag for chat level in !Latex Output unit
double sin(const BesAngle a)
double cos(const BesAngle a)
****INTEGER imax DOUBLE PRECISION m_pi *DOUBLE PRECISION m_amfin DOUBLE PRECISION m_Chfin DOUBLE PRECISION m_Xenph DOUBLE PRECISION m_sinw2 DOUBLE PRECISION m_GFermi DOUBLE PRECISION m_MfinMin DOUBLE PRECISION m_ta2 INTEGER m_out INTEGER m_KeyFSR INTEGER m_KeyQCD *COMMON c_Semalib $ !copy of input $ !CMS energy $ !beam mass $ !final mass $ !beam charge $ !final charge $ !smallest final mass $ !Z mass $ !Z width $ !EW mixing angle $ !Gmu Fermi $ alphaQED at q
void getName(std::string &name)
void decay(EvtParticle *p)
void checkSpinDaughter(int d1, EvtSpinType::spintype sp)
void checkSpinParent(EvtSpinType::spintype sp)
void setProbMax(double prbmx)
void checkNDaug(int d1, int d2=-1)
void checkNArg(int a1, int a2=-1, int a3=-1, int a4=-1)
void setProb(double prob)
const EvtVector4R & getP4() const
EvtParticle * getDaug(int i)
double initializePhaseSpace(int numdaughter, EvtId *daughters, double poleSize=-1., int whichTwo1=0, int whichTwo2=1)