57 for (
int i = 0; i < 4; i++ )
59 for (
int j = 0; j < 4; j++ )
61 if ( i != j ) { g_uv.push_back( 0.0 ); }
62 else if ( i < 3 ) { g_uv.push_back( -1.0 ); }
63 else if ( i == 3 ) { g_uv.push_back( 1.0 ); }
68 for (
int i = 0; i < 4; i++ )
70 for (
int j = 0; j < 4; j++ )
72 for (
int k = 0; k < 4; k++ )
74 for (
int l = 0; l < 4; l++ )
76 if ( i == j || i == k || i == l || j == k || j == l || k == l )
77 { epsilon_uvmn.push_back( 0.0 ); }
80 if ( i == 0 && j == 1 && k == 2 && l == 3 ) epsilon_uvmn.push_back( 1.0 );
81 if ( i == 0 && j == 1 && k == 3 && l == 2 ) epsilon_uvmn.push_back( -1.0 );
82 if ( i == 0 && j == 2 && k == 1 && l == 3 ) epsilon_uvmn.push_back( -1.0 );
83 if ( i == 0 && j == 2 && k == 3 && l == 1 ) epsilon_uvmn.push_back( 1.0 );
84 if ( i == 0 && j == 3 && k == 1 && l == 2 ) epsilon_uvmn.push_back( 1.0 );
85 if ( i == 0 && j == 3 && k == 2 && l == 1 ) epsilon_uvmn.push_back( -1.0 );
87 if ( i == 1 && j == 0 && k == 2 && l == 3 ) epsilon_uvmn.push_back( -1.0 );
88 if ( i == 1 && j == 0 && k == 3 && l == 2 ) epsilon_uvmn.push_back( 1.0 );
89 if ( i == 1 && j == 2 && k == 0 && l == 3 ) epsilon_uvmn.push_back( 1.0 );
90 if ( i == 1 && j == 2 && k == 3 && l == 0 ) epsilon_uvmn.push_back( -1.0 );
91 if ( i == 1 && j == 3 && k == 0 && l == 2 ) epsilon_uvmn.push_back( -1.0 );
92 if ( i == 1 && j == 3 && k == 2 && l == 0 ) epsilon_uvmn.push_back( 1.0 );
94 if ( i == 2 && j == 0 && k == 1 && l == 3 ) epsilon_uvmn.push_back( 1.0 );
95 if ( i == 2 && j == 0 && k == 3 && l == 1 ) epsilon_uvmn.push_back( -1.0 );
96 if ( i == 2 && j == 1 && k == 0 && l == 3 ) epsilon_uvmn.push_back( -1.0 );
97 if ( i == 2 && j == 1 && k == 3 && l == 0 ) epsilon_uvmn.push_back( 1.0 );
98 if ( i == 2 && j == 3 && k == 0 && l == 1 ) epsilon_uvmn.push_back( 1.0 );
99 if ( i == 2 && j == 3 && k == 1 && l == 0 ) epsilon_uvmn.push_back( -1.0 );
101 if ( i == 3 && j == 0 && k == 1 && l == 2 ) epsilon_uvmn.push_back( -1.0 );
102 if ( i == 3 && j == 0 && k == 2 && l == 1 ) epsilon_uvmn.push_back( 1.0 );
103 if ( i == 3 && j == 1 && k == 0 && l == 2 ) epsilon_uvmn.push_back( 1.0 );
104 if ( i == 3 && j == 1 && k == 2 && l == 0 ) epsilon_uvmn.push_back( -1.0 );
105 if ( i == 3 && j == 2 && k == 0 && l == 1 ) epsilon_uvmn.push_back( -1.0 );
106 if ( i == 3 && j == 2 && k == 1 && l == 0 ) epsilon_uvmn.push_back( 1.0 );
117 rRes = 3.0 * 0.197321;
122 m2_Pi0 = m_Pi0 * m_Pi0;
124 m0_rho7700 = 0.77526;
127 m0_rho770p = 0.77511;
178 for (
int i = 0; i < _nd; i++ )
183 double prob = AmplitudeSquare( charm, tagmode );
188void EvtD0Topipipi0::setInput(
double* pip,
double* pim,
double* pi0 ) {
192 p4_Pip.push_back( pip[0] );
193 p4_Pim.push_back( pim[0] );
194 p4_Pi0.push_back( pi0[0] );
195 p4_Pip.push_back( pip[1] );
196 p4_Pim.push_back( pim[1] );
197 p4_Pi0.push_back( pi0[1] );
198 p4_Pip.push_back( pip[2] );
199 p4_Pim.push_back( pim[2] );
200 p4_Pi0.push_back( pi0[2] );
201 p4_Pip.push_back( pip[3] );
202 p4_Pim.push_back( pim[3] );
203 p4_Pi0.push_back( pi0[3] );
206vector<double> EvtD0Topipipi0::sum_tensor( vector<double> pa, vector<double> pb ) {
207 if ( pa.size() != pb.size() )
209 cout <<
"error sum tensor" << endl;
214 for (
int i = 0; i < pa.size(); i++ )
216 double sum = pa[i] + pb[i];
217 temp.push_back( sum );
222double EvtD0Topipipi0::contract_11_0( vector<double> pa, vector<double> pb ) {
223 if ( pa.size() != pb.size() || pa.size() != 4 )
225 cout <<
"error contract 11->0" << endl;
228 double temp = pa[3] * pb[3] - pa[0] * pb[0] - pa[1] * pb[1] - pa[2] * pb[2];
232vector<double> EvtD0Topipipi0::contract_21_1( vector<double> pa, vector<double> pb ) {
233 if ( pa.size() != 16 || pb.size() != 4 )
235 cout <<
"error contract 21->1" << endl;
240 for (
int i = 0; i < 4; i++ )
243 for (
int j = 0; j < 4; j++ )
246 sum += pa[idx] * pb[j] * g_uv[4 * j + j];
248 temp.push_back( sum );
253double EvtD0Topipipi0::contract_22_0( vector<double> pa, vector<double> pb ) {
254 if ( pa.size() != pb.size() || pa.size() != 16 )
256 cout <<
"error contract 22->0" << endl;
260 for (
int i = 0; i < 4; i++ )
262 for (
int j = 0; j < 4; j++ )
265 temp += pa[idx] * pb[idx] * g_uv[4 * i + i] * g_uv[4 * j + j];
271vector<double> EvtD0Topipipi0::contract_31_2( vector<double> pa, vector<double> pb ) {
272 if ( pa.size() != 64 || pb.size() != 4 )
274 cout <<
"error contract 31->2" << endl;
279 for (
int i = 0; i < 16; i++ )
282 for (
int j = 0; j < 4; j++ )
285 sum += pa[idx] * pb[j] * g_uv[4 * j + j];
287 temp.push_back( sum );
292vector<double> EvtD0Topipipi0::contract_41_3( vector<double> pa, vector<double> pb ) {
293 if ( pa.size() != 256 || pb.size() != 4 )
295 cout <<
"error contract 41->3" << endl;
300 for (
int i = 0; i < 64; i++ )
303 for (
int j = 0; j < 4; j++ )
306 sum += pa[idx] * pb[j] * g_uv[4 * j + j];
308 temp.push_back( sum );
313vector<double> EvtD0Topipipi0::contract_42_2( vector<double> pa, vector<double> pb ) {
314 if ( pa.size() != 256 || pb.size() != 16 )
316 cout <<
"error contract 42->2" << endl;
321 for (
int i = 0; i < 16; i++ )
324 for (
int j = 0; j < 4; j++ )
326 for (
int k = 0; k < 4; k++ )
328 int idxa = i * 16 + j * 4 + k;
329 int idxb = j * 4 + k;
330 sum += pa[idxa] * pb[idxb] * g_uv[4 * j + j] * g_uv[4 * k + k];
333 temp.push_back( sum );
339vector<double> EvtD0Topipipi0::contract_22_2( vector<double> pa, vector<double> pb ) {
340 if ( pa.size() != 16 || pb.size() != 16 )
342 cout <<
"error contract 42->2" << endl;
347 for (
int i = 0; i < 4; i++ )
349 for (
int j = 0; j < 4; j++ )
352 for (
int k = 0; k < 4; k++ )
354 int idxa = i * 4 + k;
355 int idxb = j * 4 + k;
356 sum += pa[idxa] * pb[idxb] * g_uv[4 * k + k];
358 temp.push_back( sum );
398vector<double> EvtD0Topipipi0::OrbitalTensors( vector<double> pa, vector<double> pb,
399 vector<double> pc,
double r,
int rank ) {
401 if ( pa.size() != 4 || pb.size() != 4 || pc.size() != 4 )
403 cout <<
"Error: pa, pb, pc" << endl;
408 cout <<
"Error: L<0 !!!" << endl;
416 for (
int i = 0; i < 4; i++ )
418 double temp = pb[i] - pc[i];
419 mr.push_back( temp );
423 double msa = contract_11_0( pa, pa );
424 double msb = contract_11_0( pb, pb );
425 double msc = contract_11_0( pc, pc );
428 double top = msa + msb - msc;
429 double Q2abc = top * top / ( 4.0 * msa ) - msb;
432 double Q_0 = 0.197321f / r;
433 double Q_02 = Q_0 * Q_0;
434 double Q_04 = Q_02 * Q_02;
438 double Q4abc = Q2abc * Q2abc;
442 double mB1 = sqrt( 2.0f / ( Q2abc + Q_02 ) );
443 double mB2 = sqrt( 13.0f / ( Q4abc + ( 3.0f * Q_02 ) * Q2abc + 9.0f * Q_04 ) );
449 vector<double> proj_uv;
451 for (
int i = 0; i < 4; i++ )
453 for (
int j = 0; j < 4; j++ )
456 double temp = -g_uv[idx] + pa[i] * pa[j] / msa;
457 proj_uv.push_back( temp );
475 for (
int i = 0; i < 4; i++ )
478 for (
int j = 0; j < 4; j++ )
481 temp += -proj_uv[idx] * mr[j] * g_uv[j * 4 + j];
483 t_u.push_back( temp );
484 Bt_u.push_back( temp * mB1 );
486 if ( rank == 1 )
return Bt_u;
488 double t_u2 = contract_11_0( t_u, t_u );
490 vector<double> Bt_uv;
492 for (
int i = 0; i < 4; i++ )
494 for (
int j = 0; j < 4; j++ )
497 double temp = t_u[i] * t_u[j] + ( 1.0 / 3.0 ) * proj_uv[idx] * t_u2;
498 Bt_uv.push_back( temp * mB2 );
501 if ( rank == 2 )
return Bt_uv;
505 cout <<
"rank>2: please add it by yourself!!!" << endl;
509 std::cerr << __FILE__ <<
":" << __LINE__ <<
": should not reach here" << std::endl;
514vector<double> EvtD0Topipipi0::ProjectionTensors( vector<double> pa,
int rank ) {
516 if ( pa.size() != 4 )
518 cout <<
"Error: pa" << endl;
523 cout <<
"Error: L<0 !!!" << endl;
527 double msa = contract_11_0( pa, pa );
530 vector<double> proj_uv;
532 for (
int i = 0; i < 4; i++ )
534 for (
int j = 0; j < 4; j++ )
537 double temp = -g_uv[idx] + pa[i] * pa[j] / msa;
538 proj_uv.push_back( temp );
550 else if ( rank == 1 ) {
return proj_uv; }
551 else if ( rank == 2 )
553 vector<double> proj_uvmn;
555 for (
int i = 0; i < 4; i++ )
557 for (
int j = 0; j < 4; j++ )
559 for (
int k = 0; k < 4; k++ )
561 for (
int l = 0; l < 4; l++ )
564 int idx1_1 = 4 * i + k;
565 int idx1_2 = 4 * i + l;
566 int idx1_3 = 4 * i + j;
568 int idx2_1 = 4 * j + l;
569 int idx2_2 = 4 * j + k;
570 int idx2_3 = 4 * k + l;
572 double temp = ( 1.0 / 2.0 ) * ( proj_uv[idx1_1] * proj_uv[idx2_1] +
573 proj_uv[idx1_2] * proj_uv[idx2_2] ) -
574 ( 1.0 / 3.0 ) * proj_uv[idx1_3] * proj_uv[idx2_3];
575 proj_uvmn.push_back( temp );
584 cout <<
"rank>2: please add it by yourself!!!" << endl;
588double EvtD0Topipipi0::fundecaymomentum(
double mr2,
double m1_2,
double m2_2 ) {
589 double mr = sqrt( mr2 );
590 double poly = mr2 * mr2 + m1_2 * m1_2 + m2_2 * m2_2 - 2 * m1_2 * mr2 - 2 * m2_2 * mr2 -
592 double ret = sqrt( poly ) / ( 2 * mr );
599complex<double> EvtD0Topipipi0::breitwigner(
double mx2,
double mr,
double wr ) {
603 double mr2 = mr * mr;
604 double diff = mr2 - mx2;
605 double denom = diff * diff + wr * wr * mr2;
613 output_x = diff / denom;
614 output_y = wr * mr / denom;
621 complex<double>
output( output_x, output_y );
626double EvtD0Topipipi0::h(
double m,
double q ) {
627 double h = 2.0 / math_pi *
q / m * log( ( m + 2.0 *
q ) / ( 2.0 * mass_Pion ) );
631double EvtD0Topipipi0::dh(
double m0,
double q0 ) {
632 double dh = h( m0, q0 ) * ( 1.0 / ( 8.0 * q0 * q0 ) - 1.0 / ( 2.0 * m0 * m0 ) ) +
633 1.0 / ( 2.0 * math_pi * m0 * m0 );
637double EvtD0Topipipi0::f(
double m0,
double sx,
double q0,
double q ) {
638 double m = sqrt( sx );
640 m0 * m0 / ( q0 * q0 * q0 ) *
641 (
q *
q * ( h( m,
q ) - h( m0, q0 ) ) + ( m0 * m0 - sx ) * q0 * q0 * dh( m0, q0 ) );
645double EvtD0Topipipi0::d(
double m0,
double q0 ) {
646 double d = 3.0 / math_pi * mass_Pion * mass_Pion / ( q0 * q0 ) *
647 log( ( m0 + 2.0 * q0 ) / ( 2.0 * mass_Pion ) ) +
648 m0 / ( 2.0 * math_pi * q0 ) -
649 ( mass_Pion * mass_Pion * m0 ) / ( math_pi * q0 * q0 * q0 );
653double EvtD0Topipipi0::fundecaymomentum2(
double mr2,
double m1_2,
double m2_2 ) {
654 double mr = sqrt( mr2 );
655 double poly = mr2 * mr2 + m1_2 * m1_2 + m2_2 * m2_2 - 2 * m1_2 * mr2 - 2 * m2_2 * mr2 -
657 double ret = poly / ( 4.0f * mr2 );
658 if ( poly < 0 ) ret = 0.0f;
662double EvtD0Topipipi0::wid(
double mass,
double sa,
double sb,
double sc,
double r,
int l ) {
665 double m = sqrt( sa );
666 double q = fundecaymomentum2( sa, sb, sc );
667 double q0 = fundecaymomentum2( sa0, sb, sc );
669 double z =
q * r * r;
670 double z0 = q0 * r * r;
672 if ( l == 0 ) F = 1.0;
673 if ( l == 1 ) F = sqrt( ( 1.0 + z0 ) / ( 1.0 + z ) );
674 if ( l == 2 ) F = sqrt( ( 9.0 + 3.0 * z0 + z0 * z0 ) / ( 9.0 + 3.0 * z + z * z ) );
676 F = sqrt( ( 225.0 + 45.0 * z0 + 6.0 * z0 * z0 + z0 * z0 * z0 ) /
677 ( 225.0 + 45.0 * z + 6.0 * z * z + z * z * z ) );
680 ( 11025.0 + 1575.0 * z0 + 135.0 * z0 * z0 + 10.0 * z0 * z0 * z0 + z0 * z0 * z0 * z0 ) /
681 ( 11025.0 + 1575.0 * z + 135.0 * z * z + 10.0 * z * z * z + z * z * z * z ) );
682 double t = sqrt(
q / q0 );
686 for ( i = 0; i < ( 2 * l + 1 ); i++ ) { widm *=
t; }
687 widm *= (
mass / m * F * F );
692complex<double> EvtD0Topipipi0::GS(
double mx2,
double mr,
double wr,
double m1_2,
double m2_2,
695 double mr2 = mr * mr;
696 double q = fundecaymomentum( mx2, m1_2, m2_2 );
697 double q0 = fundecaymomentum( mr2, m1_2, m2_2 );
698 double numer = 1.0 + d( mr, q0 ) * wr / mr;
699 double denom_real = mr2 - mx2 + wr * f( mr, mx2, q0,
q );
700 double denom_imag = mr * wr * wid( mr, mx2, m1_2, m2_2, r, l );
702 double denom = denom_real * denom_real + denom_imag * denom_imag;
703 double output_x = denom_real * numer / denom;
704 double output_y = denom_imag * numer / denom;
706 complex<double>
output( output_x, output_y );
710complex<double> EvtD0Topipipi0::irho(
double mr2,
double m1_2,
double m2_2 ) {
711 double mr = sqrt( mr2 );
712 double poly = mr2 * mr2 + m1_2 * m1_2 + m2_2 * m2_2 - 2 * m1_2 * mr2 - 2 * m2_2 * mr2 -
718 ret_real = 2.0f * sqrt( poly ) / ( 2.0f * mr2 );
724 ret_imag = 2.0f * sqrt( -1.0f * poly ) / ( 2.0f * mr2 );
726 complex<double> ret( ret_real, ret_imag );
730complex<double> EvtD0Topipipi0::Flatte(
double mx2,
double mr,
double g1,
double g2,
731 double m1a,
double m1b,
double m2a,
double m2b ) {
733 double mr2 = mr * mr;
734 double diff = mr2 - mx2;
735 double g22 = g2 *
g1;
736 complex<double> ps1 = irho( mx2, m1a * m1a, m1b * m1b );
737 complex<double> ps2 = irho( mx2, m2a * m2a, m2b * m2b );
738 complex<double> iws =
g1 * ps1 + g22 * ps2;
740 double denom_real = diff + iws.imag();
741 double denom_imag = iws.real();
742 double denom = denom_real * denom_real + denom_imag * denom_imag;
744 double output_x = denom_real / denom;
745 double output_y = denom_imag / denom;
747 complex<double>
output( output_x, output_y );
751complex<double> EvtD0Topipipi0::RBW(
double mx2,
double mr,
double wr,
double m1_2,
752 double m2_2,
double r,
int l ) {
753 double mx = sqrt( mx2 );
754 double mr2 = mr * mr;
755 double denom_real = mr2 - mx2;
756 double denom_imag = 0;
757 if ( m1_2 > 0 && m2_2 > 0 )
759 denom_imag = mr * wr * wid( mr, mx2, m1_2, m2_2, r, l );
761 else { denom_imag = mr * wr; }
763 double denom = denom_real * denom_real + denom_imag * denom_imag;
764 double output_x = denom_real / denom;
765 double output_y = denom_imag / denom;
767 complex<double>
output( output_x, output_y );
772double EvtD0Topipipi0::rho22(
double sc ) {
774 3.70024e-18, 8.52763e-15, 1.87159e-13, 1.3311e-12, 5.61842e-12, 1.75224e-11,
775 4.48597e-11, 9.99162e-11, 2.00641e-10, 3.71995e-10, 6.47093e-10, 1.06886e-09,
776 1.69124e-09, 2.58031e-09, 3.8168e-09, 5.49601e-09, 7.72996e-09, 1.06509e-08,
777 1.44078e-08, 1.91741e-08, 2.51445e-08, 3.25345e-08, 4.15946e-08, 5.25949e-08,
778 6.58316e-08, 8.16443e-08, 1.00389e-07, 1.22455e-07, 1.48291e-07, 1.78348e-07,
779 2.1313e-07, 2.53192e-07, 2.99086e-07, 3.51462e-07, 4.10993e-07, 4.78349e-07,
780 5.54327e-07, 6.3972e-07, 7.35316e-07, 8.42099e-07, 9.61004e-07, 1.09295e-06,
781 1.2391e-06, 1.40051e-06, 1.57824e-06, 1.77367e-06, 1.98805e-06, 2.22257e-06,
782 2.47877e-06, 2.7581e-06, 3.06186e-06, 3.39182e-06, 3.74971e-06, 4.137e-06,
783 4.5555e-06, 5.00725e-06, 5.4939e-06, 6.01725e-06, 6.57992e-06, 7.18371e-06,
784 7.83044e-06, 8.52301e-06, 9.26342e-06, 1.00535e-05, 1.08967e-05, 1.17953e-05,
785 1.27514e-05, 1.37679e-05, 1.48482e-05, 1.59943e-05, 1.72088e-05, 1.84961e-05,
786 1.98586e-05, 2.12987e-05, 2.28207e-05, 2.44279e-05, 2.61228e-05, 2.79084e-05,
787 2.97906e-05, 3.17718e-05, 3.38544e-05, 3.60443e-05, 3.8345e-05, 4.07591e-05,
788 4.32903e-05, 4.59459e-05, 4.87285e-05, 5.16403e-05, 5.46887e-05, 5.7878e-05,
789 6.12111e-05, 6.46908e-05, 6.83274e-05, 7.21231e-05, 7.60817e-05, 8.0208e-05,
790 8.45102e-05, 8.89919e-05, 9.36544e-05, 9.85082e-05, 0.000103559, 0.000108812,
791 0.000114267, 0.000119938, 0.000125827, 0.00013194, 0.000138278, 0.000144857,
792 0.000151681, 0.000158752, 0.000166074, 0.000173663, 0.000181521, 0.000189652,
793 0.000198059, 0.000206761, 0.000215761, 0.000225063, 0.00023467, 0.000244599,
794 0.000254855, 0.00026544, 0.000276357, 0.000287629, 0.00029926, 0.000311253,
795 0.000323609, 0.000336351, 0.000349483, 0.000363009, 0.000376926, 0.000391264,
796 0.000406029, 0.000421225, 0.000436848, 0.000452921, 0.000469458, 0.000486461,
797 0.00050393, 0.00052187, 0.000540322, 0.000559278, 0.000578746, 0.00059872,
798 0.000619236, 0.0006403, 0.000661911, 0.000684074, 0.000706799, 0.000730127,
799 0.00075405, 0.000778569, 0.000803686, 0.000829443, 0.000855839, 0.000882879,
800 0.000910561, 0.000938898, 0.000967939, 0.000997674, 0.00102811, 0.00105923,
801 0.0010911, 0.0011237, 0.00115706, 0.00119117, 0.00122601, 0.00126168,
802 0.00129815, 0.00133543, 0.00137351, 0.00141242, 0.00145219, 0.00149283,
803 0.00153434, 0.0015767, 0.00161995, 0.00166415, 0.00170928, 0.00175534,
804 0.00180232, 0.00185028, 0.00189924, 0.00194919, 0.00200014, 0.00205207,
805 0.00210503, 0.0021591, 0.00221421, 0.0022704, 0.00232766, 0.00238602,
806 0.00244554, 0.00250619, 0.00256799, 0.0026309, 0.002695, 0.00276033,
807 0.00282689, 0.00289467, 0.00296367, 0.00303389, 0.00310543, 0.0031783,
808 0.00325244, 0.0033279, 0.0034046, 0.00348275, 0.00356229, 0.00364322,
809 0.00372555, 0.00380924, 0.00389438, 0.00398104, 0.00406914, 0.00415877,
810 0.00424985, 0.00434235, 0.00443651, 0.00453224, 0.00462954, 0.00472848,
811 0.00482894, 0.00493102, 0.00503483, 0.00514029, 0.00524749, 0.0053563,
812 0.00546675, 0.00557905, 0.0056931, 0.00580901, 0.0059267, 0.00604613,
813 0.00616735, 0.00629049, 0.00641557, 0.00654254, 0.00667142, 0.00680216,
814 0.00693472, 0.00706946, 0.00720621, 0.00734497, 0.0074858, 0.00762855,
815 0.00777338, 0.00792036, 0.00806957, 0.00822087, 0.00837426, 0.00852982,
816 0.0086875, 0.00884756, 0.00900991, 0.00917447, 0.00934137, 0.00951052,
817 0.00968194, 0.0098558, 0.010032, 0.0102108, 0.0103919, 0.0105754,
818 0.0107612, 0.0109496, 0.0111406, 0.0113343, 0.0115305, 0.0117293,
819 0.0119303, 0.0121343, 0.0123409, 0.0125502, 0.0127623, 0.0129771,
820 0.0131944, 0.0134145, 0.0136376, 0.0138636, 0.0140924, 0.0143241,
821 0.0145587, 0.0147959, 0.0150363, 0.0152797, 0.0155262, 0.0157758,
822 0.0160283, 0.0162838, 0.0165421, 0.016804, 0.0170691, 0.0173374,
823 0.0176087, 0.0178835, 0.0181612, 0.0184423, 0.0187269, 0.0190149,
824 0.0193063, 0.0196009, 0.0198991, 0.0202003, 0.0205052, 0.0208137,
825 0.0211259, 0.0214418, 0.0217611, 0.0220841, 0.0224105, 0.0227406,
826 0.0230746, 0.0234125, 0.0237542, 0.0240996, 0.0244486, 0.0248012,
827 0.025158, 0.0255188, 0.0258837, 0.0262527, 0.0266256, 0.0270025,
828 0.0273833, 0.027768, 0.0281572, 0.0285505, 0.0289483, 0.0293503,
829 0.0297564, 0.0301665, 0.0305808, 0.0309997, 0.0314231, 0.0318511,
830 0.0322835, 0.0327205, 0.0331616, 0.0336073, 0.0340576, 0.0345128,
831 0.0349727, 0.0354373, 0.0359066, 0.0363807, 0.0368589, 0.0373419,
832 0.0378302, 0.0383234, 0.0388218, 0.0393252, 0.0398336, 0.040347,
833 0.0408652, 0.041388, 0.0419165, 0.0424502, 0.0429893, 0.0435338,
834 0.0440833, 0.044638, 0.0451976, 0.0457627, 0.0463338, 0.0469103,
835 0.047492, 0.0480797, 0.0486729, 0.0492716, 0.0498757, 0.0504852,
836 0.0511009, 0.0517229, 0.0523503, 0.0529838, 0.0536231, 0.0542678,
837 0.054918, 0.0555743, 0.0562372, 0.0569065, 0.0575818, 0.0582634,
838 0.0589511, 0.0596454, 0.0603451, 0.061051, 0.0617635, 0.0624826,
839 0.0632084, 0.0639409, 0.06468, 0.0654254, 0.0661772, 0.0669346,
840 0.0676994, 0.0684714, 0.0692503, 0.0700354, 0.0708285, 0.0716277,
841 0.0724347, 0.0732479, 0.0740671, 0.0748947, 0.0757299, 0.0765715,
842 0.0774207, 0.0782771, 0.0791407, 0.0800119, 0.0808897, 0.0817743,
843 0.0826672, 0.0835684, 0.0844769, 0.0853938, 0.0863179, 0.0872493,
844 0.0881882, 0.0891349, 0.090089, 0.0910523, 0.0920236, 0.093002,
845 0.0939894, 0.094985, 0.0959887, 0.0970003, 0.0980191, 0.0990454,
846 0.100081, 0.101126, 0.10218, 0.103242, 0.104312, 0.105392,
847 0.10648, 0.107576, 0.10868, 0.109793, 0.110916, 0.112048,
848 0.113188, 0.114339, 0.115498, 0.116666, 0.117843, 0.119028,
849 0.120223, 0.121427, 0.122641, 0.123865, 0.125098, 0.126342,
850 0.127595, 0.128857, 0.130128, 0.131409, 0.132701, 0.134002,
851 0.135314, 0.136635, 0.137966, 0.139308, 0.14066, 0.142022,
852 0.143394, 0.144774, 0.146166, 0.14757, 0.148985, 0.15041,
853 0.151845, 0.153291, 0.154749, 0.156215, 0.157694, 0.159182,
854 0.160682, 0.162194, 0.163718, 0.165251, 0.166797, 0.168354,
855 0.169921, 0.1715, 0.17309, 0.17469, 0.176304, 0.177929,
856 0.179566, 0.181216, 0.182878, 0.184553, 0.186238, 0.187934,
857 0.189642, 0.191362, 0.193096, 0.194842, 0.196602, 0.198374,
858 0.200158, 0.201954, 0.203764, 0.205586, 0.207421, 0.209266,
859 0.211124, 0.212997, 0.214882, 0.216783, 0.218697, 0.220624,
860 0.222565, 0.224518, 0.226486, 0.228466, 0.230458, 0.232463,
861 0.234484, 0.23652, 0.238569, 0.240633, 0.242711, 0.244803,
862 0.246909, 0.249031, 0.251165, 0.253313, 0.255475, 0.257649,
863 0.259841, 0.262051, 0.264274, 0.266514, 0.268768, 0.271036,
864 0.273319, 0.275618, 0.277932, 0.280259, 0.282602, 0.28496,
865 0.287338, 0.28973, 0.292138, 0.294563, 0.297003, 0.299458,
866 0.30193, 0.304417, 0.306919, 0.309437, 0.311972, 0.314526,
867 0.317095, 0.319684, 0.322289, 0.324911, 0.327551, 0.330205,
868 0.332876, 0.335567, 0.338271, 0.340993, 0.343736, 0.346496,
869 0.349272, 0.352065, 0.354878, 0.35771, 0.360561, 0.363426,
870 0.366311, 0.369212, 0.372128, 0.375067, 0.378027, 0.381006,
871 0.384001, 0.387014, 0.39005, 0.393106, 0.396181, 0.399271,
872 0.402384, 0.405513, 0.408661, 0.41183, 0.41502, 0.418233,
873 0.421462, 0.424709, 0.42798, 0.43127, 0.434583, 0.437914,
874 0.441267, 0.444637, 0.448022, 0.451434, 0.454868, 0.458328,
875 0.461805, 0.465302, 0.468821, 0.472364, 0.475928, 0.47951,
876 0.483119, 0.486748, 0.490397, 0.494066, 0.497758, 0.501477,
877 0.505217, 0.508977, 0.512762, 0.516567, 0.520394, 0.524247,
878 0.528125, 0.532027, 0.535947, 0.53989, 0.543852, 0.547844,
879 0.551863, 0.555904, 0.559966, 0.56406, 0.568177, 0.572312,
880 0.576471, 0.580662, 0.584875, 0.58911, 0.593373, 0.597653,
881 0.601965, 0.606301, 0.610663, 0.615051, 0.619465, 0.623907,
882 0.62837, 0.632863, 0.637383, 0.641924, 0.646494, 0.651091,
883 0.655708, 0.660356, 0.665027, 0.669732, 0.674464, 0.679227,
884 0.684016, 0.688827, 0.693664, 0.698532, 0.703428, 0.708353,
885 0.713307, 0.718283, 0.72329, 0.728322, 0.733387, 0.738479,
886 0.743605, 0.748763, 0.753949, 0.759163, 0.764407, 0.769674,
887 0.774973, 0.780311, 0.78567, 0.791057, 0.796476, 0.801922,
888 0.8074, 0.812919, 0.818466, 0.824044 };
890 double m2 = 0.13957 * 0.13957;
891 double smin = ( 0.13957 * 4 ) * ( 0.13957 * 4 );
893 int od = ( sc - 0.312 ) / dh;
894 double sc_m = 0.312 + od * dh;
896 if ( sc >= 0.312 && sc < 1 )
897 { rhouse = ( ( sc - sc_m ) / dh ) * ( rho[od + 1] - rho[od] ) + rho[od]; }
898 else if ( sc < 0.312 && sc >= smin )
899 { rhouse = ( ( sc - smin ) / ( 0.312 - smin ) ) * rho[0]; }
903 rhouse = sqrt( 1 - 16 *
m2 / sc );
913 double mpi = 0.13957;
914 if ( i == j && i == 0 )
916 double m2 = 0.13957 * 0.13957;
917 if ( ( 1 - ( 4 *
m2 ) /
s ) > 0 )
919 rhoijx = sqrt( 1.0f - ( 4 *
m2 ) /
s );
924 rhoijy = sqrt( ( 4 *
m2 ) /
s - 1.0f );
928 if ( i == j && i == 1 )
930 double m2 = 0.493677 * 0.493677;
931 if ( ( 1 - ( 4 *
m2 ) /
s ) > 0 )
933 rhoijx = sqrt( 1.0f - ( 4 *
m2 ) /
s );
938 rhoijy = sqrt( ( 4 *
m2 ) /
s - 1.0f );
942 if ( i == j && i == 2 )
947 if ( i == j && i == 3 )
949 double m2 = 0.547862 * 0.547862;
950 if ( ( 1 - ( 4 *
m2 ) /
s ) > 0 )
952 rhoijx = sqrt( 1.0f - ( 4 *
m2 ) /
s );
957 rhoijy = sqrt( ( 4 *
m2 ) /
s - 1.0f );
961 if ( i == j && i == 4 )
963 double m_1 = 0.547862;
964 double m_2 = 0.95778;
965 double mp2 = ( m_1 + m_2 ) * ( m_1 + m_2 );
966 double mm2 = ( m_1 - m_2 ) * ( m_1 - m_2 );
967 if ( ( 1 - mp2 /
s ) > 0 )
969 rhoijx = sqrt( 1.0f - mp2 /
s );
974 rhoijy = sqrt( mp2 /
s - 1.0f );
984 complex<double> rhoij( rhoijx, rhoijy );
993 double mpi = 0.13957;
994 double m[5] = { 0.65100, 1.20360, 1.55817, 1.21000, 1.82206 };
996 double g1[5] = { 0.22889, -0.55377, 0.00000, -0.39899, -0.34639 };
997 double g2[5] = { 0.94128, 0.55095, 0.00000, 0.39065, 0.31503 };
998 double g3[5] = { 0.36856, 0.23888, 0.55639, 0.18340, 0.18681 };
999 double g4[5] = { 0.33650, 0.40907, 0.85679, 0.19906, -0.00984 };
1000 double g5[5] = { 0.18171, -0.17558, -0.79658, -0.00355, 0.22358 };
1002 double f1[5] = { 0.23399, 0.15044, -0.20545, 0.32825, 0.35412 };
1006 double down[5] = { 0, 0, 0, 0, 0 };
1007 double upreal[5] = { 0, 0, 0, 0, 0 };
1008 double upimag[5] = { 0, 0, 0, 0, 0 };
1010 for (
int k = 0; k < 5; k++ )
1017 double dm2 = m[k] * m[k] -
s;
1018 if ( fabs( dm2 ) <
eps && dm2 <= 0 ) dm2 = -
eps;
1019 if ( fabs( dm2 ) <
eps && dm2 > 0 ) dm2 =
eps;
1020 upreal[k] = 1.0f / dm2;
1024 double tmp1x =
g1[i] *
g1[j] * upreal[0] + g2[i] * g2[j] * upreal[1] +
1025 g3[i] * g3[j] * upreal[2] + g4[i] * g4[j] * upreal[3] +
1026 g5[i] * g5[j] * upreal[4];
1027 double tmp1y =
g1[i] *
g1[j] * upimag[0] + g2[i] * g2[j] * upimag[1] +
1028 g3[i] * g3[j] * upimag[2] + g4[i] * g4[j] * upimag[3] +
1029 g5[i] * g5[j] * upimag[4];
1032 if ( i == 0 ) { tmp2 =
f1[j] * ( 1 + 3.92637 ) / (
s + 3.92637 ); }
1033 if ( j == 0 ) { tmp2 =
f1[i] * ( 1 + 3.92637 ) / (
s + 3.92637 ); }
1034 double tmp3 = (
s - 0.5 *
mpi *
mpi ) * ( 1 + 0.15 ) / (
s + 0.15 );
1036 Kijx = ( tmp1x + tmp2 ) * tmp3;
1037 Kijy = (tmp1y)*tmp3;
1039 complex<double> Kij( Kijx, Kijy );
1057 complex<double> Iij( Iijx, Iijy );
1062complex<double> EvtD0Topipipi0::FMTX(
double Kijx,
double Kijy,
double rhojjx,
double rhojjy,
1068 double tmpx = rhojjx * Kijx - rhojjy * Kijy;
1069 double tmpy = rhojjx * Kijy + rhojjy * Kijx;
1071 Fijx = IMTX( i, j ).real() + tmpy;
1074 complex<double> Fij( Fijx, Fijy );
1079double EvtD0Topipipi0::FINVMTX(
double s,
double* FINVx,
double* FINVy ) {
1081 int P[5] = { 0, 1, 2, 3, 4 };
1096 for (
int k = 0; k < 5; k++ )
1098 double rhokkx = rhoMTX( k, k,
s ).real();
1099 double rhokky = rhoMTX( k, k,
s ).imag();
1102 for (
int l = k; l < 5; l++ )
1104 double Kklx = KMTX( k, l,
s ).real();
1105 double Kkly = KMTX( k, l,
s ).imag();
1108 Lx[l][k] = Lx[k][l];
1109 Ly[l][k] = Ly[k][l];
1113 for (
int k = 0; k < 5; k++ )
1115 for (
int l = 0; l < 5; l++ )
1117 double Fklx = FMTX( Lx[k][l], Ly[k][l], Ux[l][l], Uy[l][l], k, l ).real();
1118 double Fkly = FMTX( Lx[k][l], Ly[k][l], Ux[l][l], Uy[l][l], k, l ).imag();
1124 for (
int k = 0; k < 5; k++ )
1126 double tmprM = ( Fx[k][k] * Fx[k][k] + Fy[k][k] * Fy[k][k] );
1128 for (
int l = k; l < 5; l++ )
1130 double tmprF = ( Fx[l][k] * Fx[l][k] + Fy[l][k] * Fy[l][k] );
1131 if ( tmprM <= tmprF )
1142 for (
int l = 0; l < 5; l++ )
1145 double tmpFx = Fx[k][l];
1146 double tmpFy = Fy[k][l];
1148 Fx[k][l] = Fx[tmpID][l];
1149 Fy[k][l] = Fy[tmpID][l];
1151 Fx[tmpID][l] = tmpFx;
1152 Fy[tmpID][l] = tmpFy;
1155 for (
int l = k + 1; l < 5; l++ )
1157 double rFkk = Fx[k][k] * Fx[k][k] + Fy[k][k] * Fy[k][k];
1158 double Fxlk = Fx[l][k];
1159 double Fylk = Fy[l][k];
1160 double Fxkk = Fx[k][k];
1161 double Fykk = Fy[k][k];
1162 Fx[l][k] = ( Fxlk * Fxkk + Fylk * Fykk ) / rFkk;
1163 Fy[l][k] = ( Fylk * Fxkk - Fxlk * Fykk ) / rFkk;
1164 for (
int m = k + 1; m < 5; m++ )
1166 Fx[l][m] = Fx[l][m] - ( Fx[l][k] * Fx[k][m] - Fy[l][k] * Fy[k][m] );
1167 Fy[l][m] = Fy[l][m] - ( Fx[l][k] * Fy[k][m] + Fy[l][k] * Fx[k][m] );
1172 for (
int k = 0; k < 5; k++ )
1174 for (
int l = 0; l < 5; l++ )
1180 Ux[k][k] = Fx[k][k];
1181 Uy[k][k] = Fy[k][k];
1185 Lx[k][l] = Fx[k][l];
1186 Ly[k][l] = Fy[k][l];
1192 Ux[k][l] = Fx[k][l];
1193 Uy[k][l] = Fy[k][l];
1201 for (
int k = 0; k < 5; k++ )
1207 double rUkk = Ux[k][k] * Ux[k][k] + Uy[k][k] * Uy[k][k];
1208 UIx[k][k] = Ux[k][k] / rUkk;
1209 UIy[k][k] = -1.0f * Uy[k][k] / rUkk;
1211 for (
int l = ( k + 1 ); l < 5; l++ )
1219 for (
int l = ( k - 1 ); l >= 0; l-- )
1225 for (
int m = l + 1; m <= k; m++ )
1228 double sx_tmp = sx + Ux[l][m] * UIx[m][k] - Uy[l][m] * UIy[m][k];
1229 c_sx = ( sx_tmp - sx ) - ( Ux[l][m] * UIx[m][k] - Uy[l][m] * UIy[m][k] );
1233 double sy_tmp = sy + Ux[l][m] * UIy[m][k] + Uy[l][m] * UIx[m][k];
1234 c_sy = ( sy_tmp - sy ) - ( Ux[l][m] * UIy[m][k] + Uy[l][m] * UIx[m][k] );
1237 UIx[l][k] = -1.0f * ( UIx[l][l] * sx - UIy[l][l] * sy );
1238 UIy[l][k] = -1.0f * ( UIy[l][l] * sx + UIx[l][l] * sy );
1241 for (
int l = k + 1; l < 5; l++ )
1247 for (
int m = k; m < l; m++ )
1250 double sx_tmp = sx + Lx[l][m] * LIx[m][k] - Ly[l][m] * LIy[m][k];
1251 c_sx = ( sx_tmp - sx ) - ( Lx[l][m] * LIx[m][k] - Ly[l][m] * LIy[m][k] );
1255 double sy_tmp = sy + Lx[l][m] * LIy[m][k] + Ly[l][m] * LIx[m][k];
1256 c_sy = ( sy_tmp - sy ) - ( Lx[l][m] * LIy[m][k] + Ly[l][m] * LIx[m][k] );
1259 LIx[l][k] = -1.0f * sx;
1260 LIy[l][k] = -1.0f * sy;
1264 for (
int m = 0; m < 5; m++ )
1270 for (
int k = 0; k < 5; k++ )
1272 for (
int l = 0; l < 5; l++ )
1275 if (
P[l] == m ) Plm = 1;
1277 resX = resX - c_resX;
1278 double resX_tmp = resX + ( UIx[0][k] * LIx[k][l] - UIy[0][k] * LIy[k][l] ) * Plm;
1280 ( resX_tmp - resX ) - ( ( UIx[0][k] * LIx[k][l] - UIy[0][k] * LIy[k][l] ) * Plm );
1283 resY = resY - c_resY;
1284 double resY_tmp = resY + ( UIx[0][k] * LIy[k][l] + UIy[0][k] * LIx[k][l] ) * Plm;
1286 ( resY_tmp - resY ) - ( ( UIx[0][k] * LIy[k][l] + UIy[0][k] * LIx[k][l] ) * Plm );
1301 double m[5] = { 0.65100, 1.20360, 1.55817, 1.21000, 1.82206 };
1309 double dm2 = m[ID] * m[ID] -
s;
1311 if ( fabs( dm2 ) <
eps && dm2 <= 0 ) dm2 = -
eps;
1312 if ( fabs( dm2 ) <
eps && dm2 > 0 ) dm2 =
eps;
1317 complex<double> VPi( VPix, VPiy );
1321complex<double> EvtD0Topipipi0::Fvector(
double sa,
double s0,
int l ) {
1326 double FINVx[5] = { 0, 0, 0, 0, 0 };
1327 double FINVy[5] = { 0, 0, 0, 0, 0 };
1329 double tmpFLAG = FINVMTX( sa, FINVx, FINVy );
1333 double g[5][5] = { { 0.22889, -0.55377, 0.00000, -0.39899, -0.34639 },
1334 { 0.94128, 0.55095, 0.00000, 0.39065, 0.31503 },
1335 { 0.36856, 0.23888, 0.55639, 0.18340, 0.18681 },
1336 { 0.33650, 0.40907, 0.85679, 0.19906, -0.00984 },
1337 { 0.18171, -0.17558, -0.79658, -0.00355, 0.22358 } };
1342 double Plx = PVTR( l, sa ).real();
1343 double Ply = PVTR( l, sa ).imag();
1344 for (
int j = 0; j < 5; j++ )
1346 resx = resx - c_resx;
1347 double resx_tmp = resx + ( FINVx[j] * g[l][j] * Plx - FINVy[j] * g[l][j] * Ply );
1348 c_resx = ( resx_tmp - resx ) - ( FINVx[j] * g[l][j] * Plx - FINVy[j] * g[l][j] * Ply );
1351 resy = resy - c_resy;
1352 double resy_tmp = resy + ( FINVx[j] * g[l][j] * Ply + FINVy[j] * g[l][j] * Plx );
1353 c_resy = ( resy_tmp - resy ) - ( FINVx[j] * g[l][j] * Ply + FINVy[j] * g[l][j] * Plx );
1363 double ds = sa - s0;
1364 if ( fabs( ds ) <
eps && ds <= 0 ) ds = -
eps;
1365 if ( fabs( ds ) <
eps && ds > 0 ) ds =
eps;
1366 double tmp = ( 1 - s0 ) / ds;
1367 outputx = FINVx[idx] * tmp;
1368 outputy = FINVy[idx] * tmp;
1371 complex<double>
output( outputx, outputy );
1375complex<double> EvtD0Topipipi0::CalD0Amp() {
return Amp( p4_Pip, p4_Pim, p4_Pi0 ); }
1378 vector<double> cpPip;
1380 vector<double> cpPim;
1382 vector<double> cpPi0;
1385 cpPip.push_back( -p4_Pim[0] );
1386 cpPim.push_back( -p4_Pip[0] );
1387 cpPi0.push_back( -p4_Pi0[0] );
1388 cpPip.push_back( -p4_Pim[1] );
1389 cpPim.push_back( -p4_Pip[1] );
1390 cpPi0.push_back( -p4_Pi0[1] );
1391 cpPip.push_back( -p4_Pim[2] );
1392 cpPim.push_back( -p4_Pip[2] );
1393 cpPi0.push_back( -p4_Pi0[2] );
1394 cpPip.push_back( p4_Pim[3] );
1395 cpPim.push_back( p4_Pip[3] );
1396 cpPi0.push_back( p4_Pi0[3] );
1398 return ( -1.0 ) * Amp( cpPip, cpPim, cpPi0 );
1401complex<double> EvtD0Topipipi0::Amp( vector<double> Pip, vector<double> Pim,
1402 vector<double>
Pi0 ) {
1404 if ( fitpara.size() != 14 )
1406 cout <<
"Error!!! number of para: " << fitpara.size() << endl;
1410 vector<double> PipPim;
1412 vector<double> PipPi0;
1414 vector<double> PimPi0;
1417 PipPim = sum_tensor( Pip, Pim );
1418 PipPi0 = sum_tensor( Pip, Pi0 );
1419 PimPi0 = sum_tensor( Pim, Pi0 );
1423 D0 = sum_tensor( PipPim, Pi0 );
1425 double M2_PipPim = contract_11_0( PipPim, PipPim );
1426 double M2_PipPi0 = contract_11_0( PipPi0, PipPi0 );
1427 double M2_PimPi0 = contract_11_0( PimPi0, PimPi0 );
1429 double M2_D0 = contract_11_0( D0, D0 );
1431 complex<double> GS_rho770_z = GS( M2_PipPim, m0_rho7700, w0_rho7700, m2_Pi, m2_Pi, rRes, 1 );
1432 complex<double> GS_rho770_p =
1433 GS( M2_PipPi0, m0_rho770p, w0_rho770p, m2_Pi, m2_Pi0, rRes, 1 );
1434 complex<double> GS_rho770_m =
1435 GS( M2_PimPi0, m0_rho770p, w0_rho770p, m2_Pi, m2_Pi0, rRes, 1 );
1437 complex<double> PiPiS_pm_0 = Fvector( M2_PipPim, s0_prod, 0 );
1438 complex<double> PiPiS_pm_1 = Fvector( M2_PipPim, s0_prod, 1 );
1439 complex<double> PiPiS_pm_2 = Fvector( M2_PipPim, s0_prod, 2 );
1440 complex<double> PiPiS_pm_3 = Fvector( M2_PipPim, s0_prod, 3 );
1441 complex<double> PiPiS_pm_4 = Fvector( M2_PipPim, s0_prod, 4 );
1442 complex<double> PiPiS_pm_5 = Fvector( M2_PipPim, s0_prod, 5 );
1443 complex<double> PiPiS_pm_6 = Fvector( M2_PipPim, s0_prod, 6 );
1444 complex<double> PiPiS_pm_7 = Fvector( M2_PipPim, s0_prod, 7 );
1445 complex<double> PiPiS_pm_8 = Fvector( M2_PipPim, s0_prod, 8 );
1446 complex<double> PiPiS_pm_9 = Fvector( M2_PipPim, s0_prod, 9 );
1448 complex<double> RBW_f21270 = RBW( M2_PipPim, m0_f21270, w0_f21270, m2_Pi, m2_Pi, rRes, 2 );
1451 vector<double> T1_PipPim;
1453 vector<double> T1_PipPi0;
1455 vector<double> T1_PimPi0;
1458 T1_PipPim = OrbitalTensors( PipPim, Pip, Pim, rRes, 1 );
1459 T1_PipPi0 = OrbitalTensors( PipPi0, Pip, Pi0, rRes, 1 );
1460 T1_PimPi0 = OrbitalTensors( PimPi0, Pim, Pi0, rRes, 1 );
1462 vector<double> T2_PipPim;
1465 T2_PipPim = OrbitalTensors( PipPim, Pip, Pim, rRes, 2 );
1468 vector<double> T1_PipPimPi0;
1469 T1_PipPimPi0.clear();
1470 vector<double> T1_PipPi0Pim;
1471 T1_PipPi0Pim.clear();
1472 vector<double> T1_PimPi0Pip;
1473 T1_PimPi0Pip.clear();
1475 T1_PipPimPi0 = OrbitalTensors( D0, PipPim, Pi0, rD, 1 );
1476 T1_PipPi0Pim = OrbitalTensors( D0, PipPi0, Pim, rD, 1 );
1477 T1_PimPi0Pip = OrbitalTensors( D0, PimPi0, Pip, rD, 1 );
1479 vector<double> T2_PipPimPi0;
1480 T2_PipPimPi0.clear();
1482 T2_PipPimPi0 = OrbitalTensors( D0, PipPim, Pi0, rD, 2 );
1484 complex<double> amplitude( 0, 0 );
1487 double SF_VpPm = contract_11_0( T1_PipPi0Pim, T1_PipPi0 );
1488 amplitude += fitpara[0] * ( SF_VpPm * GS_rho770_p );
1490 double SF_VmPp = contract_11_0( T1_PimPi0Pip, T1_PimPi0 );
1491 amplitude += fitpara[1] * ( SF_VmPp * GS_rho770_m );
1493 double SF_VzPz = contract_11_0( T1_PipPimPi0, T1_PipPim );
1494 amplitude += fitpara[2] * ( SF_VzPz * GS_rho770_z );
1497 amplitude += fitpara[3] * ( PiPiS_pm_0 );
1498 amplitude += fitpara[4] * ( PiPiS_pm_1 );
1499 amplitude += fitpara[5] * ( PiPiS_pm_2 );
1500 amplitude += fitpara[6] * ( PiPiS_pm_3 );
1501 amplitude += fitpara[7] * ( PiPiS_pm_4 );
1502 amplitude += fitpara[8] * ( PiPiS_pm_5 );
1503 amplitude += fitpara[9] * ( PiPiS_pm_6 );
1504 amplitude += fitpara[10] * ( PiPiS_pm_7 );
1505 amplitude += fitpara[11] * ( PiPiS_pm_8 );
1506 amplitude += fitpara[12] * ( PiPiS_pm_9 );
1509 double SF_TzPz = contract_22_0( T2_PipPimPi0, T2_PipPim );
1510 amplitude += fitpara[13] * ( SF_TzPz * RBW_f21270 );
1515int EvtD0Topipipi0::CalAmp() {
1516 m_AmpD0 = CalD0Amp();
1517 m_AmpDb = CalDbAmp();
1522 double temp =
x.real() *
x.real() +
x.imag() *
x.imag();
1527 double temp = 2 * (
x.real() * y.real() +
x.imag() * y.imag() );
1532 double temp = atan(
x.imag() /
x.real() );
1533 if (
x.real() < 0 ) temp = temp +
PI;
1536double EvtD0Topipipi0::Get_strongPhase() {
1537 double temp = arg( m_AmpD0 ) - arg( m_AmpDb );
1538 while ( temp < -
PI ) { temp += 2.0 *
PI; }
1539 while ( temp >
PI ) { temp -= 2.0 *
PI; }
1543double EvtD0Topipipi0::AmplitudeSquare(
int charm,
int tagmode ) {
1545 EvtVector4R dp1 = GetDaugMomLab( 0 ), dp2 = GetDaugMomLab( 1 ),
1546 dp3 = GetDaugMomLab( 2 );
1547 EvtVector4R
mp = dp1 + dp2 + dp3;
1549 double emp =
mp.
get( 0 );
1550 EvtVector3R boostp3( -
mp.get( 1 ) / emp, -
mp.get( 2 ) / emp, -
mp.get( 3 ) / emp );
1552 EvtVector4R dp1bst =
boostTo( dp1, boostp3 );
1553 EvtVector4R dp2bst =
boostTo( dp2, boostp3 );
1554 EvtVector4R dp3bst =
boostTo( dp3, boostp3 );
1556 double p4pip[4], p4pim[4], p4pi0[4];
1557 for (
int i = 0; i < 3; i++ )
1559 p4pip[i] = dp1bst.
get( i + 1 );
1560 p4pim[i] = dp2bst.
get( i + 1 );
1561 p4pi0[i] = dp3bst.
get( i + 1 );
1564 p4pip[3] = dp1bst.
get( 0 );
1565 p4pim[3] = dp2bst.
get( 0 );
1566 p4pi0[3] = dp3bst.
get( 0 );
1568 setInput( p4pip, p4pim, p4pi0 );
1571 complex<double> ampD0, ampDb;
1574 ampD0 = Get_AmpD0();
1575 ampDb = Get_AmpDb();
1579 ampD0 = Get_AmpDb();
1580 ampDb = Get_AmpD0();
1583 double ampsq = 1e-20;
1584 double r_tag = 0, R_tag = 0, delta_tag = 0;
1586 if ( tagmode == 1 || tagmode == 2 || tagmode == 3 )
1592 delta_tag = 192.1 / 180.0 * 3.1415926;
1594 else if ( tagmode == 2 )
1598 delta_tag = 196.0 / 180.0 * 3.1415926;
1600 else if ( tagmode == 3 )
1604 delta_tag = 161.0 / 180.0 * 3.1415926;
1606 complex<double> qcf( r_tag * R_tag *
cos( -delta_tag ),
1607 r_tag * R_tag *
sin( -delta_tag ) );
1608 complex<double> ampD0_part1 = ampD0 - qcf * ampDb;
1609 ampsq = mag2( ampD0_part1 ) + r_tag * r_tag * ( 1 - R_tag * R_tag ) * ( mag2( ampDb ) );
1611 else { ampsq = mag2( ampD0 ); }
1613 return ( ampsq <= 0 ) ? 1e-20 : ampsq;
double P(RecMdcKalTrack *trk)
EvtDiracSpinor boostTo(const EvtDiracSpinor &sp, const EvtVector4R p4)
EvtTensor3C eps(const EvtVector3R &v)
*******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 output
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)
virtual ~EvtD0Topipipi0()
void decay(EvtParticle *p)
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)