46 model_name=
"D0Topipipi0";
62 for(
int i=0; i<4; i++){
63 for(
int j=0; j<4; j++){
75 for(
int i=0; i<4; i++){
76 for(
int j=0; j<4; j++){
77 for(
int k=0; k<4; k++){
78 for(
int l=0; l<4; l++){
79 if(i==j || i==k || i==l || j==k || j==l || k==l){
80 epsilon_uvmn.push_back(0.0);
82 if(i==0 && j==1 && k==2 && l==3) epsilon_uvmn.push_back(1.0);
83 if(i==0 && j==1 && k==3 && l==2) epsilon_uvmn.push_back(-1.0);
84 if(i==0 && j==2 && k==1 && l==3) epsilon_uvmn.push_back(-1.0);
85 if(i==0 && j==2 && k==3 && l==1) epsilon_uvmn.push_back(1.0);
86 if(i==0 && j==3 && k==1 && l==2) epsilon_uvmn.push_back(1.0);
87 if(i==0 && j==3 && k==2 && l==1) epsilon_uvmn.push_back(-1.0);
89 if(i==1 && j==0 && k==2 && l==3) epsilon_uvmn.push_back(-1.0);
90 if(i==1 && j==0 && k==3 && l==2) epsilon_uvmn.push_back(1.0);
91 if(i==1 && j==2 && k==0 && l==3) epsilon_uvmn.push_back(1.0);
92 if(i==1 && j==2 && k==3 && l==0) epsilon_uvmn.push_back(-1.0);
93 if(i==1 && j==3 && k==0 && l==2) epsilon_uvmn.push_back(-1.0);
94 if(i==1 && j==3 && k==2 && l==0) epsilon_uvmn.push_back(1.0);
96 if(i==2 && j==0 && k==1 && l==3) epsilon_uvmn.push_back(1.0);
97 if(i==2 && j==0 && k==3 && l==1) epsilon_uvmn.push_back(-1.0);
98 if(i==2 && j==1 && k==0 && l==3) epsilon_uvmn.push_back(-1.0);
99 if(i==2 && j==1 && k==3 && l==0) epsilon_uvmn.push_back(1.0);
100 if(i==2 && j==3 && k==0 && l==1) epsilon_uvmn.push_back(1.0);
101 if(i==2 && j==3 && k==1 && l==0) epsilon_uvmn.push_back(-1.0);
103 if(i==3 && j==0 && k==1 && l==2) epsilon_uvmn.push_back(-1.0);
104 if(i==3 && j==0 && k==2 && l==1) epsilon_uvmn.push_back(1.0);
105 if(i==3 && j==1 && k==0 && l==2) epsilon_uvmn.push_back(1.0);
106 if(i==3 && j==1 && k==2 && l==0) epsilon_uvmn.push_back(-1.0);
107 if(i==3 && j==2 && k==0 && l==1) epsilon_uvmn.push_back(-1.0);
108 if(i==3 && j==2 && k==1 && l==0) epsilon_uvmn.push_back(1.0);
125 m2_Pi0 = m_Pi0*m_Pi0;
127 m0_rho7700 = 0.77526;
130 m0_rho770p = 0.77511;
180 for(
int i=0; i<_nd; i++){
184 double prob = AmplitudeSquare(charm, tagmode);
189void EvtD0Topipipi0::setInput(
double* pip,
double* pim,
double* pi0){
190 p4_Pip.clear(); p4_Pim.clear(); p4_Pi0.clear();
191 p4_Pip.push_back(pip[0]); p4_Pim.push_back(pim[0]); p4_Pi0.push_back(pi0[0]);
192 p4_Pip.push_back(pip[1]); p4_Pim.push_back(pim[1]); p4_Pi0.push_back(pi0[1]);
193 p4_Pip.push_back(pip[2]); p4_Pim.push_back(pim[2]); p4_Pi0.push_back(pi0[2]);
194 p4_Pip.push_back(pip[3]); p4_Pim.push_back(pim[3]); p4_Pi0.push_back(pi0[3]);
197vector<double> EvtD0Topipipi0::sum_tensor(vector<double> pa, vector<double> pb) {
198 if(pa.size()!=pb.size()){
199 cout<<
"error sum tensor"<<endl;
202 vector<double> temp; temp.clear();
203 for(
int i=0; i<pa.size(); i++){
204 double sum = pa[i] + pb[i];
210double EvtD0Topipipi0::contract_11_0(vector<double> pa, vector<double> pb){
211 if(pa.size()!=pb.size() || pa.size()!=4) {
212 cout<<
"error contract 11->0"<<endl;
215 double temp = pa[3]*pb[3] - pa[0]*pb[0] - pa[1]*pb[1] - pa[2]*pb[2];
220vector<double> EvtD0Topipipi0::contract_21_1(vector<double> pa, vector<double> pb){
221 if(pa.size()!=16 || pb.size()!=4) {
222 cout<<
"error contract 21->1"<<endl;
225 vector<double> temp; temp.clear();
226 for(
int i=0; i<4; i++){
228 for(
int j=0; j<4; j++){
230 sum += pa[idx]*pb[j]*g_uv[4*j+j];
238double EvtD0Topipipi0::contract_22_0(vector<double> pa, vector<double> pb){
239 if(pa.size()!=pb.size() || pa.size()!=16) {
240 cout<<
"error contract 22->0"<<endl;
244 for(
int i=0; i<4; i++){
245 for(
int j=0; j<4; j++){
247 temp += pa[idx]*pb[idx]*g_uv[4*i+i]*g_uv[4*j+j];
254vector<double> EvtD0Topipipi0::contract_31_2(vector<double> pa, vector<double> pb){
255 if(pa.size()!=64 || pb.size()!=4) {
256 cout<<
"error contract 31->2"<<endl;
259 vector<double> temp; temp.clear();
260 for(
int i=0; i<16; i++){
262 for(
int j=0; j<4; j++){
264 sum += pa[idx]*pb[j]*g_uv[4*j+j];
272vector<double> EvtD0Topipipi0::contract_41_3(vector<double> pa, vector<double> pb){
273 if(pa.size()!=256|| pb.size()!=4) {
274 cout<<
"error contract 41->3"<<endl;
277 vector<double> temp; temp.clear();
278 for(
int i=0; i<64; i++){
280 for(
int j=0; j<4; j++){
282 sum += pa[idx]*pb[j]*g_uv[4*j+j];
290vector<double> EvtD0Topipipi0::contract_42_2(vector<double> pa, vector<double> pb){
291 if(pa.size()!=256|| pb.size()!=16) {
292 cout<<
"error contract 42->2"<<endl;
295 vector<double> temp; temp.clear();
296 for(
int i=0; i<16; i++){
298 for(
int j=0; j<4; j++){
299 for(
int k=0; k<4; k++){
300 int idxa = i*16+j*4+k;
302 sum += pa[idxa] * pb[idxb] * g_uv[4*j+j] * g_uv[4*k+k];
312vector<double> EvtD0Topipipi0::contract_22_2(vector<double> pa, vector<double> pb){
313 if(pa.size()!=16|| pb.size()!=16) {
314 cout<<
"error contract 42->2"<<endl;
317 vector<double> temp; temp.clear();
318 for(
int i=0; i<4; i++){
319 for(
int j=0; j<4; j++){
321 for(
int k=0; k<4; k++){
324 sum += pa[idxa] * pb[idxb] * g_uv[4*k+k];
367vector<double> EvtD0Topipipi0::OrbitalTensors(vector<double> pa, vector<double> pb, vector<double> pc,
double r,
int rank)
370 if(pa.size()!=4 || pb.size()!=4 || pc.size()!=4) {
371 cout<<
"Error: pa, pb, pc"<<endl;
375 cout<<
"Error: L<0 !!!"<<endl;
380 vector<double> mr; mr.clear();
382 for(
int i=0; i<4; i++){
383 double temp = pb[i] - pc[i];
388 double msa = contract_11_0(pa, pa);
389 double msb = contract_11_0(pb, pb);
390 double msc = contract_11_0(pc, pc);
393 double top = msa + msb - msc;
394 double Q2abc = top*top/(4.0*msa) - msb;
397 double Q_0 = 0.197321f/r;
398 double Q_02 = Q_0*Q_0;
399 double Q_04 = Q_02*Q_02;
403 double Q4abc = Q2abc*Q2abc;
407 double mB1 = sqrt(2.0f/(Q2abc + Q_02));
408 double mB2 = sqrt(13.0f/(Q4abc + (3.0f*Q_02)*Q2abc + 9.0f*Q_04));
413 vector<double> proj_uv; proj_uv.clear();
414 for(
int i=0; i<4; i++){
415 for(
int j=0; j<4; j++){
417 double temp = -g_uv[idx] + pa[i]*pa[j]/msa;
418 proj_uv.push_back(temp);
425 vector<double>
t;
t.clear();
431 vector<double> t_u; t_u.clear();
432 vector<double> Bt_u; Bt_u.clear();
433 for(
int i=0; i<4; i++){
435 for(
int j=0; j<4; j++){
437 temp += -proj_uv[idx]*mr[j]*g_uv[j*4+j];
440 Bt_u.push_back(temp*mB1);
442 if(rank==1)
return Bt_u;
444 double t_u2 = contract_11_0(t_u,t_u);
446 vector<double> Bt_uv; Bt_uv.clear();
447 for(
int i=0; i<4; i++){
448 for(
int j=0; j<4; j++){
450 double temp = t_u[i]*t_u[j] + (1.0/3.0)*proj_uv[idx]*t_u2;
451 Bt_uv.push_back(temp*mB2);
454 if(rank==2)
return Bt_uv;
458 cout<<
"rank>2: please add it by yourself!!!"<<endl;
465vector<double> EvtD0Topipipi0::ProjectionTensors(vector<double> pa,
int rank)
469 cout<<
"Error: pa"<<endl;
473 cout<<
"Error: L<0 !!!"<<endl;
477 double msa = contract_11_0(pa, pa);
480 vector<double> proj_uv; proj_uv.clear();
481 for(
int i=0; i<4; i++){
482 for(
int j=0; j<4; j++){
484 double temp = -g_uv[idx] + pa[i]*pa[j]/msa;
485 proj_uv.push_back(temp);
492 vector<double>
t;
t.clear();
501 vector<double> proj_uvmn; proj_uvmn.clear();
502 for(
int i=0; i<4; i++){
503 for(
int j=0; j<4; j++){
504 for(
int k=0; k<4; k++){
505 for(
int l=0; l<4; l++){
507 int idx1_1 = 4*i + k;
508 int idx1_2 = 4*i + l;
509 int idx1_3 = 4*i + j;
511 int idx2_1 = 4*j + l;
512 int idx2_2 = 4*j + k;
513 int idx2_3 = 4*k + l;
515 double temp = (1.0/2.0)*(proj_uv[idx1_1]*proj_uv[idx2_1] + proj_uv[idx1_2]*proj_uv[idx2_2]) - (1.0/3.0)*proj_uv[idx1_3]*proj_uv[idx2_3];
516 proj_uvmn.push_back(temp);
525 cout<<
"rank>2: please add it by yourself!!!"<<endl;
530double EvtD0Topipipi0::fundecaymomentum(
double mr2,
double m1_2,
double m2_2){
531 double mr = sqrt(mr2);
532 double poly = mr2*mr2 + m1_2*m1_2 + m2_2*m2_2 - 2*m1_2*mr2 -2*m2_2*mr2 -2*m1_2*m2_2;
533 double ret = sqrt(poly)/(2*mr);
540complex<double> EvtD0Topipipi0::breitwigner(
double mx2,
double mr,
double wr)
546 double diff = mr2-mx2;
547 double denom = diff*diff + wr*wr*mr2;
553 output_x = diff/denom;
554 output_y = wr*mr/denom;
566double EvtD0Topipipi0::h(
double m,
double q){
567 double h = 2.0/math_pi*
q/m*log((m+2.0*
q)/(2.0*mass_Pion));
571double EvtD0Topipipi0::dh(
double m0,
double q0){
572 double dh = h(m0,q0)*(1.0/(8.0*q0*q0)-1.0/(2.0*m0*m0))+1.0/(2.0*math_pi*m0*m0);
576double EvtD0Topipipi0::f(
double m0,
double sx,
double q0,
double q){
578 double f = m0*m0/(q0*q0*q0)*(
q*
q*(h(m,
q)-h(m0,q0))+(m0*m0-sx)*q0*q0*dh(m0,q0));
582double EvtD0Topipipi0::d(
double m0,
double q0){
583 double d = 3.0/math_pi*mass_Pion*mass_Pion/(q0*q0)*log((m0+2.0*q0)/(2.0*mass_Pion)) + m0/(2.0*math_pi*q0) - (mass_Pion*mass_Pion*m0)/(math_pi*q0*q0*q0);
587double EvtD0Topipipi0::fundecaymomentum2(
double mr2,
double m1_2,
double m2_2){
588 double mr = sqrt(mr2);
589 double poly = mr2*mr2 + m1_2*m1_2 + m2_2*m2_2 - 2*m1_2*mr2 -2*m2_2*mr2 -2*m1_2*m2_2;
590 double ret = poly/(4.0f*mr2);
596double EvtD0Topipipi0::wid(
double mass,
double sa,
double sb,
double sc,
double r,
int l){
600 double q = fundecaymomentum2(sa,sb,sc);
601 double q0 = fundecaymomentum2(sa0,sb,sc);
607 if(l == 1) F = sqrt((1.0+z0)/(1.0+z));
608 if(l == 2) F = sqrt((9.0+3.0*z0+z0*z0)/(9.0+3.0*z+z*z));
609 if(l == 3) F = sqrt((225.0+45.0*z0+6.0*z0*z0+z0*z0*z0)/(225.0+45.0*z+6.0*z*z+z*z*z));
610 if(l == 4) F = sqrt((11025.0+1575.0*z0+135.0*z0*z0+10.0*z0*z0*z0+z0*z0*z0*z0)/(11025.0+1575.0*z+135.0*z*z+10.0*z*z*z+z*z*z*z));
611 double t = sqrt(
q/q0);
614 for(i=0; i<(2*l+1); i++) {
617 widm *= (
mass/m*F*F);
622complex<double> EvtD0Topipipi0::GS(
double mx2,
double mr,
double wr,
double m1_2,
double m2_2,
double r,
int l){
625 double q = fundecaymomentum(mx2, m1_2, m2_2);
626 double q0 = fundecaymomentum(mr2, m1_2, m2_2);
627 double numer = 1.0+d(mr,q0)*wr/mr;
628 double denom_real = mr2-mx2+wr*
f(mr,mx2,q0,
q);
629 double denom_imag = mr*wr*wid(mr,mx2,m1_2,m2_2,r,l);
631 double denom = denom_real*denom_real+denom_imag*denom_imag;
632 double output_x = denom_real*numer/denom;
633 double output_y = denom_imag*numer/denom;
639complex<double> EvtD0Topipipi0::irho(
double mr2,
double m1_2,
double m2_2){
640 double mr = sqrt(mr2);
641 double poly = mr2*mr2 + m1_2*m1_2 + m2_2*m2_2 - 2*m1_2*mr2 - 2*m2_2*mr2 - 2*m1_2*m2_2;
645 ret_real = 2.0f*sqrt(poly)/(2.0f*mr2);
650 ret_imag = 2.0f*sqrt(-1.0f*poly)/(2.0f*mr2);
656complex<double> EvtD0Topipipi0::Flatte(
double mx2,
double mr,
double g1,
double g2,
double m1a,
double m1b,
double m2a,
double m2b){
659 double diff = mr2-mx2;
665 double denom_real = diff + iws.imag();
666 double denom_imag = iws.real();
667 double denom = denom_real*denom_real+denom_imag*denom_imag;
669 double output_x = denom_real/denom;
670 double output_y = denom_imag/denom;
677complex<double> EvtD0Topipipi0::RBW(
double mx2,
double mr,
double wr,
double m1_2,
double m2_2,
double r,
int l){
678 double mx = sqrt(mx2);
680 double denom_real = mr2-mx2;
681 double denom_imag = 0;
682 if(m1_2>0 && m2_2>0){
683 denom_imag = mr*wr*wid(mr,mx2,m1_2,m2_2,r,l);
688 double denom = denom_real*denom_real+denom_imag*denom_imag;
689 double output_x = denom_real/denom;
690 double output_y = denom_imag/denom;
697double EvtD0Topipipi0::rho22(
double sc){
698 double rho[689] = { 3.70024e-18, 8.52763e-15, 1.87159e-13, 1.3311e-12, 5.61842e-12, 1.75224e-11, 4.48597e-11, 9.99162e-11, 2.00641e-10, 3.71995e-10,
699 6.47093e-10, 1.06886e-09, 1.69124e-09, 2.58031e-09, 3.8168e-09, 5.49601e-09, 7.72996e-09, 1.06509e-08, 1.44078e-08, 1.91741e-08,
700 2.51445e-08, 3.25345e-08, 4.15946e-08, 5.25949e-08, 6.58316e-08, 8.16443e-08, 1.00389e-07, 1.22455e-07, 1.48291e-07, 1.78348e-07,
701 2.1313e-07, 2.53192e-07, 2.99086e-07, 3.51462e-07, 4.10993e-07, 4.78349e-07, 5.54327e-07, 6.3972e-07, 7.35316e-07, 8.42099e-07,
702 9.61004e-07, 1.09295e-06, 1.2391e-06, 1.40051e-06, 1.57824e-06, 1.77367e-06, 1.98805e-06, 2.22257e-06, 2.47877e-06, 2.7581e-06,
703 3.06186e-06, 3.39182e-06, 3.74971e-06, 4.137e-06, 4.5555e-06, 5.00725e-06, 5.4939e-06, 6.01725e-06, 6.57992e-06, 7.18371e-06,
704 7.83044e-06, 8.52301e-06, 9.26342e-06, 1.00535e-05, 1.08967e-05, 1.17953e-05, 1.27514e-05, 1.37679e-05, 1.48482e-05, 1.59943e-05,
705 1.72088e-05, 1.84961e-05, 1.98586e-05, 2.12987e-05, 2.28207e-05, 2.44279e-05, 2.61228e-05, 2.79084e-05, 2.97906e-05, 3.17718e-05,
706 3.38544e-05, 3.60443e-05, 3.8345e-05, 4.07591e-05, 4.32903e-05, 4.59459e-05, 4.87285e-05, 5.16403e-05, 5.46887e-05, 5.7878e-05,
707 6.12111e-05, 6.46908e-05, 6.83274e-05, 7.21231e-05, 7.60817e-05, 8.0208e-05, 8.45102e-05, 8.89919e-05, 9.36544e-05, 9.85082e-05,
708 0.000103559, 0.000108812, 0.000114267, 0.000119938, 0.000125827, 0.00013194, 0.000138278, 0.000144857, 0.000151681, 0.000158752,
709 0.000166074, 0.000173663, 0.000181521, 0.000189652, 0.000198059, 0.000206761, 0.000215761, 0.000225063, 0.00023467, 0.000244599,
710 0.000254855, 0.00026544, 0.000276357, 0.000287629, 0.00029926, 0.000311253, 0.000323609, 0.000336351, 0.000349483, 0.000363009,
711 0.000376926, 0.000391264, 0.000406029, 0.000421225, 0.000436848, 0.000452921, 0.000469458, 0.000486461, 0.00050393, 0.00052187,
712 0.000540322, 0.000559278, 0.000578746, 0.00059872, 0.000619236, 0.0006403, 0.000661911, 0.000684074, 0.000706799, 0.000730127,
713 0.00075405, 0.000778569, 0.000803686, 0.000829443, 0.000855839, 0.000882879, 0.000910561, 0.000938898, 0.000967939, 0.000997674,
714 0.00102811, 0.00105923, 0.0010911, 0.0011237, 0.00115706, 0.00119117, 0.00122601, 0.00126168, 0.00129815, 0.00133543,
715 0.00137351, 0.00141242, 0.00145219, 0.00149283, 0.00153434, 0.0015767, 0.00161995, 0.00166415, 0.00170928, 0.00175534,
716 0.00180232, 0.00185028, 0.00189924, 0.00194919, 0.00200014, 0.00205207, 0.00210503, 0.0021591, 0.00221421, 0.0022704,
717 0.00232766, 0.00238602, 0.00244554, 0.00250619, 0.00256799, 0.0026309, 0.002695, 0.00276033, 0.00282689, 0.00289467,
718 0.00296367, 0.00303389, 0.00310543, 0.0031783, 0.00325244, 0.0033279, 0.0034046, 0.00348275, 0.00356229, 0.00364322,
719 0.00372555, 0.00380924, 0.00389438, 0.00398104, 0.00406914, 0.00415877, 0.00424985, 0.00434235, 0.00443651, 0.00453224,
720 0.00462954, 0.00472848, 0.00482894, 0.00493102, 0.00503483, 0.00514029, 0.00524749, 0.0053563, 0.00546675, 0.00557905,
721 0.0056931, 0.00580901, 0.0059267, 0.00604613, 0.00616735, 0.00629049, 0.00641557, 0.00654254, 0.00667142, 0.00680216,
722 0.00693472, 0.00706946, 0.00720621, 0.00734497, 0.0074858, 0.00762855, 0.00777338, 0.00792036, 0.00806957, 0.00822087,
723 0.00837426, 0.00852982, 0.0086875, 0.00884756, 0.00900991, 0.00917447, 0.00934137, 0.00951052, 0.00968194, 0.0098558,
724 0.010032, 0.0102108, 0.0103919, 0.0105754, 0.0107612, 0.0109496, 0.0111406, 0.0113343, 0.0115305, 0.0117293,
725 0.0119303, 0.0121343, 0.0123409, 0.0125502, 0.0127623, 0.0129771, 0.0131944, 0.0134145, 0.0136376, 0.0138636,
726 0.0140924, 0.0143241, 0.0145587, 0.0147959, 0.0150363, 0.0152797, 0.0155262, 0.0157758, 0.0160283, 0.0162838,
727 0.0165421, 0.016804, 0.0170691, 0.0173374, 0.0176087, 0.0178835, 0.0181612, 0.0184423, 0.0187269, 0.0190149,
728 0.0193063, 0.0196009, 0.0198991, 0.0202003, 0.0205052, 0.0208137, 0.0211259, 0.0214418, 0.0217611, 0.0220841,
729 0.0224105, 0.0227406, 0.0230746, 0.0234125, 0.0237542, 0.0240996, 0.0244486, 0.0248012, 0.025158, 0.0255188,
730 0.0258837, 0.0262527, 0.0266256, 0.0270025, 0.0273833, 0.027768, 0.0281572, 0.0285505, 0.0289483, 0.0293503,
731 0.0297564, 0.0301665, 0.0305808, 0.0309997, 0.0314231, 0.0318511, 0.0322835, 0.0327205, 0.0331616, 0.0336073,
732 0.0340576, 0.0345128, 0.0349727, 0.0354373, 0.0359066, 0.0363807, 0.0368589, 0.0373419, 0.0378302, 0.0383234,
733 0.0388218, 0.0393252, 0.0398336, 0.040347, 0.0408652, 0.041388, 0.0419165, 0.0424502, 0.0429893, 0.0435338,
734 0.0440833, 0.044638, 0.0451976, 0.0457627, 0.0463338, 0.0469103, 0.047492, 0.0480797, 0.0486729, 0.0492716,
735 0.0498757, 0.0504852, 0.0511009, 0.0517229, 0.0523503, 0.0529838, 0.0536231, 0.0542678, 0.054918, 0.0555743,
736 0.0562372, 0.0569065, 0.0575818, 0.0582634, 0.0589511, 0.0596454, 0.0603451, 0.061051, 0.0617635, 0.0624826,
737 0.0632084, 0.0639409, 0.06468, 0.0654254, 0.0661772, 0.0669346, 0.0676994, 0.0684714, 0.0692503, 0.0700354,
738 0.0708285, 0.0716277, 0.0724347, 0.0732479, 0.0740671, 0.0748947, 0.0757299, 0.0765715, 0.0774207, 0.0782771,
739 0.0791407, 0.0800119, 0.0808897, 0.0817743, 0.0826672, 0.0835684, 0.0844769, 0.0853938, 0.0863179, 0.0872493,
740 0.0881882, 0.0891349, 0.090089, 0.0910523, 0.0920236, 0.093002, 0.0939894, 0.094985, 0.0959887, 0.0970003,
741 0.0980191, 0.0990454, 0.100081, 0.101126, 0.10218, 0.103242, 0.104312, 0.105392, 0.10648, 0.107576,
742 0.10868, 0.109793, 0.110916, 0.112048, 0.113188, 0.114339, 0.115498, 0.116666, 0.117843, 0.119028,
743 0.120223, 0.121427, 0.122641, 0.123865, 0.125098, 0.126342, 0.127595, 0.128857, 0.130128, 0.131409,
744 0.132701, 0.134002, 0.135314, 0.136635, 0.137966, 0.139308, 0.14066, 0.142022, 0.143394, 0.144774,
745 0.146166, 0.14757, 0.148985, 0.15041, 0.151845, 0.153291, 0.154749, 0.156215, 0.157694, 0.159182,
746 0.160682, 0.162194, 0.163718, 0.165251, 0.166797, 0.168354, 0.169921, 0.1715, 0.17309, 0.17469,
747 0.176304, 0.177929, 0.179566, 0.181216, 0.182878, 0.184553, 0.186238, 0.187934, 0.189642, 0.191362,
748 0.193096, 0.194842, 0.196602, 0.198374, 0.200158, 0.201954, 0.203764, 0.205586, 0.207421, 0.209266,
749 0.211124, 0.212997, 0.214882, 0.216783, 0.218697, 0.220624, 0.222565, 0.224518, 0.226486, 0.228466,
750 0.230458, 0.232463, 0.234484, 0.23652, 0.238569, 0.240633, 0.242711, 0.244803, 0.246909, 0.249031,
751 0.251165, 0.253313, 0.255475, 0.257649, 0.259841, 0.262051, 0.264274, 0.266514, 0.268768, 0.271036,
752 0.273319, 0.275618, 0.277932, 0.280259, 0.282602, 0.28496, 0.287338, 0.28973, 0.292138, 0.294563,
753 0.297003, 0.299458, 0.30193, 0.304417, 0.306919, 0.309437, 0.311972, 0.314526, 0.317095, 0.319684,
754 0.322289, 0.324911, 0.327551, 0.330205, 0.332876, 0.335567, 0.338271, 0.340993, 0.343736, 0.346496,
755 0.349272, 0.352065, 0.354878, 0.35771, 0.360561, 0.363426, 0.366311, 0.369212, 0.372128, 0.375067,
756 0.378027, 0.381006, 0.384001, 0.387014, 0.39005, 0.393106, 0.396181, 0.399271, 0.402384, 0.405513,
757 0.408661, 0.41183, 0.41502, 0.418233, 0.421462, 0.424709, 0.42798, 0.43127, 0.434583, 0.437914,
758 0.441267, 0.444637, 0.448022, 0.451434, 0.454868, 0.458328, 0.461805, 0.465302, 0.468821, 0.472364,
759 0.475928, 0.47951, 0.483119, 0.486748, 0.490397, 0.494066, 0.497758, 0.501477, 0.505217, 0.508977,
760 0.512762, 0.516567, 0.520394, 0.524247, 0.528125, 0.532027, 0.535947, 0.53989, 0.543852, 0.547844,
761 0.551863, 0.555904, 0.559966, 0.56406, 0.568177, 0.572312, 0.576471, 0.580662, 0.584875, 0.58911,
762 0.593373, 0.597653, 0.601965, 0.606301, 0.610663, 0.615051, 0.619465, 0.623907, 0.62837, 0.632863,
763 0.637383, 0.641924, 0.646494, 0.651091, 0.655708, 0.660356, 0.665027, 0.669732, 0.674464, 0.679227,
764 0.684016, 0.688827, 0.693664, 0.698532, 0.703428, 0.708353, 0.713307, 0.718283, 0.72329, 0.728322,
765 0.733387, 0.738479, 0.743605, 0.748763, 0.753949, 0.759163, 0.764407, 0.769674, 0.774973, 0.780311,
766 0.78567, 0.791057, 0.796476, 0.801922, 0.8074, 0.812919, 0.818466, 0.824044 };
768 double m2 = 0.13957*0.13957;
769 double smin = (0.13957*4)*(0.13957*4);
771 int od = (sc - 0.312)/dh;
772 double sc_m = 0.312 + od*dh;
774 if(sc>=0.312 && sc<1){
775 rhouse = ((sc-sc_m)/dh)*(rho[od+1]-rho[od])+rho[od];
776 }
else if(sc<0.312 && sc>=smin){
777 rhouse = ((sc - smin)/(0.312-smin))*rho[0];
780 rhouse = sqrt(1-16*
m2/sc);
791 double mpi = 0.13957;
793 double m2 = 0.13957*0.13957;
795 rhoijx = sqrt(1.0f - (4*
m2)/
s);
798 rhoijy = sqrt((4*
m2)/
s - 1.0f);
803 double m2 = 0.493677*0.493677;
805 rhoijx = sqrt(1.0f - (4*
m2)/
s);
808 rhoijy = sqrt((4*
m2)/
s - 1.0f);
817 double m2 = 0.547862*0.547862;
819 rhoijx = sqrt(1.0f - (4*
m2)/
s);
822 rhoijy = sqrt((4*
m2)/
s - 1.0f);
827 double m_1 = 0.547862;
828 double m_2 = 0.95778;
829 double mp2 = (m_1+m_2)*(m_1+m_2);
830 double mm2 = (m_1-m_2)*(m_1-m_2);
832 rhoijx = sqrt(1.0f - mp2/
s);
835 rhoijy = sqrt(mp2/
s - 1.0f);
854 double mpi = 0.13957;
855 double m[5] = { 0.65100, 1.20360, 1.55817, 1.21000, 1.82206};
857 double g1[5] = { 0.22889,-0.55377, 0.00000,-0.39899,-0.34639};
858 double g2[5] = { 0.94128, 0.55095, 0.00000, 0.39065, 0.31503};
859 double g3[5] = { 0.36856, 0.23888, 0.55639, 0.18340, 0.18681};
860 double g4[5] = { 0.33650, 0.40907, 0.85679, 0.19906,-0.00984};
861 double g5[5] = { 0.18171,-0.17558,-0.79658,-0.00355, 0.22358};
863 double f1[5] = { 0.23399, 0.15044,-0.20545, 0.32825, 0.35412};
867 double down[5] = { 0,0,0,0,0};
868 double upreal[5] = { 0,0,0,0,0};
869 double upimag[5] = { 0,0,0,0,0};
871 for(
int k=0; k<5; k++){
877 double dm2 = m[k]*m[k]-
s;
878 if(fabs(dm2)<
eps && dm2<=0) dm2 = -
eps;
879 if(fabs(dm2)<
eps && dm2>0) dm2 =
eps;
880 upreal[k] = 1.0f/dm2;
884 double tmp1x =
g1[i]*
g1[j]*upreal[0] + g2[i]*g2[j]*upreal[1] + g3[i]*g3[j]*upreal[2] + g4[i]*g4[j]*upreal[3] + g5[i]*g5[j]*upreal[4];
885 double tmp1y =
g1[i]*
g1[j]*upimag[0] + g2[i]*g2[j]*upimag[1] + g3[i]*g3[j]*upimag[2] + g4[i]*g4[j]*upimag[3] + g5[i]*g5[j]*upimag[4];
889 tmp2 =
f1[j]*(1+3.92637)/(
s+3.92637);
892 tmp2 =
f1[i]*(1+3.92637)/(
s+3.92637);
894 double tmp3 = (
s-0.5*
mpi*
mpi)*(1+0.15)/(
s+0.15);
896 Kijx = (tmp1x+tmp2)*tmp3;
920complex<double> EvtD0Topipipi0::FMTX(
double Kijx,
double Kijy,
double rhojjx,
double rhojjy,
int i,
int j){
925 double tmpx = rhojjx*Kijx - rhojjy*Kijy;
926 double tmpy = rhojjx*Kijy + rhojjy*Kijx;
928 Fijx = IMTX(i,j).real() + tmpy;
936double EvtD0Topipipi0::FINVMTX(
double s,
double *FINVx,
double *FINVy){
938 int P[5] = { 0,1,2,3,4};
953 for(
int k=0; k<5; k++){
954 double rhokkx = rhoMTX(k,k,
s).real();
955 double rhokky = rhoMTX(k,k,
s).imag();
958 for(
int l=k; l<5; l++){
959 double Kklx = KMTX(k,l,
s).real();
960 double Kkly = KMTX(k,l,
s).imag();
968 for(
int k=0; k<5; k++){
969 for(
int l=0; l<5; l++){
970 double Fklx = FMTX(Lx[k][l],Ly[k][l],Ux[l][l],Uy[l][l],k,l).real();
971 double Fkly = FMTX(Lx[k][l],Ly[k][l],Ux[l][l],Uy[l][l],k,l).imag();
977 for(
int k=0; k<5; k++){
978 double tmprM = (Fx[k][k]*Fx[k][k]+Fy[k][k]*Fy[k][k]);
980 for(
int l=k; l<5; l++){
981 double tmprF = (Fx[l][k]*Fx[l][k]+Fy[l][k]*Fy[l][k]);
992 for(
int l=0; l<5; l++){
994 double tmpFx = Fx[k][l];
995 double tmpFy = Fy[k][l];
997 Fx[k][l] = Fx[tmpID][l];
998 Fy[k][l] = Fy[tmpID][l];
1000 Fx[tmpID][l] = tmpFx;
1001 Fy[tmpID][l] = tmpFy;
1005 for(
int l=k+1; l<5; l++){
1006 double rFkk = Fx[k][k]*Fx[k][k] + Fy[k][k]*Fy[k][k];
1007 double Fxlk = Fx[l][k];
1008 double Fylk = Fy[l][k];
1009 double Fxkk = Fx[k][k];
1010 double Fykk = Fy[k][k];
1011 Fx[l][k] = (Fxlk*Fxkk + Fylk*Fykk)/rFkk;
1012 Fy[l][k] = (Fylk*Fxkk - Fxlk*Fykk)/rFkk;
1013 for(
int m=k+1; m<5; m++){
1014 Fx[l][m] = Fx[l][m] - (Fx[l][k]*Fx[k][m] - Fy[l][k]*Fy[k][m]);
1015 Fy[l][m] = Fy[l][m] - (Fx[l][k]*Fy[k][m] + Fy[l][k]*Fx[k][m]);
1020 for(
int k=0; k<5; k++){
1021 for(
int l=0; l<5 ;l++){
1025 Ux[k][k] = Fx[k][k];
1026 Uy[k][k] = Fy[k][k];
1029 Lx[k][l] = Fx[k][l];
1030 Ly[k][l] = Fy[k][l];
1035 Ux[k][l] = Fx[k][l];
1036 Uy[k][l] = Fy[k][l];
1044 for(
int k=0; k<5; k++){
1049 double rUkk = Ux[k][k]*Ux[k][k] + Uy[k][k]*Uy[k][k];
1050 UIx[k][k] = Ux[k][k]/rUkk;
1051 UIy[k][k] = -1.0f * Uy[k][k]/rUkk ;
1053 for(
int l=(k+1); l<5; l++){
1060 for(
int l=(k-1); l>=0; l--){
1065 for(
int m=l+1; m<=k; m++){
1067 double sx_tmp = sx + Ux[l][m]*UIx[m][k] - Uy[l][m]*UIy[m][k];
1068 c_sx = (sx_tmp - sx) - (Ux[l][m]*UIx[m][k] - Uy[l][m]*UIy[m][k]);
1072 double sy_tmp = sy + Ux[l][m]*UIy[m][k] + Uy[l][m]*UIx[m][k];
1073 c_sy = (sy_tmp - sy) - (Ux[l][m]*UIy[m][k] + Uy[l][m]*UIx[m][k]);
1076 UIx[l][k] = -1.0f * (UIx[l][l]*sx - UIy[l][l]*sy);
1077 UIy[l][k] = -1.0f * (UIy[l][l]*sx + UIx[l][l]*sy);
1080 for(
int l=k+1; l<5; l++){
1085 for(
int m=k; m<l; m++){
1087 double sx_tmp = sx + Lx[l][m]*LIx[m][k] - Ly[l][m]*LIy[m][k];
1088 c_sx = (sx_tmp - sx) - (Lx[l][m]*LIx[m][k] - Ly[l][m]*LIy[m][k]);
1092 double sy_tmp = sy + Lx[l][m]*LIy[m][k] + Ly[l][m]*LIx[m][k];
1093 c_sy = (sy_tmp - sy) - (Lx[l][m]*LIy[m][k] + Ly[l][m]*LIx[m][k]);
1096 LIx[l][k] = -1.0f * sx;
1097 LIy[l][k] = -1.0f * sy;
1101 for(
int m=0; m<5; m++){
1106 for(
int k=0; k<5; k++){
1107 for(
int l=0; l<5; l++){
1109 if(
P[l] == m) Plm = 1;
1111 resX = resX - c_resX;
1112 double resX_tmp = resX + (UIx[0][k]*LIx[k][l] - UIy[0][k]*LIy[k][l])*Plm;
1113 c_resX = (resX_tmp - resX) - ((UIx[0][k]*LIx[k][l] - UIy[0][k]*LIy[k][l])*Plm);
1116 resY = resY - c_resY;
1117 double resY_tmp = resY + (UIx[0][k]*LIy[k][l] + UIy[0][k]*LIx[k][l])*Plm;
1118 c_resY = (resY_tmp - resY) - ((UIx[0][k]*LIy[k][l] + UIy[0][k]*LIx[k][l])*Plm);
1134 double m[5] = { 0.65100, 1.20360, 1.55817, 1.21000, 1.82206};
1142 double dm2 = m[
ID]*m[
ID]-
s;
1144 if(fabs(dm2)<
eps && dm2<=0) dm2 = -
eps;
1145 if(fabs(dm2)<
eps && dm2>0) dm2 =
eps;
1159 double FINVx[5] = {0,0,0,0,0};
1160 double FINVy[5] = {0,0,0,0,0};
1162 double tmpFLAG = FINVMTX(sa,FINVx,FINVy);
1165 double g[5][5] = {{ 0.22889,-0.55377, 0.00000,-0.39899,-0.34639},
1166 { 0.94128, 0.55095, 0.00000, 0.39065, 0.31503},
1167 { 0.36856, 0.23888, 0.55639, 0.18340, 0.18681},
1168 { 0.33650, 0.40907, 0.85679, 0.19906,-0.00984},
1169 { 0.18171,-0.17558,-0.79658,-0.00355, 0.22358}};
1174 double Plx = PVTR(l,sa).real();
1175 double Ply = PVTR(l,sa).imag();
1176 for(
int j=0; j<5; j++){
1177 resx = resx - c_resx;
1178 double resx_tmp = resx + (FINVx[j]*g[l][j]*Plx - FINVy[j]*g[l][j]*Ply);
1179 c_resx = (resx_tmp - resx) - (FINVx[j]*g[l][j]*Plx - FINVy[j]*g[l][j]*Ply);
1182 resy = resy - c_resy;
1183 double resy_tmp = resy + (FINVx[j]*g[l][j]*Ply + FINVy[j]*g[l][j]*Plx);
1184 c_resy = (resy_tmp - resy) - (FINVx[j]*g[l][j]*Ply + FINVy[j]*g[l][j]*Plx);
1193 if(fabs(ds)<
eps && ds<=0) ds = -
eps;
1194 if(fabs(ds)<
eps && ds>0) ds =
eps;
1195 double tmp = (1-s0)/ds;
1196 outputx = FINVx[idx]*tmp;
1197 outputy = FINVy[idx]*tmp;
1205 return Amp(p4_Pip, p4_Pim, p4_Pi0);
1209 vector<double> cpPip; cpPip.clear();
1210 vector<double> cpPim; cpPim.clear();
1211 vector<double> cpPi0; cpPi0.clear();
1213 cpPip.push_back(-p4_Pim[0]); cpPim.push_back(-p4_Pip[0]); cpPi0.push_back(-p4_Pi0[0]);
1214 cpPip.push_back(-p4_Pim[1]); cpPim.push_back(-p4_Pip[1]); cpPi0.push_back(-p4_Pi0[1]);
1215 cpPip.push_back(-p4_Pim[2]); cpPim.push_back(-p4_Pip[2]); cpPi0.push_back(-p4_Pi0[2]);
1216 cpPip.push_back( p4_Pim[3]); cpPim.push_back( p4_Pip[3]); cpPi0.push_back( p4_Pi0[3]);
1218 return (-1.0)*Amp(cpPip, cpPim, cpPi0);
1221complex<double> EvtD0Topipipi0::Amp(vector<double> Pip, vector<double> Pim, vector<double>
Pi0)
1224 if(fitpara.size()!=14) {
1225 cout<<
"Error!!! number of para: "<<fitpara.size()<<endl;
1229 vector<double> PipPim; PipPim.clear();
1230 vector<double> PipPi0; PipPi0.clear();
1231 vector<double> PimPi0; PimPi0.clear();
1233 PipPim = sum_tensor(Pip, Pim);
1234 PipPi0 = sum_tensor(Pip,
Pi0);
1235 PimPi0 = sum_tensor(Pim,
Pi0);
1237 vector<double> D0; D0.clear();
1238 D0 = sum_tensor(PipPim,
Pi0);
1240 double M2_PipPim = contract_11_0(PipPim, PipPim);
1241 double M2_PipPi0 = contract_11_0(PipPi0, PipPi0);
1242 double M2_PimPi0 = contract_11_0(PimPi0, PimPi0);
1244 double M2_D0 = contract_11_0(D0, D0);
1246 complex<double> GS_rho770_z = GS(M2_PipPim, m0_rho7700, w0_rho7700, m2_Pi, m2_Pi, rRes, 1);
1247 complex<double> GS_rho770_p = GS(M2_PipPi0, m0_rho770p, w0_rho770p, m2_Pi, m2_Pi0, rRes, 1);
1248 complex<double> GS_rho770_m = GS(M2_PimPi0, m0_rho770p, w0_rho770p, m2_Pi, m2_Pi0, rRes, 1);
1261 complex<double> RBW_f21270 = RBW(M2_PipPim, m0_f21270, w0_f21270, m2_Pi, m2_Pi, rRes, 2);
1264 vector<double> T1_PipPim; T1_PipPim.clear();
1265 vector<double> T1_PipPi0; T1_PipPi0.clear();
1266 vector<double> T1_PimPi0; T1_PimPi0.clear();
1268 T1_PipPim = OrbitalTensors(PipPim, Pip, Pim, rRes, 1);
1269 T1_PipPi0 = OrbitalTensors(PipPi0, Pip,
Pi0, rRes, 1);
1270 T1_PimPi0 = OrbitalTensors(PimPi0, Pim,
Pi0, rRes, 1);
1272 vector<double> T2_PipPim; T2_PipPim.clear();
1274 T2_PipPim = OrbitalTensors(PipPim, Pip, Pim, rRes, 2);
1277 vector<double> T1_PipPimPi0; T1_PipPimPi0.clear();
1278 vector<double> T1_PipPi0Pim; T1_PipPi0Pim.clear();
1279 vector<double> T1_PimPi0Pip; T1_PimPi0Pip.clear();
1281 T1_PipPimPi0 = OrbitalTensors(D0, PipPim,
Pi0, rD, 1);
1282 T1_PipPi0Pim = OrbitalTensors(D0, PipPi0, Pim, rD, 1);
1283 T1_PimPi0Pip = OrbitalTensors(D0, PimPi0, Pip, rD, 1);
1285 vector<double> T2_PipPimPi0; T2_PipPimPi0.clear();
1287 T2_PipPimPi0 = OrbitalTensors(D0, PipPim,
Pi0, rD, 2);
1293 double SF_VpPm = contract_11_0(T1_PipPi0Pim, T1_PipPi0);
1294 amplitude += fitpara[0]*(SF_VpPm*GS_rho770_p);
1296 double SF_VmPp = contract_11_0(T1_PimPi0Pip, T1_PimPi0);
1297 amplitude += fitpara[1]*(SF_VmPp*GS_rho770_m);
1299 double SF_VzPz = contract_11_0(T1_PipPimPi0, T1_PipPim);
1300 amplitude += fitpara[2]*(SF_VzPz*GS_rho770_z);
1303 amplitude += fitpara[3]*(PiPiS_pm_0);
1304 amplitude += fitpara[4]*(PiPiS_pm_1);
1305 amplitude += fitpara[5]*(PiPiS_pm_2);
1306 amplitude += fitpara[6]*(PiPiS_pm_3);
1307 amplitude += fitpara[7]*(PiPiS_pm_4);
1308 amplitude += fitpara[8]*(PiPiS_pm_5);
1309 amplitude += fitpara[9]*(PiPiS_pm_6);
1310 amplitude += fitpara[10]*(PiPiS_pm_7);
1311 amplitude += fitpara[11]*(PiPiS_pm_8);
1312 amplitude += fitpara[12]*(PiPiS_pm_9);
1315 double SF_TzPz = contract_22_0(T2_PipPimPi0, T2_PipPim);
1316 amplitude += fitpara[13]*(SF_TzPz*RBW_f21270);
1322int EvtD0Topipipi0::CalAmp()
1324 m_AmpD0 = CalD0Amp();
1325 m_AmpDb = CalDbAmp();
1331 double temp =
x.real()*
x.real() +
x.imag()*
x.imag();
1337 double temp = 2*(
x.real()*
y.real() +
x.imag()*
y.imag());
1343 double temp = atan(
x.imag()/
x.real());
1344 if(
x.real()<0) temp=temp+
PI;
1347double EvtD0Topipipi0::Get_strongPhase()
1349 double temp = arg(m_AmpD0) - arg(m_AmpDb);
1359double EvtD0Topipipi0::AmplitudeSquare(
int charm,
int tagmode){
1361 EvtVector4R dp1=GetDaugMomLab(0),dp2=GetDaugMomLab(1),dp3=GetDaugMomLab(2);
1364 double emp =
mp.
get(0);
1371 double p4pip[4], p4pim[4], p4pi0[4];
1372 for(
int i=0; i<3; i++){
1373 p4pip[i]=dp1bst.
get(i+1);
1374 p4pim[i]=dp2bst.
get(i+1);
1375 p4pi0[i]=dp3bst.
get(i+1);
1378 p4pip[3]=dp1bst.
get(0);
1379 p4pim[3]=dp2bst.
get(0);
1380 p4pi0[3]=dp3bst.
get(0);
1382 setInput(p4pip, p4pim, p4pi0);
1387 ampD0 = Get_AmpD0();
1388 ampDb = Get_AmpDb();
1390 ampD0 = Get_AmpDb();
1391 ampDb = Get_AmpD0();
1394 double ampsq = 1e-20;
1395 double r_tag = 0, R_tag = 0, delta_tag = 0;
1397 if (tagmode==1||tagmode==2||tagmode==3) {
1401 delta_tag = 192.1/180.0*3.1415926;
1402 }
else if(tagmode == 2){
1405 delta_tag = 196.0/180.0*3.1415926;
1406 }
else if(tagmode == 3){
1409 delta_tag = 161.0/180.0*3.1415926;
1413 ampsq = mag2(ampD0_part1) + r_tag*r_tag*(1-R_tag*R_tag)*(mag2(ampDb));
1415 ampsq = mag2(ampD0);
1418 return (ampsq <= 0) ? 1e-20 : ampsq;
double sin(const BesAngle a)
double cos(const BesAngle a)
double P(RecMdcKalTrack *trk)
TFile f("ana_bhabha660a_dqa_mcPat_zy_old.root")
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
****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)