40 for(
int i=0; i<4; i++){
41 for(
int j=0; j<4; j++){
53 for(
int i=0; i<4; i++){
54 for(
int j=0; j<4; j++){
55 for(
int k=0; k<4; k++){
56 for(
int l=0; l<4; l++){
57 if(i==j || i==k || i==l || j==k || j==l || k==l){
58 epsilon_uvmn.push_back(0.0);
60 if(i==0 && j==1 && k==2 && l==3) epsilon_uvmn.push_back(1.0);
61 if(i==0 && j==1 && k==3 && l==2) epsilon_uvmn.push_back(-1.0);
62 if(i==0 && j==2 && k==1 && l==3) epsilon_uvmn.push_back(-1.0);
63 if(i==0 && j==2 && k==3 && l==1) epsilon_uvmn.push_back(1.0);
64 if(i==0 && j==3 && k==1 && l==2) epsilon_uvmn.push_back(1.0);
65 if(i==0 && j==3 && k==2 && l==1) epsilon_uvmn.push_back(-1.0);
67 if(i==1 && j==0 && k==2 && l==3) epsilon_uvmn.push_back(-1.0);
68 if(i==1 && j==0 && k==3 && l==2) epsilon_uvmn.push_back(1.0);
69 if(i==1 && j==2 && k==0 && l==3) epsilon_uvmn.push_back(1.0);
70 if(i==1 && j==2 && k==3 && l==0) epsilon_uvmn.push_back(-1.0);
71 if(i==1 && j==3 && k==0 && l==2) epsilon_uvmn.push_back(-1.0);
72 if(i==1 && j==3 && k==2 && l==0) epsilon_uvmn.push_back(1.0);
74 if(i==2 && j==0 && k==1 && l==3) epsilon_uvmn.push_back(1.0);
75 if(i==2 && j==0 && k==3 && l==1) epsilon_uvmn.push_back(-1.0);
76 if(i==2 && j==1 && k==0 && l==3) epsilon_uvmn.push_back(-1.0);
77 if(i==2 && j==1 && k==3 && l==0) epsilon_uvmn.push_back(1.0);
78 if(i==2 && j==3 && k==0 && l==1) epsilon_uvmn.push_back(1.0);
79 if(i==2 && j==3 && k==1 && l==0) epsilon_uvmn.push_back(-1.0);
81 if(i==3 && j==0 && k==1 && l==2) epsilon_uvmn.push_back(-1.0);
82 if(i==3 && j==0 && k==2 && l==1) epsilon_uvmn.push_back(1.0);
83 if(i==3 && j==1 && k==0 && l==2) epsilon_uvmn.push_back(1.0);
84 if(i==3 && j==1 && k==2 && l==0) epsilon_uvmn.push_back(-1.0);
85 if(i==3 && j==2 && k==0 && l==1) epsilon_uvmn.push_back(-1.0);
86 if(i==3 && j==2 && k==1 && l==0) epsilon_uvmn.push_back(1.0);
103 m2_Pi0 = m_Pi0*m_Pi0;
105 m0_rho7700 = 0.77526;
108 m0_rho770p = 0.77511;
136vector<double> D0Topipipi0::sum_tensor(vector<double> pa, vector<double> pb) {
137 if(pa.size()!=pb.size()){
138 cout<<
"error sum tensor"<<endl;
141 vector<double> temp; temp.clear();
142 for(
int i=0; i<pa.size(); i++){
143 double sum = pa[i] + pb[i];
149double D0Topipipi0::contract_11_0(vector<double> pa, vector<double> pb){
150 if(pa.size()!=pb.size() || pa.size()!=4) {
151 cout<<
"error contract 11->0"<<endl;
154 double temp = pa[3]*pb[3] - pa[0]*pb[0] - pa[1]*pb[1] - pa[2]*pb[2];
159vector<double> D0Topipipi0::contract_21_1(vector<double> pa, vector<double> pb){
160 if(pa.size()!=16 || pb.size()!=4) {
161 cout<<
"error contract 21->1"<<endl;
164 vector<double> temp; temp.clear();
165 for(
int i=0; i<4; i++){
167 for(
int j=0; j<4; j++){
169 sum += pa[idx]*pb[j]*g_uv[4*j+j];
177double D0Topipipi0::contract_22_0(vector<double> pa, vector<double> pb){
178 if(pa.size()!=pb.size() || pa.size()!=16) {
179 cout<<
"error contract 22->0"<<endl;
183 for(
int i=0; i<4; i++){
184 for(
int j=0; j<4; j++){
186 temp += pa[idx]*pb[idx]*g_uv[4*i+i]*g_uv[4*j+j];
193vector<double> D0Topipipi0::contract_31_2(vector<double> pa, vector<double> pb){
194 if(pa.size()!=64 || pb.size()!=4) {
195 cout<<
"error contract 31->2"<<endl;
198 vector<double> temp; temp.clear();
199 for(
int i=0; i<16; i++){
201 for(
int j=0; j<4; j++){
203 sum += pa[idx]*pb[j]*g_uv[4*j+j];
211vector<double> D0Topipipi0::contract_41_3(vector<double> pa, vector<double> pb){
212 if(pa.size()!=256|| pb.size()!=4) {
213 cout<<
"error contract 41->3"<<endl;
216 vector<double> temp; temp.clear();
217 for(
int i=0; i<64; i++){
219 for(
int j=0; j<4; j++){
221 sum += pa[idx]*pb[j]*g_uv[4*j+j];
229vector<double> D0Topipipi0::contract_42_2(vector<double> pa, vector<double> pb){
230 if(pa.size()!=256|| pb.size()!=16) {
231 cout<<
"error contract 42->2"<<endl;
234 vector<double> temp; temp.clear();
235 for(
int i=0; i<16; i++){
237 for(
int j=0; j<4; j++){
238 for(
int k=0; k<4; k++){
239 int idxa = i*16+j*4+k;
241 sum += pa[idxa] * pb[idxb] * g_uv[4*j+j] * g_uv[4*k+k];
251vector<double> D0Topipipi0::contract_22_2(vector<double> pa, vector<double> pb){
252 if(pa.size()!=16|| pb.size()!=16) {
253 cout<<
"error contract 42->2"<<endl;
256 vector<double> temp; temp.clear();
257 for(
int i=0; i<4; i++){
258 for(
int j=0; j<4; j++){
260 for(
int k=0; k<4; k++){
263 sum += pa[idxa] * pb[idxb] * g_uv[4*k+k];
306vector<double> D0Topipipi0::OrbitalTensors(vector<double> pa, vector<double> pb, vector<double> pc,
double r,
int rank)
309 if(pa.size()!=4 || pb.size()!=4 || pc.size()!=4) {
310 cout<<
"Error: pa, pb, pc"<<endl;
314 cout<<
"Error: L<0 !!!"<<endl;
319 vector<double> mr; mr.clear();
321 for(
int i=0; i<4; i++){
322 double temp = pb[i] - pc[i];
327 double msa = contract_11_0(pa, pa);
328 double msb = contract_11_0(pb, pb);
329 double msc = contract_11_0(pc, pc);
332 double top = msa + msb - msc;
333 double Q2abc = top*top/(4.0*msa) - msb;
336 double Q_0 = 0.197321f/r;
337 double Q_02 = Q_0*Q_0;
338 double Q_04 = Q_02*Q_02;
342 double Q4abc = Q2abc*Q2abc;
346 double mB1 = sqrt(2.0f/(Q2abc + Q_02));
347 double mB2 = sqrt(13.0f/(Q4abc + (3.0f*Q_02)*Q2abc + 9.0f*Q_04));
352 vector<double> proj_uv; proj_uv.clear();
353 for(
int i=0; i<4; i++){
354 for(
int j=0; j<4; j++){
356 double temp = -g_uv[idx] + pa[i]*pa[j]/msa;
357 proj_uv.push_back(temp);
364 vector<double>
t;
t.clear();
370 vector<double> t_u; t_u.clear();
371 vector<double> Bt_u; Bt_u.clear();
372 for(
int i=0; i<4; i++){
374 for(
int j=0; j<4; j++){
376 temp += -proj_uv[idx]*mr[j]*g_uv[j*4+j];
379 Bt_u.push_back(temp*mB1);
381 if(rank==1)
return Bt_u;
383 double t_u2 = contract_11_0(t_u,t_u);
385 vector<double> Bt_uv; Bt_uv.clear();
386 for(
int i=0; i<4; i++){
387 for(
int j=0; j<4; j++){
389 double temp = t_u[i]*t_u[j] + (1.0/3.0)*proj_uv[idx]*t_u2;
390 Bt_uv.push_back(temp*mB2);
393 if(rank==2)
return Bt_uv;
397 cout<<
"rank>2: please add it by yourself!!!"<<endl;
404vector<double> D0Topipipi0::ProjectionTensors(vector<double> pa,
int rank)
408 cout<<
"Error: pa"<<endl;
412 cout<<
"Error: L<0 !!!"<<endl;
416 double msa = contract_11_0(pa, pa);
419 vector<double> proj_uv; proj_uv.clear();
420 for(
int i=0; i<4; i++){
421 for(
int j=0; j<4; j++){
423 double temp = -g_uv[idx] + pa[i]*pa[j]/msa;
424 proj_uv.push_back(temp);
431 vector<double>
t;
t.clear();
440 vector<double> proj_uvmn; proj_uvmn.clear();
441 for(
int i=0; i<4; i++){
442 for(
int j=0; j<4; j++){
443 for(
int k=0; k<4; k++){
444 for(
int l=0; l<4; l++){
446 int idx1_1 = 4*i + k;
447 int idx1_2 = 4*i + l;
448 int idx1_3 = 4*i + j;
450 int idx2_1 = 4*j + l;
451 int idx2_2 = 4*j + k;
452 int idx2_3 = 4*k + l;
454 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];
455 proj_uvmn.push_back(temp);
464 cout<<
"rank>2: please add it by yourself!!!"<<endl;
469double D0Topipipi0::fundecaymomentum(
double mr2,
double m1_2,
double m2_2){
470 double mr = sqrt(mr2);
471 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;
472 double ret = sqrt(poly)/(2*mr);
479complex<double> D0Topipipi0::breitwigner(
double mx2,
double mr,
double wr)
485 double diff = mr2-mx2;
486 double denom = diff*diff + wr*wr*mr2;
492 output_x = diff/denom;
493 output_y = wr*mr/denom;
505double D0Topipipi0::h(
double m,
double q){
506 double h = 2.0/math_pi*
q/m*log((m+2.0*
q)/(2.0*mass_Pion));
510double D0Topipipi0::dh(
double m0,
double q0){
511 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);
515double D0Topipipi0::f(
double m0,
double sx,
double q0,
double q){
517 double f = m0*m0/(q0*q0*q0)*(
q*
q*(h(m,
q)-h(m0,q0))+(m0*m0-sx)*q0*q0*dh(m0,q0));
521double D0Topipipi0::d(
double m0,
double q0){
522 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);
526double D0Topipipi0::fundecaymomentum2(
double mr2,
double m1_2,
double m2_2){
527 double mr = sqrt(mr2);
528 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;
529 double ret = poly/(4.0f*mr2);
535double D0Topipipi0::wid(
double mass,
double sa,
double sb,
double sc,
double r,
int l){
539 double q = fundecaymomentum2(sa,sb,sc);
540 double q0 = fundecaymomentum2(sa0,sb,sc);
546 if(l == 1) F = sqrt((1.0+z0)/(1.0+z));
547 if(l == 2) F = sqrt((9.0+3.0*z0+z0*z0)/(9.0+3.0*z+z*z));
548 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));
549 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));
550 double t = sqrt(
q/q0);
553 for(i=0; i<(2*l+1); i++) {
556 widm *= (
mass/m*F*F);
561complex<double> D0Topipipi0::GS(
double mx2,
double mr,
double wr,
double m1_2,
double m2_2,
double r,
int l){
564 double q = fundecaymomentum(mx2, m1_2, m2_2);
565 double q0 = fundecaymomentum(mr2, m1_2, m2_2);
566 double numer = 1.0+d(mr,q0)*wr/mr;
567 double denom_real = mr2-mx2+wr*
f(mr,mx2,q0,
q);
568 double denom_imag = mr*wr*wid(mr,mx2,m1_2,m2_2,r,l);
570 double denom = denom_real*denom_real+denom_imag*denom_imag;
571 double output_x = denom_real*numer/denom;
572 double output_y = denom_imag*numer/denom;
578complex<double> D0Topipipi0::irho(
double mr2,
double m1_2,
double m2_2){
579 double mr = sqrt(mr2);
580 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;
584 ret_real = 2.0f*sqrt(poly)/(2.0f*mr2);
589 ret_imag = 2.0f*sqrt(-1.0f*poly)/(2.0f*mr2);
595complex<double> D0Topipipi0::Flatte(
double mx2,
double mr,
double g1,
double g2,
double m1a,
double m1b,
double m2a,
double m2b){
598 double diff = mr2-mx2;
604 double denom_real = diff + iws.imag();
605 double denom_imag = iws.real();
606 double denom = denom_real*denom_real+denom_imag*denom_imag;
608 double output_x = denom_real/denom;
609 double output_y = denom_imag/denom;
616complex<double> D0Topipipi0::RBW(
double mx2,
double mr,
double wr,
double m1_2,
double m2_2,
double r,
int l){
617 double mx = sqrt(mx2);
619 double denom_real = mr2-mx2;
620 double denom_imag = 0;
621 if(m1_2>0 && m2_2>0){
622 denom_imag = mr*wr*wid(mr,mx2,m1_2,m2_2,r,l);
627 double denom = denom_real*denom_real+denom_imag*denom_imag;
628 double output_x = denom_real/denom;
629 double output_y = denom_imag/denom;
636double D0Topipipi0::rho22(
double sc){
637 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,
638 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,
639 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,
640 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,
641 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,
642 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,
643 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,
644 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,
645 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,
646 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,
647 0.000103559, 0.000108812, 0.000114267, 0.000119938, 0.000125827, 0.00013194, 0.000138278, 0.000144857, 0.000151681, 0.000158752,
648 0.000166074, 0.000173663, 0.000181521, 0.000189652, 0.000198059, 0.000206761, 0.000215761, 0.000225063, 0.00023467, 0.000244599,
649 0.000254855, 0.00026544, 0.000276357, 0.000287629, 0.00029926, 0.000311253, 0.000323609, 0.000336351, 0.000349483, 0.000363009,
650 0.000376926, 0.000391264, 0.000406029, 0.000421225, 0.000436848, 0.000452921, 0.000469458, 0.000486461, 0.00050393, 0.00052187,
651 0.000540322, 0.000559278, 0.000578746, 0.00059872, 0.000619236, 0.0006403, 0.000661911, 0.000684074, 0.000706799, 0.000730127,
652 0.00075405, 0.000778569, 0.000803686, 0.000829443, 0.000855839, 0.000882879, 0.000910561, 0.000938898, 0.000967939, 0.000997674,
653 0.00102811, 0.00105923, 0.0010911, 0.0011237, 0.00115706, 0.00119117, 0.00122601, 0.00126168, 0.00129815, 0.00133543,
654 0.00137351, 0.00141242, 0.00145219, 0.00149283, 0.00153434, 0.0015767, 0.00161995, 0.00166415, 0.00170928, 0.00175534,
655 0.00180232, 0.00185028, 0.00189924, 0.00194919, 0.00200014, 0.00205207, 0.00210503, 0.0021591, 0.00221421, 0.0022704,
656 0.00232766, 0.00238602, 0.00244554, 0.00250619, 0.00256799, 0.0026309, 0.002695, 0.00276033, 0.00282689, 0.00289467,
657 0.00296367, 0.00303389, 0.00310543, 0.0031783, 0.00325244, 0.0033279, 0.0034046, 0.00348275, 0.00356229, 0.00364322,
658 0.00372555, 0.00380924, 0.00389438, 0.00398104, 0.00406914, 0.00415877, 0.00424985, 0.00434235, 0.00443651, 0.00453224,
659 0.00462954, 0.00472848, 0.00482894, 0.00493102, 0.00503483, 0.00514029, 0.00524749, 0.0053563, 0.00546675, 0.00557905,
660 0.0056931, 0.00580901, 0.0059267, 0.00604613, 0.00616735, 0.00629049, 0.00641557, 0.00654254, 0.00667142, 0.00680216,
661 0.00693472, 0.00706946, 0.00720621, 0.00734497, 0.0074858, 0.00762855, 0.00777338, 0.00792036, 0.00806957, 0.00822087,
662 0.00837426, 0.00852982, 0.0086875, 0.00884756, 0.00900991, 0.00917447, 0.00934137, 0.00951052, 0.00968194, 0.0098558,
663 0.010032, 0.0102108, 0.0103919, 0.0105754, 0.0107612, 0.0109496, 0.0111406, 0.0113343, 0.0115305, 0.0117293,
664 0.0119303, 0.0121343, 0.0123409, 0.0125502, 0.0127623, 0.0129771, 0.0131944, 0.0134145, 0.0136376, 0.0138636,
665 0.0140924, 0.0143241, 0.0145587, 0.0147959, 0.0150363, 0.0152797, 0.0155262, 0.0157758, 0.0160283, 0.0162838,
666 0.0165421, 0.016804, 0.0170691, 0.0173374, 0.0176087, 0.0178835, 0.0181612, 0.0184423, 0.0187269, 0.0190149,
667 0.0193063, 0.0196009, 0.0198991, 0.0202003, 0.0205052, 0.0208137, 0.0211259, 0.0214418, 0.0217611, 0.0220841,
668 0.0224105, 0.0227406, 0.0230746, 0.0234125, 0.0237542, 0.0240996, 0.0244486, 0.0248012, 0.025158, 0.0255188,
669 0.0258837, 0.0262527, 0.0266256, 0.0270025, 0.0273833, 0.027768, 0.0281572, 0.0285505, 0.0289483, 0.0293503,
670 0.0297564, 0.0301665, 0.0305808, 0.0309997, 0.0314231, 0.0318511, 0.0322835, 0.0327205, 0.0331616, 0.0336073,
671 0.0340576, 0.0345128, 0.0349727, 0.0354373, 0.0359066, 0.0363807, 0.0368589, 0.0373419, 0.0378302, 0.0383234,
672 0.0388218, 0.0393252, 0.0398336, 0.040347, 0.0408652, 0.041388, 0.0419165, 0.0424502, 0.0429893, 0.0435338,
673 0.0440833, 0.044638, 0.0451976, 0.0457627, 0.0463338, 0.0469103, 0.047492, 0.0480797, 0.0486729, 0.0492716,
674 0.0498757, 0.0504852, 0.0511009, 0.0517229, 0.0523503, 0.0529838, 0.0536231, 0.0542678, 0.054918, 0.0555743,
675 0.0562372, 0.0569065, 0.0575818, 0.0582634, 0.0589511, 0.0596454, 0.0603451, 0.061051, 0.0617635, 0.0624826,
676 0.0632084, 0.0639409, 0.06468, 0.0654254, 0.0661772, 0.0669346, 0.0676994, 0.0684714, 0.0692503, 0.0700354,
677 0.0708285, 0.0716277, 0.0724347, 0.0732479, 0.0740671, 0.0748947, 0.0757299, 0.0765715, 0.0774207, 0.0782771,
678 0.0791407, 0.0800119, 0.0808897, 0.0817743, 0.0826672, 0.0835684, 0.0844769, 0.0853938, 0.0863179, 0.0872493,
679 0.0881882, 0.0891349, 0.090089, 0.0910523, 0.0920236, 0.093002, 0.0939894, 0.094985, 0.0959887, 0.0970003,
680 0.0980191, 0.0990454, 0.100081, 0.101126, 0.10218, 0.103242, 0.104312, 0.105392, 0.10648, 0.107576,
681 0.10868, 0.109793, 0.110916, 0.112048, 0.113188, 0.114339, 0.115498, 0.116666, 0.117843, 0.119028,
682 0.120223, 0.121427, 0.122641, 0.123865, 0.125098, 0.126342, 0.127595, 0.128857, 0.130128, 0.131409,
683 0.132701, 0.134002, 0.135314, 0.136635, 0.137966, 0.139308, 0.14066, 0.142022, 0.143394, 0.144774,
684 0.146166, 0.14757, 0.148985, 0.15041, 0.151845, 0.153291, 0.154749, 0.156215, 0.157694, 0.159182,
685 0.160682, 0.162194, 0.163718, 0.165251, 0.166797, 0.168354, 0.169921, 0.1715, 0.17309, 0.17469,
686 0.176304, 0.177929, 0.179566, 0.181216, 0.182878, 0.184553, 0.186238, 0.187934, 0.189642, 0.191362,
687 0.193096, 0.194842, 0.196602, 0.198374, 0.200158, 0.201954, 0.203764, 0.205586, 0.207421, 0.209266,
688 0.211124, 0.212997, 0.214882, 0.216783, 0.218697, 0.220624, 0.222565, 0.224518, 0.226486, 0.228466,
689 0.230458, 0.232463, 0.234484, 0.23652, 0.238569, 0.240633, 0.242711, 0.244803, 0.246909, 0.249031,
690 0.251165, 0.253313, 0.255475, 0.257649, 0.259841, 0.262051, 0.264274, 0.266514, 0.268768, 0.271036,
691 0.273319, 0.275618, 0.277932, 0.280259, 0.282602, 0.28496, 0.287338, 0.28973, 0.292138, 0.294563,
692 0.297003, 0.299458, 0.30193, 0.304417, 0.306919, 0.309437, 0.311972, 0.314526, 0.317095, 0.319684,
693 0.322289, 0.324911, 0.327551, 0.330205, 0.332876, 0.335567, 0.338271, 0.340993, 0.343736, 0.346496,
694 0.349272, 0.352065, 0.354878, 0.35771, 0.360561, 0.363426, 0.366311, 0.369212, 0.372128, 0.375067,
695 0.378027, 0.381006, 0.384001, 0.387014, 0.39005, 0.393106, 0.396181, 0.399271, 0.402384, 0.405513,
696 0.408661, 0.41183, 0.41502, 0.418233, 0.421462, 0.424709, 0.42798, 0.43127, 0.434583, 0.437914,
697 0.441267, 0.444637, 0.448022, 0.451434, 0.454868, 0.458328, 0.461805, 0.465302, 0.468821, 0.472364,
698 0.475928, 0.47951, 0.483119, 0.486748, 0.490397, 0.494066, 0.497758, 0.501477, 0.505217, 0.508977,
699 0.512762, 0.516567, 0.520394, 0.524247, 0.528125, 0.532027, 0.535947, 0.53989, 0.543852, 0.547844,
700 0.551863, 0.555904, 0.559966, 0.56406, 0.568177, 0.572312, 0.576471, 0.580662, 0.584875, 0.58911,
701 0.593373, 0.597653, 0.601965, 0.606301, 0.610663, 0.615051, 0.619465, 0.623907, 0.62837, 0.632863,
702 0.637383, 0.641924, 0.646494, 0.651091, 0.655708, 0.660356, 0.665027, 0.669732, 0.674464, 0.679227,
703 0.684016, 0.688827, 0.693664, 0.698532, 0.703428, 0.708353, 0.713307, 0.718283, 0.72329, 0.728322,
704 0.733387, 0.738479, 0.743605, 0.748763, 0.753949, 0.759163, 0.764407, 0.769674, 0.774973, 0.780311,
705 0.78567, 0.791057, 0.796476, 0.801922, 0.8074, 0.812919, 0.818466, 0.824044 };
707 double m2 = 0.13957*0.13957;
708 double smin = (0.13957*4)*(0.13957*4);
710 int od = (sc - 0.312)/dh;
711 double sc_m = 0.312 + od*dh;
713 if(sc>=0.312 && sc<1){
714 rhouse = ((sc-sc_m)/dh)*(rho[od+1]-rho[od])+rho[od];
715 }
else if(sc<0.312 && sc>=smin){
716 rhouse = ((sc - smin)/(0.312-smin))*rho[0];
719 rhouse = sqrt(1-16*
m2/sc);
730 double mpi = 0.13957;
732 double m2 = 0.13957*0.13957;
734 rhoijx = sqrt(1.0f - (4*
m2)/
s);
737 rhoijy = sqrt((4*
m2)/
s - 1.0f);
742 double m2 = 0.493677*0.493677;
744 rhoijx = sqrt(1.0f - (4*
m2)/
s);
747 rhoijy = sqrt((4*
m2)/
s - 1.0f);
756 double m2 = 0.547862*0.547862;
758 rhoijx = sqrt(1.0f - (4*
m2)/
s);
761 rhoijy = sqrt((4*
m2)/
s - 1.0f);
766 double m_1 = 0.547862;
767 double m_2 = 0.95778;
768 double mp2 = (m_1+m_2)*(m_1+m_2);
769 double mm2 = (m_1-m_2)*(m_1-m_2);
771 rhoijx = sqrt(1.0f - mp2/
s);
774 rhoijy = sqrt(mp2/
s - 1.0f);
793 double mpi = 0.13957;
794 double m[5] = { 0.65100, 1.20360, 1.55817, 1.21000, 1.82206};
796 double g1[5] = { 0.22889,-0.55377, 0.00000,-0.39899,-0.34639};
797 double g2[5] = { 0.94128, 0.55095, 0.00000, 0.39065, 0.31503};
798 double g3[5] = { 0.36856, 0.23888, 0.55639, 0.18340, 0.18681};
799 double g4[5] = { 0.33650, 0.40907, 0.85679, 0.19906,-0.00984};
800 double g5[5] = { 0.18171,-0.17558,-0.79658,-0.00355, 0.22358};
802 double f1[5] = { 0.23399, 0.15044,-0.20545, 0.32825, 0.35412};
806 double down[5] = { 0,0,0,0,0};
807 double upreal[5] = { 0,0,0,0,0};
808 double upimag[5] = { 0,0,0,0,0};
810 for(
int k=0; k<5; k++){
816 double dm2 = m[k]*m[k]-
s;
817 if(fabs(dm2)<
eps && dm2<=0) dm2 = -
eps;
818 if(fabs(dm2)<
eps && dm2>0) dm2 =
eps;
819 upreal[k] = 1.0f/dm2;
823 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];
824 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];
828 tmp2 =
f1[j]*(1+3.92637)/(
s+3.92637);
831 tmp2 =
f1[i]*(1+3.92637)/(
s+3.92637);
833 double tmp3 = (
s-0.5*
mpi*
mpi)*(1+0.15)/(
s+0.15);
835 Kijx = (tmp1x+tmp2)*tmp3;
859complex<double> D0Topipipi0::FMTX(
double Kijx,
double Kijy,
double rhojjx,
double rhojjy,
int i,
int j){
864 double tmpx = rhojjx*Kijx - rhojjy*Kijy;
865 double tmpy = rhojjx*Kijy + rhojjy*Kijx;
867 Fijx = IMTX(i,j).real() + tmpy;
875double D0Topipipi0::FINVMTX(
double s,
double *FINVx,
double *FINVy){
877 int P[5] = { 0,1,2,3,4};
892 for(
int k=0; k<5; k++){
893 double rhokkx = rhoMTX(k,k,
s).real();
894 double rhokky = rhoMTX(k,k,
s).imag();
897 for(
int l=k; l<5; l++){
898 double Kklx = KMTX(k,l,
s).real();
899 double Kkly = KMTX(k,l,
s).imag();
907 for(
int k=0; k<5; k++){
908 for(
int l=0; l<5; l++){
909 double Fklx = FMTX(Lx[k][l],Ly[k][l],Ux[l][l],Uy[l][l],k,l).real();
910 double Fkly = FMTX(Lx[k][l],Ly[k][l],Ux[l][l],Uy[l][l],k,l).imag();
916 for(
int k=0; k<5; k++){
917 double tmprM = (Fx[k][k]*Fx[k][k]+Fy[k][k]*Fy[k][k]);
919 for(
int l=k; l<5; l++){
920 double tmprF = (Fx[l][k]*Fx[l][k]+Fy[l][k]*Fy[l][k]);
931 for(
int l=0; l<5; l++){
933 double tmpFx = Fx[k][l];
934 double tmpFy = Fy[k][l];
936 Fx[k][l] = Fx[tmpID][l];
937 Fy[k][l] = Fy[tmpID][l];
939 Fx[tmpID][l] = tmpFx;
940 Fy[tmpID][l] = tmpFy;
944 for(
int l=k+1; l<5; l++){
945 double rFkk = Fx[k][k]*Fx[k][k] + Fy[k][k]*Fy[k][k];
946 double Fxlk = Fx[l][k];
947 double Fylk = Fy[l][k];
948 double Fxkk = Fx[k][k];
949 double Fykk = Fy[k][k];
950 Fx[l][k] = (Fxlk*Fxkk + Fylk*Fykk)/rFkk;
951 Fy[l][k] = (Fylk*Fxkk - Fxlk*Fykk)/rFkk;
952 for(
int m=k+1; m<5; m++){
953 Fx[l][m] = Fx[l][m] - (Fx[l][k]*Fx[k][m] - Fy[l][k]*Fy[k][m]);
954 Fy[l][m] = Fy[l][m] - (Fx[l][k]*Fy[k][m] + Fy[l][k]*Fx[k][m]);
959 for(
int k=0; k<5; k++){
960 for(
int l=0; l<5 ;l++){
983 for(
int k=0; k<5; k++){
988 double rUkk = Ux[k][k]*Ux[k][k] + Uy[k][k]*Uy[k][k];
989 UIx[k][k] = Ux[k][k]/rUkk;
990 UIy[k][k] = -1.0f * Uy[k][k]/rUkk ;
992 for(
int l=(k+1); l<5; l++){
999 for(
int l=(k-1); l>=0; l--){
1004 for(
int m=l+1; m<=k; m++){
1006 double sx_tmp = sx + Ux[l][m]*UIx[m][k] - Uy[l][m]*UIy[m][k];
1007 c_sx = (sx_tmp - sx) - (Ux[l][m]*UIx[m][k] - Uy[l][m]*UIy[m][k]);
1011 double sy_tmp = sy + Ux[l][m]*UIy[m][k] + Uy[l][m]*UIx[m][k];
1012 c_sy = (sy_tmp - sy) - (Ux[l][m]*UIy[m][k] + Uy[l][m]*UIx[m][k]);
1015 UIx[l][k] = -1.0f * (UIx[l][l]*sx - UIy[l][l]*sy);
1016 UIy[l][k] = -1.0f * (UIy[l][l]*sx + UIx[l][l]*sy);
1019 for(
int l=k+1; l<5; l++){
1024 for(
int m=k; m<l; m++){
1026 double sx_tmp = sx + Lx[l][m]*LIx[m][k] - Ly[l][m]*LIy[m][k];
1027 c_sx = (sx_tmp - sx) - (Lx[l][m]*LIx[m][k] - Ly[l][m]*LIy[m][k]);
1031 double sy_tmp = sy + Lx[l][m]*LIy[m][k] + Ly[l][m]*LIx[m][k];
1032 c_sy = (sy_tmp - sy) - (Lx[l][m]*LIy[m][k] + Ly[l][m]*LIx[m][k]);
1035 LIx[l][k] = -1.0f * sx;
1036 LIy[l][k] = -1.0f * sy;
1040 for(
int m=0; m<5; m++){
1045 for(
int k=0; k<5; k++){
1046 for(
int l=0; l<5; l++){
1048 if(
P[l] == m) Plm = 1;
1050 resX = resX - c_resX;
1051 double resX_tmp = resX + (UIx[0][k]*LIx[k][l] - UIy[0][k]*LIy[k][l])*Plm;
1052 c_resX = (resX_tmp - resX) - ((UIx[0][k]*LIx[k][l] - UIy[0][k]*LIy[k][l])*Plm);
1055 resY = resY - c_resY;
1056 double resY_tmp = resY + (UIx[0][k]*LIy[k][l] + UIy[0][k]*LIx[k][l])*Plm;
1057 c_resY = (resY_tmp - resY) - ((UIx[0][k]*LIy[k][l] + UIy[0][k]*LIx[k][l])*Plm);
1073 double m[5] = { 0.65100, 1.20360, 1.55817, 1.21000, 1.82206};
1081 double dm2 = m[
ID]*m[
ID]-
s;
1083 if(fabs(dm2)<
eps && dm2<=0) dm2 = -
eps;
1084 if(fabs(dm2)<
eps && dm2>0) dm2 =
eps;
1098 double FINVx[5] = {0,0,0,0,0};
1099 double FINVy[5] = {0,0,0,0,0};
1101 double tmpFLAG = FINVMTX(sa,FINVx,FINVy);
1104 double g[5][5] = {{ 0.22889,-0.55377, 0.00000,-0.39899,-0.34639},
1105 { 0.94128, 0.55095, 0.00000, 0.39065, 0.31503},
1106 { 0.36856, 0.23888, 0.55639, 0.18340, 0.18681},
1107 { 0.33650, 0.40907, 0.85679, 0.19906,-0.00984},
1108 { 0.18171,-0.17558,-0.79658,-0.00355, 0.22358}};
1113 double Plx = PVTR(l,sa).real();
1114 double Ply = PVTR(l,sa).imag();
1115 for(
int j=0; j<5; j++){
1116 resx = resx - c_resx;
1117 double resx_tmp = resx + (FINVx[j]*g[l][j]*Plx - FINVy[j]*g[l][j]*Ply);
1118 c_resx = (resx_tmp - resx) - (FINVx[j]*g[l][j]*Plx - FINVy[j]*g[l][j]*Ply);
1121 resy = resy - c_resy;
1122 double resy_tmp = resy + (FINVx[j]*g[l][j]*Ply + FINVy[j]*g[l][j]*Plx);
1123 c_resy = (resy_tmp - resy) - (FINVx[j]*g[l][j]*Ply + FINVy[j]*g[l][j]*Plx);
1132 if(fabs(ds)<
eps && ds<=0) ds = -
eps;
1133 if(fabs(ds)<
eps && ds>0) ds =
eps;
1134 double tmp = (1-s0)/ds;
1135 outputx = FINVx[idx]*tmp;
1136 outputy = FINVy[idx]*tmp;
1144 return Amp(p4_Pip, p4_Pim, p4_Pi0);
1148 vector<double> cpPip; cpPip.clear();
1149 vector<double> cpPim; cpPim.clear();
1150 vector<double> cpPi0; cpPi0.clear();
1152 cpPip.push_back(-p4_Pim[0]); cpPim.push_back(-p4_Pip[0]); cpPi0.push_back(-p4_Pi0[0]);
1153 cpPip.push_back(-p4_Pim[1]); cpPim.push_back(-p4_Pip[1]); cpPi0.push_back(-p4_Pi0[1]);
1154 cpPip.push_back(-p4_Pim[2]); cpPim.push_back(-p4_Pip[2]); cpPi0.push_back(-p4_Pi0[2]);
1155 cpPip.push_back( p4_Pim[3]); cpPim.push_back( p4_Pip[3]); cpPi0.push_back( p4_Pi0[3]);
1157 return (-1.0)*
Amp(cpPip, cpPim, cpPi0);
1163 if(fitpara.size()!=14) {
1164 cout<<
"Error!!! number of para: "<<fitpara.size()<<endl;
1168 vector<double> PipPim; PipPim.clear();
1169 vector<double> PipPi0; PipPi0.clear();
1170 vector<double> PimPi0; PimPi0.clear();
1172 PipPim = sum_tensor(Pip, Pim);
1173 PipPi0 = sum_tensor(Pip,
Pi0);
1174 PimPi0 = sum_tensor(Pim,
Pi0);
1176 vector<double> D0; D0.clear();
1177 D0 = sum_tensor(PipPim,
Pi0);
1179 double M2_PipPim = contract_11_0(PipPim, PipPim);
1180 double M2_PipPi0 = contract_11_0(PipPi0, PipPi0);
1181 double M2_PimPi0 = contract_11_0(PimPi0, PimPi0);
1183 double M2_D0 = contract_11_0(D0, D0);
1185 complex<double> GS_rho770_z = GS(M2_PipPim, m0_rho7700, w0_rho7700, m2_Pi, m2_Pi, rRes, 1);
1186 complex<double> GS_rho770_p = GS(M2_PipPi0, m0_rho770p, w0_rho770p, m2_Pi, m2_Pi0, rRes, 1);
1187 complex<double> GS_rho770_m = GS(M2_PimPi0, m0_rho770p, w0_rho770p, m2_Pi, m2_Pi0, rRes, 1);
1200 complex<double> RBW_f21270 = RBW(M2_PipPim, m0_f21270, w0_f21270, m2_Pi, m2_Pi, rRes, 2);
1203 vector<double> T1_PipPim; T1_PipPim.clear();
1204 vector<double> T1_PipPi0; T1_PipPi0.clear();
1205 vector<double> T1_PimPi0; T1_PimPi0.clear();
1207 T1_PipPim = OrbitalTensors(PipPim, Pip, Pim, rRes, 1);
1208 T1_PipPi0 = OrbitalTensors(PipPi0, Pip,
Pi0, rRes, 1);
1209 T1_PimPi0 = OrbitalTensors(PimPi0, Pim,
Pi0, rRes, 1);
1211 vector<double> T2_PipPim; T2_PipPim.clear();
1213 T2_PipPim = OrbitalTensors(PipPim, Pip, Pim, rRes, 2);
1216 vector<double> T1_PipPimPi0; T1_PipPimPi0.clear();
1217 vector<double> T1_PipPi0Pim; T1_PipPi0Pim.clear();
1218 vector<double> T1_PimPi0Pip; T1_PimPi0Pip.clear();
1220 T1_PipPimPi0 = OrbitalTensors(D0, PipPim,
Pi0, rD, 1);
1221 T1_PipPi0Pim = OrbitalTensors(D0, PipPi0, Pim, rD, 1);
1222 T1_PimPi0Pip = OrbitalTensors(D0, PimPi0, Pip, rD, 1);
1224 vector<double> T2_PipPimPi0; T2_PipPimPi0.clear();
1226 T2_PipPimPi0 = OrbitalTensors(D0, PipPim,
Pi0, rD, 2);
1232 double SF_VpPm = contract_11_0(T1_PipPi0Pim, T1_PipPi0);
1233 amplitude += fitpara[0]*(SF_VpPm*GS_rho770_p);
1235 double SF_VmPp = contract_11_0(T1_PimPi0Pip, T1_PimPi0);
1236 amplitude += fitpara[1]*(SF_VmPp*GS_rho770_m);
1238 double SF_VzPz = contract_11_0(T1_PipPimPi0, T1_PipPim);
1239 amplitude += fitpara[2]*(SF_VzPz*GS_rho770_z);
1242 amplitude += fitpara[3]*(PiPiS_pm_0);
1243 amplitude += fitpara[4]*(PiPiS_pm_1);
1244 amplitude += fitpara[5]*(PiPiS_pm_2);
1245 amplitude += fitpara[6]*(PiPiS_pm_3);
1246 amplitude += fitpara[7]*(PiPiS_pm_4);
1247 amplitude += fitpara[8]*(PiPiS_pm_5);
1248 amplitude += fitpara[9]*(PiPiS_pm_6);
1249 amplitude += fitpara[10]*(PiPiS_pm_7);
1250 amplitude += fitpara[11]*(PiPiS_pm_8);
1251 amplitude += fitpara[12]*(PiPiS_pm_9);
1254 double SF_TzPz = contract_22_0(T2_PipPimPi0, T2_PipPim);
1255 amplitude += fitpara[13]*(SF_TzPz*RBW_f21270);
1261int D0Topipipi0::CalAmp()
1263 m_AmpD0 = CalD0Amp();
1264 m_AmpDb = CalDbAmp();
1270 double temp =
x.real()*
x.real() +
x.imag()*
x.imag();
1276 double temp = 2*(
x.real()*
y.real() +
x.imag()*
y.imag());
1282 double temp = atan(
x.imag()/
x.real());
1283 if(
x.real()<0) temp=temp+
PI;
1286double D0Topipipi0::Get_strongPhase()
1288 double temp = arg(m_AmpD0) - arg(m_AmpDb);
double sin(const BesAngle a)
double cos(const BesAngle a)
double P(RecMdcKalTrack *trk)
TFile f("ana_bhabha660a_dqa_mcPat_zy_old.root")
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
complex< double > Amp(vector< double > Pip, vector< double > Pim, vector< double > Pi0)